- Some global array elements renamed (someGlobalElement -> __some_global_element)
- Copyright notice disabled in mailid.php as it destroys the frameset
- Function debug_report_bug() renamed to reportBug()
- Function app_die() renamed to app_exit()
- More wrapper functions used (e.g. getRandomTan() instead of PHP's mt_rand())
- New AJAX-based installation introduced (it is not finished)
- Renamed several ALL_UPER_CASE() functions to camel-case notation
- Extension ext-currency introduced which will deprecate ext-wernis all other eCurreny-related extensions
- Renamed various HTML and email templates to new notation
- Some shell scripts moved to 'contrib' folder
- JQUERY updated to latest stable version (including custom build of jqueryui)
- License files renamed/moved
- Many other fixes/improvements I forgot to mention
- Varrious typos fixed
- Copyright updated (to 2012)
- TODOs.txt updated
* text=auto !eol
/.htaccess svneol=native#text/plain
DOCS/INSTALL.txt svneol=native#text/plain
+DOCS/JQUERY-AUTHORS.txt -text
+DOCS/LICENSE-GPL2.txt svneol=native#text/plain
DOCS/LICENSE.txt svneol=native#text/plain
DOCS/TODOs.txt svneol=native#text/plain
DOCS/de/AUTHORS.txt svneol=native#text/plain
DOCS/tpl-validator.php svneol=native#text/plain
/admin.php svneol=native#text/plain
/agb.php svneol=native#text/plain
+/ajax.php svneol=native#text/plain
/autoreg.php svneol=native#text/plain
/beg.php svneol=native#text/plain
/birthday_confirm.php svneol=native#text/plain
img/uberwach/uberwach-button-gruen.gif -text svneol=unset#image/gif
img/uberwach/uberwach-kamera-gruen.gif -text svneol=unset#image/gif
inc/.htaccess svneol=native#text/plain
+inc/ajax-functions.php svneol=native#text/plain
+inc/ajax/.htaccess svneol=native#text/plain
+inc/ajax/ajax_admin.php svneol=native#text/plain
+inc/ajax/ajax_installer.php svneol=native#text/plain
inc/autopurge/.htaccess svneol=native#text/plain
inc/autopurge/purge- svneol=native#text/plain
inc/autopurge/purge-general.php svneol=native#text/plain
inc/daily/daily_birthday.php svneol=native#text/plain
inc/daily/daily_bonus.php svneol=native#text/plain
inc/daily/daily_doubler.php svneol=native#text/plain
+inc/daily/daily_earning.php svneol=native#text/plain
inc/daily/daily_engine.php svneol=native#text/plain
inc/daily/daily_holiday.php svneol=native#text/plain
inc/daily/daily_profile.php svneol=native#text/plain
inc/extensions/ext-country.php svneol=native#text/plain
inc/extensions/ext-coupon.php svneol=native#text/plain
inc/extensions/ext-cprping.php svneol=native#text/plain
+inc/extensions/ext-currency.php svneol=native#text/plain
inc/extensions/ext-debug.php svneol=native#text/plain
inc/extensions/ext-demo.php svneol=native#text/plain
inc/extensions/ext-doubler.php svneol=native#text/plain
inc/filter/_filter.php svneol=native#text/plain
inc/filter/active_filter.php svneol=native#text/plain
inc/filter/admins_filter.php svneol=native#text/plain
+inc/filter/beg_filter.php svneol=native#text/plain
inc/filter/bonus_filter.php svneol=native#text/plain
inc/filter/booking_filter.php svneol=native#text/plain
inc/filter/cache_filter.php svneol=native#text/plain
+inc/filter/country_filter.php svneol=native#text/plain
inc/filter/coupon_filter.php svneol=native#text/plain
inc/filter/earning_filter.php svneol=native#text/plain
inc/filter/forced_filter.php svneol=native#text/plain
inc/install-inc.php svneol=native#text/plain
inc/js/.htaccess svneol=native#text/plain
inc/js/js- svneol=native#text/plain
+inc/js/js-admin_ajax.php svneol=native#text/plain
inc/js/js-cookies_disabled.php svneol=native#text/plain
+inc/js/js-install_ajax.php svneol=native#text/plain
inc/js/js-jquery.php svneol=native#text/plain
inc/js/js-order_send.php svneol=native#text/plain
inc/js/js-surfbar_frame_top.php svneol=native#text/plain
inc/libs/admins_functions.php svneol=native#text/plain
inc/libs/autopurge_functions.php svneol=native#text/plain
inc/libs/beg_functions.php svneol=native#text/plain
+inc/libs/birthday_functions.php svneol=native#text/plain
inc/libs/bonus_functions.php svneol=native#text/plain
inc/libs/booking_functions.php svneol=native#text/plain
inc/libs/cache_functions.php svneol=native#text/plain
inc/modules/admin/what-add_rallye.php svneol=native#text/plain
inc/modules/admin/what-add_sponsor.php svneol=native#text/plain
inc/modules/admin/what-add_surfbar_url.php svneol=native#text/plain
+inc/modules/admin/what-add_tester_user.php svneol=native#text/plain
inc/modules/admin/what-admin_add.php svneol=native#text/plain
inc/modules/admin/what-adminedit.php svneol=native#text/plain
inc/modules/admin/what-admins_add.php svneol=native#text/plain
inc/modules/admin/what-usage.php svneol=native#text/plain
inc/modules/admin/what-user_contct.php svneol=native#text/plain
inc/modules/admin/what-usr_online.php svneol=native#text/plain
+inc/modules/admin/what-welcome.php svneol=native#text/plain
inc/modules/chk_login.php svneol=native#text/plain
inc/modules/frametester.php svneol=native#text/plain
inc/modules/guest/.htaccess svneol=native#text/plain
/index.php svneol=native#text/plain
/install.php svneol=native#text/plain
/js.php svneol=native#text/plain
+js/.js svneol=native#text/javascript
+js/admin-common.js svneol=native#text/javascript
+js/admin-data.js svneol=native#text/javascript
+js/ajax-common.js svneol=native#text/javascript
+js/ajax-loader.js svneol=native#text/javascript
+js/ajax-test.js svneol=native#text/javascript
+js/core-common.js svneol=native#text/javascript
+js/install-common.js svneol=native#text/javascript
+js/install-data.js svneol=native#text/javascript
+js/jquery-ui.custom.js svneol=native#text/javascript
js/jquery.js svneol=native#text/plain
js/menu-common.js svneol=native#text/plain
/lead-confirm.php svneol=native#text/plain
templates/de/emails/add-points.tpl svneol=native#text/plain
templates/de/emails/admin-del_links.tpl svneol=native#text/plain
templates/de/emails/admin/.htaccess svneol=native#text/plain
+templates/de/emails/admin/admin_admin_add_all_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_admin_add_all_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_admin_add_all_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_admin_add_single_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_admin_add_single_referral.tpl svneol=native#text/plain
templates/de/emails/admin/admin_autopurge_del_mails.tpl svneol=native#text/plain
templates/de/emails/admin/admin_autopurge_delete.tpl svneol=native#text/plain
templates/de/emails/admin/admin_autopurge_inactive.tpl svneol=native#text/plain
templates/de/emails/admin/admin_autopurge_tsks.tpl svneol=native#text/plain
templates/de/emails/admin/admin_autopurge_turbo.tpl svneol=native#text/plain
templates/de/emails/admin/admin_autopurge_unconfirmed.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_beg_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_beg_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_beg_referral.tpl svneol=native#text/plain
templates/de/emails/admin/admin_coupon.tpl svneol=native#text/plain
templates/de/emails/admin/admin_coupon_cashed.tpl svneol=native#text/plain
templates/de/emails/admin/admin_coupon_code.tpl svneol=native#text/plain
templates/de/emails/admin/admin_delete_surfbar_urls.tpl svneol=native#text/plain
templates/de/emails/admin/admin_earning_added.tpl svneol=native#text/plain
templates/de/emails/admin/admin_earning_updated.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_edit_forced_ads.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_edit_forced_costs.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_edit_points_data.tpl svneol=native#text/plain
templates/de/emails/admin/admin_edit_surfbar_urls.tpl svneol=native#text/plain
templates/de/emails/admin/admin_extension_deactivated.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_forced_campaign_pending_active.tpl svneol=native#text/plain
templates/de/emails/admin/admin_holiday_deactivated.tpl svneol=native#text/plain
templates/de/emails/admin/admin_holiday_request.tpl svneol=native#text/plain
templates/de/emails/admin/admin_holiday_unlock.tpl svneol=native#text/plain
templates/de/emails/admin/admin_lock_active_surfbar_urls.tpl svneol=native#text/plain
templates/de/emails/admin/admin_lock_locked_surfbar_urls.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_mailid_okay_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_mailid_okay_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_monthly_beg_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_monthly_beg_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_monthly_beg_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_monthly_bonus_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_monthly_bonus_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_monthly_bonus_referral.tpl svneol=native#text/plain
templates/de/emails/admin/admin_mydata_notify.tpl svneol=native#text/plain
templates/de/emails/admin/admin_newsletter_reset.tpl svneol=native#text/plain
templates/de/emails/admin/admin_order_normal.tpl svneol=native#text/plain
templates/de/emails/admin/admin_rallye_notify.tpl svneol=native#text/plain
templates/de/emails/admin/admin_rallye_purged.tpl svneol=native#text/plain
templates/de/emails/admin/admin_refback.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_refback_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_refback_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_refback_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_referral_bonus_direct.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_referral_bonus_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_referral_bonus_referral.tpl svneol=native#text/plain
templates/de/emails/admin/admin_register_done.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_register_welcome_direct.tpl svneol=native#text/plain
templates/de/emails/admin/admin_report_bug.tpl svneol=native#text/plain
templates/de/emails/admin/admin_reset_password.tpl svneol=native#text/plain
templates/de/emails/admin/admin_sponsor_change_data.tpl svneol=native#text/plain
templates/de/emails/admin/admin_surfbar_url_pending_rejected.tpl svneol=native#text/plain
templates/de/emails/admin/admin_surfbar_url_reg.tpl svneol=native#text/plain
templates/de/emails/admin/admin_surfbar_url_rejected.tpl svneol=native#text/plain
+templates/de/emails/admin/admin_surfbar_url_rejected_pending.tpl svneol=native#text/plain
templates/de/emails/admin/admin_surfbar_url_stopped_continued.tpl svneol=native#text/plain
templates/de/emails/admin/admin_surfbar_url_stopped_deleted.tpl svneol=native#text/plain
templates/de/emails/admin/admin_surfbar_url_stopped_pending.tpl svneol=native#text/plain
templates/de/emails/lock_sponsor.tpl svneol=native#text/plain
templates/de/emails/member/.htaccess svneol=native#text/plain
templates/de/emails/member/member_add_points.tpl svneol=native#text/plain
+templates/de/emails/member/member_admin_add_all_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_admin_add_all_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_admin_add_all_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_admin_add_single_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_admin_add_single_referral.tpl svneol=native#text/plain
templates/de/emails/member/member_autopurge_delete.tpl svneol=native#text/plain
templates/de/emails/member/member_autopurge_inactive.tpl svneol=native#text/plain
templates/de/emails/member/member_autopurge_points.tpl svneol=native#text/plain
templates/de/emails/member/member_autopurge_unconfirmed.tpl svneol=native#text/plain
templates/de/emails/member/member_beg.tpl svneol=native#text/plain
+templates/de/emails/member/member_beg_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_beg_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_beg_referral.tpl svneol=native#text/plain
templates/de/emails/member/member_birthday.tpl svneol=native#text/plain
templates/de/emails/member/member_birthday_confirm.tpl svneol=native#text/plain
templates/de/emails/member/member_bonus.tpl svneol=native#text/plain
templates/de/emails/member/member_earning_added.tpl svneol=native#text/plain
templates/de/emails/member/member_earning_updated.tpl svneol=native#text/plain
templates/de/emails/member/member_edit_surfbar_urls.tpl svneol=native#text/plain
+templates/de/emails/member/member_forced_campaign_pending_active.tpl svneol=native#text/plain
templates/de/emails/member/member_holiday_activated.tpl svneol=native#text/plain
templates/de/emails/member/member_holiday_removed.tpl svneol=native#text/plain
templates/de/emails/member/member_holiday_request.tpl svneol=native#text/plain
templates/de/emails/member/member_holiday_unlock.tpl svneol=native#text/plain
templates/de/emails/member/member_lock_active_surfbar_urls.tpl svneol=native#text/plain
templates/de/emails/member/member_lock_locked_surfbar_urls.tpl svneol=native#text/plain
+templates/de/emails/member/member_mailid_okay_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_mailid_okay_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_monthly_beg_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_monthly_beg_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_monthly_beg_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_monthly_bonus_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_monthly_bonus_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_monthly_bonus_referral.tpl svneol=native#text/plain
templates/de/emails/member/member_mydata_notify.tpl svneol=native#text/plain
templates/de/emails/member/member_order_accepted.tpl svneol=native#text/plain
templates/de/emails/member/member_order_deleted.tpl svneol=native#text/plain
templates/de/emails/member/member_rallye_expired_silver.tpl svneol=native#text/plain
templates/de/emails/member/member_rallye_notify.tpl svneol=native#text/plain
templates/de/emails/member/member_refback.tpl svneol=native#text/plain
+templates/de/emails/member/member_refback_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_refback_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_refback_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_referral_bonus_direct.tpl svneol=native#text/plain
+templates/de/emails/member/member_referral_bonus_ref_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_referral_bonus_referral.tpl svneol=native#text/plain
+templates/de/emails/member/member_register_welcome_direct.tpl svneol=native#text/plain
templates/de/emails/member/member_stats_bonus.tpl svneol=native#text/plain
templates/de/emails/member/member_sub_points.tpl svneol=native#text/plain
templates/de/emails/member/member_support-ordr.tpl svneol=native#text/plain
templates/de/emails/member/member_surfbar_url_pending_rejected.tpl svneol=native#text/plain
templates/de/emails/member/member_surfbar_url_reg.tpl svneol=native#text/plain
templates/de/emails/member/member_surfbar_url_rejected.tpl svneol=native#text/plain
+templates/de/emails/member/member_surfbar_url_rejected_pending.tpl svneol=native#text/plain
templates/de/emails/member/member_surfbar_url_stopped_continued.tpl svneol=native#text/plain
templates/de/emails/member/member_surfbar_url_stopped_deleted.tpl svneol=native#text/plain
templates/de/emails/member/member_surfbar_url_stopped_pending.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_change_data.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_change_email.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_confirm.tpl svneol=native#text/plain
+templates/de/emails/sponsor/sponsor_deleted.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_email.tpl svneol=native#text/plain
+templates/de/emails/sponsor/sponsor_locked.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_lost.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_pending.tpl svneol=native#text/plain
templates/de/emails/sponsor/sponsor_ref_notify.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_config_network_type_form.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_country.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_forced_ad.tpl svneol=native#text/plain
+templates/de/html/admin/admin_add_forced_campaign.tpl svneol=native#text/plain
+templates/de/html/admin/admin_add_forced_costs.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_guest_menu.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_max.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_member_menu.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_network_vcheck_param.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_payment.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_payout.tpl svneol=native#text/plain
+templates/de/html/admin/admin_add_point_accounts.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_points.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_points_all.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_rallye.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_sponsor_already.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_sponsor_paytype.tpl svneol=native#text/plain
templates/de/html/admin/admin_add_surfbar_url.tpl svneol=native#text/plain
+templates/de/html/admin/admin_add_tester_user.tpl svneol=native#text/plain
templates/de/html/admin/admin_admins_contct_default.tpl svneol=native#text/plain
templates/de/html/admin/admin_admins_contct_form.tpl svneol=native#text/plain
templates/de/html/admin/admin_admins_contct_select.tpl svneol=native#text/plain
templates/de/html/admin/admin_admins_mails_edit_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_admins_mails_list.tpl svneol=native#text/plain
templates/de/html/admin/admin_admins_mails_list_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_ajax_main.tpl svneol=native#text/plain
templates/de/html/admin/admin_cache_stats.tpl svneol=native#text/plain
templates/de/html/admin/admin_config_ svneol=native#text/plain
templates/de/html/admin/admin_config_active.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_email_max_rec_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_email_normal.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_email_notify.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_forced_ads.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_forced_ads_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_forced_costs.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_forced_costs_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_guest_menu.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_guest_menu_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_member_menu.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_payments_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_payouts.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_payouts_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_rallye_prices.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_rallye_prices_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_rallyes.tpl svneol=native#text/plain
+templates/de/html/admin/admin_delete_rallyes_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_reflevel.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_reflevel_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_delete_sponsor.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_email_select.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_forced_ads.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_forced_ads_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_forced_campaigns.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_forced_campaigns_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_forced_costs.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_forced_costs_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_guest_menu.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_guest_menu_form.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_guest_menu_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_payments_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_payouts.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_payouts_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_points_data.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_points_data_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_rallye_prices.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_rallye_prices_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_rallyes.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_rallyes_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_refbanner.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_sponsor_add_points.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_sponsor_edit.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_sponsor_sub_points.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_surfbar_actions.tpl svneol=native#text/plain
+templates/de/html/admin/admin_edit_surfbar_actions_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_surfbar_urls.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_surfbar_urls_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_edit_theme.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_emails_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_forced_ads.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_forced_ads_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_forced_campaigns.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_forced_campaigns_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_forced_costs.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_forced_costs_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_holiday.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_holiday_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_home.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_payouts_banner.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_payouts_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_payouts_txt.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_points_accounts.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_points_accounts_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_primera_main.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_primera_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_rallye_prices.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_rallye_prices_row.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_rallye_prices_simple.tpl svneol=native#text/plain
+templates/de/html/admin/admin_list_rallye_prices_simple_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_rallye_usr.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_rallye_usr_row.tpl svneol=native#text/plain
templates/de/html/admin/admin_list_rallyes.tpl svneol=native#text/plain
templates/de/html/admin/admin_payout_failed_transfer.tpl svneol=native#text/plain
templates/de/html/admin/admin_payout_overview_form.tpl svneol=native#text/plain
templates/de/html/admin/admin_payout_reject_form.tpl svneol=native#text/plain
+templates/de/html/admin/admin_receive_table.tpl svneol=native#text/plain
templates/de/html/admin/admin_reg_form.tpl svneol=native#text/plain
templates/de/html/admin/admin_repair_lang.tpl svneol=native#text/plain
templates/de/html/admin/admin_repair_lang_row_404.tpl svneol=native#text/plain
templates/de/html/admin/admin_welcome_admins.tpl svneol=native#text/plain
templates/de/html/admin/admin_yoomedia_error.tpl svneol=native#text/plain
templates/de/html/agb.tpl svneol=native#text/plain
+templates/de/html/ajax_test_passed.tpl svneol=native#text/plain
templates/de/html/app_die_message.tpl svneol=native#text/plain
templates/de/html/beg/.htaccess svneol=native#text/plain
templates/de/html/beg/beg_banner.tpl svneol=native#text/plain
templates/de/html/ext/ext_country.tpl svneol=native#text/plain
templates/de/html/ext/ext_coupon.tpl svneol=native#text/plain
templates/de/html/ext/ext_cprping.tpl svneol=native#text/plain
+templates/de/html/ext/ext_currency.tpl svneol=native#text/plain
templates/de/html/ext/ext_debug.tpl svneol=native#text/plain
templates/de/html/ext/ext_demo.tpl svneol=native#text/plain
templates/de/html/ext/ext_doubler.tpl svneol=native#text/plain
templates/de/html/guest/guest_list_rallye.tpl svneol=native#text/plain
templates/de/html/guest/guest_list_rallye_row.tpl svneol=native#text/plain
templates/de/html/guest/guest_login.tpl svneol=native#text/plain
+templates/de/html/guest/guest_login_error_message.tpl svneol=native#text/plain
templates/de/html/guest/guest_menu_bottom.tpl svneol=native#text/plain
templates/de/html/guest/guest_menu_content.tpl svneol=native#text/plain
templates/de/html/guest/guest_menu_row.tpl svneol=native#text/plain
templates/de/html/install/install_fatal_row.tpl svneol=native#text/plain
templates/de/html/install/install_fatal_table.tpl svneol=native#text/plain
templates/de/html/install/install_finished.tpl svneol=native#text/plain
+templates/de/html/install/install_footer.tpl svneol=native#text/plain
templates/de/html/install/install_main.tpl svneol=native#text/plain
+templates/de/html/install/install_main_ajax.tpl svneol=native#text/plain
+templates/de/html/install/install_main_plain.tpl svneol=native#text/plain
+templates/de/html/install/install_menu.tpl svneol=native#text/plain
templates/de/html/install/install_page1.tpl svneol=native#text/plain
templates/de/html/install/install_page2.tpl svneol=native#text/plain
templates/de/html/install/install_page3.tpl svneol=native#text/plain
templates/de/html/install/install_page5.tpl svneol=native#text/plain
+templates/de/html/install/install_page_base_data.tpl svneol=native#text/plain
+templates/de/html/install/install_page_database_config.tpl svneol=native#text/plain
+templates/de/html/install/install_page_init.tpl svneol=native#text/plain
+templates/de/html/install/install_page_other_config.tpl svneol=native#text/plain
+templates/de/html/install/install_page_smtp_config.tpl svneol=native#text/plain
+templates/de/html/install/install_page_welcome.tpl svneol=native#text/plain
+templates/de/html/install/install_selector.tpl svneol=native#text/plain
+templates/de/html/install/install_warning_next.tpl svneol=native#text/plain
+templates/de/html/install/install_warning_previous.tpl svneol=native#text/plain
+templates/de/html/install/install_warning_tab.tpl svneol=native#text/plain
templates/de/html/install/install_welcome.tpl svneol=native#text/plain
templates/de/html/js/.htaccess svneol=native#text/plain
+templates/de/html/js/js_admin_ajax.tpl svneol=native#text/plain
templates/de/html/js/js_admin_menu_onclick.tpl svneol=native#text/plain
templates/de/html/js/js_cookies_disabled.tpl svneol=native#text/plain
+templates/de/html/js/js_install_ajax.tpl svneol=native#text/plain
templates/de/html/js/js_jquery.tpl svneol=native#text/plain
templates/de/html/js/js_order_send.tpl svneol=native#text/plain
templates/de/html/js/js_surfbar_frame_top.tpl svneol=native#text/plain
templates/de/html/member/member_book_surfbar_static.tpl svneol=native#text/plain
templates/de/html/member/member_cash_coupon.tpl svneol=native#text/plain
templates/de/html/member/member_cat_row.tpl svneol=native#text/plain
+templates/de/html/member/member_cats.tpl svneol=native#text/plain
templates/de/html/member/member_cats_footer.tpl svneol=native#text/plain
templates/de/html/member/member_cats_header.tpl svneol=native#text/plain
+templates/de/html/member/member_cats_row.tpl svneol=native#text/plain
templates/de/html/member/member_content_right.tpl svneol=native#text/plain
templates/de/html/member/member_doubler.tpl svneol=native#text/plain
templates/de/html/member/member_doubler_list.tpl svneol=native#text/plain
templates/de/html/member/member_list_surfbar.tpl svneol=native#text/plain
templates/de/html/member/member_list_surfbar_form.tpl svneol=native#text/plain
templates/de/html/member/member_list_surfbar_row.tpl svneol=native#text/plain
+templates/de/html/member/member_list_surfbar_table.tpl svneol=native#text/plain
templates/de/html/member/member_login_js.tpl svneol=native#text/plain
templates/de/html/member/member_mail_bonus_deleted.tpl svneol=native#text/plain
templates/de/html/member/member_mail_bonus_new.tpl svneol=native#text/plain
templates/de/html/member/member_order-zip2.tpl svneol=native#text/plain
templates/de/html/member/member_order_back.tpl svneol=native#text/plain
templates/de/html/member/member_order_frametester.tpl svneol=native#text/plain
+templates/de/html/member/member_order_html_ext.tpl svneol=native#text/plain
+templates/de/html/member/member_order_html_intro.tpl svneol=native#text/plain
templates/de/html/member/member_order_page1.tpl svneol=native#text/plain
templates/de/html/member/member_order_page2.tpl svneol=native#text/plain
templates/de/html/member/member_order_points.tpl svneol=native#text/plain
templates/de/html/member/member_order_send.tpl svneol=native#text/plain
+templates/de/html/member/member_order_thanks.tpl svneol=native#text/plain
+templates/de/html/member/member_order_zip1.tpl svneol=native#text/plain
+templates/de/html/member/member_order_zip2.tpl svneol=native#text/plain
templates/de/html/member/member_payout.tpl svneol=native#text/plain
templates/de/html/member/member_payout_form.tpl svneol=native#text/plain
templates/de/html/member/member_payout_form_banner.tpl svneol=native#text/plain
templates/de/html/select/.htaccess svneol=native#text/plain
templates/de/html/select/select_admins_box.tpl svneol=native#text/plain
templates/de/html/select/select_admins_option.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_ads_id_popup_box.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_ads_id_popup_option.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_ads_id_textlink_option.tpl svneol=native#text/plain
templates/de/html/select/select_forced_ads_type_box.tpl svneol=native#text/plain
templates/de/html/select/select_forced_ads_type_option.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_costs_id_box.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_costs_id_option.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_costs_visibility_box.tpl svneol=native#text/plain
+templates/de/html/select/select_forced_costs_visibility_option.tpl svneol=native#text/plain
templates/de/html/select/select_network_box.tpl svneol=native#text/plain
templates/de/html/select/select_network_option.tpl svneol=native#text/plain
templates/de/html/select/select_network_type_box.tpl svneol=native#text/plain
templates/de/html/select/select_network_type_option.tpl svneol=native#text/plain
templates/de/html/select/select_network_type_title_box.tpl svneol=native#text/plain
templates/de/html/select/select_network_type_title_option.tpl svneol=native#text/plain
+templates/de/html/select/select_points_locked_mode_box.tpl svneol=native#text/plain
+templates/de/html/select/select_points_locked_mode_option.tpl svneol=native#text/plain
+templates/de/html/select/select_points_payment_method_box.tpl svneol=native#text/plain
+templates/de/html/select/select_points_payment_method_option.tpl svneol=native#text/plain
+templates/de/html/select/select_surfbar_actions_action_box.tpl svneol=native#text/plain
+templates/de/html/select/select_surfbar_actions_action_option.tpl svneol=native#text/plain
+templates/de/html/select/select_surfbar_actions_new_status_box.tpl svneol=native#text/plain
+templates/de/html/select/select_surfbar_actions_new_status_option.tpl svneol=native#text/plain
+templates/de/html/select/select_surfbar_actions_status_box.tpl svneol=native#text/plain
+templates/de/html/select/select_surfbar_actions_status_option.tpl svneol=native#text/plain
templates/de/html/show_bonus.tpl svneol=native#text/plain
templates/de/html/show_bonus_footer.tpl svneol=native#text/plain
templates/de/html/show_bonus_header.tpl svneol=native#text/plain
theme/org/images/menus/row.jpg -text svneol=unset#image/jpeg
theme/org/images/menus/title.jpg -text svneol=unset#image/jpeg
theme/org/theme.php svneol=native#text/plain
+theme/schleuder/css/ajax.css -text
theme/schleuder/images/code_bg.jpg -text svneol=unset#image/jpeg
theme/schleuder/images/code_bg.png -text svneol=unset#image/png
theme/schleuder/images/help/bullet.png -text svneol=unset#image/png
RewriteRule ^cms/(.*)$ modules.php?module=$1 [L]
# @TODO When ext-imprint is finished RewriteRule ^cms/index/wht/impressum$ modules.php?module=index&what=imprint [L]
# @TODO When ext-imprint is finished RewriteRule ^modules.php?module=index&what=impressum$ modules.php?module=index&what=imprint [L]
+ # @TODO When ext-terms is finished RewriteRule ^cms/index/wht/agb$ modules.php?module=index&what=terms [L]
+ # @TODO When ext-terms is finished RewriteRule ^modules.php?module=index&what=agb$ modules.php?module=index&what=terms [L]
# @TODO When ext-terms is finished RewriteRule ^agb.php$ modules.php?module=index&what=terms [L]
</IfModule>
Mailer-Project
-------------------------------
Copyright (c) 2003 - 2009 by Roland Haeder
-Copyright (c) 2009 - 2011 by Mailer Developer Team
+Copyright (c) 2009 - 2012 by Mailer Developer Team
For more information visit: http://mxchange.org
This program is free software; you can redistribute it and/or modify
MA 02110-1301 USA
This applies to all files from root directory except files in DOCS,
-img, install and templates directories; js/jquery.js and all
-Cascading Style Sheet files if not otherwise explicitly noted.
+img, install and templates directories; js/jquery.js, js/jquery-ui.custom.js
+and all Cascading Style Sheet files if not otherwise explicitly noted.
-The GNU General Public License can be found at DOCS/LICENSE.txt
+The GNU General Public License Version 2 can be found at DOCS/LICENSE-GPL2.txt.
-------------------------------
js/jquery.js
Released under the MIT, BSD, and GPL Licenses.
Date: Thu Jun 30 14:16:56 2011 -0400
+-------------------------------
+js/jquery-ui.custom.js
+-------------------------------
+jQuery UI 1.8.16
+
+Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+Dual licensed under the MIT or GPL Version 2 licenses.
+http://jquery.org/license
+
+http://docs.jquery.com/UI
[EOF]
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
-PROJECT_NAME = MXChangeMail-Exchange
+PROJECT_NAME = Mailer-Project
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
# source files, where putting all generated files in the same directory would
# otherwise cause performance problems for the file system.
-CREATE_SUBDIRS = NO
+CREATE_SUBDIRS = YES
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
--- /dev/null
+jQuery UI Authors (http://jqueryui.com/about)
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+and logs, available at http://github.com/jquery/jquery-ui
+
+Brandon Aaron
+Paul Bakaus (paulbakaus.com)
+David Bolter
+Rich Caloggero
+Chi Cheng (cloudream@gmail.com)
+Colin Clark (http://colin.atrc.utoronto.ca/)
+Michelle D'Souza
+Aaron Eisenberger (aaronchi@gmail.com)
+Ariel Flesler
+Bohdan Ganicky
+Scott González
+Marc Grabanski (m@marcgrabanski.com)
+Klaus Hartl (stilbuero.de)
+Scott Jehl
+Cody Lindley
+Eduardo Lundgren (eduardolundgren@gmail.com)
+Todd Parker
+John Resig
+Patty Toland
+Ca-Phun Ung (yelotofu.com)
+Keith Wood (kbwood@virginbroadband.com.au)
+Maggie Costello Wachs
+Richard D. Worth (rdworth.org)
+Jörn Zaefferer (bassistance.de)
--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+@DEPRECATED
-### WARNING: THIS FILE IS AUTO-GENERATED BY ./DOCS/todo-builder.sh (uid=/user=quix0r) ###
+### WARNING: THIS FILE IS AUTO-GENERATED BY ../../contrib/todo-builder.sh (uid=/user=quix0r) ###
### DO NOT EDIT THIS FILE. ###
./autoreg.php:58:// @TODO Add processing of request here
./beg.php:175: // @TODO Opps, what is missing here???
./inc/classes/cachesystem.class.php:510: // @TODO Add support for more types which break in last else-block
-./inc/config-functions.php:138: // @TODO Make this all better... :-/
+./inc/config-functions.php:137: // @TODO Make this all better... :-/
+./inc/config-functions.php:313: // @TODO Call setConfigEntry() somehow
+./inc/config-functions.php:341: // @TODO Call setConfigEntry() somehow
./inc/daily/daily_beg.php:52:// @TODO This should be converted in a daily beg rallye
-./inc/daily/daily_birthday.php:96: // @TODO 4 is hard-coded here, should we move it out in config?
-./inc/expression-functions.php:166:// @TODO FILTER_COMPILE_CONFIG does not handle call-back functions so we handle it here again
+./inc/daily/daily_birthday.php:99: // @TODO 4 is hard-coded here, should we move it out in config?
+./inc/email-functions.php:109: * @TODO Rewrite this to an extension 'smtp'
+./inc/expression-functions.php:170:// @TODO FILTER_COMPILE_CONFIG does not handle call-back functions so we handle it here again
./inc/expression-functions.php:46: // @TODO is escapeQuotes() enougth for strings with single/double quotes?
./inc/extensions/ext-html_mail.php:136: // @TODO Move these arrays into config
./inc/extensions/ext-menu.php:52: // @TODO Convert menu-Id to one coding-standard. admin(edit|_add) => admin_menu_(edit|add), mem(edit|_add) => (edit|add)_(admin|guest|member)_menu
./inc/extensions/ext-network.php:42: * @TODO Yoo!Media: What is LayerAd compared to Layer click? *
./inc/extensions/ext-network.php:99: // @TODO network_type_handler is an internal name and needs documentation
./inc/extensions/ext-newsletter.php:218: // @TODO Move these into configuration
-./inc/extensions/ext-order.php:358: // @TODO This should be moved out to inc/daily/
-./inc/extensions/ext-rallye.php:341: // @TODO Move this code into a hook
+./inc/extensions/ext-order.php:389: // @TODO This should be moved out to inc/daily/
+./inc/extensions/ext-rallye.php:345: // @TODO Move this code into a hook
./inc/extensions/ext-rallye.php:94: // @TODO Fix config_rallye_prices to list_rallye_prices
./inc/extensions/ext-yoomedia.php:121: // @TODO Can this be moved into a database table?
./inc/extensions/ext-yoomedia.php:54:// @TODO Only deprecated when 'ext-network' is ready! setExtensionDeprecated('Y');
-./inc/extensions-functions.php:1944:// @TODO This should be rewrittten to allow, more development states, e.g. 'planing','alpha','beta','beta2','stable'
-./inc/extensions-functions.php:423:// @TODO Change from ext_id to ext_name (not just even the variable! ;-) )
-./inc/extensions-functions.php:560: // @TODO Extension is loaded, what next?
+./inc/extensions-functions.php:1991:// @TODO This should be rewrittten to allow, more development states, e.g. 'planing','alpha','beta','beta2','stable'
+./inc/extensions-functions.php:420: // @TODO This redirect is still needed to register sql_patches! Please try to avoid it
+./inc/extensions-functions.php:436:// @TODO Change from ext_id to ext_name (not just even the variable! ;-) )
+./inc/extensions-functions.php:576: // @TODO Extension is loaded, what next?
./inc/filter/bonus_filter.php:56: // @TODO This query isn't right, it will only update if the user was for a longer time away!
-./inc/filter/cache_filter.php:92: // @TODO This should be rewritten not to load the cache file for just checking if it is there for save removal.
+./inc/filter/cache_filter.php:94: // @TODO This should be rewritten not to load the cache file for just checking if it is there for save removal.
./inc/filter/forced_filter.php:73: // @TODO This part is unfinished
-./inc/functions.php:1197: // @TODO Move this SQL code into a function, let's say 'getTimestampFromPoolId($id) ?
-./inc/functions.php:1285: // @TODO Are these convertions still required?
-./inc/functions.php:1305:// @TODO Rewrite this function to use readFromFile() and writeToFile()
-./inc/functions.php:156:// @TODO Rewrite this to an extension 'smtp'
-./inc/functions.php:1926: // @TODO Find a way to cache this
-./inc/functions.php:2027: // @TODO This is still very static, rewrite it somehow
-./inc/functions.php:2222: // @TODO Rename column data_type to e.g. mail_status
+./inc/functions.php:1082: // @TODO Move this SQL code into a function, let's say 'getTimestampFromPoolId($id) ?
+./inc/functions.php:1168: // @TODO Are these convertions still required?
+./inc/functions.php:1189:// @TODO Rewrite this function to use readFromFile() and writeToFile()
+./inc/functions.php:1810: // @TODO Find a way to cache this
+./inc/functions.php:1915: // @TODO This is still very static, rewrite it somehow
+./inc/functions.php:2119: // @TODO Rename column data_type to e.g. mail_status
./inc/gen_sql_patches.php:95:// @TODO Rewrite this to a filter
-./inc/install-functions.php:57: // @TODO DEACTIVATED: changeDataInLocalConfigurationFile('OUTPUT-MODE', "setConfigEntry('OUTPUT_MODE', '", "');", postRequestElement('omode'), 0);
-./inc/language/de.php:1077: // @TODO Rewrite these two constants
-./inc/language/de.php:1093: // @TODO Rewrite these three constants
-./inc/language/de.php:758:// @TODO Are these constants longer used?
+./inc/header.php:66:// @TODO Find a way to not use direct module comparison
+./inc/install-functions.php:91: // @TODO DEACTIVATED: changeDataInLocalConfigurationFile('OUTPUT-MODE', "setConfigEntry('OUTPUT_MODE', '", "');", postRequestElement('omode'), 0);
+./inc/language/de.php:1103: // @TODO Rewrite these two constants
+./inc/language/de.php:1119: // @TODO Rewrite these three constants
+./inc/language/de.php:749:// @TODO Are these constants longer used?
./inc/language-functions.php:255: // @TODO These are all valid languages, again hard-coded
./inc/language-functions.php:44:// @TODO Rewrite all language constants to this function.
+./inc/language/install_de.php:137: // @TODO Move this to e.g. ext-smtp
./inc/language/newsletter_de.php:13: * @TODO This language file is completely out-dated, please do no *
+./inc/language/order_de.php:70: // @TODO Find better text
./inc/language/rallye_de.php:13: * @TODO Naming convention not applied for language strings *
./inc/language/refback_de.php:51: // @TODO Rewrite these constants to one
-./inc/language/sponsor_de.php:117:// @TODO Rewrite these four constants to one and use sprintf()
-./inc/libs/admins_functions.php:495: // @TODO This can be, somehow, rewritten
+./inc/libs/admins_functions.php:521: // @TODO This can be, somehow, rewritten
./inc/libs/bonus_functions.php:194: // @TODO Move this HTML to a template
./inc/libs/doubler_functions.php:44:// @TODO Lame description
./inc/libs/doubler_functions.php:93: // @TODO Can't this be moved into EL?
+./inc/libs/forced_functions.php:457:// @TODO Can't we use our new expression language instead of this ugly code?
./inc/libs/mailid_functions.php:47: // @TODO Rewrite this to a dynamic include or so
./inc/libs/network_functions.php:978: // @TODO Implement this function
-./inc/libs/rallye_functions.php:705:// @TODO This function does not load min_users, min_prices, please encapsulate loading rallye data with e.g. getRallyeDataFromId()
-./inc/libs/rallye_functions.php:770: $EXPIRE = 3; // @TODO The hard-coded value...
-./inc/libs/rallye_functions.php:856:// @TODO Please document this function
-./inc/libs/rallye_functions.php:912: // Load count @TODO Can't we rewrite this to our API?
-./inc/libs/register_functions.php:282: // @TODO Rewrite these all to a single filter
-./inc/libs/sponsor_functions.php:159: // @TODO Rewrite this to API function
-./inc/libs/sponsor_functions.php:432: // @TODO Rewrite this to API function
-./inc/libs/surfbar_functions.php:1639: // @TODO This can be somehow rewritten
-./inc/libs/surfbar_functions.php:746:// @TODO Can't we use our new expression language instead of this ugly code?
-./inc/libs/task_functions.php:247: // @TODO These can be rewritten to filter
+./inc/libs/order_functions.php:46: // @TODO Move this array into a filter
+./inc/libs/rallye_functions.php:769:// @TODO This function does not load min_users, min_prices, please encapsulate loading rallye data with e.g. getRallyeDataFromId()
+./inc/libs/rallye_functions.php:836: $EXPIRE = 3; // @TODO The hard-coded value...
+./inc/libs/rallye_functions.php:925:// @TODO Please document this function
+./inc/libs/rallye_functions.php:981: // Load count @TODO Can't we rewrite this to our API?
+./inc/libs/sponsor_functions.php:163: // @TODO Rewrite this to API function
+./inc/libs/sponsor_functions.php:436: // @TODO Rewrite this to API function
+./inc/libs/surfbar_functions.php:1672: // @TODO This can be somehow rewritten
+./inc/libs/surfbar_functions.php:776:// @TODO Can't we use our new expression language instead of this ugly code?
+./inc/libs/task_functions.php:253: // @TODO These can be rewritten to filter
./inc/libs/task_functions.php:51:// @TODO Move all extension-dependent queries into filters
./inc/libs/theme_functions.php:93: // @TODO Can't this be rewritten to an API function?
-./inc/libs/user_functions.php:227:// @TODO Double-check configuration entry here
-./inc/libs/user_functions.php:318: // @TODO Make this filter working: $ADDON = runFilterChain('post_login_update', $content);
-./inc/libs/user_functions.php:347: // @TODO Make this filter working: $url = runFilterChain('do_login', array('content' => $content, 'addon' => $ADDON));
+./inc/libs/user_functions.php:325: // @TODO Make this filter working: $ADDON = runFilterChain('post_login_update', $content);
+./inc/libs/user_functions.php:354: // @TODO Make this filter working: $url = runFilterChain('do_login', array('content' => $content, 'addon' => $ADDON));
./inc/libs/yoomedia_functions.php:108: $response = YOOMEDIA_QUERY_API('out_textmail.php', true); // @TODO Ask Yoo!Media for test script
./inc/load_config.php:75: // @TODO Rewrite them to avoid this else block
./inc/loader/load-extension.php:13: * @TODO Rewrite this whole file *
./inc/mails/doubler_mails.php:53:// @TODO Can this be rewritten to a filter?
-./inc/module-functions.php:267: // @TODO Nothing helped???
-./inc/module-functions.php:308: // @TODO Rewrite this to a filter
-./inc/modules/admin/admin-inc.php:1442: // @TODO If we can rewrite the EL sub-system to support more than one parameter, this call_user_func_array() can be avoided
-./inc/modules/admin/admin-inc.php:171: // @TODO This and the next getCurrentAdminId() call might be moved into the templates?
-./inc/modules/admin/admin-inc.php:242: // @TODO This can be rewritten into a filter
-./inc/modules/admin/admin-inc.php:506:// @TODO Try to rewrite this to adminAddMenuSelectionBox()
-./inc/modules/admin/overview-inc.php:162: // @TODO Rewrite this to a filter
-./inc/modules/admin/overview-inc.php:275: // @TODO Rewrite this to something with include files and/or filter
-./inc/modules/admin/overview-inc.php:309: // @TODO This may also be rewritten to include files
-./inc/modules/admin/overview-inc.php:311: default: // @TODO Unknown support mode
-./inc/modules/admin/overview-inc.php:426: // @TODO Try to move this in includes
+./inc/module-functions.php:273: // @TODO Nothing helped???
+./inc/module-functions.php:314: // @TODO Rewrite this to a filter
+./inc/modules/admin/admin-inc.php:1521: // @TODO If we can rewrite the EL sub-system to support more than one parameter, this call_user_func_array() can be avoided
+./inc/modules/admin/admin-inc.php:160: // @TODO This and the next getCurrentAdminId() call might be moved into the templates?
+./inc/modules/admin/admin-inc.php:233: // @TODO This can be rewritten into a filter
+./inc/modules/admin/admin-inc.php:509:// @TODO Try to rewrite this to adminAddMenuSelectionBox()
+./inc/modules/admin/overview-inc.php:168: // @TODO Rewrite this to a filter
+./inc/modules/admin/overview-inc.php:281: // @TODO Rewrite this to something with include files and/or filter
+./inc/modules/admin/overview-inc.php:315: // @TODO This may also be rewritten to include files
+./inc/modules/admin/overview-inc.php:317: default: // @TODO Unknown support mode
+./inc/modules/admin/overview-inc.php:432: // @TODO Try to move this in includes
./inc/modules/admin/overview-inc.php:43:// @TODO This function does also check for uncompleted tasks
./inc/modules/admin/what-add_guestnl_cat.php:47: // @TODO Check if category does already exist
-./inc/modules/admin/what-add_surfbar_url.php:55: // @TODO Find all convertSelectionsToEpocheTime() calls and rewrite postRequestElement() calls to $postData
-./inc/modules/admin/what-admin_add.php:118: // @TODO This can be somehow rewritten to a function
-./inc/modules/admin/what-admin_add.php:59: // @TODO Cant this be rewritten?
-./inc/modules/admin/what-admin_add.php:75: // @TODO This can be somehow rewritten to a function
+./inc/modules/admin/what-admin_add.php:120: // @TODO This can be somehow rewritten to a function
+./inc/modules/admin/what-admin_add.php:61: // @TODO Cant this be rewritten?
+./inc/modules/admin/what-admin_add.php:77: // @TODO This can be somehow rewritten to a function
./inc/modules/admin/what-adminedit.php:56: // @TODO Kill all constants in this file
./inc/modules/admin/what-admins_mails.php:58: // @TODO Can this be rewritten to an API function?
./inc/modules/admin/what-bonus.php:46:// @TODO Unused at the moment
./inc/modules/admin/what-config_mods.php:55: // @TODO This can be moved into mysql-function.php, see checkModulePermissions() function
./inc/modules/admin/what-config_points.php:110: // @TODO Rewrite this to a filter
-./inc/modules/admin/what-config_rallye_prices.php:195: // @TODO Rewrite these two constants
-./inc/modules/admin/what-config_rallye_prices.php:227: // @TODO rename: start->start_time, end->end_time
+./inc/modules/admin/what-config_points.php:133: // @TODO Rewrite these two lines for new user_points columns (e.g. locked_order_points) with a filter
+./inc/modules/admin/what-config_rallye_prices.php:222: // @TODO Rewrite these two constants
./inc/modules/admin/what-config_register.php:75: // @TODO Move this HTML code into a template
./inc/modules/admin/what-del_email.php:61: // @TODO Unused: cat_id, payment_id
./inc/modules/admin/what-edit_user.php:18: * @TODO Add support for ext-country *
./inc/modules/admin/what-email_stats.php:46:// @TODO Unused at the moment
-./inc/modules/admin/what-extensions.php:371: // @TODO Rewrite this to a filter
+./inc/modules/admin/what-extensions.php:362: // @TODO Rewrite this to a filter
./inc/modules/admin/what-guest_add.php:129: // @TODO This can be somehow rewritten to a function
./inc/modules/admin/what-guest_add.php:67: // @TODO Cant this be rewritten?
./inc/modules/admin/what-guest_add.php:80: // @TODO This can be somehow rewritten to a function
./inc/modules/admin/what-list_admins_acls.php:101: // @TODO Rewrite this to a filter
./inc/modules/admin/what-list_admins_acls.php:129: // @TODO Rewrite this to filter 'run_sqls'
./inc/modules/admin/what-list_autopurge.php:47:// @TODO Rewrite those lines to filter
-./inc/modules/admin/what-list_bonus.php:136: // @TODO Can't this be moved into our expression language?
+./inc/modules/admin/what-list_bonus.php:137: // @TODO Can't this be moved into our expression language?
./inc/modules/admin/what-list_cats.php:54: // @TODO No longer needed? define('__CATEGORIES_BASE' , '<a href="{%url=modules.php?module=admin&userid=');
./inc/modules/admin/what-list_cats.php:68: // @TODO Rewrite this to countSum.....() function
-./inc/modules/admin/what-list_links.php:55: // @TODO Try to rewrite this to a filter
-./inc/modules/admin/what-list_links.php:85: // @TODO Find a way to rewrite this. See some lines above for different queries
-./inc/modules/admin/what-list_links.php:93: // @TODO Rewrite this to includes/filter
-./inc/modules/admin/what-list_refs.php:100: // @TODO Try to rewrite some to EL
+./inc/modules/admin/what-list_links.php:96: // @TODO Rewrite this to includes/filter
+./inc/modules/admin/what-list_refs.php:101: // @TODO Try to rewrite some to EL
./inc/modules/admin/what-list_unconfirmed.php:107: // @TODO "Please do not call me directly." Should be rewritten to a nice selection depending on ext-bonus
./inc/modules/admin/what-list_unconfirmed.php:84: // @TODO This constant might be unused? define('__LIST_UNCON_TITLE', '{--ADMIN_LIST_UNCONFIRMED_BONUS_LINKS--}');
-./inc/modules/admin/what-list_user.php:247: // @TODO Rewrite this into a filter
-./inc/modules/admin/what-list_user.php:290: // @TODO Rewrite this into a filter
+./inc/modules/admin/what-list_user.php:290: // @TODO Rewrite this into a filter
+./inc/modules/admin/what-list_user.php:355: // @TODO Rewrite this into a filter
./inc/modules/admin/what-logs.php:64: // @TODO Fix content-type here
./inc/modules/admin/what-logs.php:70: // @TODO Fix content-type here
./inc/modules/admin/what-mem_add.php:124: // @TODO This can be somehow rewritten to a function
./inc/modules/admin/what-unlock_emails.php:84: // @TODO Rewrite these if-blocks to a filter
./inc/modules/admin/what-usage.php:89: // @TODO This code is double, see loadTemplate() and loadEmailTemplate() in functions.php
./inc/modules/admin/what-usr_online.php:49: // @TODO Add a filter for sponsor
+./inc/modules/frametester.php:95: // @TODO Rewrite this somehow
./inc/modules/guest/what-beg.php:51:// @TODO No more needed? define('__BEG_USERID_TIMEOUT', createFancyTime(getBegUseridTimeout()));
-./inc/modules/guest/what-login.php:125: // @TODO Move this HTML code into a template
-./inc/modules/guest/what-mediadata.php:182:// @TODO Rewrite all these if-blocks to filters
+./inc/modules/guest/what-login.php:134: // @TODO Move this HTML code into a template
+./inc/modules/guest/what-mediadata.php:186:// @TODO Rewrite all these if-blocks to filters
./inc/modules/guest/what-mediadata.php:67: // @TODO Find a better formular than this one
-./inc/modules/guest/what-rallyes.php:89: // @TODO Reactivate this: $content['admin'] = '<a href="{%url=modules.php?module=index&what=impressum&id=' . $adminId . '%}">' . $login . '</a>';
+./inc/modules/guest/what-rallyes.php:99: // @TODO Reactivate this: $content['admin'] = '<a href="{%url=modules.php?module=index&what=impressum&id=' . $content['admin_id'] . '%}">' . $content['login'] . '</a>';
./inc/modules/guest/what-sponsor_reg.php:289: // @TODO Maybe a default referral id?
-./inc/modules/guest/what-stats.php:108: // @TODO This can be somehow rewritten
+./inc/modules/guest/what-stats.php:110: // @TODO This can be somehow rewritten
./inc/modules/guest/what-stats.php:82:// @TODO This can be rewritten in a dynamic include
./inc/modules/member/what-beg.php:54:// @TODO Can't this be moved into EL?
./inc/modules/member/what-beg.php:63:// @TODO No more needed? define('__BEG_USERID_TIMEOUT', createFancyTime(getBegUseridTimeout()));
-./inc/modules/member/what-categories.php:131: // @TODO Rewrite this to use $OUT .= ...
./inc/modules/member/what-logout.php:17: * @TODO Rewrite the code to a filter *
-./inc/modules/member/what-order.php:485: // @TODO Rewrite this to a filter
-./inc/modules/member/what-order.php:82: // @TODO Rewrite this to SQL_FETCHARRAY()
+./inc/modules/member/what-order.php:482: // @TODO Rewrite this to a filter
+./inc/modules/member/what-order.php:84: // @TODO Rewrite this to SQL_FETCHARRAY()
./inc/modules/member/what-payout.php:194: // @TODO Rewrite this to a filter
-./inc/modules/member/what-points.php:55:// @TODO Should we rewrite this to a filter?
-./inc/modules/member/what-rallyes.php:89: // @TODO Reactivate this: $content['admin'] = '<a href="{%url=modules.php?module=index&what=impressum&id=' . $content['admin_id'] . '%}">' . $content['login'] . '</a>';
+./inc/modules/member/what-points.php:61:// @TODO Should we rewrite this to a filter?
+./inc/modules/member/what-rallyes.php:99: // @TODO Reactivate this: $content['admin'] = '<a href="{%url=modules.php?module=index&what=impressum&id=' . $content['admin_id'] . '%}">' . $content['login'] . '</a>';
./inc/modules/member/what-reflinks.php:52:// @TODO Move this into a filter
./inc/modules/member/what-transfer.php:128: // @TODO Rewrite this to a filter
./inc/modules/member/what-unconfirmed.php:162: // @TODO Try to rewrite this to $content = SQL_FETCHARRAY()
./inc/modules/member/what-unconfirmed.php:227: // @TODO This 'userid' cannot be saved because of encapsulated EL code
./inc/modules/order.php:78: // @TODO Unused: 2,4
-./inc/mysql-manager.php:1410: // @TODO Rewrite these lines to a filter
-./inc/mysql-manager.php:1434: // @TODO Rewrite this to a filter
-./inc/mysql-manager.php:1693: // @TODO Rewrite this to a filter
-./inc/mysql-manager.php:1739:// @TODO Fix inconsistency between last_module and getWhat()
-./inc/mysql-manager.php:387: // @TODO Try to rewrite this to one or more functions
+./inc/mysql-manager.php:1433: // @TODO Rewrite these lines to a filter
+./inc/mysql-manager.php:1457: // @TODO Rewrite this to a filter
+./inc/mysql-manager.php:1713: // @TODO Rewrite this to a filter
+./inc/mysql-manager.php:390: // @TODO Try to rewrite this to one or more functions
./inc/mysql-manager.php:44:// @TODO Can we cache this?
./inc/purge/purge-inact.php:55: // @TODO Rewrite these if() blocks to a filter
-./inc/revision-functions.php:169:// @TODO This function does also set and get in 'cache_array'
-./inc/template-functions.php:1105: // @TODO Deprecate this thing
-./inc/template-functions.php:1116: // @TODO Deprecate this thing
-./inc/template-functions.php:1206: // @TODO This can be easily moved out after the merge from EL branch to this is complete
-./inc/template-functions.php:1242: // @TODO Add a little more infos here
-./inc/template-functions.php:1571:// @TODO Lame description for this function
-./inc/template-functions.php:1593: // @TODO Move this in a filter
-./inc/template-functions.php:193: * @TODO On some pages this is buggy
-./inc/template-functions.php:281: // @TODO Remove these sanity checks if all is fine
-./inc/template-functions.php:611:// @TODO $simple/$constants are deprecated
-./inc/wrapper-functions.php:485:// @TODO Do some more sanity check here
-./inc/xml-functions.php:189: // @TODO Handle characters
-./mailid.php:139: // @TODO Rewrite this to a filter
-./mailid.php:96: // @TODO Rewrite this to a filter
-./mailid_top.php:105: // @TODO Rewrite this to a filter
-./mailid_top.php:142: // @TODO Rewrite this to a filter
-./mailid_top.php:189: // @TODO Rewrite this to a filter
+./inc/revision-functions.php:168:// @TODO This function does also set and get in 'cache_array'
+./inc/template-functions.php:1107: // @TODO Deprecate this thing
+./inc/template-functions.php:1118: // @TODO Deprecate this thing
+./inc/template-functions.php:1225: // @TODO This can be easily moved out after the merge from EL branch to this is complete
+./inc/template-functions.php:1274: // @TODO Add a little more infos here
+./inc/template-functions.php:1642:// @TODO Lame description for this function
+./inc/template-functions.php:1664: // @TODO Move this in a filter
+./inc/template-functions.php:197: * @TODO On some pages this is buggy
+./inc/template-functions.php:285: // @TODO Remove these sanity checks if all is fine
+./inc/template-functions.php:598:// @TODO $simple/$constants are deprecated
+./inc/template-functions.php:696: // @TODO $userid is deprecated and should be removed from loadEmailTemplate() and replaced with $content[userid] in all templates
+./inc/wrapper-functions.php:2916: // @TODO Find a way to not use direct module comparison
+./inc/wrapper-functions.php:494:// @TODO Do some more sanity check here
+./inc/xml-functions.php:208: // @TODO Handle characters
+./mailid.php:102: // @TODO Rewrite this to a filter
+./mailid.php:145: // @TODO Rewrite this to a filter
+./mailid_top.php:108: // @TODO Rewrite this to a filter
+./mailid_top.php:145: // @TODO Rewrite this to a filter
./mailid_top.php:18: * @TODO Merge this script with mailid.php *
-./mailid_top.php:196: // @TODO Rewrite this to a filter
-./mailid_top.php:231: // @TODO Rewrite these blocks to filter
+./mailid_top.php:192: // @TODO Rewrite this to a filter
+./mailid_top.php:199: // @TODO Rewrite this to a filter
+./mailid_top.php:234: // @TODO Rewrite these blocks to filter
./view.php:71: // @TODO No banner found, output some default banner
./templates/de/html/admin/admin_add_country.tpl:23: <!-- @TODO Rewrite this selection box to our generic functions //-->
./templates/de/html/admin/admin_config_other.tpl:79: <!-- @TODO Rewrite this selection to one of our functions //-->
./templates/de/html/admin/admin_config_rewrite.tpl:4: <!-- @TODO No title here? //-->
./templates/de/html/admin/admin_edit_admin_menu.tpl:4:<!-- @TODO Shouldn't we add a title here? //-->
-./templates/de/html/admin/admin_list_refs_level.tpl:20: <!-- @TODO Nothing to say here? //-->
+./templates/de/html/admin/admin_list_refs_level.tpl:21: <!-- @TODO Nothing to say here? //-->
./templates/de/html/admin/admin_list_unconfirmed_list.tpl:3:<!-- @TODO Shouldn't we add a title here? //-->
./templates/de/html/admin/admin_login_form.tpl:34: @TODO Doesn't work with sessions
./templates/de/html/admin/admin_login_form.tpl:37: @TODO Try to move the select box to our generic functions
./templates/de/html/guest/guest_login.tpl:21: @TODO Deactivated feature, try to implement it or remove it.
./templates/de/html/guest/guest_nickname_login.tpl:21: @TODO Deactivated feature, try to find a solution for this or remove it.
./templates/de/html/guest/guest_stats_member.tpl:21: @TODO We have to fix these counters.
-./templates/de/html/member/member_unconfirmed_table_nopoints.tpl:11: <!-- @TODO Nothing to say here? //-->
+./templates/de/html/member/member_unconfirmed_table_nopoints.tpl:12: <!-- @TODO Nothing to say here? //-->
./templates/de/html/surfbar/surfbar_frameset.tpl:4: // @TODO This redirect kills our own frameset
./templates/de/html/surfbar/surfbar_frame_textlinks.tpl:5: <!-- @TODO These are static lines and should be replaced by a filter (see ext-network/ext-sponsor) //-->
./.htaccess:10: # @TODO When ext-imprint is finished RewriteRule ^modules.php?module=index&what=impressum$ modules.php?module=index&what=imprint [L]
-./.htaccess:11: # @TODO When ext-terms is finished RewriteRule ^agb.php$ modules.php?module=index&what=terms [L]
+./.htaccess:11: # @TODO When ext-terms is finished RewriteRule ^cms/index/wht/agb$ modules.php?module=index&what=terms [L]
+./.htaccess:12: # @TODO When ext-terms is finished RewriteRule ^modules.php?module=index&what=agb$ modules.php?module=index&what=terms [L]
+./.htaccess:13: # @TODO When ext-terms is finished RewriteRule ^agb.php$ modules.php?module=index&what=terms [L]
./.htaccess:9: # @TODO When ext-imprint is finished RewriteRule ^cms/index/wht/impressum$ modules.php?module=index&what=imprint [L]
### ### DEPRECATION FOLLOWS: ### ###
./inc/autopurge/purge-general.php:2:// @DEPRECATED
./inc/autopurge/purge-tsks.php:2:// @DEPRECATED
./inc/autopurge/purge-unconfirmed.php:2:// @DEPRECATED
./inc/daily/daily_engine.php:2:// @DEPRECATED
+./inc/extensions/ext-funcoins.php:2:// @DEPRECATED
./inc/extensions/ext-iso3166.php:2:// @DEPRECATED
+./inc/extensions/ext-primera.php:2:// @DEPRECATED
./inc/gen_refback.php:2:// @DEPRECATED
./inc/js/js-jquery.php:2:// @DEPRECATED
+./inc/language/funcoins_de.php:2:// @DEPRECATED
+./inc/language/primera_de.php:2:// @DEPRECATED
+./inc/libs/funcoins_functions.php:2:// @DEPRECATED
+./inc/libs/primera_functions.php:2:// @DEPRECATED
./inc/loader/load_cache-admin.php:2:// @DEPRECATED
./inc/loader/load_cache-config.php:2:// @DEPRECATED
./inc/loader/load_cache-extension.php:2:// @DEPRECATED
./inc/loader/load_cache-revision.php:2:// @DEPRECATED
./inc/loader/load_cache-them.php:2:// @DEPRECATED
./inc/loader/load-extensions.php:2:// @DEPRECATED
-./inc/modules/admin/admin-inc.php:507:// @DEPRECATED
+./inc/modules/admin/action-funcoins.php:2:// @DEPRECATED
+./inc/modules/admin/action-primera.php:2:// @DEPRECATED
+./inc/modules/admin/admin-inc.php:510:// @DEPRECATED
./inc/modules/admin/what-chk_regs.php:2:// @DEPRECATED
./inc/modules/admin/what-config_admins.php:2:// @DEPRECATED
./inc/modules/admin/what-config_email.php:2:// @DEPRECATED
+./inc/modules/admin/what-config_funcoins.php:2:// @DEPRECATED
./inc/modules/admin/what-config_networks.php:2:// @DEPRECATED
+./inc/modules/admin/what-config_primera.php:2:// @DEPRECATED
./inc/modules/admin/what-list_network_api_translation.php:2:// @DEPRECATED
./inc/modules/admin/what-list_network_params.php:2:// @DEPRECATED
+./inc/modules/admin/what-list_primera.php:2:// @DEPRECATED
+./inc/modules/admin/what-overview.php:2:// @DEPRECATED
./inc/modules/guest/action-actions.php:2:// @DEPRECATED
./inc/modules/guest/action-dummy.php:2:// @DEPRECATED
./inc/modules/guest/action-interna.php:2:// @DEPRECATED
./inc/modules/guest/what-svn.php:2:// @DEPRECATED
./inc/modules/guest/what-why_reg.php:2:// @DEPRECATED
./inc/modules/member/what-earnings.php:2:// @DEPRECATED
+./inc/modules/member/what-primera.php:2:// @DEPRECATED
./inc/modules/member/what-surfbar_book.php:2:// @DEPRECATED
./inc/modules/member/what-surfbar_start.php:2:// @DEPRECATED
./inc/modules/member/what-surfbar_stats.php:2:// @DEPRECATED
./inc/reset/reset_profile.php:2:// @DEPRECATED
./inc/reset/reset_surfbar.php:2:// @DEPRECATED
./inc/reset/reset_yoomedia.php:2:// @DEPRECATED
-./inc/template-functions.php:464: // @DEPRECATED Loading the user data by given userid is deprecated because it is not related to template loading
./network-check.php:2:// @DEPRECATED
./templates/de/emails/add-points.tpl:1:@DEPRECATED
./templates/de/emails/admin/admin_coupon.tpl:1:@DEPRECATED
./templates/de/emails/bonus-mail.tpl:1:@DEPRECATED
./templates/de/emails/confirm-member.tpl:1:@DEPRECATED
./templates/de/emails/confirm-referral.tpl:1:@DEPRECATED
+./templates/de/emails/del_sponsor.tpl:1:@DEPRECATED
./templates/de/emails/del-user.tpl:1:@DEPRECATED
./templates/de/emails/done-admin.tpl:1:@DEPRECATED
./templates/de/emails/done-member.tpl:1:@DEPRECATED
./templates/de/emails/guest/guest_user_confirmed_referal.tpl:1:@DEPRECATED
+./templates/de/emails/lock_sponsor.tpl:1:@DEPRECATED
./templates/de/emails/lock-user.tpl:1:@DEPRECATED
./templates/de/emails/member/member_coupon.tpl:1:@DEPRECATED
./templates/de/emails/member/member_del_surfbar_urls.tpl:1:@DEPRECATED
./templates/de/html/admin/admin_config_email_edit.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_email_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_email.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_funcoins.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_home_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_home_settings.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_network.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_payouts_del_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_payouts_del.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_config_payouts_edit_row.tpl:1:<!-- @DEPRECATED //-->
-./templates/de/html/admin/admin_config_payouts_edit.tpl:1:<!--@DEPRECATED //-->
+./templates/de/html/admin/admin_config_payouts_edit.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_primera.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_rallye_del_row.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_rallye_del.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_rallye_edit_row.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_rallye_edit.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_rallye_prices_row.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_config_rallye_prices.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_delete_network_params_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_delete_network_params.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_del_surfbar_urls_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_list_network_config.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_list_network_params_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_list_network_params.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_list_primera_main.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/admin/admin_list_primera_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_list_refs2.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_list_user_sort_form.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/admin/admin_main_header.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/donate_bottom.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/donate.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/downloads.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/ext/ext_ebesucher.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/ext/ext_funcoins.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/ext/ext_iso3166.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/faqs.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/fatal_footer.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/guest/guest_rallye_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/guest/guest_rallye_show.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/guest/guest_rallye.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/install/install_main.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/jobs.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/js/js_admin_menu_onclick.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/js/js_jquery.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/link_us.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/listed.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/login_failtures.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_cat_row.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_cats_footer.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_cats_header.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/member/member_list_referal_level.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/member/member_list_referal_row.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/member/member_list_referal.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_order-back.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_order-html_ext.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_order-html_intro.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_order-zip1.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_order-zip2.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_primera_mode_list_row.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_primera_mode_list.tpl:1:<!-- @DEPRECATED //-->
+./templates/de/html/member/member_primera_mode_pay.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/member/member_refback_edit.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/member/member_refback_list_level.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/member/member_refback_list_row_deleted.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/requirements.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/rettet_das_internet.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/roadmap.tpl:1:<!-- @DEPRECATED //-->
-./templates/de/html/send_bonus_footer.tpl:1:<!-- @DEPRECATED //-->
-./templates/de/html/send_bonus_header.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/stats.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/svn.tpl:1:<!-- @DEPRECATED //-->
./templates/de/html/why_reg.tpl:1:<!-- @DEPRECATED //-->
./templates/xml/admin/admin_del_do_surfbar_urls.xml:1:<!-- @DEPRECATED //-->
./templates/xml/admin/admin_del_show_surfbar_urls.xml:1:<!-- @DEPRECATED //-->
### ### template-warnings.log follows: ### ###
-Warning: Not parsing JavaScript templates/de/html/js/js_order_send.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_cookies_disabled.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_uberwach.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_surfbar_frame_top.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_jquery.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_surfbar_member_book.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_surfbar_stopped.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_surfbar_member_edit.tpl.
-Warning: Not parsing JavaScript templates/de/html/js/js_admin_menu_onclick.tpl.
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/page_footer.tpl, line: 1 in /media
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/menu/menu_what_end.tpl, line: 1 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/menu/menu_what_end.tpl, line: 2 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/admin/admin_main_footer.tpl, line: 1 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/admin/admin_main_footer.tpl, line: 2 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/admin/admin_main_footer.tpl, line: 8 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/admin/admin_main_footer.tpl, line: 9 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/guest/guest_footer.tpl, line: 6 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/guest/guest_menu_content.tpl, line: 2 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/guest/guest_content_footer.tpl, line: 1 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/guest/guest_content_footer.tpl, line: 5 in
-PHP Warning: DOMDocument::loadHTMLFile(): ID form already defined in templates/de/html/member/member_cash_coupon.tpl, line: 21 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/member/member_cats_footer.tpl, line: 7 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : form in templates/de/html/member/member_cats_footer.tpl, line: 8 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/member/member_cats_footer.tpl, line: 9 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/member/member_footer.tpl, line: 6 in
+PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/member/member_reflink.tpl, line: 29 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/member/member_content_right.tpl, line: 1 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/member/member_content_right.tpl, line: 5 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: form and div in templates/de/html/member/member_book_surfbar_dynamic.tpl, line: 47 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/member/member_reflink.tpl, line: 29 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_list_beg.tpl, line: 24 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/member/member_welcome_footer.tpl, line: 1 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/member/member_footer.tpl, line: 6 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 9 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 13 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 19 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 25 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 31 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 37 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 43 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : strong in templates/de/html/member/member_mail_normal_active.tpl, line: 49 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: div and u in templates/de/html/ext/ext_cprping.tpl, line: 18 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: div and u in templates/de/html/ext/ext_cprping.tpl, line: 18 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/page_footer.tpl, line: 1 in /home
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/menu/menu_what_end.tpl, line: 1 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/menu/menu_what_end.tpl, line: 2 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: td and strong in templates/de/html/admin/admin_list_beg.tpl, line: 6 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: td and strong in templates/de/html/admin/admin_list_beg.tpl, line: 6 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: form and div in templates/de/html/admin/admin_add_config_network_type.tpl, line: 17 in
-PHP Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in templates/de/html/admin/admin_add_payout.tpl, line: 99 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: form and div in templates/de/html/admin/admin_add_config_network_type_form.tpl, line: 39 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: form and div in templates/de/html/admin/admin_show_config_network_type.tpl, line: 34 in
-PHP Warning: DOMDocument::loadHTMLFile(): Opening and ending tag mismatch: form and div in templates/de/html/admin/admin_edit_config_network_type_form.tpl, line: 40 in
-PHP Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in templates/de/html/admin/admin_add_refbanner.tpl, line: 2 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/admin/admin_main_footer.tpl, line: 1 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/admin/admin_main_footer.tpl, line: 2 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/admin/admin_main_footer.tpl, line: 8 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/admin/admin_main_footer.tpl, line: 9 in
-PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : form in templates/de/html/admin/admin_config_network_types.tpl, line: 22 in
-PHP Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in templates/de/html/admin/admin_edit_email_max_rec.tpl, line: 2 in
http://www.gnu.de/gpl-ger.html
-Die gueltige Lizenz zu dieser Software finden Sie in der Datei DOCS/LICENSE.txt.
+Die gueltige Lizenz zu dieser Software finden Sie in der Datei DOCS/LICENSE-GPL2.txt.
Eine Online-Kopie koennen Sie unter folgender URL abrufen:
muessen derzeit die deutsche Sprache dann so aufrufen:
http://www.ihr-server.de/install.php?mx_lang=de
-- Lassen Sie folgende Einstellungen beim Installieren auf Standart:
+- Lassen Sie folgende Einstellungen beim Installieren auf Standard:
+ Ausgabe-Modus auf 'render'
+ Frameset abschalten (Table-Set aktivieren).
Die Erweiterungen admintheme1 und admintheme_default sind Sondererweiterungen:
-- admintheme_default: Standartmenue (Auslieferung) setzen
+- admintheme_default: Standardmenue (Auslieferung) setzen
- admintheme1: EMail-Statistik und Online-Statistik werden in das Menue
Statistiken verschoben
Zurueck zur Konfiguration des Mailtausches!
-Als naechstes sollten Sie schauen, ob Sie mit den Standartbeschriftungen aller
+Als naechstes sollten Sie schauen, ob Sie mit den Standardbeschriftungen aller
Menues zufrieden sind (was auch meistens so ist... ;-) ). Dann richten Sie unter
"Einstellungen" die Untermenuepunkte von oben nach unten durcharbeiten:
geschieht vollkommen automatisch!
Melden Sie sich als naechstes selber an. Die vom System Ihnen zugeteilte Ref-ID
-tragen Sie unter "Einstellungen -> Standart Ref-ID" als Referral-ID ein.
+tragen Sie unter "Einstellungen -> Standard Ref-ID" als Referral-ID ein.
Sobald Sie dies getan haben, und jemand Ihren Mailtausch ohne Ref-Link aufruft,
wird automatisch Ihre Ref-ID im Anmeldeformular eingesetzt. Folglich erhalten Sie
LOESUNG: (LigHTTPd)
Bitte hier nachsehen: http://forum.mxchange.org/topic-477.html Letztendlich
muss die Einstellung 'net.core.somaxconn' auf z.B. 1024 erhoeht werden,
- Standartwert ist 128 unter Debian, was bei hoher Last viel zu niedrig ist.
+ Standardwert ist 128 unter Debian, was bei hoher Last viel zu niedrig ist.
FEHLER:
Ihr Hoster leitet alle nicht eingerichteten Subdomains auf Ihre Hauptseite
die URL Ihrer Webseite ein:
// Fix URL - start
-setConfigEntry('URL', 'http://www.your-domain.invalid');
+setConfigEntry('URL', 'http://www.your-domain.example');
// Fix URL - end
(*KEIN* Slash am Ende!)
http://bugs.mxchange.org
+Das Wiki liefert viele wichtige Informationen:
+
+http://wiki.mxchange.org
+
Alle wichtigen Kontaktdaten finden Sie im Impressum:
http://mxchange.org/cms/index/wht/impressum
12. Aufloesung von Nummern:
---------------------------
-[1]: http://mxchange.org/repos/mailer/branches/0.2.1-FINAL/DOCS/LICENSE.txt
+[1]: http://mxchange.org/repos/mailer/branches/0.2.1-FINAL/DOCS/LICENSE-GPL2.txt
[EOF]
Es ist also weder moeglich, sich mit gleicher E-Mail-Adresse, noch innerhalb
einer einstellbaren Zeitspanne mit unterschiedlichen E-Mail-Adressen anzumelden.
-Beide Barrieren koennen Sie im Admin-Bereich veraendern, die Standart-
+Beide Barrieren koennen Sie im Admin-Bereich veraendern, die Standard-
Einstellungen sind mit einigen Webmastern abgeklaert und sollte sicher genug
sein.
--- OFFEN: ---
- Den gesamten HTML-Code auf XHTML portieren und mit http://validator.w3.org validieren
- Alle JavaScripte aus den HTML-Templates umlagern und per js.php?tag=xxx
- aufrufen
+ aufrufen (bzw. nach js/ auslagern wenn keine Template-Variablen vorhanden sind)
- Die Datenbankspalten ext_has_css nach ext_css und id nach ext_id umbenennen (Tabelle extensions)
- Dokumentation erweitern
- Englische Uebersetzung komplettieren
Aufruf von autoreg.php:
-http://ihr-server.domain.invalid/autoreg.php?request=url_encode(base64_encode(gzcompress(ENCRYPT|REQUEST-DATA|AUTH-KEY)))
+http://ihr-server.domain.example/autoreg.php?request=url_encode(base64_encode(gzcompress(ENCRYPT|REQUEST-DATA|AUTH-KEY)))
Dabei gilt:
--------------------------------------------------------------------------------
-Forced-Banner/-Textlink (Ads):
-- Id-Nummer
-- Banner-URL
-- Klick-URL
-- Hoehe
-- Breite
-- Alternativer Text
-- Framebrecher Y/N
-- Zaehler Anzahl Klicks
-- Zaehler Anzahl Views
-- Reloadzeit/-sperre
-- Mindestauffenthalt
+-------------------------------------------------------------------------------
+ Hinweis wegen Saeuberung dieser Datei
+-------------------------------------------------------------------------------
-Forced-Kampagnen:
-- Id-Nummer
-- Banner-Id
-- Buchungszeitmarke
-- Status (ACTIVE,PENDING,EXPIRED,LOCKED)
-- Sperrgrund
-- Sperrzeitmarke
-- Ablaufzeitmarke
-- Preis pro Klick
-- Verguetung pro Klick
-- Anzahl gebuchter Klicks
-- Veguetung-Id (wenn nicht Preis/Verguetung gesetzt sind)
-
-Forced-Kampagne<>User:
-- Id-Nummer
-- Kampagnen-Id
-- Bucher-Id (vom Mitglied/Sponsor/Admin)
-- Bucher-Typ (USER,SPONSOR,ADMIN,API)
-
-Forced-Verguetungen f. Mitglieder/Sponsoren
-- Id-Nummer
-- Preis pro Klick
-- Verguetung pro Klick
-- Sichtbarkeit (MEMBER,SPONSOR,ALL,NONE)
-
-Forced-Kampagnenstatistik
-- Id-Nummer
-- Kampagnen-Id
-- User-Id (der geklickt hat)
-- Klickzeitpunkt
-- Verguetung
+Diese Datei wurde am 03.10.2011 gesaeubert, da diese Datei nicht mehr gewartet
+wird und der Aufwand, drei Stellen (diese Datei, die ext-forced.php selbst und
+das Wiki) zu gross wird. Anstelle gibt es jetzt eine Wiki-Seite, die gepflegt
+wird.
+Hier der Link zur Entwickler-Wiki-Seite von ext-forced:
+http://wiki.mxchange.org/doku.php/de/developer/ideas/extensions/ext-forced
TID = Track-Id oder Sub-Id (z.B. lokale User-Id von dem klickenden Mitglied)
Beispiel:
-http://www.anbieter-name.invalid/code/t-mail.php?id=%UID%&sid=%SID%&trackid=%TID%
+http://www.anbieter-name.example/code/t-mail.php?id=%UID%&sid=%SID%&trackid=%TID%
-------------------------------------------------------------------------------
Zugangsbereiches des Werbenetzwerkes ein, wo Sie sich angemeldet haben.
So kann dieser Link aussehen:
-http://www.anbieter-name.invalid/?ref=xxxx
+http://www.anbieter-name.example/?ref=xxxx
Den genauen Link erfahren Sie im Zugangsbereich des Werbenetzwerkes meistens
unter "Werbebanner" oder "Ref-Center". Bitte kopieren Sie jedoch keinen
-#!/bin/sh
-
-# Shell script to determine where in the code are commented-in debug lines
-#
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-svn diff |grep -v "svn diff" | grep "DEBUG" | grep "+" | grep -v "//\* DEBUG" > DOCS/debug-lines.log
+#@DEPRECATED
-Please read the license file DOCS/LICENSE.txt for details.
+Please read the license file DOCS/LICENSE-GPL2.txt for details.
[EOF]
Es ist also weder moeglich, sich mit gleicher E-Mail-Adresse, noch innerhalb
einer einstellbaren Zeitspanne mit unterschiedlichen E-Mail-Adressen anzumelden.
-Beide Barrieren koennen Sie im Admin-Bereich veraendern, die Standart-
+Beide Barrieren koennen Sie im Admin-Bereich veraendern, die Standard-
Einstellung ist mit einigen Webmastern abgeklaert und sollte sicher genug sein.
3. Modul-Sicherheit
-#!/bin/sh
-
-# Shell script to determine how close we are to final release
-# If one of these values are bigger zero we still have to do something
-#
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-echo "$0: Analyzing..."
-echo " - TODOs in PHP..."
-TODOS_PHP=`find -type f -name "*.php" -exec grep "@TODO" {} \; | grep "@" --count`
-echo " - TODOs in TPL..."
-TODOS_TPL=`find -type f -name "*.tpl" -exec grep "@TODO" {} \; | grep "@" --count`
-echo " - TODOs in XML..."
-TODOS_XML=`find -type f -name "*.xml" -exec grep "@TODO" {} \; | grep "@" --count`
-echo " - DEPRECATED in PHP..."
-DEPRECATED_PHP=`find -type f -name "*.php" -exec grep "@DEPRECATED" {} \; | grep "@" --count`
-echo " - DEPRECATED in TPL..."
-DEPRECATED_TPL=`find -type f -name "*.tpl" -exec grep "@DEPRECATED" {} \; | grep "@" --count`
-echo " - DEPRECATED in XML..."
-DEPRECATED_XML=`find -type f -name "*.xml" -exec grep "@DEPRECATED" {} \; | grep "@" --count`
-echo " - global statements..."
-GLOBALS=`find -type f -name "*.php" -exec grep -Hn "global " {} \; | grep -v "//" | grep -v "security_functions.php" | grep -v "phpmailer" --count`
-echo "$0: Result..."
-echo "--------------------------------------"
-echo " - Open TODOs: ${TODOS_PHP}/${TODOS_TPL}/${TODOS_XML}"
-echo " - Open DEPRECATED: ${DEPRECATED_PHP}/${DEPRECATED_TPL}/${DEPRECATED_XML}"
-echo " - global statements: ${GLOBALS}"
-echo "--------------------------------------"
-echo "$0: Thanks for waiting for the final release 0.2.1-FINAL! :-)"
-echo
-exit 0
+#@DEPRECATED
-#!/bin/sh
-
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-echo "$0: Analysing PHP scripts for syntax errors (lint) ..."
-LINT=`find -type f -name "*.php" -exec php -l -f {} 2>&1 \; | grep -v "No syntax errors detected in"`
-
-if test "${LINT}" != ""; then
- echo "${LINT}"
-else
- echo "$0: No syntax errors found."
-fi
+#@DEPRECATED
-#!/bin/sh
-
-svn merge --dry-run http://mxchange.org/repos/mailer/branches/0.2.1-FINAL-expression_language_BROKEN/ http://mxchange.org/repos/mailer/branches/0.2.1-FINAL .
+#@DEPRECATED
-#!/bin/sh
-
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-find -type f -name "*.php" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \;
-find -type f -name "*-" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \;
-find -type f -name "*_" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \;
-find -type f -name "_*.php" -exec svn propset svn:keywords "Author Id Revision HeadURL Date Tag" {} \;
-find -type f -name "*.php" -exec svn propset svn:mime-type "text/plain" {} \;
-find -type f -name "*-" -exec svn propset svn:mime-type "text/plain" {} \;
-find -type f -name "*_" -exec svn propset svn:mime-type "text/plain" {} \;
-find -type f -name "_*.php" -exec svn propset svn:mime-type "text/plain" {} \;
-find -type f -name "*.jpg" -exec svn propset svn:mime-type "image/jpeg" {} \;
-find -type f -name "*.png" -exec svn propset svn:mime-type "image/png" {} \;
-find -type f -name "*.gif" -exec svn propset svn:mime-type "image/gif" {} \;
-find -type f -name "*.txt" -exec svn propset svn:mime-type "text/plain" {} \;
-find -type f -name "*.tpl" -exec svn propset svn:mime-type "text/plain" {} \;
+#@DEPRECATED
-#!/bin/sh
-
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-LIST=`find -name "*.tpl" -exec grep -H "@DEPRECATED" {} \;`
-if test "${LIST}" != ""; then
- echo "${LIST}" | cut -d ":" -f 1 | xargs svn --force del
- sh ./DOCS/todo-builder.sh
-fi
+#@DEPRECATED
-#!/bin/sh
-
-# This script helps building the file DOCS/TODOs.txt and should be executed by
-# developers with SVN write-access
-
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-TODO=`dirname $0`/TODOs.txt
-
-echo "$0: Generating TODOs.txt ..."
-echo "### WARNING: THIS FILE IS AUTO-GENERATED BY $0 (uid=${UID}/user=${USER}) ###" > ${TODO}
-echo "### DO NOT EDIT THIS FILE. ###" >> ${TODO}
-echo "$0: Searching for @TODO ..."
-find -type f -name "*.php" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
-find -type f -name "*.tpl" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
-find -type f -name "*.xml" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
-find -type f -name ".htaccess" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
-echo "### ### DEPRECATION FOLLOWS: ### ###" >> ${TODO}
-echo "$0: Searching for @DEPRECATED ..."
-find -type f -name "*.php" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
-find -type f -name "*.tpl" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
-find -type f -name "*.xml" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
-find -type f -name ".htaccess" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
-echo "$0: Checking for template-warnings.log ..."
-LOG=`dirname $0`/template-warnings.log
-if test -e "${LOG}"; then
- echo "$0: Found a template-warnings.log, adding it..."
- echo "### ### template-warnings.log follows: ### ###" >> ${TODO}
- cat ${LOG} >> ${TODO}
-fi
-echo "$0: Done."
-exit 0
+#@DEPRECATED
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$data = $doc->saveHTML();
$newData = str_replace("<br>", "<br />\n", $data);
-$newData = str_replace("\n\n", "\n", $newData);
+$newData = str_replace("\n\n", chr(10), $newData);
-$array = explode("\n", $newData);
+$array = explode(chr(10), $newData);
array_shift($array);
array_shift($array);
unset($array[count($array) - 1]);
unset($array[count($array) - 1]);
-$newData = implode("\n", $array)."\n";
+$newData = implode(chr(10), $array).chr(10);
// Has a template changed?
if ($data != $newData) {
-#!/bin/sh
-
-if ! test -e "modules.php"; then
- echo "$0: Please execute this script from root directory."
- exit 1
-fi
-
-echo "$0: Validating all templates..."
-DUMMY=`find templates/de/html/ -type f -name *.tpl -exec php DOCS/tpl-validator.php {} \; 2>&1`
-echo "${DUMMY}" | \
- grep "Warning" | \
- cut -d "/" -f 1-5 | \
- grep -v "error parsing attribute name" > `dirname $0`/template-warnings.log
-echo "$0: done."
+#@DEPRECATED
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module
-$GLOBALS['__module'] = 'admin';
-$GLOBALS['output_mode'] = -1;
+$GLOBALS['__module'] = 'admin';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module
-$GLOBALS['__module'] = 'agb';
-$GLOBALS['output_mode'] = -1;
+// Set module and output mode (raw)
+$GLOBALS['__module'] = 'agb';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 09/17/2011 *
+ * =================== Last change: 09/17/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : ajax.php *
+ * -------------------------------------------------------------------- *
+ * Short description : AJAX backend script *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : AJAX-Abfragescript *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// XDEBUG call
+//* DEBUG: */ xdebug_start_trace();
+
+// Load security system
+require('inc/libs/security_functions.php');
+
+// Init start time
+$GLOBALS['__start_time'] = microtime(true);
+
+/*
+ * Set output to "AJAX mode", proper module and prevent HTML headers/footers
+ * being sent.
+ */
+$GLOBALS['__output_mode'] = -2;
+$GLOBALS['__module'] = 'ajax';
+$GLOBALS['__header_sent'] = 2;
+$GLOBALS['__footer_sent'] = 2;
+
+// Load config file
+require('inc/config-global.php');
+
+// Load special AJAX library
+loadIncludeOnce('inc/ajax-functions.php');
+
+// Init AJAX request (including HTTP status code)
+initAjax();
+
+// Load header here
+loadIncludeOnce('inc/header.php');
+
+// Process only POST requests and that at least 'level' is set
+if ((getHttpRequestMethod() == 'POST') && (isPostRequestElementSet('level'))) {
+ // Okay, that is valid, now check that the requested level right is valid
+ if (isAjaxRequestLevelValid()) {
+ // Process the request
+ processAjaxRequest();
+
+ // Do we have an error? ('200 OK' is fine)
+ if ((getHttpStatus() != '200 OK') && (getHttpStatus() != '404 NOT FOUND')) {
+ // The process was handled but didn't work
+ reportBug(__FUNCTION__, __LINE__, 'AJAX request is valid but does not do anything.');
+ } // END - if
+ } else {
+ // Not allowed
+ setHttpStatus('403 Forbidden');
+ }
+} // END - if
+
+// Footer
+loadIncludeOnce('inc/footer.php');
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module
-$GLOBALS['__module'] = 'autoreg';
-$GLOBALS['output_mode'] = 1;
-$GLOBALS['header_sent'] = 3;
+$GLOBALS['__module'] = 'autoreg';
+$GLOBALS['__output_mode'] = 1;
+$GLOBALS['__header_sent'] = 3;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module
-$GLOBALS['__module'] = 'beg';
-$GLOBALS['output_mode'] = '0';
+// Set module and output mode (HTML)
+$GLOBALS['__module'] = 'beg';
+$GLOBALS['__output_mode'] = '0';
$errorCode = NULL;
// Load the required file(s)
}
// Really all done here... ;-)
-shutdown();
+doShutdown();
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module
-$GLOBALS['__module'] = 'birthday_confirm';
-$GLOBALS['output_mode'] = '0';
+$GLOBALS['__module'] = 'birthday_confirm';
+$GLOBALS['__output_mode'] = '0';
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module
-$GLOBALS['__module'] = 'click';
-$GLOBALS['output_mode'] = -1;
+$GLOBALS['__module'] = 'click';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
redirectToUrl('modules.php?module=index');
// Shutdown
-shutdown();
+doShutdown();
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module to confirm
-$GLOBALS['__module'] = 'confirm';
-$GLOBALS['output_mode'] = -1;
+// Set module to confirm and output-mode to raw
+$GLOBALS['__module'] = 'confirm';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Footer is disabled in CSS mode
-$GLOBALS['footer_sent'] = -1;
+$GLOBALS['__footer_sent'] = -1;
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// This is a CSS file loader!
-$GLOBALS['__module'] = 'css';
-$GLOBALS['output_mode'] = 1;
+// This is a CSS file loader
+$GLOBALS['__module'] = 'css';
+$GLOBALS['__output_mode'] = 1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module and fake "CSS mode"
-$GLOBALS['__module'] = 'debug';
-$GLOBALS['output_mode'] = -1;
+$GLOBALS['__module'] = 'debug';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
} // END - if
// Really all done here... ;-)
-shutdown();
+doShutdown();
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module
-$GLOBALS['__module'] = 'doubler';
-$GLOBALS['output_mode'] = '0';
+// Set module and output mode
+$GLOBALS['__module'] = 'doubler';
+$GLOBALS['__output_mode'] = '0';
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module
-$GLOBALS['__module'] = 'img';
-$GLOBALS['output_mode'] = -3;
+// Set module and output mode
+$GLOBALS['__module'] = 'img';
+$GLOBALS['__output_mode'] = -3;
// Load the required file(s)
require('inc/config-global.php');
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 09/17/2011 *
+ * =================== Last change: 09/17/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : ajax-functions.php *
+ * -------------------------------------------------------------------- *
+ * Short description : AJAX-related functions *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : AJAX-bezogene Funktionen *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+// Init ajax request
+function initAjax () {
+ // Init AJAX reply array
+ $GLOBALS['ajax_reply'] = array(
+ // Raw content
+ 'reply_content' => NULL,
+ );
+
+ // Set content type (mostly JSON)
+ setContentType('application/json');
+
+ // By default nothing is found/valid
+ setHttpStatus('204 No Content');
+
+ // Set username
+ setUsername('{--USERNAME_AJAX--}');
+
+ // In installation phase load ajax_installer.php
+ if (isInstallationPhase()) {
+ // Load it
+ loadIncludeOnce('inc/ajax/ajax_installer.php');
+ } // END - if
+}
+
+// Setter for AJAX reply content
+function setAjaxReplyContent ($content) {
+ // Set it, but with URL encoding
+ $GLOBALS['ajax_reply']['reply_content'] = urlencode(doFinalCompilation($content, false));
+}
+
+/**
+ * Checks whether the AJAX access level was valid. This function doesn't need
+ * caching in $GLOBALS[__FUNCTION__] because it will be called only once.
+ */
+function isAjaxRequestLevelValid () {
+ // By default nothing is valid
+ $isValid = false;
+
+ // Switch on the 'level' value
+ switch (postRequestElement('level')) {
+ case 'install': // Installation phase level
+ // Simply check for it
+ $isValid = isInstallationPhase();
+ break;
+
+ case 'admin': // Admin area
+ // Load admin includes
+ loadIncludeOnce('inc/modules/admin/admin-inc.php');
+ loadIncludeOnce('inc/ajax/ajax_admin.php');
+
+ // Determine correct 'what' value
+ $what = determineWhat();
+
+ // Get action value
+ $action = getActionFromModuleWhat('admin', $what);
+
+ // Check condition
+ $isValid = ((isAdmin()) && (isAdminAllowedAccessMenu($action, $what)));
+ break;
+
+ default: // Unsupported level (please report this!)
+ logDebugMessage(__FUNCTION__, __LINE__, 'Unsupported AJAX request access level ' . postRequestElement('level') . ' detected. Please report this, it means this part is not finished.');
+ break;
+ } // END - switch
+
+ // Return validation result
+ return $isValid;
+}
+
+// Processes the AJAX request by generating a call-back on given 'level' value
+function processAjaxRequest () {
+ // Generate the call-back function name
+ $callbackName = 'doAjaxProcess' . capitalizeUnderscoreString(postRequestElement('level'));
+
+ // Is the call-back function there?
+ if (!function_exists($callbackName)) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'AJAX call-back ' . $callbackName . ' does not exist.');
+ } // END - if
+
+ // Call the function
+ call_user_func($callbackName);
+}
+
+// Send AJAX content
+function sendAjaxContent () {
+ // Is the status fine or template not found (404)?
+ if ((getHttpStatus() == '200 OK') || (getHttpStatus() == '404 NOT FOUND')) {
+ // Then output the JSON
+ outputHtml(json_encode($GLOBALS['ajax_reply'], JSON_FORCE_OBJECT));
+ } // END - if
+}
+
+// [EOF]
+?>
--- /dev/null
+Deny from all
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/24/2012 *
+ * =================== Last change: 06/24/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : ajax_admin.php *
+ * -------------------------------------------------------------------- *
+ * Short description : AJAX library for admin menu *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : AJAX-Bibliothek fuer Adminmenu *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if ((!defined('__SECURITY')) || (!isAdmin())) {
+ die();
+} // END - if
+
+// "Generates" admin content by loading a message template
+function generateAdminContent () {
+ // Return it
+ return displayMessage('{--ADMIN_AJAX_MENU_IS_LOADING--}', true);
+}
+
+// Processes AJAX requests for admin menu
+function doAjaxProcessAdmin () {
+ // 'do' must always be set and isAdmin must be true
+ if (!isAdmin()) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'This AJAX request handler was called outside the admin menu.');
+ } elseif (!isPostRequestElementSet('do')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "do" which is fatal.');
+ } // END - if
+
+ // Again we do a call-back, so generate a function name depending on 'do'
+ $callbackName = 'doAjaxAdmin' . capitalizeUnderscoreString(postRequestElement('do'));
+
+ // Is the call-back function there?
+ if (!function_exists($callbackName)) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'AJAX call-back ' . $callbackName . ' does not exist.');
+ } // END - if
+
+ // Call the function
+ call_user_func($callbackName);
+
+ // Send AJAX content
+ sendAjaxContent();
+}
+
+// Processes admin AJAX calls for content-requests
+function doAjaxAdminRequestContent () {
+ // 'tab' must be there
+ if (!isPostRequestElementSet('tab')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "tab" which is fatal.');
+ } // END - if
+
+ // Construct call-back name for value-preset
+ $callbackName = 'doAjaxPrepareAdmin' . capitalizeUnderscoreString(postRequestElement('tab'));
+
+ // Is the function there?
+ if (function_exists($callbackName)) {
+ // Call it for setting values in session
+ call_user_func($callbackName);
+ } else {
+ // Log missing functions
+ logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callbackName . ' does not exist.');
+ }
+
+ // Is the HTTP status still the same? (204 No Content)
+ if (getHttpStatus() == '204 No Content') {
+ // We use the current access level 'install' as prefix and construct a template name
+ setAjaxReplyContent(loadTemplate('admin_area_' . trim(postRequestElement('tab')), true));
+
+ // Has the template been loaded?
+ if (isset($GLOBALS['tpl_content']['admin_page_' . trim(postRequestElement('tab'))])) {
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+ } else {
+ // Set 404 error
+ setHttpStatus('404 NOT FOUND');
+ }
+ } // END - if
+}
+// [EOF]
+?>
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/24/2012 *
+ * =================== Last change: 06/24/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : ajax_installer.php *
+ * -------------------------------------------------------------------- *
+ * Short description : AJAX-related functions for installer *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : AJAX-bezogene Funktionen fuer Installer *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+//-----------------------------------------------------------------------------
+// Call-back functions for processing AJAX requests
+//-----------------------------------------------------------------------------
+
+// Processes AJAX requests for installer
+function doAjaxProcessInstall () {
+ // 'do' must always be set and installation phase must be true
+ if (!isInstallationPhase()) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'This AJAX request handler was called outside the installer.');
+ } elseif (!isPostRequestElementSet('do')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "do" which is fatal.');
+ } // END - if
+
+ // Notify all modules that we are installing
+ $GLOBALS['__mailer_installing'] = true;
+
+ // Again we do a call-back, so generate a function name depending on 'do'
+ $callbackName = 'doAjaxInstaller' . capitalizeUnderscoreString(postRequestElement('do'));
+
+ // Is the call-back function there?
+ if (!function_exists($callbackName)) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'AJAX call-back ' . $callbackName . ' does not exist.');
+ } // END - if
+
+ // Call the function
+ call_user_func($callbackName);
+
+ // Is the status fine or template not found (404)?
+ sendAjaxContent();
+}
+
+// Processes installer request for testing
+function doAjaxInstallerTest () {
+ // Load the "test passed" template
+ setAjaxReplyContent(loadTemplate('ajax_test_passed', true));
+
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+}
+
+// Processes installer requests for footer navigation
+function doAjaxInstallerFooterNavigation () {
+ // 'tab' must always be set to determine which navigation buttons shall be visible
+ if (!isPostRequestElementSet('tab')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "tab" which is fatal.');
+ } // END - if
+
+ // Init array for footer navigation
+ $enabledNavigations = array();
+
+ // "Detect" the 'tab' value
+ switch (postRequestElement('tab')) {
+ case 'base_data': // Also 'previous' is valid
+ case 'database_config':
+ case 'smtp_config':
+ case 'other_config':
+ array_push($enabledNavigations, 'previous');
+ case 'welcome': // Only 'next' works for welcome page
+ array_push($enabledNavigations, 'next');
+ break;
+
+ case 'overview': // Enable only 'previous'
+ array_push($enabledNavigations, 'previous');
+ break;
+
+ default: // Unsupported value
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'Unsupported "tab" value ' . postRequestElement('tab') . ' detected.');
+
+ // This will never be reached
+ break;
+ } // END - switch
+
+ // Output the array for JSON reply
+ setAjaxReplyContent(json_encode($enabledNavigations, JSON_FORCE_OBJECT));
+
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+}
+
+// Processes installer AJAX calls for content-requests
+function doAjaxInstallerRequestContent () {
+ // 'tab' must be there
+ if (!isPostRequestElementSet('tab')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "tab" which is fatal.');
+ } // END - if
+
+ // Construct call-back name for value-preset
+ $callbackName = 'doAjaxPrepareInstaller' . capitalizeUnderscoreString(postRequestElement('tab'));
+
+ // Is the function there?
+ if (function_exists($callbackName)) {
+ // Call it for setting values in session
+ call_user_func($callbackName);
+ } else {
+ // Log missing functions
+ logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callbackName . ' does not exist.');
+ }
+
+ // Is the HTTP status still the same? (204 No Content)
+ if (getHttpStatus() == '204 No Content') {
+ // We use the current access level 'install' as prefix and construct a template name
+ setAjaxReplyContent(loadTemplate('install_page_' . trim(postRequestElement('tab')), true));
+
+ // Has the template been loaded?
+ if (isset($GLOBALS['tpl_content']['install_page_' . trim(postRequestElement('tab'))])) {
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+ } else {
+ // Set 404 error
+ setHttpStatus('404 NOT FOUND');
+ }
+ } // END - if
+}
+
+// Process installer AJAX call for change-warning
+function doAjaxInstallerChangeWarning () {
+ // 'elements' and 'button' must be there
+ if ((!isPostRequestElementSet('elements')) || (!isPostRequestElementSet('button'))) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "elements" and/or "button" which is fatal.');
+ } // END - if
+
+ // "Walk" through all elements
+ $OUT = '<ol>';
+ foreach (explode(':', postRequestElement('elements')) as $element) {
+ // Add row
+ $OUT .= '<li>{--INSTALLER_CHANGED_ELEMENT_' . strtoupper($element) . '--}</li>';
+ } // END - foreach
+ $OUT .= '</ol>';
+
+ // Prepare content
+ $content = array(
+ 'out' => $OUT,
+ 'button' => postRequestElement('button'),
+ 'message' => '{--INSTALLER_TAB_NAVIGATION_' . strtoupper(postRequestElement('button')) . '_LINK--}',
+ );
+
+ if (in_array(postRequestElement('button'), array('previous', 'next'))) {
+ // Load 'prefixed' template
+ setAjaxReplyContent(loadTemplate('install_warning_' . postRequestElement('button'), true, $content));
+ } else {
+ // Load 'tab' template
+ setAjaxReplyContent(loadTemplate('install_warning_tab', true, $content));
+ }
+
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+}
+
+// Process installer AJAC call for saving changes
+function doAjaxInstallerSaveChanges () {
+ // 'tab' must always be set to create a post-check-callback
+ if (!isPostRequestElementSet('tab')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "tab" which is fatal.');
+ } // END - if
+
+ // Save the tab for pre-"filtering"
+ $currentTab = postRequestElement('tab');
+
+ // Remove some elements which should not be saved
+ foreach (array('do', 'level') as $removedElement) {
+ // Remove this element from POST data
+ unsetPostRequestElement($removedElement);
+ } // END - foreach
+
+ // Default is failed save attempt (e.g. nothing to save)
+ $saveStatus = array(
+ 'status' => 'failed',
+ 'message' => '{--INSTALLER_SAVE_CHANGES_FAILED--}',
+ // Don't set this to false, or else it will be returned as 'failed' but is saved
+ 'is_saved' => true,
+ 'failed_fields' => array()
+ );
+
+ // Init overall status
+ $isAllSaved = true;
+
+ // Now set all remaining data in session
+ foreach (postRequestArray() as $key => $value) {
+ // Set it, if it is valid, else it will be added to $saveStatus (call-by-reference)
+ $saveStatus['is_saved'] = (
+ // Is the data valid?
+ (isInstallerDataValid($saveStatus, $key, $value))
+ &&
+ // And can it be stored in session?
+ (setSession($key, $value))
+ );
+
+ // Save the overall status for below final check
+ $isAllSaved = (($isAllSaved === true) && ($saveStatus['is_saved'] === true));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',is_saved=' . intval($saveStatus['is_saved']) . ',isAllSaved=' . intval($isAllSaved));
+ } // END - foreach
+
+ // 'is_saved' is still true?
+ if ($isAllSaved === true) {
+ // Set 'done' and message
+ $saveStatus['status'] = 'done';
+ $saveStatus['message'] = '{--INSTALLER_SAVE_CHANGES_DONE--}';
+
+ // Then do the post-check
+ doInstallerPostCheck($currentTab, $saveStatus);
+ } // END - if
+
+ // Output the status array for JSON reply
+ setAjaxReplyContent(json_encode($saveStatus, JSON_FORCE_OBJECT));
+
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+}
+
+// Prepare AJAX request 'welcome'
+function doAjaxPrepareInstallerWelcome () {
+ // Kept empty to prevent logfile entry
+}
+
+// Prepare AJAX request 'base_data'
+function doAjaxPrepareInstallerBaseData () {
+ // Is 'base_path' not set?
+ if (!isSessionVariableSet('base_path')) {
+ // Then set it from PATH
+ setSession('base_path', getPath());
+ } // END - if
+
+ // Is 'base_url' not set?
+ if (!isSessionVariableSet('base_url')) {
+ // Then set it from URL
+ setSession('base_url', getUrl());
+ } // END - if
+
+ // Is 'main_title' not set?
+ if (!isSessionVariableSet('main_title')) {
+ // Then set it from default main title
+ setSession('main_title', '{--DEFAULT_MAIN_TITLE--}');
+ } // END - if
+
+ // Is 'slogan' not set?
+ if (!isSessionVariableSet('slogan')) {
+ // Then set it from default slogan
+ setSession('slogan', '{--DEFAULT_SLOGAN--}');
+ } // END - if
+
+ // Is 'webmaster' not set?
+ if (!isSessionVariableSet('webmaster')) {
+ // Then set it from default webmaster email address
+ setSession('webmaster', '{--DEFAULT_WEBMASTER--}');
+ } // END - if
+}
+
+// Prepare AJAX request 'database_config'
+function doAjaxPrepareInstallerDatabaseConfig () {
+ // Is 'mysql_host' not set?
+ if (!isSessionVariableSet('mysql_host')) {
+ // Then set it directly
+ setSession('mysql_host', 'localhost');
+ } // END - if
+
+ // Is 'mysql_dbase' not set?
+ if (!isSessionVariableSet('mysql_dbase')) {
+ // Then set it directly
+ setSession('mysql_dbase', 'your_database');
+ } // END - if
+
+ // Is 'mysql_prefix' not set?
+ if (!isSessionVariableSet('mysql_prefix')) {
+ // Then set it directly
+ setSession('mysql_prefix', 'mailer');
+ } // END - if
+
+ // Is 'mysql_login' not set?
+ if (!isSessionVariableSet('mysql_login')) {
+ // Then set it directly
+ setSession('mysql_login', 'your_login');
+ } // END - if
+
+ // Is 'mysql_dbase' not set?
+ if (!isSessionVariableSet('mysql_pass1')) {
+ // Then set it directly
+ setSession('mysql_pass1', '');
+ } // END - if
+
+ // Is 'mysql_pass2' not set?
+ if (!isSessionVariableSet('mysql_pass2')) {
+ // Then set it directly
+ setSession('mysql_pass2', '');
+ } // END - if
+
+ // Is 'mysql_type' not set?
+ if (!isSessionVariableSet('mysql_type')) {
+ // Then set it directly
+ setSession('mysql_type', 'MyISAM');
+ } // END - if
+}
+
+// Prepare AJAX request 'smtp_config'
+function doAjaxPrepareInstallerSmtpConfig () {
+ // Kept empty to prevent logfile entry because SMTP settings are optional
+}
+
+// Prepare AJAX request 'other_config'
+function doAjaxPrepareInstallerOtherConfig () {
+ // Is 'output_mode' not set?
+ if (!isSessionVariableSet('output_mode')) {
+ // Then set it directly
+ setSession('output_mode', 'render');
+ } // END - if
+
+ // Is 'warn_no_pass' not set?
+ if (!isSessionVariableSet('warn_no_pass')) {
+ // Then set it directly
+ setSession('warn_no_pass', 'Y');
+ } // END - if
+
+ // Is 'write_footer' not set?
+ if (!isSessionVariableSet('write_footer')) {
+ // Then set it directly
+ setSession('write_footer', 'Y');
+ } // END - if
+
+ // Is 'enable_backlink' not set?
+ if (!isSessionVariableSet('enable_backlink')) {
+ // Then set it directly
+ setSession('enable_backlink', 'Y');
+ } // END - if
+}
+
+// Prepare AJAX request 'overview'
+function doAjaxPrepareInstallerOverview () {
+ // 'tab' must always be set to create a post-check-callback
+ if (!isPostRequestElementSet('tab')) {
+ // This shall not happen
+ reportBug(__FUNCTION__, __LINE__, 'The JavaScript did not send "tab" which is fatal.');
+ } // END - if
+
+ // Save the tab for pre-"filtering"
+ $currentTab = postRequestElement('tab');
+
+ // Default is failed save attempt (e.g. nothing to save)
+ $verificationStatus = array(
+ // Status code, can be 'failed' or 'done'
+ 'status' => 'failed',
+ // Status message (e.g. for output)
+ 'message' => '{--INSTALLER_OVERVIEW_FINAL_CHECK_FAILED--}',
+ // Don't set this to false, or else it will be returned as 'failed' but is saved
+ 'is_valid' => true,
+ // Failed fields
+ 'failed_fields' => array()
+ );
+
+ // Init overall status and final output
+ $isAllValid = true;
+ $output = '';
+
+ // Check all data in session
+ foreach (getSessionArray() as $key => $value) {
+ // Skip 'mailer_theme', 'tab' and 'installer'
+ if (in_array($key, array('mailer_theme', 'tab', 'installer'))) {
+ // Skip this
+ continue;
+ } // END - if
+
+ // Is the data valid?
+ $verificationStatus['is_valid'] = (isInstallerDataValid($verificationStatus, $key, $value));
+
+ // Is this step okay?
+ if ($verificationStatus['is_valid'] === true) {
+ // Add this key/value pair to a overview group
+ addKeyValueToInstallerOverviewGroup($key, $value);
+ } // END - if
+
+ // Save the overall status for below final check
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',is_valid=' . intval($verificationStatus['is_valid']) . ',isAllValid=' . intval($isAllValid));
+ $isAllValid = (($isAllValid === true) && ($verificationStatus['is_valid'] === true));
+ } // END - foreach
+
+ // Is it still true?
+ if ($isAllValid === true) {
+ // Set 'done' and message
+ $verificationStatus['status'] = 'done';
+ $verificationStatus['message'] = '{--INSTALLER_OVERVIEW_FINAL_CHECK_DONE--}';
+
+ // Then do the post-check
+ doInstallerPostCheck($currentTab, $verificationStatus);
+ } // END - if
+
+ // Is it still valid?
+ if ($verificationStatus['status'] != 'done') {
+ // Log message away
+ logDebugMessage(__FUNCTION__, __LINE__, 'Final check on all stored data failed. message=' . $verificationStatus['message']);
+
+ // Output the array for JSON reply
+ setAjaxReplyContent(json_encode($verificationStatus, JSON_FORCE_OBJECT));
+
+ /*
+ * Something went wrong, this might happen when e.g. the user has tried
+ * to save invalid database login data but hit reload button on error
+ * message.
+ */
+ setHttpStatus('500 Internal Server Error');
+
+ // Abort here
+ return;
+ } // END - if
+
+ // Output final rendered content
+ setAjaxReplyContent($output);
+
+ // All okay if we reach this point
+ setHttpStatus('200 OK');
+}
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes));
} // END - if
}
// There are two attributes, by default
if (count($attributes) != 2) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes, got ' . count($attributes));
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
}
// Add the function name and no attributes by default
$GLOBALS['__XML_CALLBACKS']['callbacks'][] = __FUNCTION__;
$GLOBALS['__XML_CALLBACKS']['functions'][__FUNCTION__][] = $attributes['VALUE'];
$GLOBALS['__XML_ARGUMENTS'][__FUNCTION__] = array();
+ $GLOBALS['__COLUMN_INDEX'][__FUNCTION__] = 'column';
}
// Handles the XML node 'database-table'
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the list
addXmlValueToCallbackAttributes('database_table', $attributes);
- //$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['database_table'] = $attributes['VALUE'];
}
// Handles the XML node 'database-column-list'
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} // END - if
// Add an empty list
// There are three attributes, by default
if (count($attributes) != 6) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 6 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 6 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['TABLE'])) {
// 'TABLE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TYPE=' . $attributes['TYPE'] . ',TABLE=' . $attributes['TABLE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TYPE=' . $attributes['TYPE'] . ',TABLE=' . $attributes['TABLE']);
} elseif (!isset($attributes['ALIAS'])) {
// 'ALIAS' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.');
} elseif (!isset($attributes['FUNCTION'])) {
// 'FUNCTION' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.');
} elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) {
// 'ALIAS' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']);
} elseif ((trim($attributes['FUNCTION']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['FUNCTION']))) {
// 'FUNCTION' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/database-column-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/database-column-list not included around this node. Please fix your XML.');
}
// Add the entry to the list
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} // END - if
// Add an empty list
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['callback_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/callback-function-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/callback-function-list not included around this node. Please fix your XML.');
}
// Add the entry to the list
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} // END - if
// Add an empty list
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list not included around this node. Please fix your XML.');
}
// Add the entry to the list
addXmlValueToCallbackAttributes('extra_list', $attributes);
}
+// Handles the XML node 'time-columns-list'
+function doXmlTimeColumnsList ($resource, $attributes) {
+ // There should be no attributes
+ if (count($attributes) > 0) {
+ // Please don't add any attributes to foo-list nodes
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ } // END - if
+
+ // Add an empty list
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['time_columns'] = array();
+}
+
+// Handles the XML node 'time-columns-list-entry'
+function doXmlTimeColumnsListEntry ($resource, $attributes) {
+ // There are three attributes, by default
+ if (count($attributes) != 3) {
+ // Not the right count
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ } elseif (!isset($attributes['NAME'])) {
+ // 'NAME' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ } elseif (!isset($attributes['TYPE'])) {
+ // 'TYPE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ } elseif (!isInvalidXmlType($attributes['TYPE'])) {
+ // No valid type
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ } elseif (!isset($attributes['VALUE'])) {
+ // 'VALUE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
+ // Not valid/verifyable
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['time_columns'])) {
+ // doXmlCallbackFunction is missing
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list not included around this node. Please fix your XML.');
+ }
+
+ // Add the entry to the list
+ addXmlValueToCallbackAttributes('time_columns', $attributes);
+}
+
// Handles the XML node 'extra-parameter-member-list'
function doXmlExtraParameterMemberList ($resource, $attributes) {
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['member_list'])) {
// This list should be created already
- debug_report_bug(__FUNCTION__, __LINE__, 'member_list should be already created.');
+ reportBug(__FUNCTION__, __LINE__, 'member_list should be already created.');
+ }
+}
+
+// Handles the XML node 'extra-parameter-reload-list'
+function doXmlExtraParameterReloadList ($resource, $attributes) {
+ // There should be no attributes
+ if (count($attributes) > 0) {
+ // Please don't add any attributes to foo-list nodes
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['reload_list'])) {
+ // This list should be created already
+ reportBug(__FUNCTION__, __LINE__, 'reload_list should be already created.');
}
}
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['member_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/member-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/member-list not included around this node. Please fix your XML.');
}
// Add the entry to the list
addXmlValueToCallbackAttributes('extra_list', $attributes, 'member_list');
}
+// Handles the XML node 'extra-parameter-reload-list-entry'
+function doXmlExtraParameterReloadListEntry ($resource, $attributes) {
+ // There are three attributes, by default
+ if (count($attributes) != 3) {
+ // Not the right count
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ } elseif (!isset($attributes['NAME'])) {
+ // 'NAME' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ } elseif (!isset($attributes['TYPE'])) {
+ // 'TYPE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ } elseif (!isInvalidXmlType($attributes['TYPE'])) {
+ // No valid type
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ } elseif (!isset($attributes['VALUE'])) {
+ // 'VALUE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
+ // Not valid/verifyable
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['reload_list'])) {
+ // doXmlCallbackFunction is missing
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/reload-list not included around this node. Please fix your XML.');
+ }
+
+ // Add the entry to the list
+ addXmlValueToCallbackAttributes('extra_list', $attributes, 'reload_list');
+}
+
// Handles the XML node 'extra-parameter-added-list'
function doXmlExtraParameterAddedList ($resource, $attributes) {
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['added_list'])) {
// This list should be created already
- debug_report_bug(__FUNCTION__, __LINE__, 'added_list should be already created.');
+ reportBug(__FUNCTION__, __LINE__, 'added_list should be already created.');
}
}
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['added_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/added-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/added-list not included around this node. Please fix your XML.');
}
// Add the entry to the list
addXmlValueToCallbackAttributes('extra_list', $attributes, 'added_list');
}
+// Handles the XML node 'extra-parameter-created-list'
+function doXmlExtraParameterCreatedList ($resource, $attributes) {
+ // There should be no attributes
+ if (count($attributes) > 0) {
+ // Please don't add any attributes to foo-list nodes
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['created_list'])) {
+ // This list should be created already
+ reportBug(__FUNCTION__, __LINE__, 'created_list should be already created.');
+ }
+}
+
+// Handles the XML node 'extra-parameter-created-list-entry'
+function doXmlExtraParameterCreatedListEntry ($resource, $attributes) {
+ // There are three attributes, by default
+ if (count($attributes) != 3) {
+ // Not the right count
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ } elseif (!isset($attributes['NAME'])) {
+ // 'NAME' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ } elseif (!isset($attributes['TYPE'])) {
+ // 'TYPE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ } elseif (!isInvalidXmlType($attributes['TYPE'])) {
+ // No valid type
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ } elseif (!isset($attributes['VALUE'])) {
+ // 'VALUE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
+ // Not valid/verifyable
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_list']['created_list'])) {
+ // doXmlCallbackFunction is missing
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/created-list not included around this node. Please fix your XML.');
+ }
+
+ // Add the entry to the list
+ addXmlValueToCallbackAttributes('extra_list', $attributes, 'created_list');
+}
+
// Handles the XML node 'status-change-column'
function doXmlStatusChangeColumn ($resource, $attributes) {
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the list
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['status_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/status-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/status-list not included around this node. Please fix your XML.');
}
}
// There are for attributes, by default
if (count($attributes) != 4) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 4 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 4 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['OLD'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute OLD does not validate. TYPE=' . $attributes['TYPE'] . ',OLD=' . $attributes['OLD']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute OLD does not validate. TYPE=' . $attributes['TYPE'] . ',OLD=' . $attributes['OLD']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['status_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/change-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/extra-parameter-list/change-list not included around this node. Please fix your XML.');
}
// Add the entry to the list
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the list
addXmlValueToCallbackAttributes('enable_modify_entries', $attributes);
- //$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['enable_modify_entries'] = convertStringToBoolean($attributes['VALUE']);
}
// Handles the XML node 'table-id-column'
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
addXmlValueToCallbackAttributes('table_id_column', $attributes);
- //$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['table_id_column'] = $attributes['VALUE'];
}
// Handles the XML node 'table-userid-column'
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
addXmlValueToCallbackAttributes('table_userid_column', $attributes);
- //$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['table_userid_column'] = $attributes['VALUE'];
}
// Handles the XML node 'raw-userid-column-key'
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['NAME'])) {
// 'NAME' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
addXmlValueToCallbackAttributes('raw_userid_column_key', $attributes);
- //$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['raw_userid_column_key'] = $attributes['VALUE'];
+}
+
+// Handles the XML node 'cache-file'
+function doXmlCacheFile ($resource, $attributes) {
+ // There are three attributes, by default
+ if (count($attributes) != 3) {
+ // Not the right count
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ } elseif (!isset($attributes['NAME'])) {
+ // 'NAME' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ } elseif (!isset($attributes['TYPE'])) {
+ // 'TYPE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ } elseif (!isInvalidXmlType($attributes['TYPE'])) {
+ // No valid type
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ } elseif (!isset($attributes['VALUE'])) {
+ // 'VALUE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ } elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
+ // Not valid/verifyable
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. TYPE=' . $attributes['TYPE'] . ',VALUE=' . $attributes['VALUE']);
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
+ // doXmlCallbackFunction is missing
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ }
+
+ // Add the entry to the array
+ addXmlValueToCallbackAttributes('cache_file', $attributes);
}
//-----------------------------------------------------------------------------
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes));
} // END - if
}
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes, got ' . count($attributes));
} // END - if
}
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['ALIAS'])) {
// 'ALIAS' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. ALIAS=' . $attributes['ALIAS']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. ALIAS=' . $attributes['ALIAS']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
}
// Add an empty list
// There are five attributes, by default
if (count($attributes) != 5) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['ALIAS'])) {
// 'ALIAS' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute ALIAS not found.');
} elseif (!isset($attributes['FUNCTION'])) {
// 'FUNCTION' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute FUNCTION not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// 'VALUE' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif ((trim($attributes['ALIAS']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['ALIAS']))) {
// 'ALIAS' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute ALIAS does not validate. ALIAS=' . $attributes['ALIAS']);
} elseif ((trim($attributes['FUNCTION']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['FUNCTION']))) {
// 'FUNCTION' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute FUNCTION does not validate. FUNCTION=' . $attributes['FUNCTION']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/select-data-from-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/select-data-from-list not included around this node. Please fix your XML.');
}
// Add the entry to the array
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
}
// Add an empty list
// There are five attributes, by default
if (count($attributes) != 5) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isset($attributes['TABLE'])) {
// 'TABLE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.');
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['CONDITION'])) {
// 'CONDITION' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute CONDITION not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute CONDITION not found.');
} elseif (!isset($attributes['LOOK-FOR'])) {
// 'LOOK-FOR' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute LOOK-FOR not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute LOOK-FOR not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif ((trim($attributes['TABLE']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE']))) {
// 'TABLE' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// 'VALUE' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['CONDITION'])) {
// 'CONDITION' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute CONDITION does not validate. CONDITION=' . $attributes['CONDITION']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION does not validate. CONDITION=' . $attributes['CONDITION']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['LOOK-FOR'])) {
// 'LOOK-FOR' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute LOOK-FOR does not validate. LOOK-FOR=' . $attributes['LOOK-FOR']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute LOOK-FOR does not validate. LOOK-FOR=' . $attributes['LOOK-FOR']);
} elseif (!isXmlConditionValid($attributes['CONDITION'])) {
// 'CONDITION' is not known
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. LOOK-FOR=' . $attributes['CONDITION']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute CONDITION is not valid. LOOK-FOR=' . $attributes['CONDITION']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-column-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-column-list not included around this node. Please fix your XML.');
}
// Add the entry to the array
addXmlValueToCallbackAttributes('where_select_list', $attributes);
}
+// Handles the XML node 'where-condition'
+function doXmlWhereCondition ($resource, $attributes) {
+ // There are two attributes, by default
+ if (count($attributes) != 3) {
+ // Please don't add any attributes to foo-list nodes
+ reportBug(__FUNCTION__, __LINE__, 'Expected 2 attributes because this is a where-condition node, got ' . count($attributes));
+ } elseif (!isset($attributes['TYPE'])) {
+ // 'TYPE' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ } elseif (!isset($attributes['CONDITION'])) {
+ // 'CONDITION' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute CONDITION not found.');
+ } elseif (!isset($attributes['NAME'])) {
+ // 'NAME' not found
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute NAME not found.');
+ } elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) {
+ // doXmlCallbackFunction is missing
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
+ }
+
+ // Add an empty list
+ addXmlValueToCallbackAttributes('where_condition', $attributes);
+}
+
// Handles the XML node 'order-by-list'
function doXmlOrderByList ($resource, $attributes) {
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
}
// Add an empty list
// There are four attributes, by default
if (count($attributes) != 4) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
} elseif (!isset($attributes['ORDER'])) {
// 'ORDER' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute ORDER not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute ORDER not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isset($attributes['TABLE'])) {
// 'TABLE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TABLE not found.');
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['ORDER'])) {
// 'ORDER' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute ORDER does not validate. ORDER=' . $attributes['ORDER']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute ORDER does not validate. ORDER=' . $attributes['ORDER']);
} elseif ((trim($attributes['TABLE']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['TABLE']))) {
// 'TABLE' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute TABLE does not validate. TABLE=' . $attributes['TABLE']);
} elseif ((trim($attributes['VALUE']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE']))) {
// 'VALUE' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_column_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-column-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-column-list not included around this node. Please fix your XML.');
}
// Add the entry to the array
// There are two attributes, by default
if (count($attributes) != 2) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
// There are two attributes, by default
if (count($attributes) != 2) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['data_table'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/data-table not included around this node. Please fix your XML.');
}
// Add an empty list
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 0 attributes because this is a foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_callback_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/column-callback not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/column-callback not included around this node. Please fix your XML.');
}
}
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isset($attributes['CALLBACK'])) {
// 'CALLBACK' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute CALLBACK not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute CALLBACK not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
} elseif ((trim($attributes['CALLBACK']) != '') && (!isXmlValueValid($attributes['TYPE'], $attributes['CALLBACK']))) {
// 'CALLBACK' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute CALLBACK does not validate. CALLBACK=' . $attributes['CALLBACK']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute CALLBACK does not validate. CALLBACK=' . $attributes['CALLBACK']);
}
// Add the entry to the array
// There should be no attributes
if (count($attributes) > 0) {
// Please don't add any attributes to foo-list nodes
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 1 attributes because this is a named foo-list node, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 1 attributes because this is a named foo-list node, got ' . count($attributes));
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_callback_list'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/column-callback-list not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/column-callback-list not included around this node. Please fix your XML.');
} elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['__EXTRA_PARAMETER'])) {
// Abort silently here, no one wants to kill this array
return;
// There are three attributes, by default
if (count($attributes) != 3) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 5 attributes, got ' . count($attributes));
} elseif (!isset($attributes['COLUMN'])) {
// 'COLUMN' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute COLUMN not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute COLUMN not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// 'VALUE' not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['__EXTRA_PARAMETER'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function/__EXTRA_PARAMETER not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function/__EXTRA_PARAMETER not included around this node. Please fix your XML.');
}
// Add the entry to the array
// There are two attributes, by default
if (count($attributes) != 2) {
// Not the right count
- debug_report_bug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
+ reportBug(__FUNCTION__, __LINE__, 'Expected 3 attributes, got ' . count($attributes));
} elseif (!isset($attributes['VALUE'])) {
// 'VALUE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute VALUE not found.');
} elseif (!isset($attributes['TYPE'])) {
// 'TYPE' not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Required attribute TYPE not found.');
} elseif (!isInvalidXmlType($attributes['TYPE'])) {
// No valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
+ reportBug(__FUNCTION__, __LINE__, 'TYPE is not valid, got: ' . $attributes['TYPE']);
} elseif (!isXmlValueValid($attributes['TYPE'], $attributes['VALUE'])) {
// Not valid/verifyable
- debug_report_bug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
+ reportBug(__FUNCTION__, __LINE__, 'Attribute VALUE does not validate. VALUE=' . $attributes['VALUE']);
} elseif (!isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'])) {
// doXmlCallbackFunction is missing
- debug_report_bug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'Required XML node callback-function not included around this node. Please fix your XML.');
}
// Add the entry to the array
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CONDITION[' . gettype($attributes['CONDITION']) . ']=' . $attributes['CONDITION'] . ',LOOK-FOR[' . gettype($attributes['LOOK-FOR']) . ']=' . $attributes['LOOK-FOR'] . ' - CONDITION! (VALUE=' . $attributes['VALUE'] . ')');
$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][] = $array;
+ } elseif ((isset($attributes['CONDITION'])) && (isset($attributes['NAME']))) {
+ // CONDITION/NAME detected
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CONDITION[' . gettype($attributes['CONDITION']) . ']=' . $attributes['CONDITION'] . ',NAME[' . gettype($attributes['NAME']) . ']=' . $attributes['NAME'] . ' - CONDITION!');
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['NAME']] = $attributes['CONDITION'];
} elseif (isset($attributes['CALLBACK'])) {
// CALLBACK/VALUE detected
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',extraKey=' . $extraKey . ',TYPE=' . $attributes['TYPE'] . ',CALLBACK[' . gettype($attributes['CALLBACK']) . ']=' . $attributes['CALLBACK'] . ' - CALLBACK! (VALUE=' . $attributes['VALUE'] . ')');
$GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][] = $attributes['VALUE'];
} elseif (isset($GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction'][$element][$attributes['NAME']])) {
// Already created
- debug_report_bug(__FUNCTION__, __LINE__, 'NAME=' . $attributes['NAME'] . ' already addded to ' . $element . ' attributes=<pre>' . print_r($attributes, true) . '</pre>');
+ reportBug(__FUNCTION__, __LINE__, 'NAME=' . $attributes['NAME'] . ' already addded to ' . $element . ' attributes=<pre>' . print_r($attributes, true) . '</pre>');
} else {
// Use from NAME
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',NAME=' . $attributes['NAME'] . ',VALUE[' . gettype($attributes['VALUE']) . ']=' . $attributes['VALUE'] . ' - NAME!');
//-----------------------------------------------------------------------------
// Execute function for doXmlCallbackFunction()
-function doXmlCallbackFunctionExecute ($callbackFunction, $args) {
+function doXmlCallbackFunctionExecute ($callbackName, $args, $columnIndex) {
// Is 'id_index' set and form sent?
if ((isset($args['id_index'])) && (isFormSent())) {
// Prepare 'id_index'
} // END - if
// Just call it
- //* DEBUG: */ die('callbackFunction=' . $callbackFunction . ',args=<pre>'.print_r($args, true).'</pre>');
- call_user_func_array($callbackFunction, $args);
+ //* DEBUG: */ die('callbackFunction=' . $callbackName . ',columnIndex=' . $columnIndex . ',args=<pre>'.print_r($args, true).'</pre>');
+ call_user_func_array($callbackName, $args);
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Create file
if ($this->isCacheReadable()) changeMode($this->fqfn, 0666);
- $this->pointer = fopen($this->fqfn, 'w') or debug_report_bug(__METHOD__, __LINE__, 'Cannot write to cache ' . $this->fqfn . ' !');
+ $this->pointer = fopen($this->fqfn, 'w') or reportBug(__METHOD__, __LINE__, 'Cannot write to cache ' . $this->fqfn . ' !');
// Add open PHP tag
$this->writeLine('<?php');
} else {
// Cannot create file
- debug_report_bug(__METHOD__, __LINE__, 'Problems with cache directory detected, getStatusCode()=' . $this->getStatusCode());
+ reportBug(__METHOD__, __LINE__, 'Problems with cache directory detected, getStatusCode()=' . $this->getStatusCode());
}
}
// Is the pointer a valid resource?
if (is_resource($this->pointer)) {
// Write the line
- fwrite($this->pointer, $line . "\n");
+ fwrite($this->pointer, $line . chr(10));
} else {
// Something bad happened
- debug_report_bug(__METHOD__, __LINE__, 'Pointer type is ' . gettype($this->pointer) . ', expected is resource.');
+ reportBug(__METHOD__, __LINE__, 'Pointer type is ' . gettype($this->pointer) . ', expected is resource.');
}
}
}
} elseif ($this->name == 'admin_acls') {
// Access control lines
- $GLOBALS['cache_array']['admin_acls'][$k][$data['admin_id']][] = $v;
+ array_push($GLOBALS['cache_array']['admin_acls'][$k][$data['admin_id']], $v);
} elseif ($this->name == 'refdepths') {
// Referral levels
$GLOBALS['cache_array']['refdepths'][$k][$data['id']] = $v;
$this->removeCacheFile(true);
// Unsupported/unhandled cache detected
- debug_report_bug(__METHOD__, __LINE__, 'Unsupported cache ' . $this->name . ' detected.');
+ reportBug(__METHOD__, __LINE__, 'Unsupported cache ' . $this->name . ' detected.');
}
// Write cache line to file
} // END - foreach
} else {
// Cannot create file
- debug_report_bug(__METHOD__, __LINE__, 'Problem with cache detected, no resource! pointer[]=' . gettype($this->pointer));
+ reportBug(__METHOD__, __LINE__, 'Problem with cache detected, no resource! pointer[]=' . gettype($this->pointer));
}
}
} // END - if
} else {
// Cache file not found or not readable
- debug_report_bug(__METHOD__, __LINE__, '{%message,CACHE_CANNOT_LOAD=' . $this->name . '%}');
+ reportBug(__METHOD__, __LINE__, '{%message,CACHE_CANNOT_LOAD=' . $this->name . '%}');
// Try to remove it
$this->removeCacheFile();
} // END - if
// Remove cache file from system
- //* DEBUG: */ debug_report_bug(__METHOD__, __LINE__, 'About to remove ' . basename($this->fqfn) . '!');
+ //* DEBUG: */ reportBug(__METHOD__, __LINE__, 'About to remove ' . basename($this->fqfn) . '!');
removeFile($this->fqfn);
// Reset read status
$this->rebuilt[$this->name] = true;
} else {
// Not removed!
- debug_report_bug(__METHOD__, __LINE__, '{%message,CACHE_CANNOT_UNLINK=' . $this->name . '%}');
+ reportBug(__METHOD__, __LINE__, '{%message,CACHE_CANNOT_UNLINK=' . $this->name . '%}');
}
} // END - if
}
} // END - if
} else {
// Cannot write to cache!
- debug_report_bug(__METHOD__, __LINE__, 'Problem with cache detected: Unexpected status ' . $this->status[$this->name]);
+ reportBug(__METHOD__, __LINE__, 'Problem with cache detected: Unexpected status ' . $this->status[$this->name]);
}
}
} // END - foreach
} else {
// Cannot write array!
- debug_report_bug(__METHOD__, __LINE__, 'Problem with cache detected: pointer is not resource! pointer[]=' . gettype($this->pointer));
+ reportBug(__METHOD__, __LINE__, 'Problem with cache detected: pointer is not resource! pointer[]=' . gettype($this->pointer));
}
}
} // END - if
} else {
// Cannot write to cache!
- debug_report_bug(__METHOD__, __LINE__, 'Problem with cache detected: Unexpected status ' . $this->status[$this->name]);
+ reportBug(__METHOD__, __LINE__, 'Problem with cache detected: Unexpected status ' . $this->status[$this->name]);
}
}
//* DEBUG: */ logDebugMessage(__METHOD__, __LINE__, 'name=' . $this->name . ',ext_name=' . $ext_name . ',ext_ver=' . $ext_ver);
} else {
// Cannot create file
- debug_report_bug(__METHOD__, __LINE__, 'Problem with cache detected: pointer is not resource! pointer[]=' . gettype($this->pointer));
+ reportBug(__METHOD__, __LINE__, 'Problem with cache detected: pointer is not resource! pointer[]=' . gettype($this->pointer));
}
}
- // Checks wether versions from cache and extension matches
+ // Checks whether versions from cache and extension matches
function extensionVersionMatches ($ext_name) {
// Check cache
if (!isset($GLOBALS[__METHOD__][$ext_name])) {
}
} elseif (isset($value[0])) {
// These lines needs fixing
- debug_report_bug(__METHOD__, __LINE__, 'Invalid entry with [0] found. key=' . $key);
+ reportBug(__METHOD__, __LINE__, 'Invalid entry with [0] found. key=' . $key);
} else {
// Non-string
$line = '$this->' . $prefix . "['" . $this->name . "']['" . $key . "']" . $extender . ' = ' . $value . ';';
$this->statusCode = $status;
}
- // Checks wether the current cache file is readable
+ // Checks whether the current cache file is readable
function isCacheReadable () {
// Array entry found?
if (!isset($this->readable[$this->name])) {
// Cloning not allowed
function __clone () {
// Please do not clone this class
- debug_report_bug(__METHOD__, __LINE__, 'Cloning of this class is not allowed.');
+ reportBug(__METHOD__, __LINE__, 'Cloning of this class is not allowed.');
}
} // END - class
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Is the key set?
if (!isCodeSet($key)) {
// Abort here
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("%s[%s:] Code %s is not set.",
+ reportBug(__FUNCTION__, __LINE__, sprintf("%s[%s:] Code %s is not set.",
__FUNCTION__,
__LINE__,
$key
return $GLOBALS['status_codes'][$key];
}
-// Checks wether a specified status code is set
+// Checks whether a specified status code is set
function isCodeSet ($key) {
// Simply use isset()
return (isset($GLOBALS['status_codes'][$key]));
}
+// Get hex-decimal value from given error code
+function getHexErrorCode ($errorCode) {
+ // Convert it
+ $hex = str_pad(dechex($errorCode), 3, '0', STR_PAD_LEFT);
+
+ // Return it
+ return $hex;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Init not if already found
if (isConfigurationLoaded()) {
// Already initialized
- debug_report_bug(__FUNCTION__, __LINE__, 'Configuration is already initialized.');
+ reportBug(__FUNCTION__, __LINE__, 'Configuration is already initialized.');
} // END - if
// Set a minimum of configuration, required to by-pass some error triggers in getConfig()
// Is the entry there?
if (!isConfigEntrySet($configEntry)) {
// Raise an error of missing entries
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Configuration entry <span class=\"data\">%s</span> is missing.", $configEntry));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Configuration entry <span class=\"data\">%s</span> is missing.", $configEntry));
} // END - if
// Return it
$GLOBALS['config'][$configEntry] = $value;
}
-// Checks wether the given config entry is set
+// Checks whether the given config entry is set
function isConfigEntrySet ($configEntry) {
//* DEBUG: */ debugOutput(__FUNCTION__ . ':' . $configEntry . '=' . intval(isset($GLOBALS['config'][$configEntry])));
- return (isset($GLOBALS['config'][$configEntry]));
+ return ((isset($GLOBALS['config'][$configEntry])) || (array_key_exists($configEntry, $GLOBALS['config'])));
}
// Merges $GLOBALS['config'] with data in given array
function mergeConfig ($newConfig) {
+ // Merge current configuration with new one
$GLOBALS['config'] = merge_array(getConfigArray(), $newConfig);
-
- // Remove all cached entries
}
// Increment or init with given value or 1 as default the given config entry
}
}
-// Checks wether the configuration array is set so the config is loaded
+// Checks whether the configuration array is set so the config is loaded
function isConfigurationLoaded () {
// Check all
return (isset($GLOBALS['config']['config']));
copyFileVerified(getPath() . 'inc/config-local.php.dist', getCachePath() . 'config-local.php', 0644);
// First of all, load the old one!
- $oldConfig = explode("\n", readFromFile(getPath() . 'inc/config.php'));
+ $oldConfig = explode(chr(10), readFromFile(getPath() . 'inc/config.php'));
// Now, analyze every entry
$done = array();
return;
} // END - if
+ // Default is empty SQL
+ $SQL = '';
+
// Do we have multiple entries?
if (is_array($entries)) {
// Walk through all
- $all = '';
foreach ($entries as $idx => $entry) {
// Update mode set?
if (!empty($updateMode)) {
// Update entry
- $all .= sprintf("`%s`=`%s`%s%s,", $entry, $entry, $updateMode, (float) $values[$idx]);
+ $SQL .= sprintf("`%s`=`%s`%s%s,", $entry, $entry, $updateMode, (float) $values[$idx]);
} else {
// Check if string or number but no array
if (is_array($values[$idx])) {
// Arrays must be fixed...
- debug_report_bug(__FUNCTION__, __LINE__, 'values[' . $idx . '] should not be an array! Content=<pre>'.print_r($values[$idx], true).'</pre>');
- } elseif (($values[$idx] + 0) === $values[$idx]) {
- // Number detected
- $all .= sprintf("`%s`=%s,", $entry, (float) $values[$idx]);
-
- // Set it in config as well
- setConfigEntry($entry, $values[$idx]);
+ reportBug(__FUNCTION__, __LINE__, 'values[' . $idx . '] should not be an array! Content=<pre>'.print_r($values[$idx], true).'</pre>');
} elseif ($values[$idx] == 'UNIX_TIMESTAMP()') {
// Function UNIX_TIMESTAMP() detected
- $all .= sprintf("`%s`=UNIX_TIMESTAMP(),", $entry);
+ $SQL .= sprintf("`%s`=UNIX_TIMESTAMP(),", $entry);
// Set timestamp in array as well
setConfigEntry($entry, time());
+ } elseif (!empty($updateMode)) {
+ // Is the value zero?
+ if ($values[$idx] == '0') {
+ // Then skip it
+ continue;
+ } // END - if
+
+ // Update mode set
+ // @TODO Call setConfigEntry() somehow
+ $SQL .= $entries = sprintf("`%s`=`%s`%s%s", $entry, $entry, $updateMode, (float) $values[$idx]);
+ } elseif (($values[$idx] + 0) === $values[$idx]) {
+ // Number detected
+ $SQL .= sprintf("`%s`=%s,", $entry, (float) $values[$idx]);
+
+ // Set it in config as well
+ setConfigEntry($entry, $values[$idx]);
} else {
// String detected
- $all .= sprintf("`%s`='%s',", $entry, SQL_ESCAPE($values[$idx]));
+ $SQL .= sprintf("`%s`='%s',", $entry, SQL_ESCAPE($values[$idx]));
// Set it in config as well
setConfigEntry($entry, $values[$idx]);
} // END - foreach
// Remove last comma
- $entries = substr($all, 0, -1);
+ $SQL = substr($SQL, 0, -1);
} elseif (!empty($updateMode)) {
+ // Is the value zero?
+ if ($values == '0') {
+ // Then skip it
+ continue;
+ } // END - if
+
// Update mode set
- $entries = sprintf("`%s`=`%s`%s%s", $entries, $entries, $updateMode, (float) $values);
+ // @TODO Call setConfigEntry() somehow
+ $SQL = sprintf("`%s`=`%s`%s%s", $entries, $entries, $updateMode, (float) $values);
} elseif (($values + 0) === $values) {
// Number detected
- $entries = sprintf("`%s`=%s", $entries, (float) $values);
+ $SQL = sprintf("`%s`=%s", $entries, (float) $values);
// Set it in config first
setConfigEntry($entries, (float) $values);
} elseif ($values == 'UNIX_TIMESTAMP()') {
// Function UNIX_TIMESTAMP() detected
- $entries = sprintf("`%s`=UNIX_TIMESTAMP()", $entries);
+ $SQL = sprintf("`%s`=UNIX_TIMESTAMP()", $entries);
// Set timestamp in array as well
setConfigEntry($entries, time());
} else {
// Regular entry to update
- $entries = sprintf("`%s`='%s'", $entries, SQL_ESCAPE($values));
+ $SQL = sprintf("`%s`='%s'", $entries, SQL_ESCAPE($values));
// Set it in config as well
setConfigEntry($entries, SQL_ESCAPE($values));
}
// Run database update
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'entries=' . $entries);
- SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_config` SET ".$entries." WHERE `config`=%s LIMIT 1",
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQL=' . $SQL);
+ SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_config` SET ".$SQL." WHERE `config`=%s LIMIT 1",
array(bigintval($config)), __FUNCTION__, __LINE__);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'entries=' . $entries . ',affectedRows=' . SQL_AFFECTEDROWS());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQL=' . $SQL . ',affectedRows=' . SQL_AFFECTEDROWS());
// Rebuild cache
rebuildCache('config', 'config');
// Load config from cache
mergeConfig($GLOBALS['cache_array']['config'][$no]);
- // Count cache hits if exists
- if ((isStatsEntrySet('cache_hits')) && (isExtensionActive('cache'))) {
- incrementStatsEntry('cache_hits');
- } // END - if
+ // Count cache hits
+ incrementStatsEntry('cache_hits');
} elseif ((!isExtensionActive('cache')) || (!isset($GLOBALS['cache_array']['config'][$no]))) {
// Load config from DB
$result_config = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_config` WHERE `config`='%s' LIMIT 1",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// CFG: ERROR_REPORTING
-error_reporting(E_ALL | E_STRICT);
+error_reporting(E_ALL | E_DEPRECATED | E_STRICT);
// Is the function there? (removed in PHP 5.4.x)
if (function_exists('import_request_variables')) {
} // END - if
// Detect path (without 'inc') and fix windozer paths
-$path = str_replace("\\", '/', substr(dirname(__FILE__), 0, -3));
+$path = str_replace(chr(92), '/', substr(dirname(__FILE__), 0, -3));
// Some very important function includes
foreach (array('config', 'wrapper', 'template', 'module', 'inc', 'stats', 'http', 'xml', 'callback', 'referral') as $inc) {
include($path . 'inc/functions.php');
// Auto-detection of URL
-$URL = 'http://' . detectServerName() . str_replace("\\", '/', dirname($_SERVER['PHP_SELF']));
+$URL = 'http://' . detectServerName() . str_replace(chr(92), '/', dirname($_SERVER['PHP_SELF']));
while (substr($URL, -1, 1) == '/') { $URL = substr($URL, 0, -1); }
// Initialize the configuration
initConfig();
+// Init HTTP handling
+initHttp();
+
// CFG: HOST-URL (without trailing '/' !)
setConfigEntry('URL', $URL);
setConfigEntry('TITLE', 'Mailer-Project');
// CFG: COPY
-setConfigEntry('COPY', 'Copyright © 2003 - 2009, by Roland Häder,<br />2009 - 2011 by Mailer Developer Team');
+setConfigEntry('COPY', 'Copyright © 2003 - 2009, by Roland Häder,<br />2009 - 2012 by Mailer Developer Team');
// CFG: CACHE_PATH
setConfigEntry('CACHE_PATH', 'inc/cache/');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2008 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// CFG: DEBUG-REGEX (comment in to debug regular expressions)
//setConfigEntry('DEBUG_REGEX', 'Y');
+// CFG: ALLOW-TESTER0ACCOUNTS (comment in to allow tester accounts being re-included)
+//setConfigEntry('ALLOW_TESTER_ACCOUNTS', 'Y');
+
// Your MySQL data (we don't like M$ SQL ;-) )
$GLOBALS['mysql'] = array(
// CFG: MYSQL-HOST
// SMTP-Subsystem (keep all empty to use legacy mail() command!)
// CFG: SMTP-HOSTNAME
setConfigEntry('SMTP_HOSTNAME', '');
+
// CFG: SMTP-USER
setConfigEntry('SMTP_USER' , '');
+
// CFG: SMTP-PASSWORD
setConfigEntry('SMTP_PASSWORD', '');
-// @TODO Rewrite the following three constants, somehow...
// CFG: MAIN-TITLE
setConfigEntry('MAIN_TITLE', 'Your mail-exchanger title');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Only confirmed members shall receive birthday mails...
$result_birthday = SQL_QUERY_ESC("SELECT
- `userid`,`email`,`birth_year`
+ `userid`,
+ `email`,
+ `birth_year`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `status`='CONFIRMED' AND
+ `status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
`birth_day`=%s AND
`birth_month`=%s AND
`birthday_sent` < (UNIX_TIMESTAMP() - ({?ONE_DAY?} * 364))
// Simply subtract both values and you got the age... :)
$age = $now - $bd;
- if (getConfig('birthday_points') > 0) {
+ if (getBirthdayPoints() > 0) {
// Add more entries to the array
$content['age'] = $age;
$content['check'] = '';
// @TODO 4 is hard-coded here, should we move it out in config?
- for ($idx = '0'; $idx < 4; $idx++) {
+ for ($idx = 0; $idx < 4; $idx++) {
$content['check'] .= generateRandomCode('8', mt_rand(0, $month . $day), $content['userid'], ($age * ($idx + 1)));
} // END - for
$message = loadEmailTemplate('member_birthday_confirm', $content, bigintval($content['userid']));
} else {
// Load default email template and fill in the age
- $message = loadEmailTemplate('member_birthday', $age, $content['userid']);
+ $message = loadEmailTemplate('member_birthday', $content, $content['userid']);
}
// Send email
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/08/2012 *
+ * =================== Last change: 06/08/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : daily_earning.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Things to be done on daily reset *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Dinge, die beim taeglichen Reset erledigt werden *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} elseif ((!isHtmlOutputMode()) || (!isResetModeEnabled())) {
+ // Do not execute when script is in CSS mode or no daily reset
+ return;
+} elseif (!isExtensionActive('earning')) {
+ logDebugMessage(__FILE__, __LINE__, 'Not resetting, needed extension disabled.');
+ return;
+}
+
+// Debug line
+//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset started.');
+
+// Debug line
+//* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'Daily reset ended.');
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `status`='CONFIRMED' AND (
+ `status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND (
(
(UNIX_TIMESTAMP() - `last_update`) >= {?profile_update?} AND
`last_update` > 0 AND
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
WHERE
`ref_payout`=0 AND
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
ORDER BY
`userid` ASC", __FILE__, __LINE__);
// Init SQLs
initSqls();
- // Start checking accounts which are on 0 confirmed-to-go mails
- while ($content = SQL_FETCHARRAY($result_daily)) {
- //* DEBUG: */ debugOutput(basename(__FILE__) . ':' . $content['userid']);
- $result_points = SQL_QUERY_ESC("SELECT
+ // Run through all 'locked_(foo)_points columsn
+ foreach (runFilterChain('locked_points_columns_array', array('points')) as $columnName) {
+ // Start checking accounts which are on 0 confirmed-to-go mails
+ while ($content = SQL_FETCHARRAY($result_daily)) {
+ //* DEBUG: */ debugOutput(basename(__FILE__) . ':' . $content['userid']);
+ $result_points = SQL_QUERY_ESC("SELECT
`ref_depth`,
- `locked_points`
+ `locked_%s`
FROM
`{?_MYSQL_PREFIX?}_user_points`
WHERE
`userid`=%s AND
- `locked_points` > 0.00000
+ `locked_%s` > 0.00000
ORDER BY
`ref_depth` ASC",
- array(bigintval($content['userid'])), __FILE__, __LINE__);
+ array(
+ $columnName,
+ bigintval($content['userid']),
+ $columnName
+ ), __FILE__, __LINE__);
- //* DEBUG: */ debugOutput(basename(__FILE__) . ':payout=0;points|numRows=' . SQL_NUMROWS($result_points));
- if (!SQL_HASZERONUMS($result_points)) {
- // Ok transfer points
- while ($content2 = SQL_FETCHARRAY($result_points)) {
- // Merge both arrays
- $content = merge_array($content, $content2);
+ //* DEBUG: */ debugOutput(basename(__FILE__) . ':payout=0;points|numRows=' . SQL_NUMROWS($result_points));
+ if (!SQL_HASZERONUMS($result_points)) {
+ // Ok transfer points
+ while ($content2 = SQL_FETCHARRAY($result_points)) {
+ // Merge both arrays
+ $content = merge_array($content, $content2);
- //* DEBUG: */ debugOutput(basename(__FILE__) . ':userid=' . $content['userid'].',depth='.$content['ref_depth'].',locked='.$content['locked_points']);
- if ($content['ref_depth'] > 0) {
- // Level 1+
- addSql(SQL_QUERY_ESC("UPDATE
+ //* DEBUG: */ debugOutput(basename(__FILE__) . ':userid=' . $content['userid'].',depth='.$content['ref_depth'].',columnName=' . $columnName . ',locked='.$content['locked_' . $columnName]);
+ if ($content['ref_depth'] > 0) {
+ // Level 1+
+ addSql(SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_points`
SET
- `points`=`points`+%s,
- `locked_points`=0.00000
+ `%s`=`%s`+%s,
+ `locked_%s`=0.00000
WHERE
`userid`=%s AND
`ref_depth`=%s
LIMIT 1",
- array(
- $content['locked_points'],
- bigintval($content['userid']),
+ array(
+ $columnName,
+ $columnName,
+ $content['locked_' . $columnName],
+ $columnName,
+ bigintval($content['userid']),
$content['ref_depth']
- ), __FILE__, __LINE__, false)
- );
- } else {
- // Level zero
- addSql(SQL_QUERY_ESC("UPDATE
+ ), __FILE__, __LINE__, false)
+ );
+ } else {
+ // Level zero
+ addSql(SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_points`
SET
- `points`=`points`+%s,
- `locked_points`=0.00000
+ `%s`=`%s`+%s,
+ `locked_%s`=0.00000
WHERE
`userid`=%s AND
`ref_depth` IS NULL
LIMIT 1",
- array(
- $content['locked_points'],
- bigintval($content['userid'])
- ), __FILE__, __LINE__, false)
- );
- }
+ array(
+ $columnName,
+ $columnName,
+ $content['locked_' . $columnName],
+ $columnName,
+ bigintval($content['userid'])
+ ), __FILE__, __LINE__, false)
+ );
+ }
- // Update mediadata as well
- if (isExtensionInstalledAndNewer('mediadata', '0.0.4')) {
- // Update database
- updateMediadataEntry(array('total_points'), 'add', $content['locked_points']);
- } // END - if
- } // END - while
- } // END - if
+ // Update mediadata as well
+ if (isExtensionInstalledAndNewer('mediadata', '0.0.4')) {
+ // Update database
+ updateMediadataEntry(array('total_points'), 'add', $content['locked_' . $columnName]);
+ } // END - if
+ } // END - while
+ } // END - if
- // Free memory
- SQL_FREERESULT($result_points);
- } // END - while
+ // Free memory
+ SQL_FREERESULT($result_points);
+ } // END - while
+ } // END - foreach
// Run all SQLs
runFilterChain('run_sqls');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// System-wide return codes
-addCode('WRONG_PASS' , 0x001);
-addCode('WRONG_ID' , 0x002);
-addCode('ACCOUNT_LOCKED' , 0x003);
-addCode('ACCOUNT_UNCONFIRMED', 0x004);
-addCode('ACCOUNT_UNKNOWN' , 0x005);
-addCode('UNKNOWN_STATUS' , 0x006);
-addCode('NO_MAIL_TYPE' , 0x007);
-addCode('CNTR_FAILED' , 0x008);
-addCode('LOGOUT_DONE' , 0x009);
-addCode('LOGOUT_FAILED' , 0x00a);
-addCode('URL_TIME_LOCK' , 0x00b);
-addCode('URL_FOUND' , 0x00c);
-addCode('OVERLENGTH' , 0x00d);
-addCode('SUBJECT_URL' , 0x00e);
-addCode('BLIST_URL' , 0x00f);
-addCode('NO_RECS_LEFT' , 0x010);
-addCode('INVALID_TAGS' , 0x011);
-addCode('MORE_POINTS' , 0x012);
-addCode('COOKIES_DISABLED' , 0x013);
-addCode('DATA_INVALID' , 0x014);
-addCode('POSSIBLE_INVALID' , 0x015);
-addCode('USER_404' , 0x016);
-addCode('STATS_404' , 0x017);
-addCode('ALREADY_CONFIRMED' , 0x018);
-addCode('ERROR_MAILID' , 0x019);
-addCode('EXTENSION_PROBLEM' , 0x01a);
-addCode('MORE_RECEIVERS1' , 0x01b);
-addCode('MORE_RECEIVERS2' , 0x01c);
-addCode('MORE_RECEIVERS3' , 0x01d);
-addCode('INVALID_URL' , 0x01e);
-addCode('MENU_NOT_VALID' , 0x01f);
-addCode('LOGIN_FAILED' , 0x020);
-addCode('BEG_SAME_AS_OWN' , 0x021);
-addCode('UNHANDLED_STATUS' , 0x022);
-addCode('MODULE_MEMBER_ONLY' , 0x023);
-addCode('UNKNOWN_ERROR' , 0x024);
-addCode('PROFILE_UPDATED' , 0x025);
+addCode('WRONG_PASS' , 0x001);
+addCode('WRONG_ID' , 0x002);
+addCode('ACCOUNT_LOCKED' , 0x003);
+addCode('ACCOUNT_UNCONFIRMED' , 0x004);
+addCode('ACCOUNT_UNKNOWN' , 0x005);
+addCode('UNKNOWN_STATUS' , 0x006);
+addCode('NO_MAIL_TYPE' , 0x007);
+addCode('CNTR_FAILED' , 0x008);
+addCode('LOGOUT_DONE' , 0x009);
+addCode('LOGOUT_FAILED' , 0x00a);
+addCode('URL_TIME_LOCK' , 0x00b);
+addCode('URL_FOUND' , 0x00c);
+addCode('OVERLENGTH' , 0x00d);
+addCode('SUBJECT_URL' , 0x00e);
+addCode('BLIST_URL' , 0x00f);
+addCode('NO_RECS_LEFT' , 0x010);
+addCode('INVALID_TAGS' , 0x011);
+addCode('MORE_POINTS' , 0x012);
+addCode('COOKIES_DISABLED' , 0x013);
+addCode('DATA_INVALID' , 0x014);
+addCode('POSSIBLE_INVALID' , 0x015);
+addCode('USER_404' , 0x016);
+addCode('STATS_404' , 0x017);
+addCode('ALREADY_CONFIRMED' , 0x018);
+addCode('ERROR_MAILID' , 0x019);
+addCode('EXTENSION_PROBLEM' , 0x01a);
+addCode('MORE_RECEIVERS1' , 0x01b);
+addCode('MORE_RECEIVERS2' , 0x01c);
+addCode('MORE_RECEIVERS3' , 0x01d);
+addCode('INVALID_URL' , 0x01e);
+addCode('MENU_NOT_VALID' , 0x01f);
+addCode('LOGIN_FAILED' , 0x020);
+addCode('BEG_SAME_AS_OWN' , 0x021);
+addCode('UNHANDLED_STATUS' , 0x022);
+addCode('MODULE_MEMBER_ONLY' , 0x023);
+addCode('UNKNOWN_ERROR' , 0x024);
+addCode('PROFILE_UPDATED' , 0x025);
+addCode('UNKNOWN_REDIRECT' , 0x026);
+addCode('LOGIN_EMPTY_ID' , 0x027);
+addCode('LOGIN_EMPTY_PASSWORD', 0x028);
// Full version
setConfigEntry('FULL_VERSION', '0.2.1-FINAL');
-// Server-URL (DO NOT CHANGE THIS OR YOU CANNOT CHECK FOR UPDATES/EXTENSIONS!)
+// Server-URL (DO NOT CHANGE THIS OR YOU CANNOT CHECK FOR UPDATES!)
setConfigEntry('SERVER_URL', 'http://mxchange.org');
// One day
// Extra title is empty by default
setExtraTitle('');
+// Time unit translations
+$GLOBALS['time_units'] = array(
+ // Data value -> string-representation
+ 'Y' => 'YEAR',
+ 'M' => 'MONTH',
+ 'W' => 'WEEK',
+ 'D' => 'DAY',
+ 'h' => 'HOUR',
+ 'm' => 'MINUTE',
+ 's' => 'SECOND',
+);
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Empty query string or link is not up?
if (empty($sqlStringModified)) {
// Empty SQL string!
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("SQL string is empty. Please fix this. file=%s, line=%s",
+ reportBug(__FUNCTION__, __LINE__, sprintf("SQL string is empty, please fix this: file=%s, line=%s",
basename($F),
$L
));
} elseif (!SQL_IS_LINK_UP()) {
// We should not quietly ignore this
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Cannot query database: sqlString=%s,file=%s,line=%s",
+ reportBug(__FUNCTION__, __LINE__, sprintf("Cannot query database: sqlString=%s,file=%s,line=%s",
$sqlStringModified,
basename($F),
$L
}
// Remove \t, \n and \r from queries they may confuse some MySQL versions
- $sqlStringModified = str_replace("\t", ' ', str_replace("\n", ' ', str_replace("\r", ' ', $sqlStringModified)));
+ $sqlStringModified = str_replace(array(chr(9), chr(10), chr(13)), array(' ', ' ', ' '), $sqlStringModified);
// Compile config entries out
$sqlStringModified = SQL_PREPARE_SQL_STRING($sqlStringModified, $enableCodes);
// Run SQL command
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'F=' . basename($F) . ',L=' . $L . ',sql=' . $GLOBALS['last_sql']);
$result = mysql_query($GLOBALS['last_sql'], SQL_GET_LINK())
- or debug_report_bug($F, $L, 'file='. basename($F) . ',line=' . $L . ':mysql_error()=' . mysql_error() . ',last_query=' . $GLOBALS['last_sql']);
+ or SQL_ERROR($F, $L, 'file='. basename($F) . ',line=' . $L . ':mysql_error()=' . mysql_error() . ',last_query=' . $GLOBALS['last_sql']);
//* DEBUG: */ logDebugMessage($F, $L, 'sql=' . $GLOBALS['last_sql'] . ',affected=' . SQL_AFFECTEDROWS() . ',numRows='.(is_resource($result) ? SQL_NUMROWS($result) : gettype($result)));
// Calculate query time
incrementConfigEntry('sql_count');
// Debug output
- if ((!isCssOutputMode()) && (isDebugModeEnabled()) && (isSqlDebuggingEnabled())) {
+ if (SQL_DEBUG_ENABLED()) {
// Is this the first call?
if (!isset($GLOBALS['sql_first_entry'])) {
// Write first entry
} // END - if
// Append debug line
- appendLineToFile(getCachePath() . 'mysql.log', basename($F) . '|LINE=' . $L . '|NUM=' . (is_resource($result) ? SQL_NUMROWS($result) : 'false') . '|AFFECTED=' . SQL_AFFECTEDROWS() . '|QUERYTIME:' . $queryTime . '): ' . str_replace("\r", '', str_replace("\n", ' ', $GLOBALS['last_sql'])));
+ appendLineToFile(getCachePath() . 'mysql.log', basename($F) . '|LINE=' . $L . '|NUM=' . (is_resource($result) ? SQL_NUMROWS($result) : 'false') . '|AFFECTED=' . SQL_AFFECTEDROWS() . '|QUERYTIME:' . $queryTime . '): ' . str_replace(array(chr(13), chr(10)), array('', ' '), $GLOBALS['last_sql']));
} // END - if
- // Count DB hits
- if (!isStatsEntrySet('db_hits')) {
- // Count in dummy variable
- setStatsEntry('db_hits', 1);
- } else {
- // Count to config array
- incrementStatsEntry('db_hits');
- }
+ // Increment stats entry
+ incrementStatsEntry('db_hits');
// Return the result
return $result;
$lines = false;
// Is the result a valid resource?
- if (isset($GLOBALS['sql_numrows'][$resource])) {
+ if (isset($GLOBALS['sql_numrows'][intval($resource)])) {
// Use cache
$lines = $GLOBALS['sql_numrows'][intval($resource)];
} elseif (is_resource($resource)) {
$GLOBALS['sql_numrows'][intval($resource)] = $lines;
} else {
// No resource given, please fix this
- debug_report_bug(__FUNCTION__, __LINE__, 'No resource given! result[]=' . gettype($resource) . ',last_sql=' . $GLOBALS['last_sql']);
+ reportBug(__FUNCTION__, __LINE__, 'No resource given! result[]=' . gettype($resource) . ',last_sql=' . $GLOBALS['last_sql']);
}
// Return lines
// SQL connect
function SQL_CONNECT ($host, $login, $password, $F, $L) {
// Try to connect
- $linkResource = mysql_connect($host, $login, $password) or debug_report_bug(__FUNCTION__, __LINE__, $F . ' (' . $L . '):' . mysql_error());
+ $linkResource = mysql_connect($host, $login, $password) or SQL_ERROR($F, $L, mysql_error());
// Set the link resource
- SQL_SET_LINK($linkResource);
+ if (is_resource($linkResource)) {
+ /*
+ * A non-resource (boolean) may happen on installation phase which
+ * shall not be set here. Only valid link resources shall be set so
+ * SQL_IS_LINK_UP() will only return 'true' if there is really a
+ * working database link.
+ */
+ SQL_SET_LINK($linkResource);
+ } // END - if
+
+ // Return the resource
+ return $linkResource;
}
// SQL select database
if (!SQL_IS_LINK_UP()) return false;
// Return the result
- return mysql_select_db($dbName, SQL_GET_LINK()) or debug_report_bug(__FUNCTION__, __LINE__, $F . ' (' . $L . '):' . mysql_error());
+ return mysql_select_db($dbName, SQL_GET_LINK()) or SQL_ERROR($F, $L, mysql_error());
}
// SQL close link
} // END - if
// Close database link and forget the link
- $close = mysql_close(SQL_GET_LINK()) or debug_report_bug(__FUNCTION__, __LINE__, $F . ' (' . $L . '):'.mysql_error());
+ $close = mysql_close(SQL_GET_LINK()) or SQL_ERROR($F, $L, mysql_error());
// Close link
- SQL_SET_LINK(null);
+ SQL_SET_LINK(NULL);
// Return the result
return $close;
// Is columns an array?
if (!is_array($columns)) {
// No array
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("columns is not an array. %s != array, file=%s, line=%s",
+ reportBug(__FUNCTION__, __LINE__, sprintf("columns is not an array. %s != array, file=%s, line=%s",
gettype($columns),
basename($F),
$L
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - BETWEEN');
// Remove brackes
- $keyName = str_replace('(', '', str_replace(')', '', $keyName));
+ $keyName = str_replace(array('(', ')'), array('', ''), $keyName);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'keyName=' . $keyName . 'begin=' . $begin . ' - AFTER');
// Continue
return;
} elseif ((!is_resource($link)) && (!is_null($link))) {
// This should never happen!
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Type of link is not resource or null, type=%s", gettype($link)));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Type of link is not resource or null, type=%s", gettype($link)));
} // END - if
// Set it
// Checks if the link is up
function SQL_IS_LINK_UP () {
- // Default is not up
- $linkUp = false;
-
// Do we have cached this?
- if (isset($GLOBALS['is_sql_link_up'])) {
- // Then use this
- $linkUp = $GLOBALS['is_sql_link_up'];
- } else {
- // Get it
- $linkUp = is_resource(SQL_GET_LINK());
-
- // And cache it
- $GLOBALS['is_sql_link_up'] = $linkUp;
- }
+ if (!isset($GLOBALS['is_sql_link_up'])) {
+ // Determine it
+ $GLOBALS['is_sql_link_up'] = is_resource(SQL_GET_LINK());
+ } // END - if
// Return the result
- return $linkUp;
+ return $GLOBALS['is_sql_link_up'];
}
// Wrapper function to make code more readable
return generateDateTime($timestamp, 7);
}
+// Log SQL errors to debug.log in installation phase or call reportBug()
+function SQL_ERROR ($file, $line, $message) {
+ // Remember plain error in last_sql_error
+ $GLOBALS['last_sql_error'] = mysql_error();
+
+ // Do we have installation phase?
+ if (isInstallationPhase()) {
+ /*
+ * In installation phase, we don't want SQL errors abort e.g. connection
+ * tests, so just log it away.
+ */
+ logDebugMessage($file, $line, $message);
+ } else {
+ // Regular mode, then call reportBug()
+ reportBug($file, $line, $message);
+ }
+}
+
// Check if there is a SQL table created
function isSqlTableCreated ($tableName) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ' - ENTERED!');
return $GLOBALS[__FUNCTION__][$tableName][$keyName];
}
+// Init database layer
+function initDatabaseLayer () {
+ // Set all required variables:
+ $GLOBALS['last_sql_error'] = '';
+}
+
+// Get last SQL error
+function getLastSqlError () {
+ return $GLOBALS['last_sql_error'];
+}
+
+// Gets an array (or false if none is found) from all supported engines
+function getArrayFromSupportedSqlEngines ($support = 'YES') {
+ // Init array
+ $engines = array();
+
+ // This also worked, now we need to check if the selected database type is supported
+ $result = SQL_QUERY('SHOW ENGINES', __FUNCTION__, __LINE__);
+
+ // Do we have entries? (Bad if not)
+ if (SQL_NUMROWS($result) > 0) {
+ // Load all and check for active entries
+ while ($content = SQL_FETCHARRAY($result)) {
+ // Is this supported?
+ if (($support == 'ALL') || ($content['Support'] == $support)) {
+ // Add it
+ array_push($engines, $content);
+ } elseif (isDebugModeEnabled()) {
+ // Log it away in debug mode
+ logDebugMessage(__FUNCTION__, __LINE__, 'Engine ' . $content['Engine'] . ' is not supported (' . $content['Supported'] . ')');
+ }
+ } // END - if
+ } else {
+ // No engines! :(
+ $engines = false;
+ }
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return result
+ return $engines;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Create include file name
$inc = sprintf("inc/db/lib-%s.php", getConfig('_DB_TYPE'));
-if (isIncludeReadable($inc)) {
- // Include abstraction layer
- loadIncludeOnce($inc);
-} else {
+if (!isIncludeReadable($inc)) {
// Bye, bye...
- debug_report_bug(__FILE__, __LINE__, 'Cannot load database abstraction layer <u>' . getConfig('_DB_TYPE') . '</u> -> R.I.P.');
-}
+ reportBug(__FILE__, __LINE__, 'Cannot load database abstraction layer <u>' . getConfig('_DB_TYPE') . '</u> -> R.I.P.');
+} // END - if
+
+// Include abstraction layer
+loadIncludeOnce($inc);
+
+// Initialize it
+initDatabaseLayer();
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return str_replace($data['matches'][0][$data['key']], $replacer, escapeQuotes($data['code']));
}
-// Private function to determine wether we have a special expression function avaible
+// Private function to determine whether we have a special expression function avaible
// (mostly located in wrapper-functions.php)
function isExpressionFunctionAvaiable ($data) {
// Get the enty we need and trim it
}
} elseif ($GLOBALS['expression_function_available'][$entry] == false) {
// Debug message
- logDebugMessage(__FUNCTION__, __LINE__, 'Expression function for entry ' . $entry . ' requested but not found.');
+ logDebugMessage(__FUNCTION__, __LINE__, 'Expression function for entry ' . $entry . ' requested but does not exist.');
}
// Return cache
function doExpressionUrl ($data) {
// Do we have JS-mode?
if ($data['callback'] == 'js') {
- $data['output_mode'] = 1;
+ // Switch to it
+ $data['output_mode'] = '1';
} // END - if
// Handle an URL here
$replacer = "{DQUOTE} . encodeUrl('" . $data['matches'][4][$data['key']] . "', " . $data['output_mode'] . ') . {DQUOTE}';
+ // Debug log
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'replacer=' . $replacer . ',callback=' . $data['callback']);
+
// Replace it
$code = replaceExpressionCode($data, $replacer);
if (isExpressionFunctionAvaiable($data)) {
// Then use it
$replacer = '{DQUOTE} . ' . $data['callback'] . '(' . getExpressionFunction($data) . '()) . {DQUOTE}';
+ } elseif (!isConfigEntrySet($data['matches'][4][$data['key']])) {
+ // Config entry is not set
+ $replacer = '{DQUOTE} . ' . $data['callback'] . '(NULL) . {DQUOTE}';
} else {
// Default replacer is the config value itself
- $replacer = '{DQUOTE} . ' . $data['callback'] . '(getConfig(' . "'" . $data['matches'][4][$data['key']] . "'" . ')) . {DQUOTE}';
+ $replacer = '{DQUOTE} . ' . $data['callback'] . '(getConfig(' . chr(39) . $data['matches'][4][$data['key']] . chr(39) . ')) . {DQUOTE}';
}
// Replace the config entry
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'callback=' . $data['callback'] . ',extra_func=' . $data['extra_func'] . ',value=' . $data['value']);
// Message string replacement depends on if message is masked
- if ((isMessageMasked($data['callback'])) && ((!empty($data['extra_func'])) || ($data['extra_func'] == '0'))) {
+ if ((isMessageMasked($data['callback'], false)) && ((!empty($data['extra_func'])) || ($data['extra_func'] == '0'))) {
// Message should be masked
$replacer = "{DQUOTE} . getMaskedMessage('" . $data['callback'] . "', '" . $data['extra_func'] . "') . {DQUOTE}";
} elseif (!empty($data['value'])) {
// Expression call-back for template functions
function doExpressionTemplate ($data) {
// Construct call-back function name
- $callback = 'doTemplate' . $data['callback'];
+ $callbackFunction = 'doTemplate' . $data['callback'];
// Init replacer
- $replacer = '<!-- [' . __FUNCTION__ . ':' . __LINE__.'] Call-back function ' . $callback . ' does not exist. //-->';
+ $replacer = '<!-- [' . __FUNCTION__ . ':' . __LINE__.'] Call-back function ' . $callbackFunction . ' does not exist. //-->';
// Is the function there?
- if (function_exists($callback)) {
+ if (!isset($GLOBALS['current_template'])) {
+ // This is very bad and needs fixing
+ reportBug(__FUNCTION__, __LINE__, 'current_template in GLOBALS not set, callbackFunction=' . $callbackFunction . ',function_exists()=' . intval(function_exists($callbackFunction)));
+ } elseif (!function_exists($callbackFunction)) {
+ // Log missing function
+ logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callbackFunction . ' does not exist.');
+ } else {
// Do the replacement
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template='.$GLOBALS['current_template']);
- $replacer = '{DQUOTE} . ' . $callback . "('" . $GLOBALS['current_template'] . "', true";
+ $replacer = '{DQUOTE} . ' . $callbackFunction . '(' . chr(39) . $GLOBALS['current_template'] . chr(39) . ', true';
// Is 'value' set?
if (!empty($data['value'])) {
// Then include it as well
- $replacer .= ", '" . $data['value'] . "'";
+ $replacer .= ', ' . chr(39) . $data['value'] . chr(39);
} // END - if
// Replacer is ready
$replacer .= ') . {DQUOTE}';
- } else {
- // Log missing function
- logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callback . ' does not exist.');
}
// Replace the code
return $code;
}
+// Expression call-back for session data
+function doExpressionSession ($data) {
+ // Construct the replacer
+ $replacer = '{%pipe,getSession=' . $data['value'] . '%}';
+
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $data['value'] . ',replacer=' . $replacer);
+
+ // Replace the code
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return the (maybe) replaced code
+ return $code;
+}
+
+/**
+ * Expression call-back for session piplining, this means:
+ *
+ * 1) Read session data
+ * 2) Wrap the raw data into {%pipe,fooFunction=$rawValue%}
+ */
+function doExpressionSessionPipe ($data) {
+ // Get the session data
+ $rawValue = getSession($data['value']);
+
+ // Construct the replacer
+ $replacer = '{%pipe,' . $data['callback'] . '=' . $rawValue . '%}';
+
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $data['value'] . ',rawValue=' . $rawValue . ',replacer=' . $replacer);
+
+ // Replace the code
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return the (maybe) replaced code
+ return $code;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Load the extension and maybe found language and function files.
function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = false) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_mode=' . $ext_mode . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_mode=' . $ext_mode . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ' - ENTERED!');
// Loading an extension in same mode, but not test/update, twice is not
// good, so is the extension $ext_name already loaded in mode $ext_mode?
if ((isset($GLOBALS['loaded_extension'][$ext_name][$ext_mode])) && (!in_array($ext_mode, array('update', 'test')))) {
// If this happens twice, we need the bug report from you, except for updates/tests
- debug_report_bug(__FUNCTION__, __LINE__, __FUNCTION__ . '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true));
+ reportBug(__FUNCTION__, __LINE__, __FUNCTION__ . '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true));
} // END - if
// Make sure this situation can only happen once
// In all but test-mode we need these messages to debug! Please report all (together, e.g.)
if (($ext_mode != 'test') && (getCurrentExtensionVersion() == '0.0.0')) {
// Abort here, this must now always be set!
- debug_report_bug(__FUNCTION__, __LINE__, 'Extension version is empty, setting to 0.0. ext_name=' . $ext_name . ', ext_mode=' . $ext_mode . ', dry_run=' . intval($dry_run));
+ reportBug(__FUNCTION__, __LINE__, 'Extension version is empty, setting to 0.0. ext_name=' . $ext_name . ', ext_mode=' . $ext_mode . ', dry_run=' . intval($dry_run));
} // END - if
}
initExtensionSqls();
// Is the extension already loaded?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Loading extension ' . $ext_name . ', mode=' . getExtensionMode() . ', ver=' . getCurrentExtensionVersion());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Loading extension ' . $ext_name . ', getExtensionMode()=' . getExtensionMode() . ', getCurrentExtensionVersion()=' . getCurrentExtensionVersion());
if ((isExtensionLoaded($ext_name)) && (getExtensionMode() == 'init')) {
// Debug message
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s already loaded.", $ext_name));
// Is the extension file NOT there?
if (!isExtensionNameValid($ext_name)) {
// Debug message
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s not found or not readable.", $ext_name));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension %s not found or not readable or the PHP script is deprecated.", $ext_name));
// Abort here
return false;
// Registers an extension and possible update dependencies
function registerExtension ($ext_name, $taskId, $dry_run = false, $ignoreUpdates = false) {
// Set current extension name
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - ENTERED!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . intval($taskId) . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - ENTERED!');
setCurrentExtensionName($ext_name);
// Enable dry-run
enableExtensionProductive();
// This shall never do a non-admin user or if the extension is active (already installed)
- if ((!isAdmin()) || (isExtensionInstalled($ext_name))) {
+ if (((!isAdmin()) && (!isInstallationPhase())) || (isExtensionInstalled($ext_name))) {
// Abort here with 'false'
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - ABORTED: isAdmin()=' . intval(isAdmin()) . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',isExtensionInstalled()=' . intval(isExtensionInstalled($ext_name)));
return false;
} // END - if
if ((isExtensionRegistrationRunning($ext_name)) || ((isExtensionUpdateRunning($ext_name)) && ($ignoreUpdates === false))) {
// Then abort here with 'true' becaus it is fine
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in registration/update phase, all fine,taskId=' . $taskId . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates));
- ///* BUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',taskId=' . $taskId . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - Please investigate!');
+ //* BUG: */ reportBug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',taskId=' . $taskId . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - Please investigate!');
return true;
} // END - if
} // END - if
// Is the task id zero? Then we need to auto-fix it here
- if ($taskId == '0') {
+ if (($taskId == '0') && (!isInstallationPhase())) {
// Try to find the task
$taskId = determineExtensionTaskId(getCurrentExtensionName());
// Is it still zero?
if ($taskId == '0') {
// Then request a bug report
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("%s: task_id is still zero after determineExtensionTaskId(%s)",
+ reportBug(__FUNCTION__, __LINE__, sprintf("%s: task_id is still zero after determineExtensionTaskId(%s)",
__FUNCTION__,
getCurrentExtensionName()
));
enableExtensionReportingFailure();
// Does this extension exists?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ' - CALLING loadExtension() ...');
if (loadExtension(getCurrentExtensionName(), 'register', '0.0.0', isExtensionDryRun())) {
// Set current extension name again
setCurrentExtensionName($ext_name);
} // END - if
// Extension version set? If empty the extension is not registered
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_ver[' . gettype($ext_ver) . ']=' . $ext_ver . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - EMPTY?');
if (empty($ext_ver)) {
// Extension not registered so far so first load task's id...
$taskId = determineExtensionTaskId($ext_update);
// Entry found?
- if ($taskId > 0) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'taskId=' . $taskId . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ',currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ' - CHECKING!');
+ if (($taskId > 0) || (isInstallationPhase())) {
// Try to register the extension
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_update=' . $ext_update . ',taskId=' . $taskId . ',isExtensionDryRun()=' . isExtensionDryRun());
$processResult = registerExtension($ext_update, $taskId, isExtensionDryRun(), true);
array(bigintval($taskId)), __FUNCTION__, __LINE__);
}
+ // @TODO This redirect is still needed to register sql_patches! Please try to avoid it
+ if (($ret === true) && ($dry_run === false) && ($ext_name == 'sql_patches') && (!isInstallationPhase())) {
+ /*
+ * This is a really dirty hack to prevent an error about a missing
+ * configuration entry which should be there after registration of
+ * ext-sql_patches.
+ */
+ redirectToRequestUri();
+ } // END - if
+
// Return status code
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',processResult=' . intval($processResult) . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',currName=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',processResult=' . intval($processResult) . ',ret=' . intval($ret) . ' - EXIT!');
return $ret;
}
// Run SQL queries for given extension id
// @TODO Change from ext_id to ext_name (not just even the variable! ;-) )
function doExtensionSqls ($ext_id, $load_mode) {
- // This shall never do a non-admin user!
- if (!isAdmin()) {
+ // This shall never do a non-admin user but installation phase is okay
+ if ((!isAdmin()) && (!isInstallationPhase())) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_id=' . $ext_id. ',load_mode=' . $load_mode . ',isAdmin()=' . intval(isAdmin()) . ',isInstallationPhase()=' . intval(isInstallationPhase()) . ' - ABORT!');
return false;
} // END - if
runFilterChain('extension_' . $load_mode);
// Remove cache file(s) if extension is active
- if (((isExtensionActive('cache')) && ((!SQL_HASZEROAFFECTED())) || ($sqlRan === true) || ($load_mode == 'activate') || ($load_mode == 'deactivate'))) {
+ if (((isExtensionActive('cache')) && ((!SQL_HASZEROAFFECTED()) || ($sqlRan === true) || ($load_mode == 'activate') || ($load_mode == 'deactivate')))) {
// Run filters
runFilterChain('post_extension_run_sql', getCurrentExtensionName());
} // END - if
} // END - if
}
-// Check wether the given extension is installed
+// Check whether the given extension is installed
function isExtensionInstalled ($ext_name) {
// We don't like empty extension names here
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - ENTERED!');
if (empty($ext_name)) {
// Please fix them all
- debug_report_bug(__FUNCTION__, __LINE__, 'ext_name is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'ext_name is empty.');
} // END - if
// By default non is installed
// Count cache hits
incrementStatsEntry('cache_hits');
- } elseif ((isInstallationPhase())) {
+ } elseif (isInstallationPhase()) {
// Extensions are all inactive/not installed during installation
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - installion phase');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - installation phase detected.');
} else {
// Look in database
$ext_id = getExtensionId($ext_name);
function isExtensionActive ($ext_name) {
if (isInstallationPhase()) {
// Extensions are all inactive during installation
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extensions are always inactive while installation phase. ext_name=' . $ext_name);
return false;
} elseif (empty($ext_name)) {
// Empty extension names must befixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Empty extension name provided.');
+ reportBug(__FUNCTION__, __LINE__, 'Empty extension name provided.');
} elseif (!isExtensionInstalled($ext_name)) {
// Not installed extensions are always inactive
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not installed extensions are always inactive. ext_name=' . $ext_name);
return false;
}
incrementStatsEntry('cache_hits');
} elseif (isExtensionLoaded($ext_name)) {
// @TODO Extension is loaded, what next?
- debug_report_bug(__FUNCTION__, __LINE__, 'LOADED:' . $ext_name);
+ reportBug(__FUNCTION__, __LINE__, 'LOADED:' . $ext_name);
} elseif (($ext_name == 'cache') || (!isExtensionInstalled('cache'))) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'DB! ext_name=' . $ext_name);
// Load from database
// Empty extension name should be fixed!
if (empty($ext_name)) {
// Please report this bug!
- debug_report_bug(__FUNCTION__, __LINE__, 'ext_name is empty which is not allowed here.');
+ reportBug(__FUNCTION__, __LINE__, 'ext_name is empty which is not allowed here.');
} // END - if
// Extensions are all inactive during installation
if (isInstallationPhase()) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',force=' . intval($force) . ' - Installation phase detected, returning empty version.');
return '';
} // END - if
// Extension version should not be invalid
if (($data['ext_version'] == 'false') && ($force === false)) {
// Please report this trouble
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> has empty version!", $ext_name));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> has empty version!", $ext_name));
} // END - if
// Return result
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run) . ',ignoreDependencies=' . intval($ignoreDependencies) . ' - ENTERED!');
if ((!isAdmin()) || (empty($ext_name))) {
// Called as non-admin or empty extension
- debug_report_bug(__FUNCTION__, __LINE__, 'Called as non-admin (isAdmin()=' . intval(isAdmin()) . '), or empty extension name. ext_name=' . $ext_name);
+ reportBug(__FUNCTION__, __LINE__, 'Called as non-admin (isAdmin()=' . intval(isAdmin()) . '), or empty extension name. ext_name=' . $ext_name);
} // END - if
// Set current SQL name
if ((isExtensionUpdateRunning($ext_name, $ignoreDependencies)) && ($dry_run === false)) {
// This is fine but needs logging ATM
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in update phase, all fine.');
- ///* BUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in update phase, please investigate!');
+ //* BUG: */ reportBug(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - already in update phase, please investigate!');
return true;
} // END - if
// Empty title?
if (empty($title)) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'title is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'title is empty.');
} // END - if
// Init variables
// Prepare output for template
$content = array(
'i' => ($idx + 1),
- 'sql' => str_replace('{', '{', str_replace('}', '}', encodeEntities($sql)))
+ 'sql' => str_replace(array('{', '}'), array('{', '}'), encodeEntities($sql))
);
// Load row template
$OUT = loadTemplate('admin_extension_sql_table', true, $content);
} else {
// No addional SQL commands to run
- $OUT = displayMessage('{--ADMIN_NO_ADDITIONAL_SQLS--}', true);
+ $OUT = displayMessage('{--ADMIN_EXTENSION_VERBOSE_SQLS_404--}', true);
}
} // END - if
// Did we find some extension?
if (empty($data['ext_name'])) {
// We should fix these all!
- debug_report_bug(__FUNCTION__, __LINE__, 'ext_name is empty. ext_id=' . $ext_id);
+ reportBug(__FUNCTION__, __LINE__, 'ext_name is empty. ext_id=' . $ext_id);
} // END - if
// Return the extension name
return $data['ext_id'];
}
-// Determines wether the given extension name is valid
+// Determines whether the given extension name is valid
function isExtensionNameValid ($ext_name) {
// Do we have cache?
if (!isset($GLOBALS['ext_name_valid'][$ext_name])) {
return $GLOBALS['ext_name_valid'][$ext_name];
}
-// Determines wether the given extension id is valid
+// Determines whether the given extension id is valid
function isExtensionIdValid ($ext_id) {
// Default is nothing valid
$isValid = false;
// Is the extension installed?
if (!isExtensionInstalled($ext_name)) {
// Non-installed extensions cannot be activated
- debug_report_bug(__FUNCTION__, __LINE__, 'Tried to activate non-installed extension ' . $ext_name);
+ reportBug(__FUNCTION__, __LINE__, 'Tried to activate non-installed extension ' . $ext_name);
} // END - if
// Activate the extension
// Is the extension installed?
if (!isExtensionInstalled($ext_name)) {
// Non-installed extensions cannot be activated
- debug_report_bug(__FUNCTION__, __LINE__, 'Tried to deactivate non-installed extension ' . $ext_name . ',getExtensionMode()=' . getExtensionMode());
+ reportBug(__FUNCTION__, __LINE__, 'Tried to deactivate non-installed extension ' . $ext_name . ',getExtensionMode()=' . getExtensionMode());
} // END - if
// Activate the extension
);
}
-// Checks wether the extension is older than given
+// Checks whether the extension is older than given
function isExtensionOlder ($ext_name, $ext_ver) {
// Get current extension version
$currVersion = getExtensionVersion($ext_name);
} // END - if
} else {
// Extension not there! :-(
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> not found but should be updated?", $ext_name));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Extension <span class=\"data\">%s</span> not found but should be updated?", $ext_name));
}
// Return task id
} // END - if
// Add the entry
- $GLOBALS['css_files'][] = $file;
+ array_push($GLOBALS['css_files'], $file);
}
// Setter for EXT_ALWAYS_ACTIVE flag
return $GLOBALS['ext_always_active'][getCurrentExtensionName()];
}
-// Checks wether the current extension is always active
+// Checks whether the current extension is always active
function isThisExtensionAlwaysActive () {
return (getThisExtensionAlwaysActive() == 'Y');
}
}
// Getter for EXT_DEPRECATED flag
-function isExtensionDeprecated () {
- return ($GLOBALS['ext_deprecated'][getCurrentExtensionName()] == 'Y');
+function isExtensionDeprecated ($ext_name = NULL) {
+ // Default is from current (NULL) extension
+ $isDeprecated = ($GLOBALS['ext_deprecated'][getCurrentExtensionName()] == 'Y');
+
+ // Is ext_name set?
+ if (!is_null($ext_name)) {
+ // Then use it instead
+ $isDeprecated = ((isset($GLOBALS['ext_deprecated'][$ext_name])) && ($GLOBALS['ext_deprecated'][$ext_name] == 'Y'));
+ } // END - if
+
+ // Return it
+ return $isDeprecated;
}
// Setter for EXT_UPDATE_DEPENDS flag
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ',extensionMode=' . getExtensionMode() . ' - ENTERED!');
if (empty($updateDepends)) {
// Please report this bug!
- debug_report_bug(__FUNCTION__, __LINE__, 'updateDepends is empty: currentExtension=' . getCurrentExtensionName());
+ reportBug(__FUNCTION__, __LINE__, 'updateDepends is empty: currentExtension=' . getCurrentExtensionName());
} // END - if
// Is it not yet added?
} // END - if
// Add it to the list of extension update depencies map
- $GLOBALS['ext_update_depends'][getCurrentExtensionName()][] = (string) $updateDepends;
+ array_push($GLOBALS['ext_update_depends'][getCurrentExtensionName()], $updateDepends);
// Remember it in the list of running updates
- $GLOBALS['ext_running_updates'][getCurrentExtensionName()][] = $updateDepends;
+ array_push($GLOBALS['ext_running_updates'][getCurrentExtensionName()], $updateDepends);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '/' . $updateDepends . ',extensionMode=' . getExtensionMode() . ' - EXIT!');
}
return $GLOBALS['ext_running_updates'][getCurrentExtensionName()];
}
-// Checks wether the given extension registration is in progress
+// Checks whether the given extension registration is in progress
function isExtensionRegistrationRunning ($ext_name) {
// Simply check it
$isRunning = ((isset($GLOBALS['ext_register_running'])) && (in_array($ext_name, $GLOBALS['ext_register_running'])));
// Init update depency map automatically if not found
if (isExtensionUpdateDependenciesInitialized()) {
// We need these bug reports as well...
- debug_report_bug(__FUNCTION__, __LINE__, '() is called twice: currName=' . getCurrentExtensionName());
+ reportBug(__FUNCTION__, __LINE__, '() is called twice: currName=' . getCurrentExtensionName());
} // END - if
$GLOBALS['ext_update_depends'][getCurrentExtensionName()] = array();
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Registration in progress: ext_name=' . $ext_name . ' - ENTERED!');
if (isExtensionRegistrationRunning($ext_name)) {
// This is really bad and should not be quietly ignored
- debug_report_bug(__FUNCTION__, __LINE__, '() already called! ext_name=' . $ext_name);
+ reportBug(__FUNCTION__, __LINE__, '() already called! ext_name=' . $ext_name);
} // END - if
// Then add it!
- $GLOBALS['ext_register_running'][] = $ext_name;
+ array_push($GLOBALS['ext_register_running'], $ext_name);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Registration in progress: ext_name=' . $ext_name . ' - EXIT!');
}
-// Checks wether EXT_UPDATE_DEPENDS is initialized
+// Checks whether EXT_UPDATE_DEPENDS is initialized
function isExtensionUpdateDependenciesInitialized () {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
return (isset($GLOBALS['ext_update_depends'][getCurrentExtensionName()]));
}
-// Checks wether an update is already running for given extension
+// Checks whether an update is already running for given extension
function isExtensionUpdateRunning ($ext_name, $ignoreDependencies = false) {
// Current and given extensions means whole array
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentExtension=' . getCurrentExtensionName() . ',ext_name=' . $ext_name . ',ignoreDependencies=' . intval($ignoreDependencies) . ' - ENTERED!');
// Counter for extension update depencies
function countExtensionUpdateDependencies () {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '=' . count($GLOBALS['ext_update_depends'][getCurrentExtensionName()]));
return count($GLOBALS['ext_update_depends'][getCurrentExtensionName()]);
}
// Look it up
$key = array_search($ext_name, getExtensionUpdateDependencies());
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',key[' . gettype($key) . ']=' . $key);
+
// Is it valid?
if ($key !== false) {
// Then remove it
// Getter for depency iterator
function getExtensionUpdateIterator () {
// Auto-init iterator
- if (!isset($GLOBALS['ext_depend_iterator'][getCurrentExtensionName()])) initExtensionUpdateIterator();
+ if (!isset($GLOBALS['ext_depend_iterator'][getCurrentExtensionName()])) {
+ // Initialize update iterator
+ initExtensionUpdateIterator();
+ } // END - if
// Return it
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName().'/'.$GLOBALS['ext_depend_iterator'][getCurrentExtensionName()]);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currName=' . getCurrentExtensionName() . '=' . $GLOBALS['ext_depend_iterator'][getCurrentExtensionName()]);
return $GLOBALS['ext_depend_iterator'][getCurrentExtensionName()];
}
// Getter for EXT_VER_HISTORY array
function getExtensionVersionHistory () {
+ // Is it set?
+ if (!isset($GLOBALS['ext_ver_history'][getCurrentExtensionName()])) {
+ // Then abort here to a avoid an ugly "Undefined index" error
+ reportBug(__FUNCTION__, __LINE__, 'Extension ext-' . getCurrentExtensionName() . ' has no history set! Is this extension empty?');
+ } // END - if
+
+ // Return the history
return $GLOBALS['ext_ver_history'][getCurrentExtensionName()];
}
// Setter for EXT_UPDATE_NOTICES
function setExtensionUpdateNotes ($updateNotes, $ext_ver = '') {
//
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ',getExtensionMode()=' . getExtensionMode() . ',ext_ver=' . $ext_ver . '/' . getCurrentExtensionVersion() . ',updateNotes()=' . strlen($updateNotes));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ',getExtensionMode()=' . getExtensionMode() . ',ext_ver=' . $ext_ver . '/' . getCurrentExtensionVersion() . ',updateNotes(length)=' . strlen($updateNotes));
if (empty($ext_ver)) {
$GLOBALS['ext_update_notes'][getCurrentExtensionName()][getCurrentExtensionVersion()] = (string) $updateNotes;
} else {
// Is it already initialized?
if (($force === false) && (isset($GLOBALS['ext_notes'][getCurrentExtensionName()]))) {
// This is mostly not wanted, so please report it
- debug_report_bug(__FUNCTION__, __LINE__, 'ext_notes already set for extension ' . getCurrentExtensionName());
+ reportBug(__FUNCTION__, __LINE__, 'ext_notes already set for extension ' . getCurrentExtensionName());
} // END - if
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName());
// Append extension notice
function appendExtensionNotes ($notes) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ', notes()=' . strlen($notes));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getCurrentExtensionName()=' . getCurrentExtensionName() . ', notes(length)=' . strlen($notes));
$GLOBALS['ext_notes'][getCurrentExtensionName()] .= (string) trim($notes);
}
function getCurrentExtensionName () {
if (!isset($GLOBALS['curr_extension_name'])) {
// Not set!
- debug_report_bug(__FUNCTION__, __LINE__, 'curr_extension_name not initialized. Please execute initExtensionSqls() before calling this function.');
+ reportBug(__FUNCTION__, __LINE__, 'curr_extension_name not initialized. Please execute initExtensionSqls() before calling this function.');
} // END - if
// Return it
function addExtensionSql ($sql) {
// Add it
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . getCurrentExtensionName() . ',ext_version=' . getCurrentExtensionVersion() . ',sql=' . $sql);
- $GLOBALS['ext_sqls'][getCurrentExtensionName()][getCurrentExtensionVersion()][] = $sql;
+ array_push($GLOBALS['ext_sqls'][getCurrentExtensionName()][getCurrentExtensionVersion()], $sql);
}
// Getter for SQLs array for current extension
// Output debug backtrace if not found (SHOULD NOT HAPPEN!)
if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
// Not found, should not happen
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
+ reportBug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
getCurrentExtensionName()
));
} // END - if
// Output debug backtrace if not found (SHOULD NOT HAPPEN!)
if (!isset($GLOBALS['ext_sqls'][getCurrentExtensionName()])) {
// Not found, should not happen
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
+ reportBug(__FUNCTION__, __LINE__, sprintf("ext_sqls is empty, current extension: %s",
getCurrentExtensionName()
));
} // END - if
} // END - if
}
-// Checks wether the current extension is on the removal list
+// Checks whether the current extension is on the removal list
function isExtensionOnRemovalList () {
// Init removal list
initExtensionRemovalList();
// Adds the current extension to the removal list
function addCurrentExtensionToRemovalList () {
// Simply add it
- $GLOBALS['ext_update_remove'][] = getCurrentExtensionName();
+ array_push($GLOBALS['ext_update_remove'], getCurrentExtensionName());
}
// Getter for removal list
// Filter for initialization of all extensions by loading them in 'init' mode
function FILTER_INIT_EXTENSIONS () {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTERED!');
+ // Init notification pool
+ initIncludePool('notify');
+
// Do we have some entries?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTRY!');
if (isset($GLOBALS['cache_array']['extension']['ext_name'])) {
// Load all found extensions if found
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHE - START!');
} // END - foreach
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHE - END!');
} // END - if
+
+ // Run any notifications
+ runFilterChain('load_includes', 'notify');
+
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'EXIT!');
}
// ext_ver should never be empty in other modes than 'test'
if ((empty($ext_ver)) && (getExtensionMode() != 'test')) {
// Please report all these messages
- debug_report_bug(__FUNCTION__, __LINE__, 'ext_ver is empty. Current extension name: ' . getCurrentExtensionName() . ', mode=' . getExtensionMode());
+ reportBug(__FUNCTION__, __LINE__, 'ext_ver is empty. Current extension name: ' . getCurrentExtensionName() . ', mode=' . getExtensionMode());
} // END - if
// Add version
return $GLOBALS[__FUNCTION__][getCurrentExtensionName()][getCurrentTheme()];
}
-// Checks wether the given extension has a language file
+// Checks whether the given extension has a language file
function ifExtensionHasLanguageFile ($ext_name) {
// Do we have cache?
if (isset($GLOBALS['cache_array']['extension']['ext_lang'][$ext_name])) {
// Is it readable?
if (!isExtensionIncludeReadable()) {
// Not readable
- debug_report_bug(__FUNCTION__, __LINE__, 'Extension ' . getCurrentExtensionName() . ' should be loaded, but is not readable.');
+ reportBug(__FUNCTION__, __LINE__, 'Extension ' . getCurrentExtensionName() . ' should be loaded, but is not readable.');
} // END - if
// Generate INC name
loadInclude($INC);
}
-// Checks wether an extension is readable
+// Checks whether an extension is readable
function isExtensionIncludeReadable ($ext_name = '') {
// If empty, use current
if (empty($ext_name)) {
ENGINE = {?_TABLE_TYPE?}
CHARACTER SET utf8
COLLATE utf8_general_ci
-COMMENT ' . "'" . $comment . "'");
+COMMENT ' . chr(39) . $comment . chr(39));
} else {
// Is already there, which should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'The table ' . $tableName . ' is already created which should not happen.');
+ reportBug(__FUNCTION__, __LINE__, 'The table ' . $tableName . ' is already created which should not happen.');
}
}
// Found, so add it
addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_config` DROP `' . $columnName . '`');
} elseif (isDebugModeEnabled()) {
- // Add debug line, debug_report_bug() would cause some extenion updates fail
+ // Add debug line, reportBug() would cause some extenion updates fail
logDebugMessage(__FUNCTION__, __LINE__, 'Configuration entry ' . $columnName . ' not found.');
}
}
$GLOBALS['ext_productive'][getCurrentExtensionName()] = (bool) $isProductive;
}
-// Checks wether the extension is in productive phase. If not set, development
+// Checks whether the extension is in productive phase. If not set, development
// phase (=false) is assumed.
function isExtensionProductive ($ext_name = '') {
// Is the extension name empty? Then use current
// Is it already loaded?
if (isExtensionLoaded($ext_name)) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Extension ' . $ext_name . ' is already marked as loaded!');
+ reportBug(__FUNCTION__, __LINE__, 'Extension ' . $ext_name . ' is already marked as loaded!');
} // END - if
// Mark it
$GLOBALS['ext_loaded']['ext_name'][$ext_name] = true;
}
-// Determine wether the given extension is already loaded
+// Determine whether the given extension is already loaded
function isExtensionLoaded ($ext_name) {
// Is it there?
return ((isset($GLOBALS['ext_loaded']['ext_name'][$ext_name])) && ($GLOBALS['ext_loaded']['ext_name'][$ext_name] === true));
// Is it already loaded?
if (isExtensionLibraryLoaded($ext_name)) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Extension library ' . $ext_name . ' is already marked as loaded!');
+ reportBug(__FUNCTION__, __LINE__, 'Extension library ' . $ext_name . ' is already marked as loaded!');
} // END - if
// Mark it
$GLOBALS['ext_loaded']['library'][$ext_name] = true;
}
-// Determine wether the given extension's library is already loaded
+// Determine whether the given extension's library is already loaded
function isExtensionLibraryLoaded ($ext_name) {
// Is it there?
return ((isset($GLOBALS['ext_loaded']['library'][$ext_name])) && ($GLOBALS['ext_loaded']['library'][$ext_name] === true));
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// SQL commands to run
// Register module
- //addModuleSql('foo','Y','Y','N','N');
+ //addModuleSql('foo', '{OPEN_TEMPLATE}MODULE_FOO_TITLE{CLOSE_TEMPLATE}','Y','Y','N','N');
break;
case 'remove': // Do stuff when removing extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_active'");
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'online_extra_links', 'ADD_LINK_ACTIVE_LIST', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'online_extra_links', 'ADD_LINK_ACTIVE_LIST', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addExtensionDependency('online');
// Register filter
- registerFilter('online_extra_links', 'ADD_LINK_ACTIVE_LIST', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'online_extra_links', 'ADD_LINK_ACTIVE_LIST', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter für den "Wer ist Online" Block hinzugefügt und ist von <strong>online</strong> abhängig.");
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` DROP `default_acl`");
// Remove filters
- unregisterFilter(__FUNCTION__, __LINE__, 'sql_admin_extra_data', 'ADD_EXTRA_SQL_DATA', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'do_admin_login_done', 'RESET_ADMINS_LOGIN_FAILURES', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'do_admin_login_pass', 'COUNT_ADMINS_LOGIN_FAILURE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'do_admin_login_done', 'REHASH_ADMINS_PASSWORD', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'sql_admin_extra_data', 'ADD_EXTRA_SQL_DATA', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'do_admin_login_done', 'RESET_ADMINS_LOGIN_FAILURES', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'do_admin_login_pass', 'COUNT_ADMINS_LOGIN_FAILURE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'do_admin_login_done', 'REHASH_ADMINS_PASSWORD', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addExtensionDependency('sql_patches');
// Add filters
- registerFilter('sql_admin_extra_data', 'ADD_EXTRA_SQL_DATA', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'sql_admin_extra_data', 'ADD_EXTRA_SQL_DATA', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter hinzugefügt und ist von <strong>sql_patches</strong> abhängig.");
case '0.7.4': // SQL queries for v0.7.4
// Add filter
- registerFilter('do_admin_login_done', 'RESET_ADMINS_LOGIN_FAILURES', false, true, isExtensionDryRun());
- registerFilter('do_admin_login_pass', 'COUNT_ADMINS_LOGIN_FAILURE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'do_admin_login_done', 'RESET_ADMINS_LOGIN_FAILURES', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'do_admin_login_pass', 'COUNT_ADMINS_LOGIN_FAILURE', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter hinzugefuegt.");
case '0.7.5': // SQL queries for v0.7.5
// Add filter
- registerFilter('do_admin_login_done', 'REHASH_ADMINS_PASSWORD', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'do_admin_login_done', 'REHASH_ADMINS_PASSWORD', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter zum Rehashen des Adminpassworts nach erfolgtem Login hinzugefügt.");
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_bonus` CHANGE `data_type` `data_type` ENUM('NEW','QUEUE','SEND') NOT NULL DEFAULT 'NEW'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN('config_autopurge','list_autopurge')");
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` DROP `ap_notified`");
+
+ // Unregister with points data
+ unregisterExtensionPointsData('autopurge_add');
break;
case 'activate': // Do stuff when admin activates this extension
case 'update': // Update an extension
switch (getCurrentExtensionVersion()) {
- case '0.1.0': // SQL queries for v0.1
+ case '0.1.0': // SQL queries for v0.1.0
// Add dependency to 'user'
addExtensionDependency('user');
break;
case '0.4.1': // SQL queries for v0.4.1
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('autopurge_add','points','LOCKED','DIRECT')");
+ // Register with points data system
+ registerExtensionPointsData('autopurge_add', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.3.2');
+setThisExtensionVersion('0.3.4');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2'));
+setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
// SQL commands to run
addDropTableSql('beg_ips');
addDropTableSql('beg_referals');
- addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referal_urls')");
+ addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referral_urls')");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='beg'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what` IN ('beg','beg2')");
+ // Unregister points data
+ unregisterExtensionPointsData('beg');
+ unregisterExtensionPointsData('beg_ref');
+ unregisterExtensionPointsData('monthly_beg');
+ unregisterExtensionPointsData('monthly_beg_ref');
+
// Unregister module
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='beg' LIMIT 1");
+
+ // Unregister filter
+ unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'init', 'BEG_PURGE_IPS_NOTIFY_USER', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
break;
case '0.2.9': // SQL queries for v0.2.9
- addDropTableSql('beg_referals');
- addCreateTableSql('beg_referals', "
+ addDropTableSql('beg_referrals');
+ addCreateTableSql('beg_referrals', "
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
`remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-`referal_url` TINYTEXT NOT NULL,
+`referral_url` TINYTEXT NOT NULL,
PRIMARY KEY (`id`),
INDEX (`userid`)",
'Recorded referral URLs');
// Add admin menu
- addAdminMenuSql('user','list_beg_referal_urls','Bettel-Referrals auflisten','Listet alle Bettellink-Aufrufe inklusive Referral-URL auf.','13');
+ addAdminMenuSql('user','list_beg_referral_urls','Bettel-Referrals auflisten','Listet alle Bettellink-Aufrufe inklusive Referral-URL auf.','13');
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Loggen der Referral-URLs hinzugefügt.");
case '0.3.0': // SQL queries for v0.3.0
addConfigDropSql('beg_mode');
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('beg','points','LOCKED','DIRECT')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('monthly_beg','points','LOCKED','DIRECT')");
+
+ // Register points data
+ registerExtensionPointsData('beg' , 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('monthly_beg', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Betteln bei {OPEN_CONFIG}MAIN_TITLE{CLOSE_CONFIG}' WHERE `module`='beg' AND `title`='' LIMIT 1");
// Update notes
- setExtensionUpdateNotes("Modul registriert und bei leerem Titel mit einem Standarttitel versehen.");
+ setExtensionUpdateNotes("Modul registriert und bei leerem Titel mit einem Standardtitel versehen.");
+ break;
+
+ case '0.3.3': // SQL queries for v0.3.3
+ // Register a filter
+ registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'init', 'BEG_PURGE_IPS_NOTIFY_USER', false, true, isExtensionDryRun());
+
+ // This depends on ext-register
+ addExtensionDependency('register');
+
+ // Update notes
+ setExtensionUpdateNotes("Filter für Anmeldeformular und Aufrämen der IPs hinzugefügt.");
+ break;
+
+ case '0.3.4': // SQL queries for v0.3.4
+ // Register points data
+ registerExtensionPointsData('beg_ref' , 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('monthly_beg_ref', 'points', 'LOCKED', 'DIRECT');
+
+ // SQL queries (renaming)
+ addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_referals` CHANGE `referal_url` `referral_url` TINYTEXT NOT NULL");
+ addExtensionSql("RENAME TABLE `{?_MYSQL_PREFIX?}_beg_referals` TO `{?_MYSQL_PREFIX?}_beg_referrals`");
+ addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_beg_referral_urls` WHERE `what`='list_beg_referal_urls' LIMIT 1");
+
+ // Update notes
+ setExtensionUpdateNotes("Verwendungszwecke für Referralgutgschriften registriert.");
break;
} // END - switch
break;
break;
case 'init': // When extension is initialized
- // Remove old entries
- $OLD = getBegTimeout();
- if (getBegUseridTimeout() > $OLD) {
- $OLD = getBegUseridTimeout();
- } // END - if
- SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (UNIX_TIMESTAMP() - `timeout`) >= ' . ($OLD + 60*60) . '', __FILE__, __LINE__);
-
- // Check for beg rallye is active and send mails out
- if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
- // Include file for sending out mails
- addIncludeToPool('notify', 'inc/mails/beg_mails.php');
- } // END - if
break;
default: // Unknown extension mode
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.3.9');
+setThisExtensionVersion('0.4.1');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9'));
+setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.1'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
// SQL commands to run
addDropTableSql('user_birthday');
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_birthday' LIMIT 1");
+
+ // Unregister points data
+ unregisterExtensionPointsData('birthday_confirm');
break;
case 'activate': // Do stuff when admin activates this extension
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Dies brauchen wir nicht mehr.");
break;
+
+ case '0.4.1': // SQL queries for v0.4.1
+ // Register points data
+ registerExtensionPointsData('birthday_confirm', 'points', 'LOCKED', 'DIRECT');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Eintrag in Tabelle <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugef&uum;gt.");
+ break;
} // END - if
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version of this extension
-setThisExtensionVersion('0.9.7');
+setThisExtensionVersion('0.9.9');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.1.6', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0', '0.9.1', '0.9.2', '0.9.3', '0.9.4', '0.9.5', '0.9.6', '0.9.7'));
+setExtensionVersionHistory(array('0.0.0', '0.1.6', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0', '0.9.1', '0.9.2', '0.9.3', '0.9.4', '0.9.5', '0.9.6', '0.9.7', '0.9.8', '0.9.9'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
addDropTableSql('bonus_customer');
addDropTableSql('bonus_turbo');
+ // Unregister points data
+ unregisterExtensionPointsData('monthly_bonus');
+
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
case '0.9.0': // SQL queries for v0.9.0
// Register filter
- registerFilter('member_login_check', 'ADD_LOGIN_BONUS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', false, true, isExtensionDryRun());
// Update notes
setExtensionUpdateNotes("Filter hinzugefügt der den Login-Bonus aktualisiert (bzw. soll) (internes TODO).");
case '0.9.5': // SQL queries for v0.9.5
// Register filter
- registerFilter('generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', false, true, isExtensionDryRun());
// Update notes
setExtensionUpdateNotes("Filter zum Generieren von Admin-Links für Bonus-Mails hinzugefügt.");
break;
case '0.9.6': // SQL queries for v0.9.6
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('monthly_bonus','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('monthly_bonus', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
addConfigChangeSql('bonus_click_yn', 'include_bonus_click', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
// Register filter
- registerFilter('add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Konfigurationseinträge umbenannt.");
break;
+
+ case '0.9.8': // SQL queries for v0.9.8
+ // Register filter
+ registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', false, true, isExtensionDryRun());
+
+ // Add dependency to ext-register
+ addExtensionDependency('register');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten bei der Mitgliederanmeldung.");
+ break;
+
+ case '0.9.9': // SQL queries for v0.9.9
+ // Register filter
+ registerFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten bei der Mitgliederanmeldung.");
+ break;
} // END - switch
break;
break;
case 'init': // Do stuff when extension is initialized
- // Check for bonus rallye is active and send mails out
- if ((isBonusRallyeActive()) && (isBonusNewMemberNotifyEnabled())) {
- // Include file for sending out mails
- addIncludeToPool('notify', 'inc/mails/bonus_mails.php');
- } // END - if
break;
default: // Unknown extension mode
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addMemberMenuSql('main', 'booking', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Kontoauszug', 5);
// Add the filters
- registerFilter('post_add_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
- registerFilter('post_sub_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_add_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_sub_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='booking'");
// Remove the filters
- unregisterFilter(__FUNCTION__, __LINE__, 'post_add_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_sub_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_add_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_sub_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN('cache_stats','config_config')");
// Unregister all filters
- unregisterFilter(__FUNCTION__, __LINE__, 'extension_update', 'CACHE_DESTROY_ON_EXT_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_extension_installed', 'CACHE_DESTROY_ON_EXT_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_extension_run_sql', 'CACHE_DESTROY_ON_EXT_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_admin_added', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_form_submited', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_form_deleted', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_form_reset_pass', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'extension_remove', 'CACHE_DESTROY_ALL', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'shutdown', 'CACHE_DESTROY_FILTER', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'extension_update', 'CACHE_DESTROY_ON_EXT_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_extension_installed', 'CACHE_DESTROY_ON_EXT_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_extension_run_sql', 'CACHE_DESTROY_ON_EXT_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_admin_added', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_form_submited', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_form_deleted', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_form_reset_pass', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'extension_remove', 'CACHE_DESTROY_ALL', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'shutdown', 'CACHE_DESTROY_FILTER', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
case '0.2.1': // SQL queries for v0.2.1
// Register the new filter
- registerFilter('extension_update', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, isExtensionDryRun());
- registerFilter('post_extension_installed', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, isExtensionDryRun());
- registerFilter('post_extension_run_sql', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, isExtensionDryRun());
- registerFilter('post_admin_added', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
- registerFilter('post_form_submited', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
- registerFilter('post_form_deleted', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
- registerFilter('post_form_reset_pass', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
- registerFilter('extension_remove', 'CACHE_DESTROY_ALL', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'extension_update', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_extension_installed', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_extension_run_sql', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_admin_added', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_form_submited', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_form_deleted', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_form_reset_pass', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'extension_remove', 'CACHE_DESTROY_ALL', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter für Erweiterungsmanagement hinzugefügt.");
setExtensionUpdateNotes("Cachen von Filtern hinzugefügt.");
// Register a new filter
- registerFilter('shutdown', 'CACHE_DESTROY_FILTER', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'shutdown', 'CACHE_DESTROY_FILTER', false, true, isExtensionDryRun());
break;
case '0.2.4': // SQL queries for v0.2.4
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.0.4');
+setThisExtensionVersion('0.0.5');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4'));
+setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5'));
// Keep this extension always active!
setExtensionAlwaysActive('Y');
// SQL commands to run
addDropTableSql('countries');
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='country'");
+
+ // Unregister filter
+ unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'COUNTRY_USER_REGISTRATION_ADD_SQL_COLUMNS', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
break;
case 'update': // Update an extension
- switch (getCurrentExtensionVersion())
- {
+ switch (getCurrentExtensionVersion()) {
case '0.0.1': // SQL queries for v0.0.1
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("SQL-Dateien hinzugefügt, die Sie mit z.B. phpMyAdmin einspielen können. (DOCS/country/README.de lesen!)");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Sicherheitsupdate für die Include-Befehle.");
break;
- }
+
+ case '0.0.5': // SQL queries for v0.0.5
+ // Register a filter
+ registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'COUNTRY_USER_REGISTRATION_ADD_SQL_COLUMNS', false, true, isExtensionDryRun());
+
+ // This depends on ext-register
+ addExtensionDependency('register');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter zum Mitgliederanmeldeformular hinzugefügt.");
+ break;
+ } // END - switch
break;
case 'modify': // When the extension got modified
default: // Unknown extension mode
logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
break;
-}
+} // END - switch
-//
+// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addMemberMenuSql('coupon', 'list_coupon', 'Eingelöste auflisten', 2);
// Add filter (for changing user_points column dynamically
- registerFilter('determine_points_column_name', 'COUPON_CHANGE_POINTS_COLUMN_NAME', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'determine_points_column_name', 'COUPON_CHANGE_POINTS_COLUMN_NAME', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='coupon' LIMIT 4");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='coupon' LIMIT 3");
+ // Remove points data
+ unregisterExtensionPointsData('coupon_cashed');
+
// Remove all filters
- unregisterFilter(__FUNCTION__, __LINE__, 'determine_points_column_name', 'COUPON_CHANGE_POINTS_COLUMN_NAME', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_cash_coupon', 'POST_CASH_COUPON', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'determine_points_column_name', 'COUPON_CHANGE_POINTS_COLUMN_NAME', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_cash_coupon', 'POST_CASH_COUPON', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addExtensionDependency('order');
// Insert data in new table
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('coupon_cashed','order_points','LOCKED','DIRECT')");
+ registerExtensionPointsData('coupon_cashed', 'order_points', 'LOCKED', 'DIRECT');
// Update notes (these will be set as task text!)
setExtensionUpdateNotes('');
break;
case '0.0.3': // SQL queries for v0.0.3
- registerFilter('post_cash_coupon', 'POST_CASH_COUPON', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_cash_coupon', 'POST_CASH_COUPON', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes('Filter zum Post- und Pre-Filter hinzugefügt.');
* =================== Last change: 09/25/2004 *
* *
* -------------------------------------------------------------------- *
- * File : ext- *
+ * File : ext-cprping.php *
* -------------------------------------------------------------------- *
- * Short description : *
+ * Short description : Check against CPR anti-spam database *
* -------------------------------------------------------------------- *
- * Kurzbeschreibung : *
+ * Kurzbeschreibung : Pruefung gegen CPR-Antispam-Datenbank *
* -------------------------------------------------------------------- *
* $Revision:: $ *
* $Date:: $ *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// SQL commands to run
// Register module
- //addModuleSql('foo','Y','Y','N','N');
+ //addModuleSql('foo', '{OPEN_TEMPLATE}MODULE_CPRPING_TITLE{CLOSE_TEMPLATE}','Y','Y','N','N');
break;
case 'remove': // Do stuff when removing extension
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 11/12/2011 *
+ * =================== Last change: 11/12/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : ext-currency.php *
+ * -------------------------------------------------------------------- *
+ * Short description : General virtual-currency extension *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Allgemeine Erweiterung f. virtuelle Waehrungen *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+// Version number
+setThisExtensionVersion('0.0.0');
+
+// Version history array (add more with , '0.0.1' and so on)
+setExtensionVersionHistory(array('0.0.0'));
+
+// This extension is in development (non-productive)
+enableExtensionProductive(false);
+
+switch (getExtensionMode()) {
+ case 'register': // Do stuff when installation is running
+ // SQL commands to run
+
+ // Register module
+ //addModuleSql('foo','Y','Y','N','N');
+ break;
+
+ case 'remove': // Do stuff when removing extension
+ // SQL commands to run
+ break;
+
+ case 'activate': // Do stuff when admin activates this extension
+ // SQL commands to run
+ //addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='foo' LIMIT 1");
+ break;
+
+ case 'deactivate': // Do stuff when admin deactivates this extension
+ // SQL commands to run
+ //addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='foo' LIMIT 1");
+ break;
+
+ case 'update': // Update an extension
+ switch (getCurrentExtensionVersion()) {
+ case '0.0.1': // SQL queries for v0.0.1
+ addExtensionSql('');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes('');
+ break;
+ } // END - switch
+ break;
+
+ case 'modify': // When the extension got modified
+ break;
+
+ case 'test': // For testing purposes
+ break;
+
+ case 'init': // Do stuff when extension is initialized
+ break;
+
+ default: // Unknown extension mode
+ logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
+ break;
+} // END - switch
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='doubler'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='doubler' LIMIT 1");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='doubler' LIMIT 1");
+
+ // Unregister points data
+ unregisterExtensionPointsData('doubler_direct');
+ unregisterExtensionPointsData('doubler_reset');
break;
case 'activate': // Do stuff when admin activates this extension
break;
case '0.1.8': // SQL queries for v0.1.8
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('doubler_direct','points','LOCKED','DIRECT')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('doubler_reset','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('doubler_direct', 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('doubler_reset' , 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'User->Earning connections');
// Register filter
- registerFilter('member_footer_extras', 'ADD_EARNING_GROUP_POPUP', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'member_footer_extras', 'ADD_EARNING_GROUP_POPUP', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_earning' LIMIT 1");
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'member_footer_extras', 'ADD_EARNING_GROUP_POPUP', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'member_footer_extras', 'ADD_EARNING_GROUP_POPUP', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
`forced_stats_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`forced_stats_campaign_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
`forced_stats_userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
+`forced_stats_token` VARCHAR(255) NULL DEFAULT NULL,
`forced_stats_viewed` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`forced_stats_clicked` TIMESTAMP NULL DEFAULT NULL,
`forced_stats_real_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
addAdminMenuSql('forced', NULL, 'Forced-Ads', 'Verwalten Sie hier bequem alle laufenden Forced-Banner, -Textlinks, -PopUps und deren Kampgnen. Sie können hier auch neue Werbmittel (Ads) hinzufügen oder laufende Forced-Kampagnen bei z.B. Regelverstössen sperren oder löschen. Auch das naträgliche Editieren von Ads und Kampagnen ist jederzeit möglich. Kampagnen dienen der einfacheren Verwaltung und der Trennung von dem Werbemittel selbst dienen. Sie brauchen also z.B. einen Forced-Banner nur einmal einfügen und können dann bei Bedarf weitere Kampagnen starten.', 5);
addAdminMenuSql('forced', 'list_forced_ads', 'Forced-Ads verwalten', 'Listet alle eingetragenen Forced-Ads (Werbmittel mit Klickzwang) auf und fügt neue hinzu. Sie können hier diese nachträglich editieren falls Sie mal eine falsche URL eingegeben haben oder den Text ändern wollen. Löschen Sie hier auch Forced-Banner, die nicht mehr gültig sind (z.B. abgelaufen sind). Sollten doch mit dem Werbmittel verknüpfte Kampagnen vorhanden sein, erhalten Sie einen Warnhinweis. Neue Werbmittel können Sie hier ebenfalls hinzufügen. Denken Sie aber daran, dass ohne Kampagne dieses nicht angezeigt wird. Achten Sie hier auch die Reload-Sperre.', 2);
addAdminMenuSql('forced', 'list_forced_campaigns', 'Kampagnen verwalten', 'Listet alle Kampagnen auf und zeigt deren Status an. Jederzeit können Sie Kampagnen stoppen, falls Sie dies wünschen oder ein Regelverstoss vorliegt. Haben Sie ein Werbemittel hinzugefügt, so fügen Sie bitte unbedingt eine Kampagne hinzu, da es sonst nicht angezeigt wird.', 3);
- addAdminMenuSql('forced', 'list_forced_costs', 'Kosten verwalten', 'Legen Sie die Preise pro Klick für Forced-Werbemittelbuchungen fest und wie viele {OPEN_CONFIG}POINTS{CLOSE_CONFIG} Ihre Mitglieder erhalten sollen. Generell sollten Sie bei Mitgliederbuchungen höhere Kosten pro Klick als was Ihre Mitglieder pro Klick erhalten einstellen, da so die {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abgebaut werden (Sie können an Accountaufladungen z.B. verdienen).', 4);
+ addAdminMenuSql('forced', 'list_forced_costs', 'Preise verwalten', 'Legen Sie die Preise pro Klick für Forced-Werbemittelbuchungen fest und wie viele {OPEN_CONFIG}POINTS{CLOSE_CONFIG} Ihre Mitglieder erhalten sollen. Generell sollten Sie bei Mitgliederbuchungen höhere Kosten pro Klick als was Ihre Mitglieder pro Klick erhalten einstellen, da so die {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abgebaut werden (Sie können an Accountaufladungen z.B. verdienen).', 4);
addAdminMenuSql('forced', 'stats_forced', 'Statistiken', 'Zeigt Gesamtstatistiken und zu den einzelnen Kampagnen und Werbmitteln an. Die hier angezeigte Statistik kann jedoch nicht manuell gelöscht werden (bitte auch nicht selber tun) da sie auch gleichzeitigt als Reload-Sperre dient.', 5);
// - Members
addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_earning_data` (`earning_group`,`earning_provider`,`earning_sorting`) VALUES ('POPUP','FORCED_POPUP',1)");
// Register filters
- registerFilter('add_forced_ads_types', 'FORCED_AD_TYPE_DEFAULTS', false, true, isExtensionDryRun());
- registerFilter('member_earning_table_data', 'FORCED_POPUP_TABLE_DATA', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'add_forced_ads_types', 'FORCED_AD_TYPE_DEFAULTS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'member_earning_table_data', 'FORCED_POPUP_TABLE_DATA', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_change_forced_campaign_status', 'FORCED_CHANGE_CAMPAIGN_STATUS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'pre_change_forced_campaign_status', 'FORCED_CHANGE_CAMPAIGN_VALIDATE_DATA', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
} // END - if
// Remove filter
- unregisterFilter(__FUNCTION__, __LINE__, 'add_forced_ads_types', 'FORCED_AD_TYPE_DEFAULTS', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'member_earning_table_data', 'FORCED_POPUP_TABLE_DATA', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'add_forced_ads_types', 'FORCED_AD_TYPE_DEFAULTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'member_earning_table_data', 'FORCED_POPUP_TABLE_DATA', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_change_forced_campaign_status', 'FORCED_CHANGE_CAMPAIGN_STATUS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'pre_change_forced_campaign_status', 'FORCED_CHANGE_CAMPAIGN_VALIDATE_DATA', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
//
$GLOBALS['url_ends'] = array(
' ',
- "\n",
- "\r",
+ chr(10),
+ chr(13),
')',
);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
+ // This extension requires ext-other
+ addExtensionDependency('other');
+
// SQL commands to run
addExtensionSql('');
break;
case 'remove': // Do stuff when removing extension
- // SQL commands to run
- addExtensionSql('');
+ // Unregister points data
+ unregisterExtensionPointsData('mailid_payback');
break;
case 'activate': // Do stuff when admin activates this extension
// This update depends on latest sql_patches version
addExtensionDependency('sql_patches');
- // Insert data in points_data
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('mailid_payback','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('mailid_payback', 'points', 'LOCKED', 'DIRECT');
break;
} // END - switch
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql('');
// Add the filters
- registerFilter('post_add_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
- registerFilter('post_sub_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_add_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_sub_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='mediadata'");
// Remove the filters
- unregisterFilter(__FUNCTION__, __LINE__, 'post_add_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'post_sub_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_add_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_sub_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* @TODO Yoo!Media: What is LayerAd compared to Layer click? *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// @TODO Move these into configuration
$GLOBALS['url_ends'] = array(
' ',
- "\n",
- "\r",
+ chr(10),
+ chr(13),
')',
);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
case '0.2.0': // SQL queries for v0.2.0
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Ungütiges Update (wegen Verallgemeinerung der <strong>nickname_history</strong>-Tabelle.");
+ setExtensionUpdateNotes("Ungültiges Update (wegen Verallgemeinerung der <strong>nickname_history</strong>-Tabelle.");
break;
case '0.2.1': // SQL queries for v0.2.1
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
- // SQL commands to run
+ // "Who-is-where" table
addDropTableSql('online');
addCreateTableSql('online', "
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
INDEX (`refid`),
INDEX `admin_member` (`is_admin`,`is_member`)",
'Who-is-where data');
+
+ // Admin menu
addAdminMenuSql('misc','usr_online','Online-Statistik','Eine Liste von derzeit "Online" Usern. Doppelte Einträge könnte auf mangelnden Cookie-Support des Browsers oder auf einen Spider hindeuten.', 1);
break;
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `action`='online'");
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'init', 'UPDATE_ONLINE_LIST', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'init', 'UPDATE_ONLINE_LIST', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addGuestMenuSql('online', NULL, 'Jetzt Online', 2);
// Register filter
- registerFilter('init', 'UPDATE_ONLINE_LIST', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'init', 'UPDATE_ONLINE_LIST', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Hinzufügen des Menüpunktes "Jetzt Online" wird nun von dieser Erweiterung erledigt. Filter hinzugefügt.");
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.5.3');
+setThisExtensionVersion('0.5.6');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3'));
+setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='order'");
// Remove these filters
- unregisterFilter(__FUNCTION__, __LINE__, 'get_total_points', 'ORDER_POINTS', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'get_own_points', 'ORDER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_total_points', 'ORDER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_own_points', 'ORDER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_ORDER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_ORDER_POINTS_COLUMN_NAMES', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'ORDER_ZIP_CODE_SQL', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'locked_points_columns_array', 'ORDER_POINTS_COLUMNS', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addExtensionDependency('user');
// Register filters for gathering points
- registerFilter(__FUNCTION__, __LINE__, 'get_total_points', 'ORDER_POINTS', true, isExtensionDryRun());
- registerFilter(__FUNCTION__, __LINE__, 'get_own_points', 'ORDER_POINTS', true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'get_total_points', 'ORDER_POINTS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'get_own_points', 'ORDER_POINTS', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Weiteres {?POINTS?}-Guthabenkonto "Werbeguthaben" hinzugefügt (verschoben von ext-user) und neue Filter zum Zurückliefern des Werbeguthabens hinzugefügt.");
+ setExtensionUpdateNotes("Weiteres Verwendungszwecke "Werbeguthaben" hinzugefügt (verschoben von ext-user) und neue Filter zum Zurückliefern des Werbeguthabens hinzugefügt.");
+ break;
+
+ case '0.5.4': // SQL queries for v0.5.4
+ // Register filter for handling locked points
+ registerFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_ORDER_POINTS', false, true, isExtensionDryRun());
+
+ // Register filter for all column names
+ registerFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_ORDER_POINTS_COLUMN_NAMES', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter für gesperrtes Werbeguthaben hinzugefügt.");
+ break;
+
+ case '0.5.5': // SQL queries for v0.5.5
+ // Register filter
+ registerFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'ORDER_ZIP_CODE_SQL', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter für gesperrtes Werbeguthaben hinzugefügt.");
+ break;
+
+ case '0.5.6': // SQL queries for v0.5.6
+ // Register filter
+ registerFilter(__FILE__, __LINE__, 'locked_points_columns_array', 'ORDER_POINTS_COLUMNS', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter für Spaltenname des gesperrten Werbeguthabens hinzugefügt.");
break;
} // END - switch
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.2.7');
+setThisExtensionVersion('0.2.8');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7'));
+setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8'));
// Keep this extension always active!
setExtensionAlwaysActive('Y');
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_other'");
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'page_footer', 'DISPLAY_DEBUG_SQL', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'page_footer', 'DISPLAY_DEBUG_SQL', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
break;
case '0.1.9': // SQL queries for v0.1.9
- addConfigAddSql('mailid_error_redirect', "ENUM('index','reject') NOT NULL DEFAULT 'index'");
+ addConfigAddSql('mailid_error_redirect', "ENUM('INDEX','REJECT') NOT NULL DEFAULT 'INDEX'");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Bei fehlerhafter Mail während der Bestätigung kann wahlweise zur Hauptseite weitergeleitet oder auf die eingestellte Ablehnungsseite umgeleitet werden.");
case '0.2.4': // SQL queries for v0.2.4
// Register filter
- registerFilter('page_footer', 'DISPLAY_DEBUG_SQL', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'page_footer', 'DISPLAY_DEBUG_SQL', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter zum Anzeigen (Debug) von ausgeführten SQL-Anweisungen hinzugefügt.");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Der Suffix <strong>_enabled</strong> in Konfigurationseinträgen ist deprecated und sollte nicht mehr verwendet werden. Da sonst Wrapper-Funktionsnamen wie z.B. <strong>isStatsEnabledEnabled()</strong> nach streng genommender Namenskonvention entstehen.");
break;
+
+ case '0.2.8': // SQL queries for v0.2.8
+ addConfigChangeSql('mailid_error_redirect', 'mailid_error_redirect', "ENUM('INDEX','REJECT') NOT NULL DEFAULT 'INDEX'");
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("<strong>mailid_error_redirect</strong> bzw. alle ENUMs haben gross geschriebene Werte.");
+ break;
} // END - switch
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addAdminMenuSql('config','config_politician_stop','Politiker-Stopp-Aktion','Einstellungen zur Satire-Aktion "Politiker-Stopp - Jetzt wird zurück zensiert."', 7);
// Register filter
- registerFilter('page_footer', 'DISPLAY_POLITICIAN_STOP_SNIPPET', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'page_footer', 'DISPLAY_POLITICIAN_STOP_SNIPPET', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'page_footer', 'DISPLAY_POLITICIAN_STOP_SNIPPET', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'page_footer', 'DISPLAY_POLITICIAN_STOP_SNIPPET', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='rallyes' LIMIT 1");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='rallyes' LIMIT 1");
+ // Remove points_data entry
+ unregisterExtensionPointsData('rallye_winner');
+
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addExtensionDependency('sql_patches');
// Register filter
- registerFilter('extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter hinzugefügt und ist von <strong>sql_patches</strong> abhängig.");
break;
case '0.3.6': // SQL queries for v0.3.6
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('rallye_winner','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('rallye_winner', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
// Check for new started but not notified rallyes
$result = SQL_QUERY("SELECT SQL_SMALL_RESULT
- `id`,`title`,`start_time`,`end_time`,`send_notify`" . $ADD1 . "
+ `id`,
+ `title`,
+ `start_time`,
+ `end_time`,
+ `send_notify`
+ " . $ADD1 . "
FROM
`{?_MYSQL_PREFIX?}_rallye_data`
WHERE
LIMIT 1", __FILE__, __LINE__);
if ((SQL_NUMROWS($result) == 1) && (isExtensionActive('autopurge'))) {
// End rallye here...
- markReferralRallyesAsExpired($result);
+ stopRallyeByResult($result);
} // END - if
// Free memory
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// SQL commands to run
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='refback'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN('config_refback','list_refback')");
+
+ // Unregister points data
+ unregisterExtensionPointsData('refback');
break;
case 'activate': // Do stuff when admin activates this extension
case '0.0.2': // SQL queries for v0.0.2
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Ungütiges Update seit Revision 246x.");
+ setExtensionUpdateNotes("Ungültiges Update seit Revision 246x.");
break;
case '0.0.3': // SQL queries for v0.0.3
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('refback','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('refback', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.5.6');
+setThisExtensionVersion('0.5.7');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6'));
+setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='register' LIMIT 1");
addDropTableSql('must_register');
- // Unregister a filter
- unregisterFilter(__FUNCTION__, __LINE__, 'register_must_fillout', 'REGISTER_MUST_FILLOUT', true, isExtensionDryRun());
+ // Unregister points data
+ unregisterExtensionPointsData('register_welcome');
+ unregisterExtensionPointsData('referral_bonus');
+ unregisterExtensionPointsData('referral_bonus_ref');
+
+ // Unregister filter
+ unregisterFilter(__FILE__, __LINE__, 'register_must_fillout', 'REGISTER_MUST_FILLOUT', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'PRE_USER_REGISTRATION_GENERIC', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
case 'update': // Update an extension
switch (getCurrentExtensionVersion()) {
- case '0.1.0': // SQL queries for v0.1
+ case '0.1.0': // SQL queries for v0.1.0
addDropTableSql('must_register');
addCreateTableSql('must_register', "
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
'Data which fields the user must fill out');
// Add all entries as required (DO NOT DELETE THEM FROM DATABASE!)
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('surname','Y')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('family','Y')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('street_nr','Y')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('cntry','Y')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('zip','Y')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('city','Y')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('surname', 'Y')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('family', 'Y')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('street_nr', 'Y')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('cntry', 'Y')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('zip', 'Y')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('city', 'Y')");
// Add admin menu
addAdminMenuSql('setup','config_register','Pflichtfelder','Stellen Sie hier die Pflichtfelder sowohl im Anmeldeformular, als auch im Mitgliedsbereich unter <strong>Profildaten ändern</strong> ein.', 12);
case '0.5.3': // SQL queries for v0.5.3
// Register a filter
- registerFilter('register_must_fillout', 'REGISTER_MUST_FILLOUT', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'register_must_fillout', 'REGISTER_MUST_FILLOUT', false, true, isExtensionDryRun());
// Run these SQLs
addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`,`field_required`) VALUES ('gender','Y')");
break;
case '0.5.6': // SQL queries for v0.5.6
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('register_welcome','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('register_welcome', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
// Update notes
setExtensionUpdateNotes("Anmeldewillkommensgutschrift wird nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
break;
+
+ case '0.5.7': // SQL queries for v0.5.7
+ // Register a filter
+ registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'PRE_USER_REGISTRATION_GENERIC', false, true, isExtensionDryRun());
+
+ // Register points data
+ registerExtensionPointsData('referral_bonus', 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('referral_bonus_ref', 'points', 'LOCKED', 'DIRECT');
+
+ // Update notes
+ setExtensionUpdateNotes("Anmeldeformular komplett auf drei Filter umgestrickt (mehr dazu siehe Wiki) und weitere Verwendungszwecke registriert.");
+ break;
} // END - switch
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_removeip' LIMIT 1");
// Remove filters
- unregisterFilter(__FUNCTION__, __LINE__, 'post_youhere_line', 'ADD_ANONYMITY_NOTICE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_youhere_line', 'ADD_ANONYMITY_NOTICE', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
addExtensionDependency('sql_patches');
// Add filters
- registerFilter('post_youhere_line', 'ADD_ANONYMITY_NOTICE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_youhere_line', 'ADD_ANONYMITY_NOTICE', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter hinzugefügt und ist von <strong>sql_patches</strong> abhängig.");
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
setThisExtensionVersion('0.1.8');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.8'));
+setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
case '0.1.3': // SQL queries for v0.1.3
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Ungütiges Update nach neuster Konvention (Erweiterung <strong>menu</strong> ist ungültig).");
+ setExtensionUpdateNotes("Ungültiges Update nach neuster Konvention (Erweiterung <strong>menu</strong> ist ungültig).");
break;
case '0.1.4': // SQL queries for v0.1.4
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
- //
- // SQL commands to run
- //
// Try to make it depend on repair
addExtensionDependency('repair');
// Add default entries
//
addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_registry` (`ext_name`,`is_active`,`admin_id`,`stamp_added`) VALUES ('sponsor','N',".getCurrentAdminId().",NOW())");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_action_convert` (`ext_name`,`conv_rate`,`conv_name`) VALUES ('sponsor','10','Mails')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_action_convert` (`ext_name`,`conv_rate`,`conv_name`) VALUES ('sponsor',10,'Mails')");
addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_paytypes` (`pay_name`,`pay_min_count`,`pay_rate`,`pay_currency`) VALUES ('Standard-Paket', 5, 1000.00000, '€')");
addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_paytypes` (`pay_name`,`pay_min_count`,`pay_rate`,`pay_currency`) VALUES ('Spar-Paket', 1, 200.00000, '€')");
addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_sponsor_paytypes` (`pay_name`,`pay_min_count`,`pay_rate`,`pay_currency`) VALUES ('Power-Paket', 10, 2000.00000, '€')");
//
// Register module
//
- addModuleSql('sponsor', 'Y', 'Y', 'N', 'N');
- addModuleSql('sponsor_confirm', 'Y', 'Y', 'N', 'N');
- addModuleSql('sponsor_ref', 'Y', 'Y', 'N', 'N');
-
- // Update name, if not yet set
- addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Sponsorbereich' WHERE `module`='sponsor' AND `title`='' LIMIT 1");
- addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Sponsor-Bestätigung' WHERE `module`='sponsor_confirm' AND `title`='' LIMIT 1");
- addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Sponsor-Referrallink' WHERE `module`='sponsor_ref' AND `title`='' LIMIT 1");
+ addModuleSql('sponsor', '{OPEN_TEMPLATE}MODULE_SPONSOR_TITLE{CLOSE_TEMPLATE}', 'Y', 'Y', 'N', 'N');
+ addModuleSql('sponsor_confirm', '{OPEN_TEMPLATE}MODULE_SPONSOR_CONFIRM_TITLE{CLOSE_TEMPLATE}', 'Y', 'Y', 'N', 'N');
+ addModuleSql('sponsor_ref', '{OPEN_TEMPLATE}MODULE_SPONSOR_REF_TITLE{CLOSE_TEMPLATE}', 'Y', 'Y', 'N', 'N');
break;
case 'remove': // Do stuff when removing extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.8.7');
+setThisExtensionVersion('0.9.0');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7'));
+setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0'));
// Keep this extension always active!
setExtensionAlwaysActive('Y');
`action`='rals' OR
`action`='account'");
+ // Remove points data
+ unregisterExtensionPointsData('pool_payback');
+ unregisterExtensionPointsData('mail_deleted');
+ unregisterExtensionPointsData('admin_add_single');
+ unregisterExtensionPointsData('admin_add_single_ref');
+ unregisterExtensionPointsData('admin_add_all');
+ unregisterExtensionPointsData('admin_add_all_ref');
+
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
break;
case '0.0.6': // SQL queries for v0.0.6
- addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'N'");
+ addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'Y'");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Es können nun SQL-Updates von einander abhängig gemacht werden und die CSS-Datei kann per Admin-Bereich (wegen Debuggings) ein- bzw. ausgeschaltet werden.");
$auto_type = 'png';
// Is the JPEG file found and required PHP function there?
- if ((isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
- // Switch to JPEG format
+ if ((!isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.png')) || (!function_exists('imagecreatefrompng'))) {
+ // Switch to JPEG format because PNG is not available
$auto_type = 'jpg';
} // END - if
addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
- addAdminMenuSql('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so können Sie Ihren {?mt_word?} so konfigurieren, dass es Updates durch diesen hindurch sucht!', 15);
+ addAdminMenuSql('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so können Sie Ihren {?mt_word?} so konfigurieren, dass es z.B. Updates, Abfragen von Netzwerkupdates über diesen tätigt.', 15);
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Proxy-Einstellungen hinzugefügt.");
case '0.6.9': // SQL queries for 0.6.9
// Register filter
- registerFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter zum Zurücksetzens des fehlgeschlagenen Mitgliederlogins hinzugefügt (internes TODO).");
addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
// Register filter
- registerFilter('reset', 'CLEANUP_DNS_CACHE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("IP-Resolver-Klasse hinzugefügt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
`payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
`notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
PRIMARY KEY (`id`),
-INDEX (`subject`)",
+UNIQUE KEY (`subject`)",
'Points account data');
// Admin menu
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `ext_name` `subject` VARCHAR(255) NOT NULL DEFAULT ''");
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N'");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('pool_payback','points','LOCKED','DIRECT')");
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('mail_deleted','points','LOCKED','DIRECT')");
+
+ // Register points data
+ registerExtensionPointsData('pool_payback', 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('mail_deleted', 'points', 'LOCKED', 'DIRECT');
+
+ // Remove deprecated configuration entry
addConfigDropSql('reg_points_mode');
// Update notes (these will be set as task text!)
'History of used data');
// Register filter
- registerFilter('add_history_entry', 'ADD_HISTORY_ENTRY', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugefügt.");
case '0.8.6': // SQL queries for v0.8.6
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `payment_method` `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL'");
- addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method`='REFERAL'");
+ addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method` != 'DIRECT'");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Referral, REFERRAL soll es überall heissen (ist ein Typo nur mit einem R zu schreiben).");
addConfigAddSql('admin_menu_javascript', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Es kann ausgewählt werden, ob das herkömliche JavaScrit-lose Menü oder mit JavaScript aktiv sein soll. Das herkömliche ist erstmal Standarteinstellung, bis das JavaScript-Menü funktioniert.");
+ setExtensionUpdateNotes("Es kann ausgewählt werden, ob das herkömliche JavaScrit-lose Menü oder mit JavaScript aktiv sein soll. Das herkömliche ist erstmal Standardeinstellung, bis das JavaScript-Menü funktioniert.");
+ break;
+
+ case '0.8.8': // SQL queries for v0.8.8
+ addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `subject`, ADD UNIQUE `subject` (`subject`)");
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
+ break;
+
+ case '0.8.9': // SQL queries for v0.8.9
+ addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD `account_provider` ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
+ addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes(""Provider" hinzugefügt, welcher nur <strong>Erweiterung</strong> oder <strong>Selbstdefiniert sein kann. Es können dann auch nur selbstdefinierte gelöscht oder editiert werden, Erweiterungen können auch nur "einige" Einträge löschen.");
+ break;
+
+ case '0.9.0': // SQL queries for v0.9.0
+ // Register filter
+ registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', false, true, isExtensionDryRun());
+
+ // Register points data
+ registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
+ registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Einträge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugefügt.");
break;
} // END - switch
break;
// Init key
setConfigEntry('secret_key', '');
- // Read key from secret file
- if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == ''))) {
- // Maybe need setup of secret key!
- loadIncludeOnce('inc/gen_sql_patches.php');
- } // END - if
-
- // Test again
- if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
- // File hash fas generated so we can also file the secret file... hopefully.
- $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
- if (isFileReadable($hashFile)) {
- // Read file
- setConfigEntry('secret_key', readFromFile($hashFile));
- } else {
- // Remove it from database
- updateConfiguration('file_hash', '');
-
- // Cannot read secret file!
- debug_report_bug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
- }
+ // Is the version recent enought for secret keys?
+ if (isExtensionInstalledAndNewer('sql_patches', '0.3.6')) {
+ // Read key from secret file
+ if ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == '')) {
+ // Maybe need setup of secret key!
+ loadIncludeOnce('inc/gen_sql_patches.php');
+ } // END - if
+
+ // Test again
+ if ((getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
+ // File hash fas generated so we can also file the secret file... hopefully.
+ $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
+
+ // Is the secret key file readable?
+ if (isFileReadable($hashFile)) {
+ // Read file
+ setConfigEntry('secret_key', readFromFile($hashFile));
+ } else {
+ // Remove it from database
+ updateConfiguration('file_hash', '');
+
+ // Cannot read secret file!
+ reportBug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
+ }
+ } // END - if
} // END - if
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addConfigAddSql('surfbar_dynamic_percent', 'FLOAT(10,5) UNSIGNED NOT NULL DEFAULT 10.00000');
addConfigAddSql('surfbar_max_order', 'INT(7) UNSIGNED NOT NULL DEFAULT 10');
addConfigAddSql('surfbar_restart_time', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (60 * 6));
- addConfigAddSql('surfbar_autostart', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+ addConfigAddSql('surfbar_auto_start', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
addConfigAddSql('surfbar_migrate_urls', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
addConfigAddSql('surfbar_total_counter', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
addConfigAddSql('surfbar_daily_counter', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
addAdminMenuSql('surfbar', 'unlock_surfbar_urls', 'Wartende URLs freigeben', 'Geben Sie hier für den Besuchertausch gebuchte URLs frei.', 3);
addAdminMenuSql('surfbar', 'config_surfbar', 'Einstellungen', 'Einstellungen am Besuchertausch ändern, wie Festvergütung, prozentuale Ref-Vergütung und vieles mehr.', 4);
addAdminMenuSql('surfbar', 'surfbar_stats', 'Statistiken', 'Detailierte Statistiken zu einer ausgewählten URL anzeigen.', 5);
- addAdminMenuSql('surfbar', 'list_surfbar_actions', 'Mitgliederaktionen', 'Listet alle Mitgliederaktionen auf.', 6);
+ addAdminMenuSql('surfbar', 'list_surfbar_actions', 'Mitglieder-Aktionen', 'Listet alle Mitglieder-Aktionen auf.', 6);
// Register module
- addModuleSql('surfbar', 'Y', 'Y', 'N', 'N');
+ addModuleSql('surfbar', '{OPEN_TEMPLATE}MODULE_SURFBAR_TITLE{CLOSE_TEMPLATE}', 'Y', 'Y', 'N', 'N');
// Insert data for points accounts
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('monthly_bonus','points','LOCKED','DIRECT')");
+ registerExtensionPointsData('monthly_surfbar', 'points', 'LOCKED', 'DIRECT');
// This extension depends on ext-sql_patches
addExtensionDependency('sql_patches');
// Register filters
- registerFilter('post_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_STATUS', false, true, isExtensionDryRun());
- registerFilter('pre_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_VALIDATE_DATA', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'post_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_STATUS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'pre_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_VALIDATE_DATA', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
// Unregister module
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='surfbar' LIMIT 1");
+ // Unregister points data
+ unregisterExtensionPointsData('monthly_surfbar');
+
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'post_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_STATUS', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'pre_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_VALIDATE_DATA', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'post_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_STATUS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'pre_change_surfbar_url_status', 'SURFBAR_CHANGE_URL_VALIDATE_DATA', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.1.2');
+setThisExtensionVersion('0.1.3');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2'));
+setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3'));
switch (getExtensionMode()) {
case 'register': // Do stuff when installation is running
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='themes' OR `what`='themes'");
// Unregister filters
- unregisterFilter(__FUNCTION__, __LINE__, 'init', 'HANDLE_THEME_CHANGE', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'SET_USERS_THEME', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'init', 'HANDLE_THEME_CHANGE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'SET_USERS_THEME', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'THEME_USER_REGISTRATION_ADD_SQL_COLUMNS', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
case '0.1.0': // SQL queries for v0.1.0
// Register filter
- registerFilter('init', 'HANDLE_THEME_CHANGE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'init', 'HANDLE_THEME_CHANGE', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Ändern des Designs nun im Filter (internes TODO).");
case '0.1.1': // SQL queries for v0.1.1
// Register filter
- registerFilter('member_login_check', 'SET_USERS_THEME', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'member_login_check', 'SET_USERS_THEME', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Setzen des Mitgliedes' eigener Design-Auswahl per Filter (internes TODO).");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Nicht mehr benötigtes Menü zum Prüfen von Theme-Versionen entfernt.");
break;
+
+ case '0.1.3': // SQL queries for v0.1.3
+ // Register filter
+ registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'THEME_USER_REGISTRATION_ADD_SQL_COLUMNS', false, true, isExtensionDryRun());
+
+ // This depends on ext-register
+ addExtensionDependency('register');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter für Mitgliederanmeldung hinzugefügt.");
+ break;
} // END - switch
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addAdminMenuSql('setup', 'config_timezone', 'Zeitzone', 'Einstellungen an der Zeitzone können hier konfiguriert werden.', 10);
// Register filter
- registerFilter('init', 'INIT_TIMEZONE', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'init', 'INIT_TIMEZONE', false, true, isExtensionDryRun());
break;
case 'remove': // Do stuff when removing extension
addExtensionSQL("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_timezone' LIMIT 1");
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'init', 'INIT_TIMEZONE', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'init', 'INIT_TIMEZONE', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='transfer'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='transfer' LIMIT 1");
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` DROP `opt_in`");
+
+ // Unregister points data
+ unregisterExtensionPointsData('transfer');
break;
case 'activate': // Do stuff when admin activates this extension
case '0.2.7': // SQL queries for v0.2.7
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Die {?POINTS?} können nun wieder wie gewohnt transferiert werden. Der Grund für <span class=\"bad\">{--TRANSFER_INVALID_PASSWORD--}</span> war, dass der Cookie-Hash ein anderer ist, als der in der Datenbank... :-/");
+ setExtensionUpdateNotes("Die {?POINTS?} können nun wieder wie gewohnt transferiert werden. Der Grund für <span class=\"bad\">{--MEMBER_TRANSFER_INVALID_PASSWORD--}</span> war, dass der Cookie-Hash ein anderer ist, als der in der Datenbank... :-/");
break;
case '0.2.8': // SQL queries for v0.2.8
break;
case '0.3.0': // SQL queries for v0.3.0
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('transfer','points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('transfer', 'points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_uberwach' LIMIT 1");
// Unregister filter
- unregisterFilter(__FUNCTION__, __LINE__, 'page_footer', 'DISPLAY_UBERWACH_SNIPPET', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'page_footer', 'DISPLAY_UBERWACH_SNIPPET', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
case 'update': // Update an extension
switch (getCurrentExtensionVersion()) {
case '0.0.1': // SQL queries for v0.0.1
- registerFilter('page_footer', 'DISPLAY_UBERWACH_SNIPPET', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'page_footer', 'DISPLAY_UBERWACH_SNIPPET', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter zum Anzeigen des Snippets hinzugefügt");
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Version number
-setThisExtensionVersion('0.4.8');
+setThisExtensionVersion('0.5.2');
// Version history array (add more with , '0.0.1' and so on)
-setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8'));
+setExtensionVersionHistory(array('0.0.0', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2'));
// Keep this extension always active!
setExtensionAlwaysActive('Y');
`user_hash` VARCHAR(255) NULL DEFAULT NULL,
`REMOTE_ADDR` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
`last_online` VARCHAR(10) NOT NULL DEFAULT 0,
-`last_module` VARCHAR(255) NOT NULL DEFAULT '',
+`last_module` VARCHAR(255) NULL DEFAULT NULL,
`ref_clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
`total_logins` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
`gender` ENUM('M','F') NOT NULL DEFAULT 'M',
addAdminMenuSql('user', NULL, 'Mitglieder-Management', 'Mitglieder freischalten, sperren, Accounts editieren, Neuanmeldungen verwalten, {OPEN_CONFIG}POINTS{CLOSE_CONFIG} gutschreiben und abziehen und und und...', 3);
addAdminMenuSql('user', 'del_user', 'Mitglied löschen', 'Löschen Sie hier Mitglied, die gegen die AGBs mehrmals verstossen haben. Bitte seien Sie nett zu Ihren Mitgliedern und löschen Sie nicht gleich.', 1);
addAdminMenuSql('user', 'lock_user', 'Mitglied sperren / entsperren', 'Sperren Sie Mitglied, die zu viele unbestätigte Mails haben oder gegen Ihre AGBs verstossen haben über diesen Menüpunkt.', 3);
- addAdminMenuSql('user', 'list_user', 'Mitglied auflisten', 'Listen Sie alle Mitglied oder eingeschränkt nach Suchkritieren Ihre Userdatenbank auf. Sie könen per Klick auf die Usernummer sich Details zum Mitglied ansehen.', 4);
+ addAdminMenuSql('user', 'list_user', 'Mitglieder auflisten', 'Listen Sie alle Mitglied oder eingeschränkt nach Suchkritieren Ihre Userdatenbank auf. Sie könen per Klick auf die Usernummer sich Details zum Mitglied ansehen.', 4);
addAdminMenuSql('user', 'add_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG} gutschreiben', 'Buchen Sie einem Mitglied direkt {OPEN_CONFIG}POINTS{CLOSE_CONFIG} auf. Sie können dazu auch einen Kommentar mitsenden.', 5);
addAdminMenuSql('user', 'edit_user', 'Account editieren', 'Daten eines Mitglieder-Accountes ändern.', 6);
addAdminMenuSql('user', 'list_refs', 'Referrals anzeigen', 'Mit diesem Menüpunkt können Sie die generierten Referrals eines Mitgliedes auflisten.', 7);
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN('config_user','user_contct','list_user_del') OR `action`='user'");
// Register new filters for gathering points
- unregisterFilter(__FUNCTION__, __LINE__, 'get_total_points', 'USER_POINTS', true, isExtensionDryRun());
- unregisterFilter(__FUNCTION__, __LINE__, 'get_own_points', 'USER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_total_points', 'USER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_own_points', 'USER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_USER_POINTS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_USER_POINTS_COLUMN_NAMES', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'TESTER_USER_EXCLUSION_SQL', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'user_inclusion_sql', 'TESTER_USER_INCLUSION_SQL', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'TESTER_USER_REGISTRATION_ADD_SQL_COLUMNS', true, isExtensionDryRun());
+ unregisterFilter(__FILE__, __LINE__, 'convert_user_data_columns', 'ADD_USER_DATA_CONVERT_SQL_COLUMNS', true, isExtensionDryRun());
break;
case 'activate': // Do stuff when admin activates this extension
case '0.4.0': // SQL queries for v0.4.0
// Register new filters for gathering points
- registerFilter('get_total_points', 'USER_POINTS', false, true, isExtensionDryRun());
- registerFilter('get_own_points', 'USER_POINTS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'get_total_points', 'USER_POINTS', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'get_own_points', 'USER_POINTS', false, true, isExtensionDryRun());
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("Filter registriert, die das eigene {?POINTS?}-Guthaben des Mitgliedes zurückliefern.");
// Update notes (these will be set as task text!)
setExtensionUpdateNotes("0000-00-00 00:00:00 ist kein Standardwert mehr, NULL ist dies.");
break;
+
+ case '0.4.8': // SQL queries for v0.4.8
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Dieses Update ist nicht mehr gültig.");
+ break;
+
+ case '0.4.9': // SQL queries for v0.4.9
+ addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `last_module` `last_what` VARCHAR(255) NULL DEFAULT NULL');
+
+ // Register filter locked points
+ registerFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_USER_POINTS', false, true, isExtensionDryRun());
+
+ // Register filter for all column names
+ registerFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_USER_POINTS_COLUMN_NAMES', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Die Spalte <strong>last_module</strong> ist nach <strong>last_what</strong> umbenannt und hat nun NULL als Ausgangswert und Filter für gesperrtes Guthaben hinzugefügt.");
+ break;
+
+ case '0.5.0': // SQL queries for v0.5.0
+ // Prefix for all test accounts
+ addConfigAddSql('tester_user_maximum', 'INT(5) UNSIGNED ZEROFILL NOT NULL DEFAULT 00999');
+ addConfigAddSql('tester_user_gender', "ENUM('M','F') NOT NULL DEFAULT 'M'");
+ addConfigAddSql('tester_user_surname_prefix', "VARCHAR(255) NOT NULL DEFAULT 'tester_'");
+ addConfigAddSql('tester_user_family', "VARCHAR(255) NOT NULL DEFAULT 'Testbenutzer'");
+ addConfigAddSql('tester_user_street_nr', "VARCHAR(255) NOT NULL DEFAULT 'Teststraße 123'");
+ addConfigAddSql('tester_user_zip', 'INT(6) UNSIGNED NOT NULL DEFAULT 12345');
+ addConfigAddSql('tester_user_city', "VARCHAR(255) NOT NULL DEFAULT 'Teststadt'");
+ addConfigAddSql('tester_user_email', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_CONFIG}WEBMASTER{CLOSE_CONFIG}'");
+ addConfigAddSql('tester_user_default_refid', 'BIGINT(20) NULL DEFAULT NULL');
+ addConfigAddSql('tester_user_password', "VARCHAR(255) NOT NULL DEFAULT ''");
+ addConfigAddSql('tester_user_check_cat', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+ // Admin menu
+ addAdminMenuSql('user', 'add_tester_user', 'Testbenutzer anlegen', 'Es können hier bis zu 100 Testbenutzer angelegt werden. Diese haben als Vornamen immer den Präfix <span class="data">{?tester_user_surname_prefix?}</span> und werden bei Null anfangend bis 99 hochgezält.', 1);
+ addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mitglieder auflisten' WHERE `what`='list_user' LIMIT 1");
+
+ // Change 'zip' to INT(6)
+ addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `zip` `zip` INT(6) NOT NULL DEFAULT 0');
+
+ // Register filter for WHERE/AND exclusion/inclusion statements
+ registerFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'TESTER_USER_EXCLUSION_SQL', false, true, isExtensionDryRun());
+ registerFilter(__FILE__, __LINE__, 'user_inclusion_sql', 'TESTER_USER_INCLUSION_SQL', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Es können nun Test-Benutzer angelegt werden. Noch müssen diese überall ausgeschlossen werden, damit die Mediadaten nicht unnötig verfälscht werden.");
+ break;
+
+ case '0.5.1': // SQL queries for v0.5.1
+ // Register a filter
+ registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'TESTER_USER_REGISTRATION_ADD_SQL_COLUMNS', false, true, isExtensionDryRun());
+
+ // This depends on ext-register
+ addExtensionDependency('register');
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten für die Mitgliederanmeldung hinzugefügt.");
+ break;
+
+ case '0.5.2': // SQL queries for v0.5.2
+ // Register a filter
+ registerFilter(__FILE__, __LINE__, 'convert_user_data_columns', 'ADD_USER_DATA_CONVERT_SQL_COLUMNS', false, true, isExtensionDryRun());
+
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten für die Mitgliederanmeldung hinzugefügt.");
+ break;
} // END - switch
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='wernis'");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='wernis' LIMIT 1");
addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='wernis_portal' LIMIT 1");
+
+ // Unregister points data
+ unregisterExtensionPointsData('wernis_withdraw');
break;
case 'activate': // Do stuff when admin activates this extension
addConfigAddSql('wernis_pass_md5', "VARCHAR(32) NOT NULL DEFAULT ''");
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Auszahlunsfunktion an die neue API 0.2-BETA angepasst. Demnach muss Ihr Wernis-Passwort beim Auszahlen benutzt werden und in Ihrem {?mt_word?} als MD5-Hash gespeichert werden.");
+ setExtensionUpdateNotes("Auszahlungsfunktion an die neue API 0.2-BETA angepasst. Demnach muss Ihr Wernis-Passwort beim Auszahlen benutzt werden und in Ihrem {?mt_word?} als MD5-Hash gespeichert werden.");
break;
case '0.0.3': // SQL queries for v0.0.3
break;
case '0.0.4': // SQL queries for v0.0.4
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('wernis_withdraw','order_points','LOCKED','DIRECT')");
+ // Register points data
+ registerExtensionPointsData('wernis_withdraw', 'order_points', 'LOCKED', 'DIRECT');
// This depends on ext-sql_patches
addExtensionDependency('sql_patches');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Is the filter already initialized?
if (isset($GLOBALS['filter_init'])) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Filter system already initialized.');
+ reportBug(__FUNCTION__, __LINE__, 'Filter system already initialized.');
} // END - if
// Load all saved filers if sql_patches is updated
}
// Init filters
- registerFilter('init', 'LOAD_CONFIGURATION');
- registerFilter('init', 'INIT_RANDOMIZER');
- registerFilter('init', 'LOAD_RUNTIME_INCLUDES');
- registerFilter('init', 'INIT_EXTENSIONS');
- registerFilter('init', 'SET_CURRENT_DATE');
- registerFilter('init', 'INIT_RANDOM_NUMBER');
- registerFilter('init', 'CHECK_REPOSITORY_REVISION');
- registerFilter('init', 'RUN_HOURLY_RESET');
- registerFilter('init', 'RUN_DAILY_RESET');
- registerFilter('init', 'TRIGGER_SENDING_POOL');
- registerFilter('init', 'DETERMINE_USERNAME');
- registerFilter('init', 'DETERMINE_WHAT_ACTION');
- registerFilter('init', 'COUNT_MODULE');
- registerFilter('init', 'UPDATE_LOGIN_DATA');
- registerFilter('init', 'ACTIVATE_EXCHANGE');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'LOAD_CONFIGURATION');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'INIT_RANDOMIZER');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'LOAD_RUNTIME_INCLUDES');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'INIT_EXTENSIONS');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'SET_CURRENT_DATE');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'INIT_RANDOM_NUMBER');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'CHECK_REPOSITORY_REVISION');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'RUN_HOURLY_RESET');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'RUN_DAILY_RESET');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'TRIGGER_SENDING_POOL');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'DETERMINE_USERNAME');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'DETERMINE_WHAT_ACTION');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'COUNT_MODULE');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'UPDATE_LOGIN_DATA');
+ registerFilter(__FUNCTION__, __LINE__, 'init', 'ACTIVATE_EXCHANGE');
// Page headers - pre-filter (normally, you want to register here)
- registerFilter('pre_page_header', 'LOAD_PAGE_HEADER');
+ registerFilter(__FUNCTION__, __LINE__, 'pre_page_header', 'LOAD_PAGE_HEADER');
// Page headers - post-filter (normally, you don't want to register here)
//-------------------- LAST FILTER FOR THIS CHAIN! ------------------------
- registerFilter('post_page_header', 'FINISH_PAGE_HEADER');
+ registerFilter(__FUNCTION__, __LINE__, 'post_page_header', 'FINISH_PAGE_HEADER');
//-------------------- LAST FILTER FOR THIS CHAIN! ------------------------
// 'You are here' navigation - post filter
- registerFilter('post_youhere_line', 'CALL_HANDLER_LOGIN_FAILTURES');
- registerFilter('post_youhere_line', 'HANDLE_HOME_IN_INDEX_SETTING');
+ registerFilter(__FUNCTION__, __LINE__, 'post_youhere_line', 'CALL_HANDLER_LOGIN_FAILTURES');
+ registerFilter(__FUNCTION__, __LINE__, 'post_youhere_line', 'HANDLE_HOME_IN_INDEX_SETTING');
// Filters for pre-extension-registration
- registerFilter('pre_extension_installed', 'RUN_SQLS');
+ registerFilter(__FUNCTION__, __LINE__, 'pre_extension_installed', 'RUN_SQLS');
// Filters for post-extension-registration
- registerFilter('post_extension_installed', 'AUTO_ACTIVATE_EXTENSION');
- registerFilter('post_extension_installed', 'SOLVE_TASK');
- registerFilter('post_extension_installed', 'LOAD_INCLUDES');
- registerFilter('post_extension_installed', 'REMOVE_UPDATES');
- registerFilter('post_extension_installed', 'EXTENSION_MARK_INSTALLED');
+ registerFilter(__FUNCTION__, __LINE__, 'post_extension_installed', 'AUTO_ACTIVATE_EXTENSION');
+ registerFilter(__FUNCTION__, __LINE__, 'post_extension_installed', 'SOLVE_TASK');
+ registerFilter(__FUNCTION__, __LINE__, 'post_extension_installed', 'LOAD_INCLUDES');
+ registerFilter(__FUNCTION__, __LINE__, 'post_extension_installed', 'REMOVE_UPDATES');
+ registerFilter(__FUNCTION__, __LINE__, 'post_extension_installed', 'EXTENSION_MARK_INSTALLED');
// Solving tasks
- registerFilter('solve_task', 'SOLVE_TASK');
+ registerFilter(__FUNCTION__, __LINE__, 'solve_task', 'SOLVE_TASK');
// Loading includes in general
- registerFilter('load_includes', 'LOAD_INCLUDES');
+ registerFilter(__FUNCTION__, __LINE__, 'load_includes', 'LOAD_INCLUDES');
// Run SQLs
- registerFilter('run_sqls', 'RUN_SQLS');
+ registerFilter(__FUNCTION__, __LINE__, 'run_sqls', 'RUN_SQLS');
// Admin ACL check
- registerFilter('check_admin_acl', 'CHECK_ADMIN_ACL');
+ registerFilter(__FUNCTION__, __LINE__, 'check_admin_acl', 'CHECK_ADMIN_ACL');
// Register shutdown filters
- registerFilter('shutdown', 'FLUSH_FILTERS');
- registerFilter('shutdown', 'FLUSH_STATS');
- registerFilter('shutdown', 'FLUSH_TEMPLATE_CACHE');
- registerFilter('shutdown', 'FLUSH_OUTPUT');
+ registerFilter(__FUNCTION__, __LINE__, 'shutdown', 'FLUSH_FILTERS');
+ registerFilter(__FUNCTION__, __LINE__, 'shutdown', 'FLUSH_STATS');
+ registerFilter(__FUNCTION__, __LINE__, 'shutdown', 'FLUSH_TEMPLATE_CACHE');
+ registerFilter(__FUNCTION__, __LINE__, 'shutdown', 'FLUSH_OUTPUT');
// Compiling code
- registerFilter('compile_code', 'COMPILE_CONFIG');
- registerFilter('compile_code', 'COMPILE_EXPRESSION_CODE');
+ registerFilter(__FUNCTION__, __LINE__, 'compile_code', 'COMPILE_CONFIG');
+ registerFilter(__FUNCTION__, __LINE__, 'compile_code', 'COMPILE_EXPRESSION_CODE');
// Generic extension update filters
- registerFilter('extension_update', 'UPDATE_EXTENSION_DATA');
+ registerFilter(__FUNCTION__, __LINE__, 'extension_update', 'UPDATE_EXTENSION_DATA');
// Do hourly reset stuff, keep this entry first in this chain:
- registerFilter('hourly', 'RUN_HOURLY_INCLUDES');
+ registerFilter(__FUNCTION__, __LINE__, 'hourly', 'RUN_HOURLY_INCLUDES');
// Do reset stuff, keep this entry first in this chain:
- registerFilter('reset', 'RUN_RESET_INCLUDES');
+ registerFilter(__FUNCTION__, __LINE__, 'reset', 'RUN_RESET_INCLUDES');
// Remove extension
- registerFilter('extension_remove', 'REMOVE_EXTENSION');
+ registerFilter(__FUNCTION__, __LINE__, 'extension_remove', 'REMOVE_EXTENSION');
// Exclude some users
- registerFilter('exclude_users', 'HTML_INCLUDE_USERS');
+ registerFilter(__FUNCTION__, __LINE__, 'exclude_users', 'HTML_INCLUDE_USERS');
// Handling of fatal errors
- registerFilter('handle_fatal_errors', 'HANDLE_FATAL_ERRORS');
+ registerFilter(__FUNCTION__, __LINE__, 'handle_fatal_errors', 'HANDLE_FATAL_ERRORS');
// Page footer filters
- registerFilter('page_footer', 'HANDLE_FATAL_ERRORS');
- registerFilter('page_footer', 'DISPLAY_COPYRIGHT');
- registerFilter('page_footer', 'DISPLAY_PARSING_TIME');
+ registerFilter(__FUNCTION__, __LINE__, 'page_footer', 'HANDLE_FATAL_ERRORS');
+ registerFilter(__FUNCTION__, __LINE__, 'page_footer', 'DISPLAY_COPYRIGHT');
+ registerFilter(__FUNCTION__, __LINE__, 'page_footer', 'DISPLAY_PARSING_TIME');
// Member login check. Always keep FETCH_USER_DATA as first entry!
- registerFilter('member_login_check', 'FETCH_USER_DATA');
+ registerFilter(__FUNCTION__, __LINE__, 'member_login_check', 'FETCH_USER_DATA');
// Admin login
- registerFilter('do_admin_login_done', 'DO_LOGIN_ADMIN');
+ registerFilter(__FUNCTION__, __LINE__, 'do_admin_login_done', 'DO_LOGIN_ADMIN');
// Admin mail links
- registerFilter('generate_admin_mail_links', 'GENERATE_POOL_MAIL_LINKS');
+ registerFilter(__FUNCTION__, __LINE__, 'generate_admin_mail_links', 'GENERATE_POOL_MAIL_LINKS');
}
// "Registers" a new filter function
-function registerFilter ($filterName, $filterFunction, $silentAbort = true, $force = false, $dry_run = false) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTRY: filterName=' . $filterName . ',filterFunction=' . $filterFunction . ' - ENTERED!');
-
+function registerFilter ($F, $L, $filterName, $filterFunction, $silentAbort = true, $force = false, $dry_run = false) {
// Extend the filter function name
- $filterFunction = sprintf("FILTER_%s", strtoupper($filterFunction));
+ $filterFunction = 'FILTER_' . strtoupper($filterFunction);
+
+ // Debug message with FILTER_ prefix
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTRY: filterName=' . $filterName . ',filterFunction=' . $filterFunction . ',force=' . intval($force) . ',F=' . basename($F) . ',L=' . $L . ' - ENTERED!');
// Is that filter already there?
if ((isset($GLOBALS['cache_array']['filter']['chains'][$filterName][$filterFunction])) && ($force === false)) {
// In installation phase we always want to abort
if (($silentAbort === false) || (isInstallationPhase())) {
// Add fatal message
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Filter chain %s has already filter function %s registered!", $filterName, $filterFunction));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Filter chain %s has already filter function %s registered! F=%s,L=%s,force=%d", $filterName, $filterFunction, basename($F), $L, intval($force)));
} // END - if
// Abort here
// Is the function there?
if (!function_exists($filterFunction)) {
// Then abort here
- addFatalMessage(__FUNCTION__, __LINE__, sprintf("Filter function %s could not be added to filter chain %s.", $filterFunction, $filterName));
+ addFatalMessage(__FUNCTION__, __LINE__, sprintf("Filter function %s could not be added to filter chain %s. F=%s,L=%s,force=%d", $filterFunction, $filterName, basename($F), $L, intval($force)));
return false;
} // END - if
// Simply add it to the array
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'REGISTER: filterName=' . $filterName . ',filterFunction=' . $filterFunction);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'REGISTER: filterName=' . $filterName . ',filterFunction=' . $filterFunction . ',force=' . intval($force) . ',F=' . basename($F) . ',L=' . $L);
$GLOBALS['cache_array']['filter']['chains'][$filterName][$filterFunction] = 'A';
$GLOBALS['cache_array']['filter']['counter'][$filterName][$filterFunction] = '0';
} // END - if
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTRY: filterName=' . $filterName . ',filterFunction=' . $filterFunction . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ENTRY: filterName=' . $filterName . ',filterFunction=' . $filterFunction . ',force=' . intval($force) . ',F=' . basename($F) . ',L=' . $L . ' - EXIT!');
}
// "Unregisters" a filter from the given chain
// Extend the filter function name only if not loaded from database
if (!isset($GLOBALS['cache_array']['filter']['loaded'][$filterName][$filterFunction])) {
- $filterFunction = sprintf("FILTER_%s", strtoupper($filterFunction));
+ $filterFunction = 'FILTER_' . strtoupper($filterFunction);
} // END - if
// Is that filter there?
// Log not found filters in debug-mode
if (isDebugModeEnabled()) {
// Log it away...
- logDebugMessage(__FUNCTION__, __LINE__, 'Filter chain ' . $filterName . ' not found.');
+ logDebugMessage(__FUNCTION__, __LINE__, 'Filter chain ' . $filterName . ' does not exist.');
} // END - if
// Abort here and return content
// Is this filter there?
if (!function_exists($filterFunction)) {
// Should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'filterName=' . $filterName . ',filterFunction=' . $filterFunction . ' - AUTO-UNREGISTERED!');
+ reportBug(__FUNCTION__, __LINE__, 'filterName=' . $filterName . ',filterFunction=' . $filterFunction . ' - AUTO-UNREGISTERED!');
} // END - if
// Call the filter chain
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/11/2012 *
+ * =================== Last change: 06/11/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : beg_filter.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Filters for ext- *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Filter fuer ext- *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+// Filter for adding SQL columns if notification is disabled
+function FILTER_BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Add columns for begging rallye, if active
+ if (!isBegNewMemberNotifyEnabled()) {
+ $GLOBALS['register_sql_columns'] .= ', `beg_rallye_enable_notify`, `beg_rallye_disable_notify`';
+ $GLOBALS['register_sql_data'] .= ', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()';
+ } // END - if
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
+}
+
+// Filter for removing old IPs and sending notifications, if enabled for "instant delivery"
+function FILTER_BEG_PURGE_IPS_NOTIFY_USER ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Remove old entries
+ $OLD = getBegTimeout();
+ if (getBegUseridTimeout() > $OLD) {
+ $OLD = getBegUseridTimeout();
+ } // END - if
+
+ // Run the SQL query
+ SQL_QUERY_ESC('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (UNIX_TIMESTAMP() - `timeout`) >= %s',
+ array($OLD + 60*60), __FUNCTION__, __LINE__);
+
+ // Check for beg rallye is active and send mails out
+ if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
+ // Include file for sending out mails
+ addIncludeToPool('notify', 'inc/mails/beg_mails.php');
+ } // END - if
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
if (!isMember()) {
// Do only run for logged in members
- debug_report_bug(__FUNCTION__, __LINE__, 'Please only run this filter for logged in users.');
+ reportBug(__FUNCTION__, __LINE__, 'Please only run this filter for logged in users.');
} // END - if
// Bonus is not given by default ;-)
// Filter for generating admin mail links for bonus mails
function FILTER_GENERATE_BONUS_MAIL_LINKS ($filterData) {
- // Is the type 'bid'?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Is the type 'bid'?
if ($filterData['type'] == 'bid') {
// Load template
$filterData['__output'] .= loadTemplate('admin_links_bonus_mail', true, $filterData);
// Filter for adding bonus columns with a plus (+) sign
function FILTER_ADD_BONUS_POINTS_USER_COLUMNS ($add = '') {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
// Skip out-dated extension, because this causes an error
if (isExtensionInstalledAndOlder('bonus', '0.9.7')) {
// Skip this silently
if (getConfig('include_bonus_ref') == 'Y') $add .= ' + `bonus_ref`';
// Return $add
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
return $add;
}
+// Filter for adding SQL columns on user registration for bonus/"active" rallye notification
+function FILTER_BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Next: active rallye
+ if (!isBonusNewMemberNotifyEnabled()) {
+ $GLOBALS['register_sql_columns'] .= ', `bonus_rallye_enable_notify`, `bonus_rallye_disable_notify`';
+ $GLOBALS['register_sql_data'] .= ', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()';
+ } // END - if
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
+}
+
+// Filter for sending out bonus rallye notifications
+function FILTER_SEND_BONUS_NOTIFICATIONS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+ // Check for bonus rallye is active and send mails out
+ if ((isBonusRallyeActive()) && (isBonusNewMemberNotifyEnabled())) {
+ // Include file for sending out mails
+ addIncludeToPool('notify', 'inc/mails/bonus_mails.php');
+ } // END - if
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Remove cache
foreach (array('config', 'extension', 'filter', 'modules', 'earning', 'points_data') as $cache) {
+ // Is this cache there?
if ($GLOBALS['cache_instance']->loadCacheFile($cache)) {
+ // Yes, then remove it
$GLOBALS['cache_instance']->removeCacheFile();
} // END - if
} // END - foreach
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/11/2012 *
+ * =================== Last change: 06/11/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : country_filter.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Filters for ext- *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Filter fuer ext- *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+// Filter to add SQLs columns for user registration
+function FILTER_COUNTRY_USER_REGISTRATION_ADD_SQL_COLUMNS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Save with new selectable country code
+ $GLOBALS['register_country_row'] = '`country_code`';
+ $GLOBALS['register_country_data'] = bigintval(postRequestElement('country_code'));
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
+}
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Check if the current userid is same as in $filterData
if (getMemberId() != $filterData['userid']) {
// Not the same
- debug_report_bug(__FUNCTION__, __LINE__, 'Validation of userid failed. ' . getMemberId() . '!=' . $filterData['userid']);
+ reportBug(__FUNCTION__, __LINE__, 'Validation of userid failed. ' . getMemberId() . '!=' . $filterData['userid']);
} // END - if
// Now check if the user has subscription and amount left
d.`earning_id`,
d.`earning_provider`,
u.`earning_current_amount`,
- u.`earning_daily_amount`
+ u.`earning_daily_amount`,
+ u.`earning_active`,
+ u.`earning_added`,
+ u.`earning_canceled`,
+ u.`earning_points`
FROM
`{?_MYSQL_PREFIX?}_user_earning` AS u
INNER JOIN
), __FUNCTION__, __LINE__);
// Do we have entries left?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// Load all names
while ($content = SQL_FETCHARRAY($result)) {
// Merge the $filterData array in
// Construct callback function name
$callbackName = 'get' . capitalizeUnderscoreString($content['earning_provider']) . 'DataByEarningArray';
- // And call it
+ /*
+ * And call it, the called function should NOT write data in
+ * '__output'. This however is done here in this function. The
+ * called function shall ALWAYS put it's data in '__data'.
+ */
$content = call_user_func($callbackName, $content);
} // END - if
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Filter to add default forced-ad types
function FILTER_FORCED_AD_TYPE_DEFAULTS ($data) {
// Forced-Banner
- $data[] = array(
- 'type' => 'BANNER',
- );
-
- // Forced-Textlinks
- $data[] = array(
- 'type' => 'TEXTLINK',
- );
-
- // Forced-Popups
- $data[] = array(
- 'type' => 'POPUP',
+ array_push(
+ $data,
+ array(
+ // Forced-Banner
+ 'type' => 'BANNER',
+ ), array(
+ // Forced-Textlinks
+ 'type' => 'TEXTLINK',
+ ), array(
+ // Forced-PopUp
+ 'type' => 'POPUP',
+ )
);
// Return data
return $filterData;
}
+// Filter for changing URL status
+function FILTER_FORCED_CHANGE_CAMPAIGN_STATUS ($filterData) {
+ /*
+ // Do some dirty fixing here:
+ if (($filterData['data']['forced_campaign_status'] == 'STOPPED') && ($filterData['new_status'] == 'pending')) {
+ // Fix for template change
+ $filterData['new_status'] = 'continued';
+ } // END - if
+ */
+
+ // Send admin notification
+ doForcedNotifyAdmin('campaign_' . strtolower($filterData['data']['forced_campaign_status']) . '_' . $filterData['new_status'], $filterData['data']);
+
+ // Send user notification
+ doForcedNotifyMember('campaign_' . strtolower($filterData['data']['forced_campaign_status']) . '_' . $filterData['new_status'], $filterData['data']);
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
+// Filter for validating status
+function FILTER_FORCED_CHANGE_CAMPAIGN_VALIDATE_DATA ($filterData) {
+ // Is the new status set?
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+ if ((!is_string($filterData['new_status'])) || (empty($filterData['new_status']))) {
+ // Abort here, not fine
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'newStatus[' . gettype($filterData['new_status']) . ']=' . $filterData['new_status'] . ' - EXIT!');
+ $filterData['abort'] = false;
+ } elseif ($filterData['data']['forced_campaign_status'] != $filterData['prev_status']) {
+ // Status is not like prevStatus
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $filterData['data']['forced_campaign_status'] . '!=' . $filterData['prev_status'] . ' - EXIT!');
+ $filterData['abort'] = false;
+ } // END - if
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
function FILTER_UPDATE_ONLINE_LIST ($filterData) {
// Do not update online list when extension is deactivated
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
- if (!isExtensionActive('online', true)) {
+ if (!isExtensionActive('online')) {
// Extension not active
- return;
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension ext-online is not active.');
+ return $filterData;
} // END - if
// Empty session?
if (session_id() == '') {
// This is invalid here!
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid session.');
+ reportBug(__FUNCTION__, __LINE__, 'Invalid session.');
} // END - if
// Initialize variables
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return $filterData;
}
+// Filter for returning given user's locked order points
+function FILTER_LOCKED_ORDER_POINTS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+ // Is ext-user installed and active?
+ if (isExtensionActive('user')) {
+ // Get the points and add them to the existing
+ $filterData['points'] += countSumTotalData($filterData['userid'], 'user_points', 'locked_order_points');
+ } // END - if
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
+// Filter for returning all user's order points column names
+function FILTER_GET_ALL_ORDER_POINTS_COLUMN_NAMES ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+ // Add 'order_points' and 'locked_order_points'
+ $filterData['columns'] .= $filterData['alias'] . 'order_points' . $filterData['separator'] . $filterData['alias'] . 'locked_order_points' . $filterData['separator'];
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
+// Filter for ZIP code inclusion (not exclusion but it must be run in exclusion filter chain)
+function FILTER_ORDER_ZIP_CODE_SQL ($sql) {
+ // Check if category and number of receivers is okay
+ if ((isOrderMultiPageEnabled()) && (isPostRequestElementSet('zip')) && (postRequestElement('zip') != '')) {
+ // Choose recipients by ZIP code
+ if (empty($sql)) {
+ $sql = sprintf(" WHERE d.`zip` LIKE '%s%%'",
+ bigintval(postRequestElement('zip'))
+ );
+ } else {
+ $sql .= sprintf(" AND d.`zip` LIKE '%s%%'",
+ bigintval(postRequestElement('zip'))
+ );
+ }
+ } // END - if
+
+ // Return expanded SQL
+ return $sql;
+}
+
+// Filter for adding columns of points to array
+function FILTER_ORDER_POINTS_COLUMNS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+ // Add column
+ array_push($filterData, 'order_points');
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
function FILTER_DISPLAY_DEBUG_SQL ($filterData) {
// Shall we display SQL queries?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
- if ((isAdmin()) && (isDisplayDebugSqlEnabled()) && (!isGetRequestElementSet('frame')) && ($GLOBALS['header_sent'] == 2)) {
+ if ((isAdmin()) && (isDisplayDebugSqlEnabled()) && (isFullPage()) && ($GLOBALS['__header_sent'] == 2)) {
// Then display it here
displayDebugSqls();
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
function FILTER_DISPLAY_POLITICIAN_STOP_SNIPPET ($filterData) {
// Shall we include the politician_stop snippet?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
- if ((!isGetRequestElementSet('frame')) && (isExtensionActive('politician_stop')) && (getModule() != 'admin') && ($GLOBALS['header_sent'] == 2)) {
+ if ((isFullPage()) && (isExtensionActive('politician_stop')) && (getModule() != 'admin') && ($GLOBALS['__header_sent'] == 2)) {
// Then display it here
loadPoliticianStopSnippet();
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Run a filter for must-fillout fields
-function FILTER_REGISTER_MUST_FILLOUT ($content) {
+function FILTER_REGISTER_MUST_FILLOUT ($filterData) {
// Get all fields for output
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
$result = SQL_QUERY('SELECT `field_name`,`field_required` FROM `{?_MYSQL_PREFIX?}_must_register` ORDER BY `id` ASC',
} // END - if
// Add it
- $content['must_fillout_' . strtolower($row['field_name']) . ''] = $value;
+ $filterData['must_fillout_' . strtolower($row['field_name']) . ''] = $value;
} // END - while
// Free memory
// Return it
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
- return $content;
+ return $filterData;
+}
+
+/**
+ * Run a filter for pre user registration - generic code (e.g. create hash,
+ * init global array elements). WARNING: This filter MUST run filter before all
+ * others, make your extension/-update depending on ext-register to avoid
+ * missing global array elements, etc.
+ *
+ * @param $filterData Filter data from previous filter
+ * @return $filterData Unchanged filter data
+ */
+function FILTER_PRE_USER_REGISTRATION_GENERIC ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Generate hash which will be inserted into confirmation mail
+ $GLOBALS['register_confirm_hash'] = generateHash(sha1(
+ // Get total confirmed, ...
+ getTotalConfirmedUser() . getEncryptSeparator() .
+ // ... unconfirmed ...
+ getTotalUnconfirmedUser() . getEncryptSeparator() .
+ // ... and locked users
+ getTotalLockedUser() . getEncryptSeparator() .
+ postRequestElement('month') . '-' .
+ postRequestElement('day') . '-' .
+ postRequestElement('year') . getEncryptSeparator() .
+ postRequestElement('pass1') . getEncryptSeparator() .
+ detectServerName() . getEncryptSeparator() .
+ detectRemoteAddr() . getEncryptSeparator() .
+ detectUserAgent() . '/' .
+ getSiteKey() . '/' .
+ getDateKey() . '/' .
+ getConfig('CACHE_BUSTER')
+ ));
+
+ // Old way with enterable two-char-code
+ $GLOBALS['register_country_row'] = '`country`';
+ $GLOBALS['register_country_data'] = substr(postRequestElement('cntry'), 0, 2);
+
+ // Init extra SQL data
+ $GLOBALS['register_sql_columns'] = '';
+ $GLOBALS['register_sql_data'] = '';
+
+ // Init "status" as for many users
+ setPostRequestElement('status', 'UNCONFIRMED');
+
+ // Add ip for later POST pings
+ setPostRequestElement('remote_addr', detectRemoteAddr());
+
+ // Generic initialization is done
+ $filterData['init_done'] = true;
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Send admin notification
- SURFBAR_NOTIFY_ADMIN('url_' . strtolower($filterData['data'][$filterData['url_id']]['url_status']) . '_' . $filterData['new_status'], $filterData['data'][$filterData['url_id']]);
+ doSurfbarNotifyAdmin('url_' . strtolower($filterData['data'][$filterData['url_id']]['url_status']) . '_' . $filterData['new_status'], $filterData['data'][$filterData['url_id']]);
// Send user notification
- SURFBAR_NOTIFY_USER('url_' . strtolower($filterData['data'][$filterData['url_id']]['url_status']) . '_' . $filterData['new_status'], $filterData['data'][$filterData['url_id']]);
+ doSurfbarNotifyMember('url_' . strtolower($filterData['data'][$filterData['url_id']]['url_status']) . '_' . $filterData['new_status'], $filterData['data'][$filterData['url_id']]);
// Return filter data
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Filter for generic handling of theme change
function FILTER_HANDLE_THEME_CHANGE ($filterData) {
- // Check if new theme is selcted
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Check if new theme is selcted
if ((isPostRequestElementSet('new_theme')) && (postRequestElement('new_theme') != getCurrentTheme())) {
// Set new theme for guests
$newTheme = postRequestElement('new_theme');
// Change to new theme
- setTheme($newTheme);
+ setMailerTheme($newTheme);
// Remove current from array
removeIncludeFromPool('theme', sprintf("theme/%s/theme.php", getCurrentTheme()));
// Filter for settings theme from user profile, must be executed only if FILTER_FETCH_USER_DATA() ran before
function FILTER_SET_USERS_THEME ($filterData) {
- // Is the user data valid?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Is the user data valid?
if (!isMember()) {
// Do only run for logged in members
- debug_report_bug(__FUNCTION__, __LINE__, 'Please only run this filter for logged in users.');
+ reportBug(__FUNCTION__, __LINE__, 'Please only run this filter for logged in users.');
} // END - if
// Change to new theme
- setTheme(getUserData('curr_theme'));
+ setMailerTheme(getUserData('curr_theme'));
// Return data
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
return $filterData;
}
+// Filter for adding SQL columns on user registration about current theme
+function FILTER_THEME_USER_REGISTRATION_ADD_SQL_COLUMNS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Okay, add design here
+ $GLOBALS['register_sql_columns'] .= ', `curr_theme`';
+ $GLOBALS['register_sql_data'] .= ", '{%%pipe,getCurrentTheme%%}'";
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
function FILTER_DISPLAY_UBERWACH_SNIPPET ($filterData) {
// Shall we include the uberwach snippet?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
- if ((!isGetRequestElementSet('frame')) && (isExtensionActive('uberwach')) && (getModule() != 'admin') && ($GLOBALS['header_sent'] == 2)) {
+ if ((isFullPage()) && (isExtensionActive('uberwach')) && (getModule() != 'admin') && ($GLOBALS['__header_sent'] == 2)) {
// Then display it here
loadUberwachSnippet();
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Filter for returning given user's points
function FILTER_USER_POINTS ($filterData) {
- // Get the points and add them to the existing
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Get the points and add them to the existing
$filterData['points'] += countSumTotalData($filterData['userid'], 'user_points', 'points');
// Return the data for next filter
return $filterData;
}
+// Filter for returning given user's locked points
+function FILTER_LOCKED_USER_POINTS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Get the points and add them to the existing
+ $filterData['points'] += countSumTotalData($filterData['userid'], 'user_points', 'locked_points');
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
+// Filter for returning all user points column names
+function FILTER_GET_ALL_USER_POINTS_COLUMN_NAMES ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+ // Add 'points' and 'locked_points'
+ $filterData['columns'] .= $filterData['alias'] . 'points' . $filterData['separator'] . $filterData['alias'] . 'locked_points' . $filterData['separator'];
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ return $filterData;
+}
+
+// Filter for excluding tester users in WHERE statements
+function FILTER_TESTER_USER_EXCLUSION_SQL ($sql) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called! - sql(' . strlen($sql) . ')=' . $sql);
+
+ /*
+ * Allow testers to be included? Do only this when you only want to test
+ * it, normally you don't want these accounts being included everywhere.
+ */
+ if (ifTesterAccountsAllowed()) {
+ // Do not exclude tester accounts
+ return $sql;
+ } // END - if
+
+ // Add it, as of this filter is registered only with ext-user >= 0.5.0
+ if (empty($sql)) {
+ // Add WHERE
+ $sql = " WHERE `surname` NOT LIKE '{?tester_user_surname_prefix?}%%'";
+ } else {
+ // Add AND
+ $sql .= " AND `surname` NOT LIKE '{?tester_user_surname_prefix?}%%'";
+ }
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done! - sql(' . strlen($sql) . ')=' . $sql);
+ return $sql;
+}
+
+// Filter for including tester users in WHERE statements
+function FILTER_TESTER_USER_INCLUSION_SQL ($sql) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called! - sql(' . strlen($sql) . ')=' . $sql);
+ // Add it, as of this filter is registered only with ext-user >= 0.5.0
+ if (empty($sql)) {
+ // Add WHERE
+ $sql = " WHERE `surname` LIKE '{?tester_user_surname_prefix?}%%'";
+ } else {
+ // Add AND
+ $sql .= " AND `surname` LIKE '{?tester_user_surname_prefix?}%%'";
+ }
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done! - sql(' . strlen($sql) . ')=' . $sql);
+ return $sql;
+}
+
+// Filter to add SQL columns to user registration
+function FILTER_TESTER_USER_REGISTRATION_ADD_SQL_COLUMNS ($filterData) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called!');
+
+ // Does the admin create a tester account?
+ if ((isAdmin()) && (isTesterUserName(postRequestElement('surname')))) {
+ // Yes, these accounts never needs confirmation (you can still test it by creating a usual account).
+ setPostRequestElement('status', 'CONFIRMED');
+ } // END - if
+
+ // Return filter data
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done!');
+ //* NOISY-DEBUG: */ print __FUNCTION__.':filterData=<pre>'.print_r($filterData,true).'</pre>';
+ return $filterData;
+}
+
+// Filter to add 'converting' SQL statements
+function FILTER_ADD_USER_DATA_CONVERT_SQL_COLUMNS ($sql) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called! - sql(' . strlen($sql) . ')=' . $sql);
+
+ // Add it
+ $sql .= ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`';
+
+ // Return the data for next filter
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Done! - sql(' . strlen($sql) . ')=' . $sql);
+ return $sql;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Is a database link here and not in installation mode?
if ((!SQL_IS_LINK_UP()) && (!isInstalling())) {
// Abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'No database link is up. Cannot flush filters.');
+ reportBug(__FUNCTION__, __LINE__, 'No database link is up. Cannot flush filters.');
return false;
} // END - if
// Handle failed logins here if not in guest
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'type=' . $filterData['type'] . ',action=' . getAction() . ',what=' . getWhat() . ',level=' . $filterData['access_level']);
- if ((($filterData['type'] == 'what') || ($filterData['type'] == 'action') && ((!isWhatSet()) || (getWhat() == 'overview') || (getWhat() == getIndexHome()))) && ($filterData['access_level'] != 'guest') && ((isExtensionInstalledAndNewer('sql_patches', '0.4.7')) || (isExtensionInstalledAndNewer('admins', '0.7.6')))) {
+ if ((($filterData['type'] == 'what') || ($filterData['type'] == 'action') && ((!isWhatSet()) || (getWhat() == 'welcome') || (getWhat() == getIndexHome()))) && ($filterData['access_level'] != 'guest') && ((isExtensionInstalledAndNewer('sql_patches', '0.4.7')) || (isExtensionInstalledAndNewer('admins', '0.7.6')))) {
// Handle failure
$content['content'] .= handleLoginFailures($filterData['access_level']);
} // END - if
adminSolveTask($filterData['task_id']);
} else {
// Not detectable!
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Cannot resolve task. data[%s]=<pre>%s</pre>", gettype($filterData), print_r($filterData, true)));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Cannot resolve task. data[%s]=<pre>%s</pre>", gettype($filterData), print_r($filterData, true)));
}
// Return the data
// Is it null?
if (is_null($filterData)) {
// This should not happen!
- debug_report_bug(__FUNCTION__, __LINE__, 'pool is null.');
+ reportBug(__FUNCTION__, __LINE__, 'pool is null.');
} // END - if
// Is the pool an array and 'pool' set?
// Is it an array?
if ((!isset($data)) || (!is_array($data))) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("INC_POOL is no array! Type: %s", gettype($data)));
+ reportBug(__FUNCTION__, __LINE__, sprintf("INC_POOL is no array! Type: %s", gettype($data)));
} elseif (isset($data['inc_pool'])) {
// Use this as new inclusion pool!
setIncludePool($realPool, $data['inc_pool']);
// Filter for running SQL commands
function FILTER_RUN_SQLS ($filterData) {
+ // Init counter
+ $count = 0;
+
// Debug message
//* DEBUG: */ die('getSqls()=<pre>'.print_r(getSqls(), true).'</pre>ext_update_depends=<pre>'.print_r($GLOBALS['ext_update_depends'], true).'</pre>');
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '- Entered!');
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Running regular query: ' . $sql . ',enable_codes=' . intval($filterData['enable_codes']));
SQL_QUERY($sql, __FUNCTION__, __LINE__, $filterData['enable_codes']);
}
+
+ // Has a line changed?
+ if (!SQL_HASZEROAFFECTED()) {
+ // Add it to total account
+ $count += SQL_AFFECTEDROWS();
+ } // END - if
} // END - if
} // END - foreach
} // END - foreach
// Debug message
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '- Left!');
+
+ // Clear any SQL queries
+ //initSqls();
+
+ // Return counter
+ return $count;
}
// Filter for updating/validating login data
$content = getUserDataArray();
// Maybe first login time?
- if (empty($content['last_module'])) {
- $content['last_module'] = 'login';
+ if (empty($content[getUserLastWhatName()])) {
+ $content[getUserLastWhatName()] = 'login';
} // END - if
// This will be displayed on welcome page! :-)
if (empty($GLOBALS['last_online']['module'])) {
- $GLOBALS['last_online']['module'] = $content['last_module'];
+ $GLOBALS['last_online']['module'] = $content[getUserLastWhatName()];
$GLOBALS['last_online']['online'] = $content['last_online'];
} // END - if
// Some entries found?
if ((count($matches) > 0) && (count($matches[3]) > 0)) {
// Replace all matches
- foreach ($matches[2] as $key => $cmd) {
+ foreach ($matches[2] as $key => $eti) {
// Init replacer/call-back variable
$replacer = '';
$callback = '';
$value = NULL;
// Extract command and call-back
- $cmdArray = explode(',', $cmd);
- $cmd = $cmdArray[0];
+ $etiArray = explode(',', $eti);
+ $eti = $etiArray[0];
// Detect call-back function
- if (isset($cmdArray[1])) {
+ if (isset($etiArray[1])) {
// Call-back function detected
- $callback = $cmdArray[1];
+ $callback = $etiArray[1];
} // END - if
// Detect extra function
- if (isset($cmdArray[2])) {
+ if (isset($etiArray[2])) {
// Also detected
- $extraFunction = $cmdArray[2];
+ $extraFunction = $etiArray[2];
} // END - if
// Detect extra function 2
- if (isset($cmdArray[3])) {
+ if (isset($etiArray[3])) {
// Also detected
- $extraFunction2 = $cmdArray[3];
+ $extraFunction2 = $etiArray[3];
} // END - if
// And value
} // END - if
// Construct call-back function name for the command
- $commandFunction = 'doExpression' . capitalizeUnderscoreString($cmd);
+ $etiFunction = 'doExpression' . capitalizeUnderscoreString($eti);
// Is this function there?
- if (function_exists($commandFunction)) {
+ if (function_exists($etiFunction)) {
// Prepare $matches, $key, $outputMode, etc.
$data = array(
'matches' => $matches,
);
// Call it
- //* DEBUG: */ debugOutput(__FUNCTION__ . '[' . __LINE__ . ']: function=' . $commandFunction);
- $filterData = call_user_func($commandFunction, $data);
+ //* DEBUG: */ debugOutput(__FUNCTION__ . '[' . __LINE__ . ']: etiFunction=' . $etiFunction);
+ $filterData = call_user_func($etiFunction, $data);
} else {
// Unsupported command detected
- logDebugMessage(__FUNCTION__, __LINE__, 'Command cmd=' . $cmd . ', callback=' . $callback . ', extra=' . $extraFunction . ' is unsupported.');
+ logDebugMessage(__FUNCTION__, __LINE__, 'eti=' . $eti . ', callback=' . $callback . ', extra=' . $extraFunction . ' - unsupported');
}
} // END - foreach
} // END - if
// Is the reset set or old sql_patches?
if (((!isHourlyResetEnabled()) || (!isExtensionInstalledAndNewer('sql_patches', '0.7.5'))) && (isHtmlOutputMode())) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot run reset! enabled='.intval(isHourlyResetEnabled()).',ext_newer[sql_patches:0.7.5]='.intval(isExtensionInstalledAndNewer('sql_patches', '0.7.5')).' Please report this bug. Thanks');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot run reset! enabled='.intval(isHourlyResetEnabled()).',ext_newer[sql_patches:0.7.5]='.intval(isExtensionInstalledAndNewer('sql_patches', '0.7.5')).' Please report this bug. Thanks');
} // END - if
// Get more hourly reset scripts
// Is the reset set or old sql_patches?
if (((!isResetModeEnabled()) || (!isExtensionInstalled('sql_patches'))) && (isHtmlOutputMode())) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot run reset! enabled='.intval(isResetModeEnabled()).',ext='.intval(isExtensionInstalled('sql_patches')).' Please report this bug. Thanks');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot run reset! enabled='.intval(isResetModeEnabled()).',ext='.intval(isExtensionInstalled('sql_patches')).' Please report this bug. Thanks');
} // END - if
// Get more daily reset scripts
loadIncludeOnce('inc/footer.php');
// Abort here
- shutdown();
+ doShutdown();
}
// Filter for displaying copyright line
function FILTER_DISPLAY_COPYRIGHT () {
// Shall we display the copyright notice?
- if ((!isGetRequestElementSet('frame')) && (basename($_SERVER['PHP_SELF']) != 'mailid_top.php') && ((getConfig('WRITE_FOOTER') == 'Y') || (isInstalling())) && ($GLOBALS['header_sent'] == 2)) {
+ if ((isFullPage()) && ((getConfig('WRITE_FOOTER') == 'Y') || (isInstalling())) && ($GLOBALS['__header_sent'] == 2) && (ifCopyrightFooterEnabled())) {
// Backlink enabled?
if (((isConfigEntrySet('ENABLE_BACKLINK')) && (getConfig('ENABLE_BACKLINK') == 'Y')) || (isInstalling())) {
// Copyright with backlink, thanks! :-)
- $GLOBALS['page_footer'] .= loadTemplate('copyright_backlink', true);
+ $GLOBALS['__page_footer'] .= loadTemplate('copyright_backlink', true);
} else {
// No backlink in Copyright note
- $GLOBALS['page_footer'] .= loadTemplate('copyright', true);
+ $GLOBALS['__page_footer'] .= loadTemplate('copyright', true);
}
} // END - if
}
// Filter for displaying parsing time
function FILTER_DISPLAY_PARSING_TIME () {
// Shall we display the parsing time and number of queries?
- // 1234 5 54 4 5 5 4 4 5 543 3 4432 2 33 2 2 21
- if ((((isExtensionInstalledAndNewer('sql_patches', '0.4.1')) && (getConfig('show_timings') == 'Y') && (!isGetRequestElementSet('frame'))) || (isInstallationPhase())) && (isHtmlOutputMode()) && ($GLOBALS['header_sent'] == 2)) {
+ // 1234 5 54 4 5 5 4 4 5543 3 4432 2 332 2 21
+ if ((((isExtensionInstalledAndNewer('sql_patches', '0.4.1')) && (getConfig('show_timings') == 'Y') && (isFullPage())) && (!isInstallationPhase())) && (isHtmlOutputMode()) && ($GLOBALS['__header_sent'] == 2)) {
// Then display it here
displayParsingTime();
} // END - if
// Filter for flushing template cache
function FILTER_FLUSH_TEMPLATE_CACHE () {
// Do not flush when debugging the template cache
- if (isDebuggingTemplateCache()) return;
+ if (isDebuggingTemplateCache()) {
+ // Do not flush templates in debug-mode
+ return;
+ } // END - if
// Do we have cached eval() data?
if ((isset($GLOBALS['template_eval'])) && (count($GLOBALS['template_eval']) > 0)) {
// Get user data
if (!fetchUserData($userid)) {
// Userid is not valid
- debug_report_bug(__FUNCTION__, __LINE__, 'User id '.$userid . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'User id '.$userid . ' is invalid.');
} // END - if
// Set member id
// Is the user data valid?
if (!isMember()) {
// Do only run for logged in members
- debug_report_bug(__FUNCTION__, __LINE__, 'Please only run this filter for logged in users.');
+ reportBug(__FUNCTION__, __LINE__, 'Please only run this filter for logged in users.');
} // END - if
// Remmeber login failures if available
// Filter for loading page header, this should be ran first!
function FILTER_LOAD_PAGE_HEADER () {
// Output page header code
- $GLOBALS['page_header'] = loadTemplate('page_header', true);
+ $GLOBALS['__page_header'] = loadTemplate('page_header', true);
// Include meta data in 'guest' module
if ((isModuleSet()) && (getModule() == 'index')) {
// Load meta data template
- $GLOBALS['page_header'] .= loadTemplate('metadata', true);
+ $GLOBALS['__page_header'] .= loadTemplate('metadata', true);
// Add meta description to header
if ((isInstalled()) && (isAdminRegistered()) && (SQL_IS_LINK_UP())) {
loadIncludeOnce('inc/stylesheet.php');
// Closing HEAD tag
- $GLOBALS['page_header'] .= '</head>';
+ $GLOBALS['__page_header'] .= '</head>';
}
// Cleans up the DNS cache if sql_patches is at least 0.7.0
return $filterData;
}
+// Filter for initializing ext-sql_patches
+function FILTER_GENERATE_FILE_SECRET_HASH ($filterData) {
+ // Transfer POINTS word
+ if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
+ // Okay, recent enough, so transfer the word for POINTS
+ setConfigEntry('POINTS', getPointsWord());
+ } // END - if
+
+ // Init key
+ setConfigEntry('secret_key', '');
+
+ // Read key from secret file
+ if ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == '')) {
+ // Maybe need setup of secret key!
+ loadIncludeOnce('inc/gen_sql_patches.php');
+ } // END - if
+
+ // Test again
+ if ((getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
+ // File hash fas generated so we can also file the secret file... hopefully.
+ $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
+
+ // Is the secret key file readable?
+ if (isFileReadable($hashFile)) {
+ // Read file
+ setConfigEntry('secret_key', readFromFile($hashFile));
+ } else {
+ // Remove it from database
+ updateConfiguration('file_hash', '');
+
+ // Cannot read secret file!
+ reportBug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
+ }
+ } // END - if
+
+ // Return data
+ return $filterData;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `refid`=0 OR `refid` IS NULL
+ `refid`=0 OR
+ `refid` IS NULL
ORDER BY
`userid` ASC', __FILE__, __LINE__);
// When 'walk' through all users
while ($content = SQL_FETCHARRAY($result_direct)) {
// Update refback table
- //* DEBUG: */ debugOutput('userid=' . $content['userid']);
+ /* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'userid=' . $content['userid'] . ' - BEFORE!');
updateReferralTable($content['userid']);
+ /* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'userid=' . $content['userid'] . ' - AFTER!');
} // END - while
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Init page footer
-$GLOBALS['page_footer'] = '';
+$GLOBALS['__page_footer'] = '';
-// Footer disabled or already sent?
-// 1234 5 54 45 5 5 543 3 443 3 443 3 44321
-if ((((!isset($GLOBALS['footer_sent'])) || (($GLOBALS['footer_sent'] != 1) && ($GLOBALS['footer_sent'] != 2))) && (!isCssOutputMode()) && (!isAjaxOutputMode()) && (!isImageOutputMode()))) {
+// Footer disabled (e.g. CSS/AJAX/image output) or already sent?
+// 1234 5 54 45 5 5 543 3 443 3 443 3 44321
+if ((((!isset($GLOBALS['__footer_sent'])) || (($GLOBALS['__footer_sent'] != 1) && ($GLOBALS['__footer_sent'] != 2))) && (!isCssOutputMode()) && (!isAjaxOutputMode()) && (!isImageOutputMode()))) {
// Run the filter, sweet huh?
runFilterChain('page_footer');
// Load page footer
- $GLOBALS['page_footer'] .= loadTemplate('page_footer', true);
+ $GLOBALS['__page_footer'] .= loadTemplate('page_footer', true);
} // END - if
// Footer has been reached
-$GLOBALS['footer_sent'] = 1;
+$GLOBALS['__footer_sent'] = 1;
// Shutdown
-shutdown();
+doShutdown();
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
// Add message to $GLOBALS['fatal_messages']
- $GLOBALS['fatal_messages'][] = $message;
+ array_push($GLOBALS['fatal_messages'], $message);
// Log fatal messages away
logDebugMessage($F, $L, 'Fatal error message: ' . $message);
return $count;
}
-// Send mail out to an email address
-function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '') {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'toEmail=' . $toEmail . ',subject=' . $subject . ',isHtml=' . $isHtml);
- // Empty parameters should be avoided, so we need to find them
- if (empty($isHtml)) {
- // isHtml is empty
- debug_report_bug(__FUNCTION__, __LINE__, 'isHtml is empty.');
- } // END - if
-
- // Set from header
- if ((!isInString('@', $toEmail)) && ($toEmail > 0)) {
- // Does the user exist?
- if ((isExtensionActive('user')) && (fetchUserData($toEmail))) {
- // Get the email
- $toEmail = getUserData('email');
- } else {
- // Set webmaster
- $toEmail = getWebmaster();
- }
- } elseif ($toEmail == '0') {
- // Is the webmaster!
- $toEmail = getWebmaster();
- }
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'TO=' . $toEmail);
-
- // Check for PHPMailer or debug-mode
- if ((!checkPhpMailerUsage()) || (isDebugModeEnabled())) {
- // Prefix is '' for text mails
- $prefix = '';
-
- // Is HTML?
- if ($isHtml == 'Y') {
- // Set prefix
- $prefix = 'html_';
- } // END - if
-
- // Not in PHPMailer-Mode
- if (empty($mailHeader)) {
- // Load email header template
- $mailHeader = loadEmailTemplate($prefix . 'header');
- } else {
- // Append header
- $mailHeader .= loadEmailTemplate($prefix . 'header');
- }
- } // END - if
-
- // Debug mode enabled?
- if (isDebugModeEnabled()) {
- // In debug mode we want to display the mail instead of sending it away so we can debug this part
- outputHtml('<pre>
-Headers : ' . htmlentities(utf8_decode(trim($mailHeader))) . '
-To : ' . htmlentities(utf8_decode($toEmail)) . '
-Subject : ' . htmlentities(utf8_decode($subject)) . '
-Message : ' . htmlentities(utf8_decode($message)) . '
-</pre>');
-
- // This is always fine
- return true;
- } elseif (!empty($toEmail)) {
- // Send Mail away
- return sendRawEmail($toEmail, $subject, $message, $mailHeader);
- } elseif ($isHtml != 'Y') {
- // Problem detected while sending a mail, forward it to admin
- return sendRawEmail(getWebmaster(), '[PROBLEM:]' . $subject, $message, $mailHeader);
- }
-
- // Why did we end up here? This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Ending up: template=' . $template);
-}
-
-// Check to use wether legacy mail() command or PHPMailer class
-// @TODO Rewrite this to an extension 'smtp'
-// @private
-function checkPhpMailerUsage() {
- return ((getConfig('SMTP_HOSTNAME') != '') && (getConfig('SMTP_USER') != ''));
-}
-
-// Send out a raw email with PHPMailer class or legacy mail() command
-function sendRawEmail ($toEmail, $subject, $message, $headers) {
- // Just compile all to put out all configs, etc.
- $eval = '$toEmail = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($toEmail), false)) . '"); ';
- $eval .= '$subject = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($subject), false)) . '"); ';
- $eval .= '$headers = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($headers), false)) . '"); ';
-
- // Do not decode entities in the message because we also send HTML mails through this function
- $eval .= '$message = "' . escapeQuotes(doFinalCompilation(compileRawCode($message), false)) . '";';
-
- // Run the final eval() command
- eval($eval);
-
- // Shall we use PHPMailer class or legacy mode?
- if (checkPhpMailerUsage()) {
- // Use PHPMailer class with SMTP enabled
- loadIncludeOnce('inc/phpmailer/class.phpmailer.php');
- loadIncludeOnce('inc/phpmailer/class.smtp.php');
-
- // get new instance
- $mail = new PHPMailer();
-
- // Set charset to UTF-8
- $mail->CharSet = 'UTF-8';
-
- // Path for PHPMailer
- $mail->PluginDir = sprintf("%sinc/phpmailer/", getPath());
-
- $mail->IsSMTP();
- $mail->SMTPAuth = true;
- $mail->Host = getConfig('SMTP_HOSTNAME');
- $mail->Port = 25;
- $mail->Username = getConfig('SMTP_USER');
- $mail->Password = getConfig('SMTP_PASSWORD');
- if (empty($headers)) {
- $mail->From = getWebmaster();
- } else {
- $mail->From = $headers;
- }
- $mail->FromName = getMainTitle();
- $mail->Subject = $subject;
- if ((isExtensionActive('html_mail')) && (secureString($message) != $message)) {
- $mail->Body = $message;
- $mail->AltBody = decodeEntities($message);
- $mail->WordWrap = 70;
- $mail->IsHTML(true);
- } else {
- $mail->Body = decodeEntities(strip_tags($message));
- }
-
- $mail->AddAddress($toEmail, '');
- $mail->AddReplyTo(getWebmaster(), getMainTitle());
- $mail->AddCustomHeader('Errors-To: ' . getWebmaster());
- $mail->AddCustomHeader('X-Loop: ' . getWebmaster());
- $mail->AddCustomHeader('Bounces-To: ' . getWebmaster());
- $mail->Send();
-
- // Has an error occured?
- if (!empty($mail->ErrorInfo)) {
- // Log message
- logDebugMessage(__FUNCTION__, __LINE__, 'Error while sending mail: ' . $mail->ErrorInfo);
-
- // Raise an error
- return false;
- } else {
- // All fine!
- return true;
- }
- } else {
- // Use legacy mail() command
- return mail($toEmail, $subject, decodeEntities($message), $headers);
- }
-}
-
// Generate a password in a specified length or use default password length
function generatePassword ($length = '0', $exclude = array()) {
// Auto-fix invalid length of zero
// Generates a human-readable timestamp from the Uni* stamp
function generateDateTime ($time, $mode = '0') {
+ // Is there cache?
+ if (isset($GLOBALS[__FUNCTION__][$time][$mode])) {
+ // Return it instead
+ return $GLOBALS[__FUNCTION__][$time][$mode];
+ } // END - if
+
// If the stamp is zero it mostly didn't "happen"
if (($time == '0') || (is_null($time))) {
// Never happend
} // END - if
// Filter out numbers
- $time = bigintval($time);
-
- // Is it cached?
- if (isset($GLOBALS[__FUNCTION__][$time][$mode])) {
- // Then use it
- return $GLOBALS[__FUNCTION__][$time][$mode];
- } // END - if
+ $timeSecured = bigintval($time);
// Detect language
switch (getLanguage()) {
case 'de': // German date / time format
switch ($mode) {
- case '0': $ret = date("d.m.Y \u\m H:i \U\h\\r", $time); break;
- case '1': $ret = strtolower(date('d.m.Y - H:i', $time)); break;
- case '2': $ret = date('d.m.Y|H:i', $time); break;
- case '3': $ret = date('d.m.Y', $time); break;
- case '4': $ret = date('d.m.Y|H:i:s', $time); break;
- case '5': $ret = date('d-m-Y (l-F-T)', $time); break;
- case '6': $ret = date('Ymd', $time); break;
- case '7': $ret = date('Y-m-d H:i:s', $time); break; // Compatible with MySQL TIMESTAMP
+ case '0': $ret = date("d.m.Y \u\m H:i \U\h\\r", $timeSecured); break;
+ case '1': $ret = strtolower(date('d.m.Y - H:i', $timeSecured)); break;
+ case '2': $ret = date('d.m.Y|H:i', $timeSecured); break;
+ case '3': $ret = date('d.m.Y', $timeSecured); break;
+ case '4': $ret = date('d.m.Y|H:i:s', $timeSecured); break;
+ case '5': $ret = date('d-m-Y (l-F-T)', $timeSecured); break;
+ case '6': $ret = date('Ymd', $timeSecured); break;
+ case '7': $ret = date('Y-m-d H:i:s', $timeSecured); break; // Compatible with MySQL TIMESTAMP
default:
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
break;
default: // Default is the US date / time format!
switch ($mode) {
- case '0': $ret = date('r', $time); break;
- case '1': $ret = strtolower(date('Y-m-d - g:i A', $time)); break;
- case '2': $ret = date('y-m-d|H:i', $time); break;
- case '3': $ret = date('y-m-d', $time); break;
- case '4': $ret = date('d.m.Y|H:i:s', $time); break;
- case '5': $ret = date('d-m-Y (l-F-T)', $time); break;
- case '6': $ret = date('Ymd', $time); break;
- case '7': $ret = date('Y-m-d H:i:s', $time); break; // Compatible with MySQL TIMESTAMP
+ case '0': $ret = date('r', $timeSecured); break;
+ case '1': $ret = strtolower(date('Y-m-d - g:i A', $timeSecured)); break;
+ case '2': $ret = date('y-m-d|H:i', $timeSecured); break;
+ case '3': $ret = date('y-m-d', $timeSecured); break;
+ case '4': $ret = date('d.m.Y|H:i:s', $timeSecured); break;
+ case '5': $ret = date('d-m-Y (l-F-T)', $timeSecured); break;
+ case '6': $ret = date('Ymd', $timeSecured); break;
+ case '7': $ret = date('Y-m-d H:i:s', $timeSecured); break; // Compatible with MySQL TIMESTAMP
default:
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
break;
case 'N': $GLOBALS[__FUNCTION__][$yn] = '{--NO--}'; break;
default:
// Log unknown value
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected Y/N!", $yn));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected: Y/N", $yn));
break;
} // END - switch
} // END - if
}
// Translates the american decimal dot into a german comma
+// OPPOMENT: convertCommaToDot()
function translateComma ($dotted, $cut = true, $max = '0') {
// First, cast all to double, due to PHP changes
$dotted = (double) $dotted;
case 'M': // Male
case 'F': // Female
case 'C': // Company
- $ret = sprintf("{--GENDER_%s--}", $gender);
+ // Use generic function
+ $ret = translateGeneric('GENDER', $gender);
break;
default:
// Please report bugs on unknown genders
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown gender %s detected.", $gender));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Unknown gender %s detected.", $gender));
break;
} // END - switch
case 'UNCONFIRMED':
case 'CONFIRMED':
case 'LOCKED':
- $ret = sprintf("{--ACCOUNT_STATUS_%s--}", $status);
+ // Use generic function for all "normal" cases"
+ $ret = translateGeneric('ACCOUNT_STATUS', $status);
break;
- case '':
- case null:
+ case '': // Account deleted
+ case NULL: // Account deleted
$ret = '{--ACCOUNT_STATUS_DELETED--}';
break;
- default:
- // Please report all unknown status
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown status %s(%s) detected.", $status, gettype($status)));
+ default: // Please report all unknown status
+ reportBug(__FUNCTION__, __LINE__, sprintf("Unknown status %s(%s) detected.", $status, gettype($status)));
break;
} // END - switch
// Translate 'visible' and keep an eye on the prefix
switch ($content['visible']) {
- // Should be visible
- case 'Y': $content['visible_css'] = $prefix . 'menu_visible' ; break;
- case 'N': $content['visible_css'] = $prefix . 'menu_invisible'; break;
- default:
- // Please report this
- debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported visible value detected. content=<pre>' . print_r($content, true) . '</pre>');
+ case 'Y': // Should be visible
+ $content['visible_css'] = $prefix . 'menu_visible';
+ break;
+
+ case 'N': // Is invisible
+ $content['visible_css'] = $prefix . 'menu_invisible';
+ break;
+
+ default: // Please report this
+ reportBug(__FUNCTION__, __LINE__, 'Unsupported visible value detected. content=<pre>' . print_r($content, true) . '</pre>');
break;
} // END - switch
// Translate 'locked' and keep an eye on the prefix
switch ($content['locked']) {
- // Should be locked
- case 'Y': $content['locked_css'] = $prefix . 'menu_locked' ; break;
- case 'N': $content['locked_css'] = $prefix . 'menu_unlocked'; break;
- default:
- // Please report this
- debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported locked value detected. content=<pre>' . print_r($content, true) . '</pre>');
+ case 'Y': // Should be locked, only admins can call this
+ $content['locked_css'] = $prefix . 'menu_locked';
+ break;
+
+ case 'N': // Is unlocked and visible to members/guests/sponsors
+ $content['locked_css'] = $prefix . 'menu_unlocked';
+ break;
+
+ default: // Please report this
+ reportBug(__FUNCTION__, __LINE__, 'Unsupported locked value detected. content=<pre>' . print_r($content, true) . '</pre>');
break;
} // END - switch
// Integrity check
if (!is_array($array)) {
// Not an array!
- debug_report_bug(__FUNCTION__, __LINE__, 'No array provided.');
+ reportBug(__FUNCTION__, __LINE__, 'No array provided.');
} // END - if
// Init count
// Count all entries
foreach ($array as $key => $selected) {
// Is it checked?
- if (!empty($selected)) $ret++;
+ if (!empty($selected)) {
+ // Yes, then count it
+ $ret++;
+ } // END - if
} // END - foreach
// Return counted selections
// Redirects to an URL and if neccessarry extends it with own base URL
function redirectToUrl ($url, $allowSpider = true) {
// Is the output mode -2?
- if (getScriptOutputMode() == -2) {
+ if (isAjaxOutputMode()) {
// This is always (!) an AJAX request and shall not be redirected
return;
} // END - if
} // END - if
// Three different ways to debug...
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'URL=' . $url);
+ //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'URL=' . $url);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'URL=' . $url);
//* DEBUG: */ die($url);
}
// Shut the mailer down here
- shutdown();
+ doShutdown();
}
/************************************************************************
* *
* $array - Das 3-dimensionale Array, das paralell sortiert werden soll *
* $a_sort - Array, das die Sortiereihenfolge der ersten Elementeben *
- * $primary_key - Prim.rschl.ssel aus $a_sort, nach dem sortiert wird *
+ * $primary_key - Primaerschl.ssel aus $a_sort, nach dem sortiert wird *
* $order - Sortiereihenfolge: -1 = a-Z, 0 = keine, 1 = Z-a *
* $nums - true = Als Zahlen sortieren, false = Als Zeichen sortieren *
* *
// Has the whole value changed?
if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true) && (!is_null($num))) {
// Log the values
- debug_report_bug(__FUNCTION__, __LINE__, 'Problem with number found. ret[' . gettype($ret) . ']=' . $ret . ', num[' . gettype($num) . ']='. $num);
+ reportBug(__FUNCTION__, __LINE__, 'Problem with number found. ret[' . gettype($ret) . ']=' . $ret . ', num[' . gettype($num) . ']='. $num);
} // END - if
// Return result
// Taken from www.php.net isInStringIgnoreCase() user comments
function isEmailValid ($email) {
- // Check first part of email address
- $first = '[-a-z0-9!#$%&\'*+/=?^_<{|}~]+(\.[-a-zA-Z0-9!#$%&\'*+/=?^_<{|}~]+)*';
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'email=' . $email . ' - ENTERED!');
+
+ // Is there cache?
+ if (!isset($GLOBALS[__FUNCTION__][$email])) {
+ // Check first part of email address
+ $first = '[-a-z0-9!#$%&\'*+/=?^_<{|}~]+(\.[-a-zA-Z0-9!#$%&\'*+/=?^_<{|}~]+)*';
- // Check domain
- $domain = '[a-z0-9-]+(\.[a-z0-9-]{2,5})+';
+ // Check domain
+ $domain = '[a-z0-9-]+(\.[a-z0-9-]{2,5})+';
- // Generate pattern
- $regex = '@^' . $first . '\@' . $domain . '$@iU';
+ // Generate pattern
+ $regex = '@^' . $first . '\@' . $domain . '$@iU';
+
+ // Determine it
+ $GLOBALS[__FUNCTION__][$email] = (($email != getMessage('DEFAULT_WEBMASTER')) && (preg_match($regex, $email)));
+ } // END - if
// Return check result
- return preg_match($regex, $email);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'email=' . $email . ',isValid=' . intval($GLOBALS[__FUNCTION__][$email]) . ' - EXIT!');
+ return $GLOBALS[__FUNCTION__][$email];;
}
// Function taken from user comments on www.php.net / function isInStringIgnoreCase()
return FILTER_VALIDATE_URL($url, false);
} // END - if
- // If not installed, perform a simple test. Just make it sure there is always a http:// or
- // https:// in front of the URLs
+ /*
+ * If not installed, perform a simple test. Just make it sure there is always a
+ * http:// or https:// in front of the URLs.
+ */
return isUrlValidSimple($url);
}
// Do we miss an arry element here?
if (!isConfigEntrySet('file_hash')) {
// Stop here
- debug_report_bug(__FUNCTION__, __LINE__, 'Missing file_hash in ' . __FUNCTION__ . '.');
+ reportBug(__FUNCTION__, __LINE__, 'Missing file_hash in ' . __FUNCTION__ . '.');
} // END - if
// When the salt is empty build a new one, else use the first x configured characters as the salt
// Sanity check on salt
if (strlen($salt) != getSaltLength()) {
// Not the same!
- debug_report_bug(__FUNCTION__, __LINE__, 'salt length mismatch! (' . strlen($salt) . '/' . getSaltLength() . ')');
+ reportBug(__FUNCTION__, __LINE__, 'salt length mismatch! (' . strlen($salt) . '/' . getSaltLength() . ')');
} // END - if
}
// De-scramble a string scrambled by scrambleString()
function descrambleString ($str) {
// Scramble only 40 chars long strings
- if (strlen($str) != 40) return $str;
+ if (strlen($str) != 40) {
+ return $str;
+ } // END - if
// Load numbers from config
$scrambleNums = explode(':', getPassScramble());
// Validate numbers
- if (count($scrambleNums) != 40) return $str;
+ if (count($scrambleNums) != 40) {
+ return $str;
+ } // END - if
// Begin descrambling
$orig = str_repeat(' ', 40);
$ret = 'default';
// Do we have ext-theme installed and active or is 'theme' in URL or POST data?
- if ((isPostRequestElementSet('theme')) && (isIncludeReadable(sprintf("theme/%s/theme.php", postRequestElement('theme'))))) {
+ if (isExtensionActive('theme')) {
+ // Call inner method
+ $ret = getActualTheme();
+ } elseif ((isPostRequestElementSet('theme')) && (isIncludeReadable(sprintf("theme/%s/theme.php", postRequestElement('theme'))))) {
// Use value from POST data
$ret = postRequestElement('theme');
} elseif ((isGetRequestElementSet('theme')) && (isIncludeReadable(sprintf("theme/%s/theme.php", getRequestElement('theme'))))) {
// Use value from GET data
$ret = getRequestElement('theme');
- } elseif (isExtensionActive('theme')) {
- // Call inner method
- $ret = getActualTheme();
+ } elseif ((isMailerThemeSet()) && (isIncludeReadable(sprintf("theme/%s/theme.php", getMailerTheme())))) {
+ // Use value from GET data
+ $ret = getMailerTheme();
}
// Return theme value
// Converts a message code to a human-readable message
function getMessageFromErrorCode ($code) {
- $message = '';
+ // Default is an unknown error code
+ $message = '{%message,UNKNOWN_ERROR_CODE=' . $code . '%}';
+
+ // Which code is provided?
switch ($code) {
- case '': break;
- case getCode('LOGOUT_DONE') : $message = '{--LOGOUT_DONE--}'; break;
- case getCode('LOGOUT_FAILED') : $message = '<span class="bad">{--LOGOUT_FAILED--}</span>'; break;
- case getCode('DATA_INVALID') : $message = '{--MAIL_DATA_INVALID--}'; break;
- case getCode('POSSIBLE_INVALID') : $message = '{--MAIL_POSSIBLE_INVALID--}'; break;
- case getCode('USER_404') : $message = '{--USER_404--}'; break;
- case getCode('STATS_404') : $message = '{--MAIL_STATS_404--}'; break;
- case getCode('ALREADY_CONFIRMED') : $message = '{--MAIL_ALREADY_CONFIRMED--}'; break;
- case getCode('WRONG_PASS') : $message = '{--LOGIN_WRONG_PASS--}'; break;
- case getCode('WRONG_ID') : $message = '{--LOGIN_WRONG_ID--}'; break;
- case getCode('ACCOUNT_LOCKED') : $message = '{--LOGIN_STATUS_LOCKED--}'; break;
- case getCode('ACCOUNT_UNCONFIRMED'): $message = '{--LOGIN_STATUS_UNCONFIRMED--}'; break;
- case getCode('COOKIES_DISABLED') : $message = '{--LOGIN_COOKIES_DISABLED--}'; break;
- case getCode('BEG_SAME_AS_OWN') : $message = '{--BEG_SAME_USERID_AS_OWN--}'; break;
- case getCode('LOGIN_FAILED') : $message = '{--GUEST_LOGIN_FAILED_GENERAL--}'; break;
- case getCode('MODULE_MEMBER_ONLY') : $message = '{%message,MODULE_MEMBER_ONLY=' . getRequestElement('mod') . '%}'; break;
- case getCode('OVERLENGTH') : $message = '{--MEMBER_TEXT_OVERLENGTH--}'; break;
- case getCode('URL_FOUND') : $message = '{--MEMBER_TEXT_CONTAINS_URL--}'; break;
- case getCode('SUBJECT_URL') : $message = '{--MEMBER_SUBJECT_CONTAINS_URL--}'; break;
- case getCode('BLIST_URL') : $message = '{--MEMBER_URL_BLACK_LISTED--}<br />{--MEMBER_BLIST_TIME--}: ' . generateDateTime(getRequestElement('blist'), 0); break;
- case getCode('NO_RECS_LEFT') : $message = '{--MEMBER_SELECTED_MORE_RECS--}'; break;
- case getCode('INVALID_TAGS') : $message = '{--MEMBER_HTML_INVALID_TAGS--}'; break;
- case getCode('MORE_POINTS') : $message = '{--MEMBER_MORE_POINTS_NEEDED--}'; break;
- case getCode('MORE_RECEIVERS1') : $message = '{--MEMBER_ENTER_MORE_RECEIVERS--}'; break;
- case getCode('MORE_RECEIVERS2') : $message = '{--MEMBER_NO_MORE_RECEIVERS_FOUND--}'; break;
- case getCode('MORE_RECEIVERS3') : $message = '{--MEMBER_ENTER_MORE_MIN_RECEIVERS--}'; break;
- case getCode('INVALID_URL') : $message = '{--MEMBER_ENTER_INVALID_URL--}'; break;
- case getCode('NO_MAIL_TYPE') : $message = '{--MEMBER_NO_MAIL_TYPE_SELECTED--}'; break;
- case getCode('UNKNOWN_ERROR') : $message = '{--LOGIN_UNKNOWN_ERROR--}'; break;
- case getCode('UNKNOWN_STATUS') : $message = '{--LOGIN_UNKNOWN_STATUS--}'; break;
- case getCode('PROFILE_UPDATED') : $message = '{--MEMBER_PROFILE_UPDATED--}'; break;
+ case '':
+ // No error code is bad coding practice
+ reportBug(__FUNCTION__, __LINE__, 'Empty error code supplied. Please fix your code.');
+ break;
+
+ // All error messages
+ case getCode('LOGOUT_DONE') : $message = '{--LOGOUT_DONE--}'; break;
+ case getCode('LOGOUT_FAILED') : $message = '<span class="bad">{--LOGOUT_FAILED--}</span>'; break;
+ case getCode('DATA_INVALID') : $message = '{--MAIL_DATA_INVALID--}'; break;
+ case getCode('POSSIBLE_INVALID') : $message = '{--MAIL_POSSIBLE_INVALID--}'; break;
+ case getCode('USER_404') : $message = '{--USER_404--}'; break;
+ case getCode('STATS_404') : $message = '{--MAIL_STATS_404--}'; break;
+ case getCode('ALREADY_CONFIRMED') : $message = '{--MAIL_ALREADY_CONFIRMED--}'; break;
+ case getCode('BEG_SAME_AS_OWN') : $message = '{--BEG_SAME_USERID_AS_OWN--}'; break;
+ case getCode('LOGIN_FAILED') : $message = '{--GUEST_LOGIN_FAILED_GENERAL--}'; break;
+ case getCode('MODULE_MEMBER_ONLY') : $message = '{%message,MODULE_MEMBER_ONLY=' . getRequestElement('mod') . '%}'; break;
+ case getCode('OVERLENGTH') : $message = '{--MEMBER_TEXT_OVERLENGTH--}'; break;
+ case getCode('URL_FOUND') : $message = '{--MEMBER_TEXT_CONTAINS_URL--}'; break;
+ case getCode('SUBJECT_URL') : $message = '{--MEMBER_SUBJECT_CONTAINS_URL--}'; break;
+ case getCode('BLIST_URL') : $message = '{--MEMBER_URL_BLACK_LISTED--}<br />{--MEMBER_BLIST_TIME--}: ' . generateDateTime(getRequestElement('blist'), 0); break;
+ case getCode('NO_RECS_LEFT') : $message = '{--MEMBER_SELECTED_MORE_RECS--}'; break;
+ case getCode('INVALID_TAGS') : $message = '{--MEMBER_HTML_INVALID_TAGS--}'; break;
+ case getCode('MORE_POINTS') : $message = '{--MEMBER_MORE_POINTS_NEEDED--}'; break;
+ case getCode('MORE_RECEIVERS1') : $message = '{--MEMBER_ENTER_MORE_RECEIVERS--}'; break;
+ case getCode('MORE_RECEIVERS2') : $message = '{--MEMBER_NO_MORE_RECEIVERS_FOUND--}'; break;
+ case getCode('MORE_RECEIVERS3') : $message = '{--MEMBER_ENTER_MORE_MIN_RECEIVERS--}'; break;
+ case getCode('INVALID_URL') : $message = '{--MEMBER_ENTER_INVALID_URL--}'; break;
+ case getCode('NO_MAIL_TYPE') : $message = '{--MEMBER_NO_MAIL_TYPE_SELECTED--}'; break;
+ case getCode('PROFILE_UPDATED') : $message = '{--MEMBER_PROFILE_UPDATED--}'; break;
+ case getCode('UNKNOWN_REDIRECT') : $message = '{--UNKNOWN_REDIRECT_VALUE--}'; break;
+ case getCode('WRONG_PASS') : $message = '{--LOGIN_WRONG_PASS--}'; break;
+ case getCode('WRONG_ID') : $message = '{--LOGIN_WRONG_ID--}'; break;
+ case getCode('ACCOUNT_LOCKED') : $message = '{--LOGIN_STATUS_LOCKED--}'; break;
+ case getCode('ACCOUNT_UNCONFIRMED') : $message = '{--LOGIN_STATUS_UNCONFIRMED--}'; break;
+ case getCode('COOKIES_DISABLED') : $message = '{--LOGIN_COOKIES_DISABLED--}'; break;
+ case getCode('UNKNOWN_ERROR') : $message = '{--LOGIN_UNKNOWN_ERROR--}'; break;
+ case getCode('UNKNOWN_STATUS') : $message = '{--LOGIN_UNKNOWN_STATUS--}'; break;
+ case getCode('LOGIN_EMPTY_ID') : $message = '{--LOGIN_ID_IS_EMPTY--}'; break;
+ case getCode('LOGIN_EMPTY_PASSWORD'): $message = '{--LOGIN_PASSWORD_IS_EMPTY--}'; break;
case getCode('ERROR_MAILID'):
if (isExtensionActive('mailid', true)) {
break;
default:
- // Missing/invalid code
- $message = '{%message,UNKNOWN_MAILID_CODE=' . $code . '%}';
-
- // Log it
- logDebugMessage(__FUNCTION__, __LINE__, $message);
+ // Log missing/invalid error codes
+ logDebugMessage(__FUNCTION__, __LINE__, getMessage('UNKNOWN_MAILID_CODE', $code));
break;
} // END - switch
// Function taken from user comments on www.php.net / function isInStringIgnoreCase()
function isUrlValidSimple ($url) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'url=' . $url . ' - ENTERED!');
// Prepare URL
- $url = secureString(str_replace("\\", '', compileRawCode(urldecode($url))));
+ $url = secureString(str_replace(chr(92), '', compileRawCode(urldecode($url))));
// Allows http and https
$http = "(http|https)+(:\/\/)";
} // END - foreach
// Return true/false
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'url=' . $url . ',reg=' . intval($reg) . ' - EXIT!');
return $reg;
}
$tmp = $FQFN . '.tmp';
// Open the source file
- $fp = fopen($FQFN, 'r') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read. file=' . basename($FQFN));
+ $fp = fopen($FQFN, 'r') or reportBug(__FUNCTION__, __LINE__, 'Cannot read. file=' . basename($FQFN));
// Is the resource valid?
if (is_resource($fp)) {
// Open temporary file
- $fp_tmp = fopen($tmp, 'w') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write. tmp=' . basename($tmp) . ',file=' . $FQFN);
+ $fp_tmp = fopen($tmp, 'w') or reportBug(__FUNCTION__, __LINE__, 'Cannot write. tmp=' . basename($tmp) . ',file=' . $FQFN);
// Is the resource again valid?
if (is_resource($fp_tmp)) {
if ($next > -1) {
if ($next === $seek) {
$next = -1;
- $line = $prefix . $inserted . $suffix . "\n";
+ $line = $prefix . $inserted . $suffix . chr(10);
} else {
$next++;
}
}
} else {
// File not found, not readable or writeable
- debug_report_bug(__FUNCTION__, __LINE__, 'File not readable/writeable. file=' . basename($FQFN));
+ reportBug(__FUNCTION__, __LINE__, 'File not readable/writeable. file=' . basename($FQFN));
}
// An error was detected!
return false;
}
-// Send notification to admin
-function sendAdminNotification ($subject, $templateName, $content = array(), $userid = NULL) {
- if ((isExtensionInstalledAndNewer('admins', '0.4.1')) && (function_exists('sendAdminsEmails'))) {
- // Send new way
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'admins=Y,subject=' . $subject . ',templateName=' . $templateName . ' - OKAY!');
- sendAdminsEmails($subject, $templateName, $content, $userid);
- } else {
- // Send out-dated way
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'admins=N,subject=' . $subject . ',templateName=' . $templateName . ' - OUT-DATED!');
- $message = loadEmailTemplate($templateName, $content, $userid);
- sendAdminEmails($subject, $message);
- }
-}
-
// Debug message logger
function logDebugMessage ($funcFile, $line, $message, $force=true) {
// Is debug mode enabled?
if ((isDebugModeEnabled()) || ($force === true)) {
// Remove CRLF
- $message = str_replace("\r", '', str_replace("\n", '', $message));
+ $message = str_replace(array(chr(13), chr(10)), array('', ''), $message);
// Log this message away
appendLineToFile(getPath() . getCachePath() . 'debug.log', generateDateTime(time(), '4') . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message);
if ((isset($postData[$test . '_ye'])) && (isset($postData[$test . '_mo'])) && (isset($postData[$test . '_we'])) && (isset($postData[$test . '_da'])) && (isset($postData[$test . '_ho'])) && (isset($postData[$test . '_mi'])) && (isset($postData[$test . '_se'])) && ($test != $test2)) {
// Generate timestamp
$postData[$test] = createEpocheTimeFromSelections($test, $postData);
- $content[] = sprintf("`%s`='%s'", $test, $postData[$test]);
+ array_push($content, sprintf("`%s`='%s'", $test, $postData[$test]));
$GLOBALS['skip_config'][$test] = true;
// Remove data from array
}
// Reverts the german decimal comma into Computer decimal dot
+// OPPOMENT: translateComma()
function convertCommaToDot ($str) {
// Default float is not a float... ;-)
$float = false;
break;
default: // US and so on
- // Remove thousand dots first and cast
+ // Remove thousand commatas first and cast
$float = (float)str_replace(',', '', $str);
break;
- }
+ } // END - switch
// Return float
return $float;
// Determines the real remote address
function determineRealRemoteAddress ($remoteAddr = false) {
+ // Default is 127.0.0.1
+ $address = '127.0.0.1';
+
// Is a proxy in use?
if ((isset($_SERVER['HTTP_X_FORWARDED_FOR'])) && (!$remoteAddr)) {
// Proxy was used
} elseif ((isset($_SERVER['HTTP_CLIENT_IP'])) && (!$remoteAddr)) {
// Yet, another proxy
$address = $_SERVER['HTTP_CLIENT_IP'];
- } else {
+ } elseif (isset($_SERVER['REMOTE_ADDR'])) {
// The regular address when no proxy was used
$address = $_SERVER['REMOTE_ADDR'];
}
// Determines referral id and sets it
function determineReferralId () {
+ // Do we have it already detected?
+ if (isReferralIdValid()) {
+ // Do not determine it, just return it
+ return getReferralId();
+ } // END - if
+
// Skip this in non-html-mode and outside ref.php
if ((!isHtmlOutputMode()) && (basename($_SERVER['PHP_SELF']) != 'ref.php')) {
return false;
// Set session refid as global
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using refid from SESSION data (' . getSession('refid') . ')');
setReferralId(bigintval(getSession('refid')));
- } elseif (isRandomReferralIdEnabled()) {
+ } elseif ((isExtensionInstalledAndNewer('user', '0.3.4')) && (isRandomReferralIdEnabled())) {
// Select a random user which has confirmed enougth mails
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Checking random referral id');
setReferralId(determineRandomReferralId());
runFilterChain('hourly');
}
-// Our shutdown-function
-function shutdown () {
+// Shuts down the mailer (e.g. closing database link, flushing output/filters, etc.)
+function doShutdown () {
// Call the filter chain 'shutdown'
- runFilterChain('shutdown', null);
+ runFilterChain('shutdown', NULL);
// Check if not in installation phase and the link is up
if ((!isInstallationPhase()) && (SQL_IS_LINK_UP())) {
SQL_CLOSE(__FUNCTION__, __LINE__);
} elseif (!isInstallationPhase()) {
// No database link
- debug_report_bug(__FUNCTION__, __LINE__, 'Database link is already down, while shutdown is running.');
+ reportBug(__FUNCTION__, __LINE__, 'Database link is already down, while shutdown is running.');
}
// Stop executing here
function setMemberId ($memberid) {
// We should not set member id to zero
if ($memberid == '0') {
- debug_report_bug(__FUNCTION__, __LINE__, 'Userid should not be set zero.');
+ reportBug(__FUNCTION__, __LINE__, 'Userid should not be set zero.');
} // END - if
// Set it secured
// Is the extra title set?
if (!isExtraTitleSet()) {
// No, then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'extra_title is not set!');
+ reportBug(__FUNCTION__, __LINE__, 'extra_title is not set!');
} // END - if
// Return it
*
* @param $baseDir Relative base directory to PATH to scan from
* @param $prefix Prefix for all positive matches (which files should be found)
- * @param $fileIncludeDirs Wether to include directories in the final output array
- * @param $addBaseDir Wether to add $baseDir to all array entries
+ * @param $fileIncludeDirs whether to include directories in the final output array
+ * @param $addBaseDir whether to add $baseDir to all array entries
* @param $excludeArray Excluded files and directories, these must be full files names, e.g. 'what-' will exclude all files named 'what-' but won't exclude 'what-foo.php'
* @param $extension File extension for all positive matches
* @param $excludePattern Regular expression to exclude more files (preg_match())
- * @param $recursive Wether to scan recursively
+ * @param $recursive whether to scan recursively
* @param $suffix Suffix for positive matches ($extension will be appended, too)
* @return $foundMatches All found positive matches for above criteria
*/
function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $addBaseDir = true, $excludeArray = array(), $extension = '.php', $excludePattern = '@(\.|\.\.)$@', $recursive = true, $suffix = '') {
// Add default entries we should always exclude
- $excludeArray[] = '.'; // Current directory
- $excludeArray[] = '..'; // Parent directory
- $excludeArray[] = '.svn'; // Directories created by Subversion
- $excludeArray[] = '.htaccess'; // Directory protection files (mostly)
+ array_unshift($excludeArray, '.', '..', '.svn', '.htaccess');
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'baseDir=' . $baseDir . ',prefix=' . $prefix . ' - Entered!');
// Init found includes
$foundMatches = array();
// Open directory
- $dirPointer = opendir(getPath() . $baseDir) or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read directory ' . basename($baseDir) . '.');
+ $dirPointer = opendir(getPath() . $baseDir) or reportBug(__FUNCTION__, __LINE__, 'Cannot read directory ' . basename($baseDir) . '.');
// Read all entries
while ($baseFile = readdir($dirPointer)) {
// Might be deprecated
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'File ' . $FQFN . ' is to small (' . filesize($FQFN) . ')!');
continue;
+ } elseif (($extension == '.php') && (filesize($FQFN) < 50)) {
+ // This PHP script is deprecated
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'File ' . $FQFN . ' is a deprecated PHP script!');
+ continue;
}
// Get file' extension (last 4 chars)
// Add file with or without base path
if ($addBaseDir === true) {
// With base path
- $foundMatches[] = $fileName;
+ array_push($foundMatches, $fileName);
} else {
// No base path
- $foundMatches[] = $baseFile;
+ array_push($foundMatches, $baseFile);
}
} else {
// We found .php file but should not search for them, why?
- debug_report_bug(__FUNCTION__, __LINE__, 'We should find files with extension=' . $extension . ', but we found a PHP script. (baseFile=' . $baseFile . ')');
+ reportBug(__FUNCTION__, __LINE__, 'We should find files with extension=' . $extension . ', but we found a PHP script. (baseFile=' . $baseFile . ')');
}
} elseif ($fileExtension == $extension) {
// Other, generic file found
- $foundMatches[] = $fileName;
+ array_push($foundMatches, $fileName);
}
} // END - while
return $foundMatches;
}
-// Checks wether $prefix is found in $fileName
+// Checks whether $prefix is found in $fileName
function isFilePrefixFound ($fileName, $prefix) {
// @TODO Find a way to cache this
return (substr($fileName, 0, strlen($prefix)) == $prefix);
function mapModuleToTable ($moduleName) {
// Map only these, still lame code...
switch ($moduleName) {
- // 'index' is the guest's menu
- case 'index': $moduleName = 'guest'; break;
- // ... and 'login' the member's menu
- case 'login': $moduleName = 'member'; break;
+ case 'index': // 'index' is the guest's menu
+ $moduleName = 'guest';
+ break;
+
+ case 'login': // ... and 'login' the member's menu
+ $moduleName = 'member';
+ break;
+
// Anything else will not be mapped, silently.
} // END - switch
);
// Add it
- $GLOBALS['debug_sqls'][] = $record;
+ array_push($GLOBALS['debug_sqls'], $record);
}
// Initializes the cache instance
// Check for double-initialization
if (isset($GLOBALS['cache_instance'])) {
// This should not happen and must be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Double initialization of cache system detected. cache_instance[]=' . gettype($GLOBALS['cache_instance']));
+ reportBug(__FUNCTION__, __LINE__, 'Double initialization of cache system detected. cache_instance[]=' . gettype($GLOBALS['cache_instance']));
} // END - if
// Load include for CacheSystem class
// Did it work?
if ($GLOBALS['cache_instance']->getStatusCode() != 'done') {
// Failed to initialize cache sustem
- debug_report_bug(__FUNCTION__, __LINE__, 'Cache system returned with unexpected error. getStatusCode()=' . $GLOBALS['cache_instance']->getStatusCode());
+ reportBug(__FUNCTION__, __LINE__, 'Cache system returned with unexpected error. getStatusCode()=' . $GLOBALS['cache_instance']->getStatusCode());
} // END - if
}
break;
default: // Unsupported file name / access level
- debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported file name=' . basename($file) . '/access level=' . $accessLevel);
+ reportBug(__FUNCTION__, __LINE__, 'Unsupported file name=' . basename($file) . '/access level=' . $accessLevel);
break;
- }
+ } // END - switch
// Return result
return $modCheck;
// Do we have a valid session?
if (((!isset($GLOBALS['valid_session'])) || ($GLOBALS['valid_session'] === false) || (!isset($_COOKIE[session_name()]))) && (isSpider() === false)) {
- // Invalid session
// Determine right separator
$separator = '&';
if (!isInString('?', $url)) {
// No question mark
$separator = '?';
- } elseif ((!isHtmlOutputMode()) || ($outputMode != '0')) {
- // Non-HTML mode (or forced non-HTML mode
- $separator = '&';
- }
+ } // END - if
// Add it to URL
if (session_id() != '') {
$url = '{?URL?}/' . $url;
} // END - if
- // Return the URL
+ // Do we have to decode entities?
+ if ((!isHtmlOutputMode()) || ($outputMode != '0')) {
+ // Decode them for e.g. JavaScript parts
+ $url = decodeEntities($url);
+ } // END - if
+
+ // Debug log
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'url=' . $url . ',outputMode=' . $outputMode);
+
+ // Return the encoded URL
return $url;
}
function handleFieldWithBraces ($field) {
// Are there braces [] at the end?
if (substr($field, -2, 2) == '[]') {
- // Try to find one and replace it. I do it this way to allow easy
- // extending of this code.
+ /*
+ * Try to find one and replace it. I do it this way to allow easy
+ * extending of this code.
+ */
foreach (array('admin_list_builder_id_value') as $key) {
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key);
// Is the cache entry set?
if (isset($GLOBALS[$key])) {
// Insert it
$field = str_replace('[]', '[' . $GLOBALS[$key] . ']', $field);
// And abort
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key, 'field=' . $field);
break;
} // END - if
} // END - foreach
}
/**
- * Replace "\r" with "[r]" and "\n" with "[n]" and add a final new-line to make
+ * Replace chr(13) with "[r]" and chr(10) with "[n]" and add a final new-line to make
* them visible to the developer. Use this function to debug e.g. buggy HTTP
* response handler functions.
*
* @return $str Overworked string
*/
function replaceReturnNewLine ($str) {
- return str_replace("\r", '[r]', str_replace("\n", '[n]
-', $str));
+ return str_replace(array(chr(13), chr(10)), array('[r]', '[n]'), $str);
}
// Converts a given string by splitting it up with given delimiter similar to
// "Walk" through all entries
foreach (explode($delimiter, $string) as $split) {
// Append the delimiter and add it to the array
- $strArray[] = $split . $delimiter;
+ array_push($strArray, $split . $delimiter);
} // END - foreach
// Return array
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'heystack='.$heystack.',key='.$key.',needle='.$needle.',offset='.$offset);
if (strpos($heystack, $needle, $offset) !== false) {
// Add the found key
- $keys[] = $key;
+ array_push($keys, $key);
} // END - if
} // END - foreach
return $pointsColumn;
}
-// Setter for referral id (no bigintval, or nicknames will fail!)
-function setReferralId ($refid) {
- $GLOBALS['refid'] = $refid;
-}
-
-// Checks if 'refid' is valid
-function isReferralIdValid () {
- return ((isset($GLOBALS['refid'])) && (getReferralId() !== NULL) && (getReferralId() > 0));
-}
-
-// Getter for referral id
-function getReferralId () {
- return $GLOBALS['refid'];
-}
-
// Converts a boolean variable into 'Y' for true and 'N' for false
function convertBooleanToYesNo ($boolean) {
// Default is 'N'
return $converted;
}
-// Translates task type to a human-readable version
-function translateTaskType ($taskType) {
- // Construct message id
- $messageId = 'ADMIN_TASK_TYPE_' . strtoupper($taskType) . '';
-
- // Is the message id there?
- if (isMessageIdValid($messageId)) {
- // Then construct message
- $message = '{--' . $messageId . '--}';
- } else {
- // Else it is an unknown task type
- $message = '{%message,ADMIN_TASK_TYPE_UNKNOWN=' . $taskType . '%}';
- } // END - if
-
- // Return message
- return $message;
-}
-
-// Translates points subject to human-readable
-function translatePointsSubject ($subject) {
- // Construct message id
- $messageId = 'POINTS_SUBJECT_' . strtoupper($subject) . '';
-
- // Is the message id there?
- if (isMessageIdValid($messageId)) {
- // Then construct message
- $message = '{--' . $messageId . '--}';
- } else {
- // Else it is an unknown task type
- $message = '{%message,POINTS_SUBJECT_UNKNOWN=' . $subject . '%}';
- } // END - if
-
- // Return message
- return $message;
-}
-
// "Translates" 'true' to true and 'false' to false
function convertStringToBoolean ($str) {
- // Trim it lower-case for validation
- $str = trim(strtolower($str));
+ // Debug message (to measure how often this function is called)
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'str=' . $str);
- // Is it valid?
- if (!in_array($str, array('true', 'false'))) {
- // Not valid!
- debug_report_bug(__FUNCTION__, __LINE__, 'str=' . $str . ' is not true/false');
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$str])) {
+ // Trim it lower-case for validation
+ $strTrimmed = trim(strtolower($str));
+
+ // Is it valid?
+ if (!in_array($strTrimmed, array('true', 'false'))) {
+ // Not valid!
+ reportBug(__FUNCTION__, __LINE__, 'str=' . $str . '(' . $strTrimmed . ') is not true/false');
+ } // END - if
+
+ // Determine it
+ $GLOBALS[__FUNCTION__][$str] = (($strTrimmed == 'true') ? true : false);
} // END - if
- // Return it
- return (($str == 'true') ? true : false);
+ // Return cache
+ return $GLOBALS[__FUNCTION__][$str];
}
/**
// The first character must be a dollar sign
if (substr($varString, 0, 1) != '$') {
// Please report this
- debug_report_bug(__FUNCTION__, __LINE__, 'varString=' . $varString . ' - No dollar sign detected, will not parse it.');
+ reportBug(__FUNCTION__, __LINE__, 'varString=' . $varString . ' - No dollar sign detected, will not parse it.');
} // END - if
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$varString])) {
// Snap them in, if [,] are there
- $GLOBALS[__FUNCTION__][$varString] = str_replace('[', "['", str_replace(']', "']", $varString));
+ $GLOBALS[__FUNCTION__][$varString] = str_replace(array('[', ']'), array("['", "']"), $varString);
} // END - if
// Return cache
return $GLOBALS[__FUNCTION__][$varString];
}
+// "Getter" for random TAN
+function getRandomTan () {
+ // Generate one
+ return mt_rand(0, 99999);
+}
+
+// Removes any : from subject
+function removeDoubleDotFromSubject ($subject) {
+ // Remove it
+ $subjectArray = explode(':', $subject);
+ $subject = $subjectArray[0];
+ unset($subjectArray);
+
+ // Return it
+ return $subject;
+}
+
+// Translates generically some data into a target string
+function translateGeneric ($messagePrefix, $data) {
+ // Is the method null or empty?
+ if (is_null($data)) {
+ // Is NULL
+ $data = 'NULL';
+ } elseif (empty($data)) {
+ // Is empty (string)
+ $data = 'EMPTY';
+ } // END - if
+
+ // Default column name is unknown
+ $return = '{%message,' . $messagePrefix . '_UNKNOWN=' . strtoupper($data) . '%}';
+
+ // Construct message id
+ $messageId = $messagePrefix . '_' . strtoupper($data);
+
+ // Is it there?
+ if (isMessageIdValid($messageId)) {
+ // Then use it as message string
+ $return = '{--' . $messageId . '--}';
+ } // END - if
+
+ // Return the column name
+ return $return;
+}
+
+// Translates task type to a human-readable version
+function translateTaskType ($taskType) {
+ // Return it
+ return translateGeneric('ADMIN_TASK_TYPE', $taskType);
+}
+
+// ----------------------------------------------------------------------------
+// "Translatation" functions for points_data table
+// ----------------------------------------------------------------------------
+
+// Translates points subject to human-readable
+function translatePointsSubject ($subject) {
+ // Remove any :x
+ $subject = removeDoubleDotFromSubject($subject);
+
+ // Return it
+ return translateGeneric('POINTS_SUBJECT', $subject);
+}
+
+// "Translates" the given points account type
+function translatePointsAccountType ($accountType) {
+ // Return it
+ return translateGeneric('POINTS_ACCOUNT_TYPE', $accountType);
+}
+
+// "Translates" the given points "locked mode"
+function translatePointsLockedMode ($lockedMode) {
+ // Return it
+ return translateGeneric('POINTS_LOCKED_MODE', $lockedMode);
+}
+
+// "Translates" the given points payment method
+function translatePointsPaymentMethod ($paymentMethod) {
+ // Return it
+ return translateGeneric('POINTS_PAYMENT_METHOD', $paymentMethod);
+}
+
+// "Translates" the given points account provider
+function translatePointsAccountProvider ($accountProvider) {
+ // Return it
+ return translateGeneric('POINTS_ACCOUNT_PROVIDER', $accountProvider);
+}
+
+// "Translates" the given points notify recipient
+function translatePointsNotifyRecipient ($notifyRecipient) {
+ // Return it
+ return translateGeneric('POINTS_NOTIFY_RECIPIENT', $notifyRecipient);
+}
+
//-----------------------------------------------------------------------------
// Automatically re-created functions, all taken from user comments on www.php.net
//-----------------------------------------------------------------------------
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
);
// Output message to user and die
- debug_report_bug($errfile, $errline, $message);
+ reportBug($errfile, $errline, $message);
}
// Init error handler
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Init header
-$GLOBALS['page_header'] = '';
+$GLOBALS['__page_header'] = '';
// Is the header already sent?
-if (($GLOBALS['header_sent'] != 1) && ($GLOBALS['header_sent'] != 2)) {
+if (($GLOBALS['__header_sent'] != 1) && ($GLOBALS['__header_sent'] != 2)) {
// Set default HTTP status to "200 OK"
setHttpStatus('200 OK');
} // END - if
// Closing HEAD tag
- if ($GLOBALS['header_sent'] == '0') {
- $GLOBALS['header_sent'] = 1;
+ if ($GLOBALS['__header_sent'] == '0') {
+ $GLOBALS['__header_sent'] = 1;
} // END - if
} // END - if
// Add BODY tag or not?
-if ((!isCssOutputMode()) && (!isRawOutputMode()) && ($GLOBALS['header_sent'] == 1) && ((getModule() != 'frametester') || (isGetRequestElementSet('frame')))) {
+// @TODO Find a way to not use direct module comparison
+if ((!isCssOutputMode()) && (!isRawOutputMode()) && ($GLOBALS['__header_sent'] == 1) && (getModule() != 'frametester') && (!isFramesetModeEnabled())) {
loadTemplate('page_body');
- $GLOBALS['header_sent'] = 2;
+ $GLOBALS['__header_sent'] = 2;
} // END - if
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
die();
} // END - if
+// Initialize HTTP handling
+function initHttp () {
+ // Initialize array
+ $GLOBALS['http_header'] = array();
+}
+
// Sends out all headers required for HTTP/1.1 reply
function sendHttpHeaders () {
// Used later
addHttpHeader('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
addHttpHeader('Pragma: no-cache'); // HTTP/1.0
addHttpHeader('Connection: Close');
- // There shall be no output mode in raw/AJAX mode
- if ((!isRawOutputMode()) && (!isAjaxOutputMode())) {
- // Send content-type only in CSS/HTML mode
+
+ // There shall be no output mode in raw output-mode
+ if (!isRawOutputMode()) {
+ // Send content-type not in raw output-mode
addHttpHeader('Content-Type: ' . getContentType() . '; charset=UTF-8');
- } else {
- //
} // END - if
+
+ // Add language
addHttpHeader('Content-Language: ' . getLanguage());
}
-// Checks wether the URL is full-qualified (http[s]:// + hostname [+ request data])
+// Checks whether the URL is full-qualified (http[s]:// + hostname [+ request data])
function isFullQualifiedUrl ($url) {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$url])) {
break;
default: // Unsupported HTTP request, this is really bad and needs fixing
- debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported request detected. requestType=' . $requestType . ',baseUrl=' . $baseUrl . ',requestData()=' . count($requestData));
+ reportBug(__FUNCTION__, __LINE__, 'Unsupported request detected. requestType=' . $requestType . ',baseUrl=' . $baseUrl . ',requestData()=' . count($requestData));
break;
} // END - switch
return $response;
}
-// Send a POST request
-function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) {
+// Send a POST request, sometimes even POST requests have no parameters
+function sendPostRequest ($baseUrl, $requestData = array(), $removeHeader = false) {
// Copy baseUrl to getUrl
$getUrl = $baseUrl;
$port = $portArray[1];
} elseif (count($portArray) > 2) {
// This should not happen!
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid ' . $host . '. Please report this to the Mailer-Project team.');
+ reportBug(__FUNCTION__, __LINE__, 'Invalid ' . $host . '. Please report this to the Mailer-Project team.');
}
// Get resolver instance
// Add it to response
//* DEBUG: */ print 'line='.$line.'<br />';
- $response[] = $line;
+ array_push($response, $line);
} // END - while
// Close socket
//* DEBUG: */ die('tempResponse['.strlen($tempResponse).']=<pre>'.replaceReturnNewLine(htmlentities($tempResponse)).'</pre>');
// Re-add the headers
- $response = merge_array($GLOBALS['http_headers'], stringToArray("\n", $tempResponse));
+ $response = merge_array($GLOBALS['http_headers'], stringToArray(chr(10), $tempResponse));
} // END - if
// Return the unchunked array
array_shift($response2);
// Add full line to temporary global array
- $GLOBALS['http_headers'][] = $line;
+ array_push($GLOBALS['http_headers'], $line);
// Trim it for testing
$lineTest = trim($line);
function addHttpHeader ($header) {
// Send the header
//* DEBUG: */ logDebugMessage(__FUNCTION__ . ': header=' . $header);
- $GLOBALS['http_header'][] = trim($header);
+ array_push($GLOBALS['http_header'], trim($header));
}
// Flushes all HTTP headers
// Is the header already sent?
if (headers_sent()) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Headers already sent!');
- } // END - if
+ reportBug(__FUNCTION__, __LINE__, 'Headers already sent!');
+ } elseif ((!isset($GLOBALS['http_header'])) || (!is_array($GLOBALS['http_header']))) {
+ // Not set or not an array
+ reportBug(__FUNCTION__, __LINE__, 'Headers not set or not an array, isset()=' . isset($GLOBALS['http_header']) . ', please report this.');
+ }
// Flush all headers if found
- if ((isset($GLOBALS['http_header'])) && (is_array($GLOBALS['http_header']))) {
- foreach ($GLOBALS['http_header'] as $header) {
- header($header);
- } // END - foreach
- } // END - if
+ foreach ($GLOBALS['http_header'] as $header) {
+ // Send a single header
+ header($header);
+ } // END - foreach
// Mark them as flushed
$GLOBALS['http_header'] = array();
* dechunk an HTTP 'transfer-encoding: chunked' message.
*
* @param $chunk The encoded message
- * @return $dechunk The decoded message. If $chunk wasn't encoded properly debug_report_bug() is being called
+ * @return $dechunk The decoded message. If $chunk wasn't encoded properly reportBug() is being called
* @author Marques Johansson (initial author)
* @author Roland Haeder (heavy modifications and simplification)
* @link http://php.net/manual/en/function.http-chunked-decode.php#89786
if (!isHexadecimal($chunkLenHex)) {
// Please help debugging this
//* DEBUG: */ die('ABORT:chunkLenHex=<pre>'.replaceReturnNewLine(htmlentities($chunkLenHex)).'</pre>');
- debug_report_bug(__FUNCTION__, __LINE__, 'Value ' . $chunkLenHex . ' is no valid hexa-decimal string.');
+ reportBug(__FUNCTION__, __LINE__, 'Value ' . $chunkLenHex . ' is no valid hexa-decimal string.');
// This won't be reached
return $chunk;
}
} // END - if
+// Getter for request method
+function getHttpRequestMethod () {
+ // Console is default
+ $requestMethod = 'console';
+
+ // Is it set?
+ if (isset($_SERVER['REQUEST_METHOD'])) {
+ // Get current request method
+ $requestMethod = $_SERVER['REQUEST_METHOD'];
+ } // END - if
+
+ // Return it
+ return $requestMethod;
+}
+
+// Checks if 'content_type' is set
+function isContentTypeSet () {
+ return isset($GLOBALS['content_type']);
+}
+
+// Setter for content type
+function setContentType ($contentType) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'contentType=' . $contentType);
+ $GLOBALS['content_type'] = (string) $contentType;
+}
+
+// Getter for content type
+function getContentType () {
+ // Is it there?
+ if (!isContentTypeSet()) {
+ // Please fix this
+ reportBug(__FUNCTION__, __LINE__, 'content_type not set in GLOBALS array.');
+ } // END - if
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content_type=' . $GLOBALS['content_type']);
+ return $GLOBALS['content_type'];
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Init INC_POOL
function initIncludePool ($pool) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
$GLOBALS['inc_pool'][$pool] = array();
}
// Setter for INC_POOL
function setIncludePool ($pool, $includePool) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
$GLOBALS['inc_pool'][$pool] = (array) $includePool;
}
// Getter for INC_POOL
function getIncludePool ($pool) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
+ // Default is empty pool
+ $poolArray = array();
+
+ // Is it set?
if (isset($GLOBALS['inc_pool'][$pool])) {
// Return found pool (array)
- return $GLOBALS['inc_pool'][$pool];
- } else {
- // Return empty array if not found
- return array();
- }
+ $poolArray = $GLOBALS['inc_pool'][$pool];
+ } // END - if
+
+ // Return it
+ return $poolArray;
}
// Count INC_POOL
function countIncludePool ($pool) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
return count($GLOBALS['inc_pool'][$pool]);
}
// Merge INC_POOL into given
function mergeIncludePool ($pool, $includePool) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
setIncludePool($pool, merge_array(getIncludePool($pool), $includePool));
}
// Add single include file to INC_POOL
function addIncludeToPool ($pool, $inc) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
- $GLOBALS['inc_pool'][$pool][] = (string) $inc;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
+ array_push($GLOBALS['inc_pool'][$pool], $inc);
}
// Remove an include file from INC_POOL
function removeIncludeFromPool ($pool, $inc) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool);
// First look it up
$key = array_search($inc, getIncludePool($pool));
// Load the whole include pool
function loadIncludePool ($pool) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool.' - START');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool.' - START');
foreach (getIncludePool($pool) as $inc) {
//* DEBUG: */ debugOutput(__FUNCTION__.':inc='.$inc);
loadIncludeOnce($inc);
} // END - foreach
- //* DEBUG: */ debugOutput(__FUNCTION__.':pool='.$pool.' - END');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'pool=' . $pool.' - END');
// Remove it
initIncludePool($pool);
function loadInclude ($inc) {
// Do we have cache?
if (!isset($GLOBALS['inc_loaded'][$inc])) {
- // Add the path. This is why we need a trailing slash in config.php
- $GLOBALS['inc_loaded'][$inc] = getPath() . $inc;
-
// Is the include file there?
if (!isIncludeReadable($inc)) {
// Not there so log it
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Include file %s not found or deprecated.", $inc));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Include file %s not found or deprecated.", $inc));
} // END - if
+
+ // Add the path. This is why we need a trailing slash in config.php
+ $GLOBALS['inc_loaded'][$inc] = getPath() . $inc;
} // END - if
// Try to load it
} // END - if
}
-// Checks wether an include file (non-FQFN better) is readable
+// Checks whether an include file (non-FQFN better) is readable
function isIncludeReadable ($inc) {
// Do we have cache?
if (!isset($GLOBALS['inc_readable'][$inc])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
************************************************************************/
// Some security stuff...
-if (!defined('__SECURITY')) {
+if ((!defined('__SECURITY')) || (!isInstallationPhase())) {
die();
} // END - if
+// Init installer
+function initInstaller () {
+ // Initialize installer group array
+ $GLOBALS['installer_groups'] = array(
+ // base_data
+ 'base_path' => 'base_data',
+ 'base_url' => 'base_data',
+ 'main_title' => 'base_data',
+ 'slogan' => 'base_data',
+ 'webmaster' => 'base_data',
+ // database_config
+ 'mysql_host' => 'database_config',
+ 'mysql_dbase' => 'database_config',
+ 'mysql_prefix' => 'database_config',
+ 'mysql_type' => 'database_config',
+ 'mysql_login' => 'database_config',
+ 'mysql_password1' => 'database_config',
+ 'mysql_password2' => 'database_config',
+ // smtp_config
+ 'smtp_host' => 'smtp_config',
+ 'smtp_user' => 'smtp_config',
+ 'smtp_password1' => 'smtp_config',
+ 'smtp_password2' => 'smtp_config',
+ // other_config
+ 'output_mode' => 'other_config',
+ 'warn_no_pass' => 'other_config',
+ 'write_footer' => 'other_config',
+ 'enable_backlink' => 'other_config',
+ );
+}
+
// Write the local config-local.php file from "template"
-function doInstallWriteLocalConfig () {
+function doInstallWriteLocalConfigurationFile ($path) {
// Copy the config template and verify it
- copyFileVerified(postRequestElement('spath') . 'inc/config-local.php.dist', getPath() . getCachePath() . 'config-local.php', 0644);
+ copyFileVerified(postRequestElement('spath') . 'inc/config-local.php.dist', postRequestElement('spath') . getCachePath() . 'config-local.php', 0644);
// Ok, all done. So we can write the config data to the php files
+ // Do only write these if they differ from auto-detected values
if (postRequestElement('spath') != getPath()) changeDataInLocalConfigurationFile('SERVER-PATH', "setConfigEntry('PATH', '", "');", postRequestElement('spath'), 0);
if (postRequestElement('burl') != getUrl()) changeDataInLocalConfigurationFile('HOST-URL', "setConfigEntry('URL', '", "');", postRequestElement('burl'), 0);
+
+ // Write more data
changeDataInLocalConfigurationFile('MAIN-TITLE', "setConfigEntry('MAIN_TITLE', '", "');", postRequestElement('title'), 0);
changeDataInLocalConfigurationFile('SLOGAN', "setConfigEntry('SLOGAN', '", "');", postRequestElement('slogan'), 0);
changeDataInLocalConfigurationFile('WEBMASTER', "setConfigEntry('WEBMASTER', '", "');", postRequestElement('email'), 0);
changeDataInLocalConfigurationFile('SMTP-USER', "setConfigEntry('SMTP_USER', '", "');", postRequestElement('smtp_user'), 0);
changeDataInLocalConfigurationFile('SMTP-PASSWORD', "setConfigEntry('SMTP_PASSWORD', '", "');", postRequestElement('smtp_pass1'), 0);
- // Generate a long site key
- $siteKey = generatePassword(50);
-
- // And write it
- changeDataInLocalConfigurationFile('SITE-KEY', "setConfigEntry('SITE_KEY', '", "');", $siteKey, 0);
+ // Generate a long site-key and write it
+ changeDataInLocalConfigurationFile('SITE-KEY', "setConfigEntry('SITE_KEY', '", "');", generatePassword(50), 0);
// Script is now installed
changeDataInLocalConfigurationFile('INSTALLED', "setConfigEntry('MXCHANGE_INSTALLED', '", "');", 'Y', 0);
$content = readFromFile($FQFN);
// Remove some unwanted chars
- $content = str_replace("\r", '', $content);
- $content = str_replace("\n\n", "\n", $content);
+ $content = str_replace(chr(13), '', $content);
+ $content = str_replace("\n\n", chr(10), $content);
// Return the content
return $content;
}
+// Generates the installer menu by simply loading another template
+function generateInstallerMenu () {
+ // Load installer menu template
+ $OUT = loadTemplate('install_menu', true);
+
+ // Return loaded content
+ return $OUT;
+}
+
+// Generate the install footer navigation by simply loading another template
+function generateInstallerFooterNavigation () {
+ // Load installer menu template
+ $OUT = loadTemplate('install_footer', true);
+
+ // Return loaded content
+ return $OUT;
+}
+
+// Generate an option list for database types for given default value
+function generateInstallerDatabaseTypeOptions () {
+ return generateOptions(
+ '/ARRAY/',
+ array('MyISAM', 'InnoDB'),
+ array('{--INSTALLER_TABLE_TYPE_MYISAM--}', '{--INSTALLER_TABLE_TYPE_INNODB--}'),
+ getSession('mysql_type')
+ );
+}
+
+// Generate an option list for output mode types for given default value
+function generateInstallerOutputModeOptions ($defaultValue) {
+ return generateOptions(
+ '/ARRAY/',
+ array('render', 'direct'),
+ array('{--INSTALLER_MODE_RENDER--}', '{--INSTALLER_MODE_DIRECT--}'),
+ $defaultValue
+ );
+}
+
+// Checks whether we have an AJAX-enabled installer which defaults to red pill
+function isAjaxInstaller () {
+ // Get the session data and compare it against 'ajax'
+ $isAjaxInstaller = (getSession('installer') == 'ajax');
+
+ // Return it
+ return $isAjaxInstaller;
+}
+
+// Checks whether we have an plain installer which defaults to red pill
+function isPlainInstaller () {
+ // Get the session data and compare it against 'plain'
+ $isPlainInstaller = (getSession('installer') == 'plain');
+
+ // Return it
+ return $isPlainInstaller;
+}
+
+// Checks given key/value pair if it is valid by a call-back
+function isInstallerDataValid (&$saveStatus, $key, $value) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ' - ENTERED!');
+ // Generate call-back function based on given key
+ $callbackName = 'isInstaller' . capitalizeUnderscoreString($key) . 'Valid';
+
+ // Is the function there?
+ if (!function_exists($callbackName)) {
+ // Not found, which is not bad, but it means this data is always valid
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callbackName . ' not found. saveStatus[status]=' . $saveStatus['status'] . ', key=' . $key . ', value=' . $value);
+
+ // All fine (CAREFULL!)
+ return true;
+ } // END - if
+
+ // Then call it back
+ $isValid = (bool) call_user_func($callbackName, $value);
+
+ // Is it not valid?
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',isValid=' . intval($isValid));
+ if ($isValid === false) {
+ // Then add it to saveStatus
+ array_push($saveStatus['failed_fields'], $key);
+ } // END - if
+
+ // Return status
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',value=' . $value . ',isValid=' . intval($isValid) . ' - EXIT!');
+ return $isValid;
+}
+
+// Post-check on installer data
+function doInstallerPostCheck ($currentTab, &$saveStatus) {
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentTab=' . $currentTab . ',saveStatus[status]=' . $saveStatus['status'] . ' - ENTERED!');
+
+ // Create the call-back function on 'tab'
+ $callbackName = 'isInstallerPost' . capitalizeUnderscoreString($currentTab) . 'Valid';
+
+ // Is the function there?
+ if (!function_exists($callbackName)) {
+ // Not found, which is not bad, but it means the post-check won't be run
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callbackName . ' not found. saveStatus[status]=' . $saveStatus['status'] . ', currentTab=' . $currentTab);
+
+ // Abort here
+ return;
+ } // END - if
+
+ // Init 'tab-specific error message'
+ $GLOBALS['installer_post_error'][$currentTab] = '';
+ $GLOBALS['installer_failed_fields'][$currentTab] = array();
+
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Calling function ' . $callbackName . ',currentTab=' . $currentTab . ',saveStatus[status]=' . $saveStatus['status']);
+
+ // Then call it back
+ $isValid = (bool) call_user_func($callbackName, $currentTab);
+
+ // Is it not valid?
+ if (($isValid === false) || (count($GLOBALS['installer_failed_fields'][$currentTab]) > 0)) {
+ // Then change status and message
+ $saveStatus['status'] = 'failed';
+ $saveStatus['message'] = '{%message,INSTALLER_POST_CHECK_' . strtoupper($currentTab) . '_FAILED=' . $GLOBALS['installer_post_error'][$currentTab] . '%}';
+
+ // Do we have failed fields?
+ if (count($GLOBALS['installer_failed_fields'][$currentTab]) > 0) {
+ // Then merge both
+ $saveStatus['failed_fields'] = merge_array($saveStatus['failed_fields'], $GLOBALS['installer_failed_fields'][$currentTab]);
+ } // END - if
+ } // END - if
+
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentTab=' . $currentTab . ',saveStatus[status]=' . $saveStatus['status'] . ' - EXIT!');
+}
+
+// Determines an installer group by given key
+function determineInstallerGroupByKey ($key) {
+ // Try to look it up
+ if (!isset($GLOBALS['installer_groups'][$key])) {
+ // Log missing entry
+ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot determine installer group, returning dummy group. key=' . $key);
+
+ // Return dummy group
+ return 'dummy';
+ } // END - if
+
+ // Return it
+ return $GLOBALS['installer_groups'][$key];
+}
+
+// Adds given key/value pair to an overview group
+function addKeyValueToInstallerOverviewGroup ($key, $value) {
+ // First determine the group by given key
+ $group = determineInstallerGroupByKey($key);
+
+ // Depending on the group, add it for later usage (to render the overview page)
+ $GLOBALS['installer_overview'][$group][$key] = $value;
+}
+
+//-----------------------------------------------------------------------------
+// Call-back functions to check validity
+//-----------------------------------------------------------------------------
+
+// ----------------- Base data -----------------
+
+// Call-back function to check validity of 'base_path'
+function isInstallerBasePathValid ($value) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - ENTERED!');
+ // Is it a directory and if some typical files could be found
+ $isValid = (
+ // Is it a directory?
+ (isDirectory($value))
+ &&
+ // Is there a trailing slash?
+ (substr($value, -1, 1) == '/')
+ &&
+ // Is mysql-manager.php there?
+ (isFileReadable($value . 'inc/mysql-manager.php'))
+ &&
+ // What about gen_sql_patches.php?
+ (isFileReadable($value . 'inc/gen_sql_patches.php'))
+ );
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ',isValid=' . intval($isValid) . ' - EXIT');
+ return $isValid;
+}
+
+// Call-back function to check validity of 'base_url'
+function isInstallerBaseUrlValid ($value) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - ENTERED!');
+ // Is it same as URL
+ $isValid = (
+ // Same as URL?
+ ($value == getUrl())
+ || (
+ // Starts with http:// or https:// ?
+ ((substr($value, 0, 7) == 'http://') || (substr($value, 0, 8) == 'https://'))
+ &&
+ // Has no trailing slash?
+ (substr($value, -1, 1) != '/')
+ &&
+ // And total length is at least 6+8=14 chars long? (https://foo.ba)
+ (strlen($value) >= 14)
+ &&
+ // Is the URL valid?
+ (isUrlValid($value))
+ ));
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ',isValid=' . intval($isValid) . ' - EXIT');
+ return $isValid;
+}
+
+// Call-back function to check validity of 'webmaster'
+function isInstallerWebmasterValid ($value) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - ENTERED!');
+ // Is it a valid email address?
+ $isValid = (
+ // Is it a valid email address?
+ (isEmailValid($value))
+ ||
+ // Or do we have 'localhost/127.0.0.1' as hostname? Then don't check email address (e.g. you@localhost)
+ (in_array(detectServerName(), array('localhost', '127.0.0.1')))
+ );
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ',isValid=' . intval($isValid) . ' - EXIT');
+ return $isValid;
+}
+
+// ----------------- Database configuration -----------------
+
+// Call-back function to check validity of 'mysql_host'
+function isInstallerMysqlHostValid ($value) {
+ // This value must match a hostname or IP address
+ $isValid = (
+ // Is localhost/127.0.0.1? (mostly the case)
+ (in_array($value, array('localhost', '127.0.0.1')))
+ ||
+ // IP number match (this regex was taken from www.regexlib.com)
+ (preg_match('/((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]))/', $value))
+ ||
+ // Host name match
+ (preg_match('/([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}/', $value))
+ );
+
+ // Return it
+ return $isValid;
+}
+
+// Call-back function to check validity of 'mysql_type'
+function isInstallerMysqlTypeValid ($value) {
+ // This value must be 'MyISAM' or 'InnoDB'
+ $isValid = in_array($value, array('MyISAM', 'InnoDB'));
+
+ // Return it
+ return $isValid;
+}
+
+// ----------------- SMTP configuration -----------------
+
+// ----------------- Other configuration -----------------
+
+//-----------------------------------------------------------------------------
+// Call-back functions to post-check validity
+//-----------------------------------------------------------------------------
+
+// Call-back function to check if database configuration in POST is valid
+function isInstallerPostDatabaseConfigValid ($currentTab) {
+ // By default nothing is valid
+ $isValid = false;
+ $engineValid = false;
+ $missingTables = 0;
+
+ // Do both passwords match?
+ if ((!isPostRequestElementSet('mysql_password1')) && (isPostRequestElementSet('mysql_password2'))) {
+ // Password 1 not set
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_PASSWORD1_EMPTY--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_password1');
+ return false;
+ } elseif ((isPostRequestElementSet('mysql_password1')) && (!isPostRequestElementSet('mysql_password2'))) {
+ // Password 2 not set
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_PASSWORD2_EMPTY--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_password2');
+ return false;
+ } elseif (postRequestElement('mysql_password1') != postRequestElement('mysql_password2')) {
+ // Passwords mismatch
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_PASSWORDS_MISMATCH--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_password1', 'mysql_password2');
+ return false;
+ } // END - if
+
+ // Restore PHP's own error handler
+ if (!restore_error_handler()) {
+ // This is fatal
+ reportBug(__FUNCTION__, __LINE__, 'Could not unregister error handler.');
+ } // END - if
+
+ // Try to connect to the database
+ $linkResource = SQL_CONNECT(postRequestElement('mysql_host'), postRequestElement('mysql_login'), postRequestElement('mysql_password1'), __FUNCTION__, __LINE__);
+
+ // Is the link up
+ if (!is_resource($linkResource)) {
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // Cannot connect to database
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_CONNECT_ERROR--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_login', 'mysql_password1', 'mysql_password2');
+ return false;
+ } // END - if
+
+ // Then attempt to select the database
+ if (!SQL_SELECT_DB(postRequestElement('mysql_dbase'), __FUNCTION__, __LINE__)) {
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // Could not find database
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_SELECT_FAILED--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_dbase');
+ return false;
+ } // END - if
+
+ // Set database name and prefix
+ setConfigEntry('__DB_NAME' , postRequestElement('mysql_dbase'));
+ setConfigEntry('_MYSQL_PREFIX', postRequestElement('mysql_prefix'));
+
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // Get an array of all supported engines
+ $engines = getArrayFromSupportedSqlEngines();
+
+ // Is this an array?
+ if (!is_array($engines)) {
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // Something bad happened
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_ENGINES_SQL_ERROR--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_type');
+ return false;
+ } elseif (count($engines) == 0) {
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // No engine is active
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_NO_ENGINES_ACTIVE--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_type');
+ return false;
+ }
+
+ // Then check all, if the requested is working
+ foreach ($engines as $engineArray) {
+ // By default the selected engine is not valid
+ $engineValid = false;
+
+ // Is the engine there?
+ if (strtolower($engineArray['Engine']) == strtolower(postRequestElement('mysql_type'))) {
+ // Okay, engine is found
+ $engineValid = true;
+ break;
+ } // END - if
+ } // END - foreach
+
+ // So, is the engine found?
+ if ($engineValid === false) {
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // Requested engine is not active
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_ENGINE_UNSUPPORTED--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_type');
+ return false;
+ } // END - if
+
+ // Init some known tables
+ $tables = array(
+ // Admins
+ 'admins' => true,
+ // Admin menu
+ 'admin_menu' => true,
+ // Categories
+ 'cats' => true,
+ // Configuration
+ 'config' => true,
+ // Extensions
+ 'extensions' => true,
+ // Guest menu
+ 'guest_menu' => true,
+ // Max receive
+ 'max_receive' => true,
+ // Member menu
+ 'member_menu' => true,
+ // Module registry
+ 'mod_reg' => true,
+ // Payments
+ 'payments' => true,
+ // Sending pool
+ 'pool' => true,
+ // Referral banner
+ 'refbanner' => true,
+ // Referral levels
+ 'refdepths' => true,
+ // Referral system
+ 'refsystem' => true,
+ // Task system
+ 'task_system' => true,
+ );
+
+ // So check if all tables are not there
+ foreach ($tables as $tableName => $isFound) {
+ // Check it out
+ $tables[$tableName] = isSqlTableCreated($tableName);
+
+ // Is it (hopefully not) there?
+ if ($tables[$tableName] === false) {
+ // This does not exist
+ $missingTables++;
+ } // END - if
+ } // END - foreach
+
+ // Determine final status (simply compare both counts
+ $isValid = (count($tables) == $missingTables);
+
+ // Disconnect here, we don't need idle database connections laying around
+ SQL_CLOSE(__FUNCTION__, __LINE__);
+
+ // Restore own error handler again
+ set_error_handler('__errorHandler');
+
+ // If the status is true, disconnect the database
+ if ($isValid === false) {
+ // Still something bad happened (e.g. tables found)
+ $GLOBALS['installer_post_error'][$currentTab] = '{--INSTALLER_POST_DATABASE_IN_USE--}';
+ array_push($GLOBALS['installer_failed_fields'][$currentTab], 'mysql_dbase');
+ } // END - if
+
+ // Return status
+ return $isValid;
+}
+
+// Call-back function to check if enable_backlink is Y/N
+function isInstallerEnableBacklinkValid ($currentTab) {
+ // Check and return it
+ return in_array($currentTab, array('Y', 'N'));
+}
+
+// Call-back function to check if warn_no_pass is Y/N
+function isInstallerWarnNoPassValid ($currentTab) {
+ // Check and return it
+ return in_array($currentTab, array('Y', 'N'));
+}
+
+// Call-back function to check if write_footer is Y/N
+function isInstallerWriteFooterValid ($currentTab) {
+ // Check and return it
+ return in_array($currentTab, array('Y', 'N'));
+}
+
+// Call-back function to check if output_mode is Y/N
+function isInstallerOutputModeValid ($currentTab) {
+ // Check and return it
+ return in_array($currentTab, array('render', 'direct'));
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* MA 02110-1301 USA *
************************************************************************/
-/************************************************************************
- * YOU MAY ALSO WANT TO REMOVE THIS FILE AFTER INSTALLTION! *
- ************************************************************************/
-
// Some security stuff...
-if (!defined('__SECURITY')) {
+if ((!defined('__SECURITY')) || (!isInstallationPhase())) {
die();
} // END - if
// Init variables
$GLOBALS['install_mysql'] = array();
-if ((isPostRequestElementSet('mysql')) && (is_array(postRequestElement('mysql')))) {
+if ((isPostRequestElementSet('mysql')) && (ifPostContainsSelections('mysql'))) {
// Transfer 'mysql' array
$GLOBALS['install_mysql'] = postRequestElement('mysql');
} // END - if
// Check if both passwords from SMTP are matching
-if ((isGetRequestElementSet('page') && (getRequestElement('page') == 5))) {
+if ((isGetRequestElementSet('install_page') && (getRequestElement('install_page') == 5))) {
// Okay, we have to check it
if (isPostRequestElementSet('smtp_user') && (!isPostRequestElementSet('smtp_host'))) {
// Hostname not set
- addToInstallContent('<div class="para">{--INSTALL_SMTP_HOSTNAME_EMPTY--}</div>');
- setGetRequestElement('page', 3);
+ addToInstallContent('<div class="para">{--INSTALLER_SMTP_HOSTNAME_EMPTY--}</div>');
+ setGetRequestElement('install_page', 3);
} // END - if
if ((!isPostRequestElementSet('smtp_pass1')) && (isPostRequestElementSet('smtp_pass2'))) {
// Password is empty
- addToInstallContent('<div class="para">{--INSTALL_SMTP_PASSWORD1_EMPTY--}</div>');
- setGetRequestElement('page', 3);
+ addToInstallContent('<div class="para">{--INSTALLER_SMTP_PASSWORD1_EMPTY--}</div>');
+ setGetRequestElement('install_page', 3);
} // END - if
if ((isPostRequestElementSet('smtp_pass1')) && (!isPostRequestElementSet('smtp_pass2'))) {
// Password repeat is empty
- addToInstallContent('<div class="para">{--INSTALL_SMTP_PASSWORD2_EMPTY--}</div>');
- setGetRequestElement('page', 3);
+ addToInstallContent('<div class="para">{--INSTALLER_SMTP_PASSWORD2_EMPTY--}</div>');
+ setGetRequestElement('install_page', 3);
} // END - if
if (postRequestElement('smtp_pass1') != postRequestElement('smtp_pass1')) {
// Passwords are not matching
- addToInstallContent('<div class="para">{--INSTALL_SMTP_PASS_MISMATCH--}</div>');
- setGetRequestElement('page', 3);
+ addToInstallContent('<div class="para">{--INSTALLER_SMTP_PASS_MISMATCH--}</div>');
+ setGetRequestElement('install_page', 3);
} // END - if
} // END - if
// Is the mailer installed or no admin registered so far?
if ((!isInstalled()) || (!isAdminRegistered())) {
// Output page for entered value
- switch (getRequestElement('page')) {
+ switch (getRequestElement('install_page')) {
case 'welcome': // Welcome to the installation!
addTemplateToInstallContent('install_welcome');
break;
// Check for dumps
if ((!isFileReadable(postRequestElement('spath') . 'install/tables.sql')) || (!isFileReadable(postRequestElement('spath') . 'install/menu-'.getLanguage().'.sql'))) {
// Installation area not found
- debug_report_bug(__FILE__, __LINE__, 'SQL dumps not found. Please extract ALL files from the archive or checkout all files out from SVN.');
+ reportBug(__FILE__, __LINE__, 'SQL dumps not found. Please extract ALL files from the archive or checkout all files out from SVN.');
return;
} // END - if
// Any errors detected?
if (!ifFatalErrorsDetected()) {
- // Set type and prefix from POST data
+ // Set type, prefix from POST data and database name for later queries
setConfigEntry('_TABLE_TYPE' , postRequestElement('mysql', 'type'));
setConfigEntry('_MYSQL_PREFIX', postRequestElement('mysql', 'prefix'));
+ setConfigEntry('__DB_NAME' , $GLOBALS['install_mysql']['dbase']);
// Both exists so import them
foreach (array('tables', 'menu-'.getLanguage()) as $dump) {
mergeSqls(explode(";\n", $fileContent), 'install');
} else {
// Not readable!
- debug_report_bug(__FILE__, __LINE__, sprintf("SQL dump %s is not readable!", $dump));
+ reportBug(__FILE__, __LINE__, sprintf("SQL dump %s is not readable.", $dump));
}
} // END - foreach
//* DEBUG: */ die(__FUNCTION__.'['.__LINE__.']:'<pre>'.print_r(getSqls(), true).'</pre>');
// Are some SQLs found?
if (countSqls() == 0) {
// Abort here
- addFatalMessage(__FILE__, __LINE__, '{--INSTALL_SQL_IMPORT_FAILED--}');
+ addFatalMessage(__FILE__, __LINE__, '{--INSTALLER_SQL_IMPORT_FAILED--}');
return;
} // END - if
- // Now run all queries through and try to keep out empty or comment queries
+ // Now run all queries through
runFilterChain('run_sqls');
// Copy the config template and verify it
- doInstallWriteLocalConfig();
+ doInstallWriteLocalConfigurationFile(postRequestElement('spath'));
} // END - if
} // END - if
} // END - if
+ // Are some fatal errors there?
if (ifFatalErrorsDetected()) {
$OUT = '';
foreach (getFatalArray() as $value) {
// We have handled all fatal errors here
initFatalMessages();
} else {
- // Installation is done!
- redirectToUrl('install.php?page=finished');
+ // Register ext-sql_patches
+ if ((registerExtension('sql_patches', NULL)) && (registerExtension('task', NULL))) {
+ // Installation is done!
+ redirectToUrl('install.php?install_page=finished');
+ } else {
+ // Something goes wrong on registration of ext-sql_patches
+ addFatalMessage(__FILE__, __LINE__, '{--INSTALLER_FINALIZER_CANNOT_REGISTER_SQL_PATCHES--}');
+ }
}
} else {
// Something goes wrong during installation! :-(
- addFatalMessage(__FILE__, __LINE__, '{--INSTALL_FINALIZER_FAILED--}');
+ addFatalMessage(__FILE__, __LINE__, '{--INSTALLER_FINALIZER_FAILED--}');
}
break;
break;
default:
- logDebugMessage(__FILE__, __LINE__, sprintf("Wrong page %s detected", getRequestElement('page')));
+ logDebugMessage(__FILE__, __LINE__, sprintf("Wrong install_page=%s detected", getRequestElement('install_page')));
addTemplateToInstallContent('admin_settings_unsaved', '{--WRONG_PAGE--}');
break;
} // END - switch
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/24/2012 *
+ * =================== Last change: 06/24/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : js-admin_ajax.php *
+ * -------------------------------------------------------------------- *
+ * Short description : JavaScript tag for ext- *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : JavaScript-Tag fuer ext- *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} elseif (!isAdmin()) {
+ return;
+}
+
+// Init content
+$content = array(
+ 'admin_page' => getRequestElement('admin_page')
+);
+
+// Simply load the JavaScript here
+loadTemplate('js_admin_ajax', false, $content);
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 09/19/2011 *
+ * =================== Last change: 09/19/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : js-install_ajax.php *
+ * -------------------------------------------------------------------- *
+ * Short description : JavaScript tag for ext- *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : JavaScript-Tag fuer ext- *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} elseif (!isInstallationPhase()) {
+ return;
+}
+
+// Init content
+$content = array(
+ 'install_page' => getRequestElement('install_page')
+);
+
+// Simply load the JavaScript here
+loadTemplate('js_install_ajax', false, $content);
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
// Init surfbar
-SURFBAR_INIT();
+initSurfbar();
// Init data
-SURFBAR_DETERMINE_NEXT_ID(getRequestElement('url_id'));
+determineSurfbarNextId(getRequestElement('url_id'));
// Check reload-locks
-SURFBAR_CHECK_RELOAD_FULL();
+isSurfbarReloadFull();
// Prepare content
$content = array(
'url_id' => bigintval(getRequestElement('url_id')),
- 'check' => SURFBAR_GENERATE_VALIDATION_CODE(getRequestElement('url_id'), SURFBAR_GET_LAST_SALT()),
- 'salt' => SURFBAR_GET_LAST_SALT(),
+ 'check' => generateSurfbarValidationCode(getRequestElement('url_id'), gerSurfbarLastSalt()),
+ 'salt' => gerSurfbarLastSalt(),
);
// Load template
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
}
-// Checks wether given message id is valid
+// Checks whether given message id is valid
function isMessageIdValid ($messageId) {
return (isset($GLOBALS['messages'][getCurrentLanguage()][$messageId]));
}
$GLOBALS['language'] = (string) $language;
}
-// Checks wether current language is set
+// Checks whether current language is set
function isCurrentLanguageSet () {
return (isset($GLOBALS['language']));
}
setSession('mailer_lang', $lang);
}
-// Checks wether a language file is there for optional extension
+// Checks whether a language file is there for optional extension
function isLanguageIncludeReadable ($ext_name = 'none') {
// Do we have array element?
if (!isset($GLOBALS['lang_inc'][$ext_name])) {
// Is one not readable?
if (!isIncludeReadable($source)) {
// Please report this bug!
- debug_report_bug(__FUNCTION__, __LINE__, 'Source file ' . $source . ' is not readable.');
+ reportBug(__FUNCTION__, __LINE__, 'Source file ' . $source . ' is not readable.');
} elseif (!isIncludeReadable($target)) {
// Please report this bug!
- debug_report_bug(__FUNCTION__, __LINE__, 'Target file ' . $target . ' is not readable.');
+ reportBug(__FUNCTION__, __LINE__, 'Target file ' . $target . ' is not readable.');
} elseif ($targetLanguage == getCurrentLanguage()) {
// Must be different
- debug_report_bug(__FUNCTION__, __LINE__, 'Target language ' . $targetLanguage . ' is same as current.');
+ reportBug(__FUNCTION__, __LINE__, 'Target language ' . $targetLanguage . ' is same as current.');
}
// Backup current messages/language
return $GLOBALS['lang_diff_count'][$target];
}
-// Checks wether the given message is masked
-function isMessageMasked ($messageId) {
+// Checks whether the given message is masked
+function isMessageMasked ($messageId, $strict = true) {
// Is the message id valid?
- if (!isMessageIdValid($messageId)) {
+ if (($strict === true) && (!isMessageIdValid($messageId))) {
// No, then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid message id ' . $messageId . ' detected.');
+ reportBug(__FUNCTION__, __LINE__, 'Invalid message id ' . $messageId . ' detected.');
} // END - if
// Now simply check it
- $masked = isInString('%', $GLOBALS['messages'][getCurrentLanguage()][$messageId]);
+ $masked = isInString('%', getMessage($messageId));
// Return result
return $masked;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_CONFIG_AUTOPURGE_ACTIVE' => "Auto-Löschung von Bestätigungslink ist aktiviert?",
'ADMIN_CONFIG_MAIL_LIFETIME' => "Gütigkeitsdauer der Bestätigungslinks (0 = Bestätigungslinks laufen nie ab)",
'ADMIN_CONFIG_AUTOPURGE_MAILID_TITLE' => "Mailbestätigungslinks löschen",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_AUTOPURGE_ADD' => "Mailrückvergütung durch Autolöschung",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'BEG_SAME_USERID_AS_OWN' => "Mitglied-Id des Webmasters benutzt.",
'MEMBER_BEG_LINK_TITLE' => "Ihr Bettellink zum Bewerben",
-// Pay modes
+ // Pay modes
'ADMIN_CONFIG_BEG_PAY_MODE' => "Wie sollen {?POINTS?} vergütet werden?",
'ADMIN_CONFIG_BEG_PAY_MODE_IMG' => "Abgesichert durch ein 1x1-Pixel",
'ADMIN_CONFIG_BEG_PAY_MODE_JS' => "Abgesichert durch ein Fake-JavaScript",
'ADMIN_CONFIG_BEG_PAY_MODE_BOTH' => "Durch beides obriges absichern",
'ADMIN_CONFIG_BEG_PAY_MODE_NONE' => "Keine Absicherung (unsicher)",
-// More strings for beg link
+ // More strings for beg link
'BEG_LINK_PAY_BOTH_1' => "Das Mitglied <strong>",
'BEG_LINK_PAY_BOTH_2' => "</strong> hat bei Ihnen gerade <strong>",
'BEG_LINK_PAY_BOTH_3' => " {?POINTS?}</strong> erbettelt. Dies war der <strong>",
'BEG_LINK_PAY_BOTH_4' => ".</strong> Klick auf seinen Bettellink. Vielen Dank für Ihre Spende.",
-// Begging rallye
+ // Begging rallye
'BEG_RANK' => "Bettel-Rank",
'BEG_TOTAL' => "Gesamt erbettelt",
'BEG_POINTS' => "Erbettelt",
'ADMIN_BEG_TIMEOUT' => "Es werden nur Mitglieder ausgewertet und hier aufgelistet, die spätestens am <span class=\"data\">%s</span> noch aktiv waren. Alle anderen Mitglieder erhalten die Vergütung nicht.",
'ADMIN_CONFIG_BEG_RALLYE_TITLE' => "Einstellungen an der Bettel-Rallye",
'ADMIN_CONFIG_BEG_RALLYE_ACTIVE' => "Ist die Bettel-Rallye aktiv? (Mails können optional versendet werden!)",
- 'ADMIN_CONFIG_BEG_RALLYE_ONLY_ACTIVE' => "Nur aktive Mitglieder nehmen dran?<br /><div class=\"notice\">(Nur in Verbindung mit der Erweiterung <strong>autopurge</strong>!)</div>",
+ 'ADMIN_CONFIG_BEG_RALLYE_ONLY_ACTIVE' => "Nur aktive Mitglieder nehmen dran Teil?<br /><div class=\"notice\">(Nur in Verbindung mit der Erweiterung <strong>ext-autopurge</strong>!)</div>",
'ADMIN_BEG_NO_RALLYE' => "Niemand nimmt an der Bettel-Rallye dran teil.",
- 'ADMIN_BEG_WITHDRAW_NOW' => "Jetzt Vergütung Bettel-Rallye vergüten",
+ 'ADMIN_BEG_WITHDRAW_NOW' => "Jetzt die Vergütung Bettel-Rallye vorbereiten",
'ADMIN_BEG_WITHDRAW_NOTICE' => "Es wird nur die Vergütung vorbereitet. Die eigentliche Vergütung erfolgt beim Täglichen Reset um 00:00 Uhr.",
'ADMIN_BEG_WITHDRAW_PREPARED' => "Vergütung der Bettel-Rallye vorbereitet.",
'ADMIN_BEG_WINNER_HIGLIGHTED' => "Mögliche Gewinner der Bettel-Rallye sind dick marktiert.",
'ADMIN_CONFIG_BEG_INCLUDE_OWN' => "Soll Ihre Mitglied-Id an der Bettel-Rallye dran teilnehmen?",
'ADMIN_LIST_BEG_TITLE' => "Alle Teilnehmer der Bettel-Rallye auflisten",
-// Task overview
+ // Task overview
'ADMIN_TASK_LIST_BEG' => "Bettel-Rallye-Teilnehmer",
'ADMIN_TASK_LIST_BEG_TITLE' => "Es nehmen Mitglieder an der Bettel-Rallye dran teil.",
-// Subject lines
- 'BEG_RALLYE_ENABLE_SUBJECT' => "HINWEIS: Eine Bettel-Rallye ist am Laufen.",
+ // Subject lines
+ 'BEG_RALLYE_ENABLE_SUBJECT' => "HINWEIS: Eine Bettel-Rallye ist am Laufen.",
'BEG_RALLYE_DISABLE_SUBJECT' => "HINWEIS: Eine Bettel-Rallye wurde gestoppt.",
+
+ // Point account subjects
+ 'POINTS_SUBJECT_BEG' => "Bettellinkaufruf vergütet",
+ 'POINTS_SUBJECT_BEG_REF' => "Bettellinkaufruf anteilig vergütet",
+ 'POINTS_SUBJECT_MONTHLY_BEG' => "Ausschüttung aus monatl. Bettelrallye",
+ 'POINTS_SUBJECT_MONTHLY_BEG_REF' => "Anteilige Ausschüttung aus monatl. Bettelrallye",
+
+ // Admin - subject lines
+ 'ADMIN_DIRECT_BEG_SUBJECT' => "Mitglied hat {?POINTS?} per Direktgutschrift beim Betteln erhalten",
+ 'ADMIN_REFERRAL_BEG_SUBJECT' => "Mitglied hat {?POINTS?} per Referralgutchrift beim Betteln erhalten",
+ 'ADMIN_REFERRAL_BEG_REF_SUBJECT' => "Mitglied hat anteilig {?POINTS?} per Referralgutchrift beim Betteln erhalten",
+ 'ADMIN_REFERRAL_MONTHLY_BEG_SUBJECT' => "Mitglied hat {?POINTS?} in der monatl. Bettelrallye per Referralgutschrift erhalten",
+
+ // Member - subject lines
+ 'MEMBER_DIRECT_BEG_SUBJECT' => "Sie haben anteilig {?POINTS?} beim Betteln erhalten",
+ 'MEMBER_REFERRAL_BEG_SUBJECT' => "Sie haben anteilig {?POINTS?} beim Betteln erhalten",
+ 'MEMBER_REFERRAL_BEG_REF_SUBJECT' => "Sie haben {?POINTS?} beim Betteln erhalten",
+ 'MEMBER_REFERRAL_MONTHLY_BEG_SUBJECT' => "{?POINTS?} in der monatl. Bettelrallye per Referralgutschrift erhalten",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
- 'MEMBER_HAPPY_BIRTHDAY_SUBJECT' => "Herzlichen Glückwunsch zum Geburtstag.",
+ // Admin config
'ADMIN_CONFIG_BIRTHDAY_TITLE' => "Einstellungen zu Geburtstagsmails",
'ADMIN_CONFIG_BIRTHDAY_POINTS' => "{?POINTS?} als "Geburtstagsgeschenk"",
'ADMIN_CONFIG_BIRTHDAY_POINTS_NOTICE' => "Wert <strong>0</strong> deaktiviert die Extragutschrift.",
+ 'ADMIN_CONFIG_BIRTHDAY_ONLY_ACTIVE' => "Sollen nur aktive Mitglieder Geburtsgr¨ße erhalten?",
+ 'ADMIN_CONFIG_BIRTHDAY_NOTICE' => "Aktive Mitglieder können nur erkannt werden, wenn <strong>ext-autopurge</strong> installiert ist.",
+
+ // Member messages
+ 'MEMBER_HAPPY_BIRTHDAY_SUBJECT' => "Herzlichen Glückwunsch zum Geburtstag.",
'MEMBER_BIRTHDAY_CANNOT_STATUS' => "Kann keine {?POINTS?} gutschreiben! Status Ihres Accounts: <span class=\"data\">{%%pipe,translateUserStatus=%s%%}</span>",
'MEMBER_BIRTHDAY_CANNOT_LOAD_DATA' => "Entweder haben Sie bereits Ihr Geburtsgeschenk erhalten oder Sie haben heute keinen Geburtstag.",
- 'ADMIN_CONFIG_BIRTHDAY_ONLY_ACTIVE' => "Nur aktive Mitglieder erhalten die Geburtstagsgutschrift?<br /><div class=\"notice\">(Nur in Verbindung mit der Erweiterung <strong>ext-autopurge</strong>!)</div>",
+
+ // Points account subject
+ 'POINTS_SUBJECT_BIRTHDAY_CONFIRM' => "Geburtstagsgutschrift durch Bestätigung",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'MEMBER_BONUS_HERE_IS_THE_LIST' => "Hier finden Sie die aktuelle Liste mit den möglichen Gewinnern.",
'MEMBER_MONTHLY_BONUS_WON_SUBJECT' => "Gewonnen: Monatliche Aktiv-Rallye",
'ADMIN_BONUS_TURBO_TOTAL' => "Aktiv-Bonus",
- 'ADMIN_BONUS_WITHDRAW_NOW' => "Jetzt Aktiv-Bonus vergüten",
+ 'ADMIN_BONUS_WITHDRAW_NOW' => "Jetzt die Vergütung der Aktiv-Bonus vorbereiten",
'ADMIN_BONUS_WITHDRAW_NOTICE' => "Es wird nur die Vergütung vorbereitet. Die eigentliche Vergütung erfolgt beim Täglichen Reset um 00:00 Uhr.",
'ADMIN_BONUS_WITHDRAW_PREPARED' => "Vergütung des Aktiv-Bonuses vorbereitet.",
'ADMIN_BONUS_WINNER_HIGLIGHTED' => "Mögliche Gewinner der Aktiv-Rallye sind dick marktiert.",
'ADMIN_NO_NOTIFICATIONS' => "Keine Benachrichtigungen gefunden.",
'ADMIN_LINKS_BONUS_MAIL_TITLE' => "Bonus-Mail <span class=\"data\">%s</span>:",
'ADMIN_EDIT_BONUS_EMAIL_TITLE' => "Daten der Bonus-Mail Nr. <span class=\"data\">%s</span> ändern",
- 'MONTHLY_BONUS_RALLYE_GOOD_LUCK' => "Wir wünschen allen Mitgliedern viel Glück bei der monatlichen Aktiv-Rallye!",
+ 'MONTHLY_BONUS_RALLYE_GOOD_LUCK' => "Wir wünschen allen Mitgliedern viel Glück bei der monatlichen Aktiv-Rallye.",
'MONTHLY_BONUS_RALLYE_RANKS_NOTICE' => "Es können nur die ersten <span class=\"data\">{?bonus_ranks?}</span> die Aktiv-Rallye gewinnen. Der Rechtsweg ist ausgeschlossen.",
'ADMIN_SEND_BONUS_MAIL_TITLE' => "Bonus-{?POINTS?}-Mail versenden:",
// Admin 'bonus' mail actions
'ADMIN_EDIT_BONUS_MAIL_LINK' => "Bonus-Mail bearbeiten",
'ADMIN_DELETE_BONUS_MAIL_LINK' => "Bonus-Mail SOFORT löschen",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_MONTHLY_BONUS' => "Ausschüttung aus monatl. Aktivrallye",
+ 'POINTS_SUBJECT_MONTHLY_BONUS_REF' => "Anteilige Ausschüttung aus monatl. Aktivrallye",
+
+ // Admin - subject lines
+ 'ADMIN_REFERRAL_MONTHLY_BONUS_SUBJECT' => "Aktiv-Rallye als Referralgutschrift vergütet",
+
+ // Member - subject lines
+ 'MEMBER_REFERRAL_MONTHLY_BONUS_SUBJECT' => "Aktiv-Rallye als Referralgutschrift erhalten",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
-// Administrative settings
+ // Administrative settings
'ADMIN_CACHE_STATS_TITLE' => "Statistiken des Caching-Systems",
'ADMIN_CACHE_DB_HITS' => "Zugriffe auf die Datenbank",
'ADMIN_CACHE_HITS' => "Zugriffe auf den Cache",
'ADMIN_CACHE_PERCENTS' => "Prozentual (*)",
- 'ADMIN_CACHE_NOTICE' => "(*): Sollten bei Ihnen die Prozente unter 50% liegen und Sie nicht vor September 2008 das Script *neu* installiert haben, so ist dies kein Grund zur Besorgnis. Im Normalfall sollten die Prozente seit eigenen Revisionen im September 2008 (R300+) über 50% liegen.",
+ 'ADMIN_CACHE_STATS_NOTICE' => "(*): Sollten bei Ihnen die Prozente unter 50% liegen und Sie nicht vor September 2008 das Script *neu* installiert haben, so ist dies kein Grund zur Besorgnis. Im Normalfall sollten die Prozente seit eigenen Revisionen im September 2008 (R300+) über 50% liegen.",
'ADMIN_TOTAL_HITS' => "Gesamtzugriffe",
'ADMIN_CACHE_DB_STATS_DEACTIVATED' => "Datenbank-/Cache-Statistiken sind deaktiviert. Dies ist gut für die Performance.",
));
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_SEND_COUPON' => "Gutschein versenden",
'ADMIN_SEND_COUPON_POINTS_NOT_ENTERED' => "Bitte geben Sie eine Vergütung (in {?POINTS?}) ein.",
'ADMIN_SEND_COUPON_DESCRIPTION_NOT_ENTERED' => "Bitte geben Sie eine kurze Beschreibung (oder einen Hinweis an Ihre Mitglieder) ein.",
- 'ADMIN_SEND_COUPON_USER_404' => "Es wurden keine empfangsbereiten Mitglieder gefunden!",
+ 'ADMIN_SEND_COUPON_USER_404' => "Es wurden keine empfangsbereiten Mitglieder gefunden.",
'ADMIN_SEND_COUPON_DONE' => "Es wurde ein Gutschein an alle empfangsbereiten Mitglieder versendet.",
// Admin - More
'COUPON_TOTAL_CREATED' => "Erstellt",
'COUPON_TOTAL_CASHED' => "Eingelöst",
'COUPON_DESCRIPTION' => "Hinweistext",
+
+ // Point account subjects
+ 'POINTS_SUBJECT_COUPON_CASHED' => "Einlösung eines Gutscheins",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addMessages(array(
// Language constants
'MODULE_REGISTRY_404' => "Modul <span class=\"data\">{%pipe,getModule%}</span> existiert nicht.",
+ 'MODULE_REGISTRY_LOCKED_404' => "Gsperrtes Modul <span class=\"data\">{%pipe,getModule%}</span> existiert nicht.",
'MODULE_REGISTRY_IS_LOCKED' => "Das Modul <span class=\"data\">{%pipe,getModule%}</span> wurde gesperrt.",
'MODULE_ERROR_404' => "Fehler: Modul nicht gefunden",
'UNKNOWN_MODULE_DETECTED_TITLE' => "Unbekanntes Modul '%s'",
'MAILER_WARNING' => "Warnung",
'DIE_CONFIG_CHANGED_YOU' => "Sie haben Ihre Config-Datei editiert! Auf Wiedersehen...",
- 'DIE_RUN_INSTALL_MYSQL' => "Bitte rufen Sie http://your-domain.com/install.php auf, damit die Konfigurationsdaten zur Datenbank eingerichtet werden können.",
+ 'DIE_RUN_INSTALLER_MYSQL' => "Bitte rufen Sie {?URL?}/install.php auf, damit die Konfigurationsdaten zur Datenbank eingerichtet werden können.",
'WARN_NULL_PASSWORD' => "Sie haben kein Passwort eingegeben! Bitte lesen Sie in der <strong>{?CACHE_PATH?}config-local.php</strong> nach, wie Sie diese Warnung abschalten können.",
'FATAL_CONFIG_WRITABLE' => "Ihre Datei {?CACHE_PATH?}config-local.php ist beschreibbar! Dies ist ein mögliches Sicherheitsrisiko.",
'FATAL_CANNOT_WRITE_CONFIG' => "Kann Konfigurationsdaten nicht speichern, da ich keinen Schreibzugriff auf {?CACHE_PATH?}config-local.php habe.",
'ADMIN_ACCOUNT_FIRST_CREATION_LOGIN' => "Geben Sie einen Administrator-Loginnamen ein",
'ADMIN_ACCOUNT_FIRST_CREATION_PASSWORD1' => "Vergeben Sie dazu ein Passwort",
'ADMIN_ACCOUNT_FIRST_CREATION_PASSWORD2' => "Das Passwort erneut eingeben",
- 'ADMIN_NO_PASS' => "Kein Passwort eingegeben!",
+ 'ADMIN_NO_PASS' => "Kein Passwort eingegeben.",
'CLEAR_FORM' => "Nochmal eingeben",
'ADMIN_ACCOUNT_FIRST_CREATION_SUBMIT' => "Admin-Account erstellen",
'ADMIN_NO_LOGIN' => "Sie haben keinen Loginnamen eingegeben.",
'ADMIN_MAX_VALUE' => "Maximal zu empfangene Mails",
'ADMIN_MAX_COMMENT' => "Hinweis zum Maximal-Wert",
'NO_MAX_VALUES' => "Derzeit klappt die Anmeldung nicht, da Sie keine maximal zu empfangenen Mails einstellen können.",
- 'MAX_PER_DAY' => "Maximale Anzahl an Klick-Mails pro Tag",
+ 'MAX_MAILS_PER_DAY' => "Maximale Anzahl an Klick-Mails pro Tag",
+ 'ADMIN_MAX_MAILS_PER_DAY' => "Maximale Anzahl an Klick-Mails pro Tag einstellen:",
'PER_DAY' => "Mails",
'REFID_BY' => "Sie wurden geworben von",
- 'TERMS_OF_USAGE' => "AGBs zustimmen und absenden",
- 'AGREE_TO_THIS' => "Stimmen Sie unseren [<a href=\"{%url=modules.php?module=index&what=agb%}\" target=\"_blank\">AGBs</a>] zu?",
+ 'TERMS_OF_USAGE' => "<a href=\"{%template,GetTermsConditionsLink%}\" target=\"_blank\">AGBs</a> zustimmen und absenden",
+ 'AGREE_TO_THIS' => "Stimmen Sie unseren [<a href=\"{%template,GetTermsConditionsLink%}\" target=\"_blank\">AGBs</a>] zu?",
'SUBMIT_REGISTER' => "Anmeldedaten abschicken",
'HAVE_TO_AGREE' => "Sie müssen unseren AGBs zustimmen, damit Sie an diesem {?mt_word?} teilnehmen können.",
'ENTER_BOTH_PASSWORDS' => "Bitte geben Sie ein Passwort und das selbe Passwort noch einmal ein.",
'GUEST_MAY_LOGIN_HERE' => "Sie können sich nun hier einloggen:",
'GUEST_THANX_CONFIRM' => "Email-Adresse bestätigt",
'GOTO_TOP' => "Nach oben",
- 'YOUR_LOGIN' => "Ihre Login-Id lautet",
+ 'YOUR_LOGIN' => "Ihre Mitglieds-Id lautet",
'LOGIN_URL' => "URL zum Login",
'GUEST_LOGIN_MEMBER' => "Einloggen zum Mitgliederbereich",
- 'GUEST_ENTER_LOGIN' => "Login-Id",
+ 'GUEST_ENTER_LOGIN' => "Mitglieds-Id",
'GUEST_ENTER_PASSWORD' => "Passwort",
'LOGIN_SUBMIT' => "Einloggen",
'GUEST_GET_NEW_PASS' => "Neues Passwort zuschicken",
'GUEST_ENTER_EMAIL' => "Angemeldete Email-Adresse",
'NEW_PASSWD' => "Jetzt zuschicken",
- 'GUEST_WRONG_ID_EMAIL' => "Konnte Account-Daten nicht auffinden! Vermutlich haben Sie eine falsche Login-Id oder Email-Adresse eingegeben! Bitte probieren Sie es nochmal.",
+ 'GUEST_WRONG_ID_EMAIL' => "Konnte Account-Daten nicht auffinden! Vermutlich haben Sie eine falsche Mitglieds-Id oder Email-Adresse eingegeben! Bitte probieren Sie es nochmal.",
'GUEST_NEW_PASS_1' => "Sie oder ein anderes Mitglied",
'GUEST_NEW_PASS_2' => "haben soben ein neues Passwort angefordert. Hier ist Ihr neues Passwort:",
'YOUR_NEW_PASS' => "Neues Passwort",
'GUEST_NOT_THIS_REPORT' => "Sollten Sie dies nicht gewesen sein, so melden Sie sich bitte bei uns!\n\nMit freundlichen Grüßen,",
'GUEST_NEW_PASSWORD' => "Ihre Passwortanfrage",
- 'LOGIN_UNKNOWN_CODE' => "Unbekannter Rückgabewert.",
- 'LOGIN_WRONG_PASS' => "Falsches Passwort eingegben.",
- 'LOGIN_WRONG_ID' => "Es wurde kein Account unter Ihren eingegebenen Logindaten gefunden.",
- 'LOGIN_STATUS_LOCKED' => "Ihr Account wurde gesperrt. Sperrgrund: <span class=\"data\">{%user,lock_reason%}</span>, Sperrzeitpunkt: <span class=\"data\">{%user,lock_timestamp,generateDateTime%}</span>",
- 'LOGIN_STATUS_UNCONFIRMED' => "Bitte bestätigen Sie erst Ihre Email-Adresse! Haben Sie den Bestätigungslink verloren? Links im Menü unter "Bestätigungslink" können Sie ihn erneut anfordern.",
- 'LOGIN_COOKIES_DISABLED' => "Sie haben in Ihrem Browser entweder die Cookies ausgeschaltet, oder die Sicherheitsstufe ist zu hoch eingestellt.",
- 'LOGIN_UNKNOWN_ERROR' => "Es ist ein unerwarteter Account-Status aufgetreten. Bitte melden Sie sich beim Support dieses {?mt_word2?}.",
- 'LOGIN_UNKNOWN_STATUS' => "Ihr Account weisst einen unbekannten Status auf. Bitte melden Sie sich beim Support dieses {?mt_word2?}.",
'GUEST_SELECT_LIFETIME' => "Wie lange soll Auto-Login aktiv sein?",
'LIFE_CLOSE_BROWSER' => "Browser wurde geschlossen",
'LIFE_HOURS' => "Stunde(n)",
'USERNAME_UNKNOWN' => "Name ist nicht ladbar",
'USERNAME_ADMIN' => "Administrator",
'USERNAME_ADMIN_SHORT' => "Admin",
- 'LAST_ONLINE' => "Sie waren als letztes Online am",
- 'LAST_MODULE' => "Ihr zuletzt ausgewähltes Modul",
+ 'USERNAME_AJAXJ' => "AJAX",
+ 'MEMBER_LAST_ONLINE' => "Sie waren als letztes Online am",
+ 'MEMBER_LAST_WHAT' => "Ihr zuletzt ausgewähltes Modul",
'MEMBER_EDIT_PROFILE' => "Profildaten ändern",
- 'GENDER' => "Anrede",
- 'GENDER_M' => "Herr",
- 'GENDER_F' => "Frau",
- 'GENDER_C' => ""Firma"",
'SAVE_CHANGES' => "Änderungen speichern",
'MEMBER_MYDATA_NOTICE' => "Geben Sie nur bei <strong>Passwort</strong> Ihr aktuelles Passwort ein, wenn Sie nur Daten ändern wollen. Geben Sie bei <strong>Passwortbestätigung</strong> das neue Passwort erneut ein, wenn Sie Ihr aktuelles Passwort ändern wollen.",
'MEMBER_UPDATE_PWD_WRONG' => "Bitte geben Sie Ihr aktuelles Passwort zum Ändern Ihrer Einstellungen ein. Wir haben dies zur Sicherheit unserer Mitglieder eingebaut.",
'MEMBER_MYDATA_MAIL_SENT' => "Es ist eine Email zu Ihnen unterwegs.",
'ADMIN_CHANGED_DATA' => "Profildaten geändert",
'ADMIN_MEMBER_CHANGED_PROFILE' => "Eines Ihrer Mitglieder hat seine Profildaten geändert.",
- 'MEMBER_USERID' => "Seine Login-Id lautet",
+ 'MEMBER_USERID' => "Seine Mitglieds-Id lautet",
'LOGOUT_DONE' => "Ausloggen abgeschlossen.",
'LOGOUT_FAILED' => "Ausloggen fehlgeschlagen.",
'MEMBER_NO_CATEGORIES' => "Es wurden bis jetzt noch keine Kategorien eingerichtet.",
'REFERRAL_IS_ACTIVE' => "Aktiv?",
'POINTS_USED' => "Verbrauchte {?POINTS?}",
'MEMBER_POINTS_LEFT' => "{?POINTS?}-Guthaben zum Mailversand übrig",
- 'SELECT_MAIL_TYPE' => "Mailart auswählen",
+ 'MEMBER_SELECT_MAIL_TYPE' => "Mailart auswählen:",
'PLEASE_SELECT' => "Bitte auswählen",
'PER_MAIL' => "{?POINTS?} / Mail",
'PAYMENT' => "{?POINTS?} Vergütung",
- 'SELECT_CATEGORY' => "Zielkategorie",
- 'USER_IN_CAT' => "Empfänger",
- 'ENTER_RECEIVER' => "Empfängeranzahl",
- 'ENTER_SUBJECT' => "Betreffzeile",
- 'ENTER_TEXT' => "Werbetext",
+ 'SELECT_CATEGORY' => "Zielkategorie auswählen:",
+ 'USERS_IN_CATEGORY' => "Empfänger",
+ 'ENTER_RECEIVER' => "Empfängeranzahl:",
+ 'ENTER_SUBJECT' => "Betreffzeile:",
+ 'ENTER_TEXT' => "Werbetext:",
'MEMBER_PLEASE_NOTICE' => "Bitte beachten Sie vor dem Absenden:",
- 'MEMBER_ENTER_URL' => "URL",
+ 'MEMBER_ENTER_URL' => "URL eingeben:",
'CONTINUE_FRAMETESTER' => "Weiter zum Framekiller-Test",
'MEMBER_URL_TIME_LOCK' => "Sie hatten bereits die selbe URL gebucht:",
'MEMBER_LAST_TIME_LOCK' => "Ihre letzte Buchung war am",
'MEMBER_BLIST_TIME' => "Datum der Sperrung war",
'MEMBER_SELECTED_MORE_RECS' => "Sie haben für diese Kategorie zu viele Empfänger eingegeben.",
'MEMBER_GO_BACK' => "Zurück zum Buchungsformular",
- 'MEMBER_DO_ORDER' => "Mailbuchung so aufgeben.",
+ 'MEMBER_DO_ORDER' => "Mailbuchung so aufgeben",
'LOADER_NOT_WORKING' => "Falls die Weiterleitung nicht automatisch in einer Sekunde klappen sollte,",
'LOADER_CLICK_HERE' => "so kommen Sie hier zur externen Seite weiter",
'CLICK_HERE' => "Klick.",
'ADMIN_NEW_QUEUE' => "Mailbuchung in Ihrem {?mt_word?}",
'MEMBER_NEW_QUEUE' => "Vielen Dank für die Mailbuchung.",
'MEMBER_CONTINUE_AREA' => "Weiter zum Mitgliedsbereich",
- 'MEMBER_THANX_ORDER' => "Vielen Dank für Ihre Mailbuchung! Es ist eine Mail zu Ihnen unterwegs.",
+ 'MEMBER_THANX_ORDER_TITLE' => "Vielen Dank für Ihre Mailbuchung!",
+ 'MEMBER_THANX_ORDER' => "Es ist eine Mail mit weiteren Details zu Ihnen unterwegs.",
'ADMIN_NO_MAILS_IN_POOL' => "Es wurden noch keine Mailbuchungen aufgegeben, kann somit keine Mails anzeigen.",
'ADMIN_POOL_CONTENT' => "Mailbuchungen im Sende-Pool",
'POOL_TYPE_UNKNOWN' => "Unbekannt (%s)",
'ADMIN_NO_NONE_REGISTERED' => "Ihre Suchkriterieren ergaben keine Treffer in der Mitgliederliste. ",
'ADMIN_MEMBER_404' => "Mitglieds-Account <span class=\"data\">%s</span> existiert nicht.",
'LAST_ONLINE_SHORT' => "Zuletzt Online",
- 'ADMIN_LAST_MODULE' => "Letzte Aktion",
+ 'ADMIN_LAST_WHAT' => "Letzte Aktion",
'RECEIVE_MAILS' => "Kann Mails empfangen",
'REFERRAL_CLICKS' => "Klicks auf Ref-Link",
'TOTAL_LOGINS' => "Logins gesamt",
'USERS_LINKS' => "Unbestätigte Mails",
'USERS_STATS' => "Werbebuchungen",
'USERS_SENT_MAILS' => "Gesendete Mails",
- 'USERS_MAX_PER_DAY' => "Versendbare Mails pro Tag",
+ 'USERS_MAX_MAILS_PER_DAY' => "Versendbare Mails pro Tag",
'USERS_MAX_REC' => "Heute versendbare Mails",
'ADMIN_EDIT_CATEGORIES_TITLE' => "Kategorien ändern",
'ADMIN_CATEGORY_ID' => "Kategorie-Id",
'REFERRALS' => "Referrals",
'MEMBER_PART_POINTS' => "Teilsummen",
'KBYTES' => "KBytes",
- 'DEFAULT_SUBJECT_LINE' => "Klick-Mail von {?MAIN_TITLE?}",
'MEBER_UPDATE_PWD_WRONG' => "Sie haben das falsche Passwort eingegeben! Bitte nochmal versuchen.",
'ADMIN_MEMBER_NO_CATEGORIES' => "Das Mitglied <span class=\"data\">{%%pipe,generateUserProfileLink=%s%%}</span> hat keine Kategorien ausgewählt.",
'USER_ID' => "Mitglied",
'ADMIN_IS_VISIBLE' => "Wird angezeigt",
'ADMIN_IS_ACTIVE' => "Aktiviert",
'ADMIN_CHANGE_ENTRIES' => "Änderungen durchführen",
- 'BASE_URL_NOTICE' => "Ohne abschliessendem /.",
'ADMIN_WRONG_CALL' => "Falscher Aufruf einer Aktion oder des Scriptes. Bitte navigieren Sie links weiter.",
'ADMIN_IS_SYSTEM_TASK' => "System-Task",
'ADMIN_NEW_EXTENSION_SUBJECT' => "Neue Erweiterung gefunden",
'ADMIN_TASK_TEXT' => "Aufgabentext",
'ADMIN_REGISTER_EXTENSION' => "Installieren",
'ADMIN_REGISTER_EXTENSION_TITLE' => "Erweiterung sofort installieren",
+ 'ADMIN_EXTENSION_IS_DEPRECATED_TITLE' => "Erweiterung wird nicht mehr verwendet (deprecated).",
'ADMIN_SELECTED_TASKS_ASSIGN' => "Zum Bearbeiten ausgewählte Aufgaben",
- 'ADMIN_EXTENSION_REGISTRATION_FAILED_INVALID' => "Registrierung fehlgeschlagen: Ungütige id übermittelt.",
+ 'ADMIN_EXTENSION_REGISTRATION_FAILED_INVALID' => "Registrierung fehlgeschlagen: Ungültige id übermittelt.",
'ADMIN_EXTENSION_REGISTRATION_FAILED_ID_404' => "Registrierung fehlgeschlagen: Erweiterung-Id nicht auffindbar.",
'ADMIN_EXTENSION_REGISTRATION_FAILED_404' => "Registrierung fehlgeschlagen: Erweiterung <span class=\"data\">%s</span> nicht auffindbar.",
'ADMIN_EXTENSION_REGISTRATION_FAILED_ASSIGED' => "Registrierung fehlgeschlagen: Sie sind nicht zugewiesen oder die Aufgabe ist veraltet.",
'ADMIN_CONFIG_REFERRAL_PAYOUT' => "Wie viele Mails müssen die Mitglieder mindestens bestätigen, um den Willkommensbonus, einmaliger Referral-Bonus usw. gutgeschrieben zu bekommen?",
'ADMIN_EXTENSION_UPDATED' => "Erweiterung aktualisiert.",
'ADMIN_UPDATE_EXTENSION_SUBJECT' => "Erweiterung-Update installiert",
- 'MEMBER_ORDER_PAGE1_INTRO' => "Mailbuchung - Schritt 1 von 4: PLZ eingeben",
- 'MEMBER_ORDER_PAGE2_INTRO' => "Mailbuchung - Schritt 2 von 4: Daten eingeben",
- 'MEMBER_ORDER_PAGE3_INTRO' => "Mailbuchung - Schritt 3 von 4: Frame-Killer Test und Absenden",
- 'MEMBER_ORDER_PAGE4_INTRO' => "Mailbuchung - Schritt 4 von 4: Vielen Dank.",
- 'MEMBER_ENTER_ZIP_CODE' => "PLZ eingeben",
+ 'MEMBER_ORDER_PAGE1_TITLE' => "Mailbuchung - Schritt 1 von 4: PLZ eingeben",
+ 'MEMBER_ORDER_PAGE2_TITLE' => "Mailbuchung - Schritt 2 von 4: Daten eingeben",
+ 'MEMBER_ORDER_PAGE3_TITLE' => "Mailbuchung - Schritt 3 von 4: Frame-Killer Test und Absenden",
+ 'MEMBER_ORDER_PAGE4_TITLE' => "Mailbuchung - Schritt 4 von 4: Vielen Dank.",
+ 'MEMBER_ENTER_ZIP_CODE' => "PLZ eingeben:",
'ORDER_PAGE_2' => "Weiter zur Seite 2",
'UNCONFIRMED_USERIDS' => "Unbest./Gesperrte Accounts",
'LOCKED_POINTS' => "Nicht vergütete {?POINTS?}",
'ADMIN_REMOVING_THESE_EXTENSIONS' => "Diese Erweiterungen werden deinstalliert",
'ADMIN_REMOVE_EXTENSIONS' => "Erweiterungen jetzt entfernen",
'ADMIN_SQLS_EXECUTED_ON_REMOVAL' => "Beim Entfernen ausgeführte SQL-Anweisungen",
- 'ADMIN_NO_ADDITIONAL_SQLS' => "Keine weiteren SQL-Anweisungen zum Ausführen.",
+ 'ADMIN_EXTENSION_VERBOSE_SQLS_404' => "Die Erweiterung hat keine SQL-Anweisungen zum Ausführen.",
'ADMIN_SQLS_EXECUTED_ON_UPDATE' => "Beim Aktualisieren ausgeführte SQL-Anweisungen",
'ADMIN_SQLS_EXECUTED_ON_REGISTER' => "SQL-Anweisungen, die beim Installieren/Updaten ausgeführt werden",
'ADMIN_SELECT_ADMIN' => "Administrator auswählen:",
'ADMIN_CALL_NOT_DIRECTLY' => "Bitte diesen Menüpunkt nicht direkt aufrufen.",
'ADMIN_UNCONFIRMED_POOL_MISSING' => "Es fehlen Daten im Sende-Pool zur Mail-Id <span class=\"data\">%s</span> .",
'ADMIN_UNCONFIRMED_STATS_MISSING' => "Es fehlen Daten in der Mitglieder-Statistik zur Mail-Id <span class=\"data\">%s</span> .",
- 'ADMIN_UNCONFIRMED_INVALID_LINK' => "Ungütigen Link aufgerufen oder Mail ist nicht mehr vorhanden.",
+ 'ADMIN_UNCONFIRMED_INVALID_LINK' => "Ungültigen Link aufgerufen oder Mail ist nicht mehr vorhanden.",
'ADMIN_UNCONFIRMED_NO_LINK_LEFT' => "Diese Mailbuchung wurde komplett bestätigt.",
'ADMIN_HEADER_LOCK_ACCOUNT' => "Mitgliedsaccount <span class=\"data\">%s</span> sperren",
'ADMIN_HEADER_UNLOCK_ACCOUNT' => "Mitgliedsaccount <span class=\"data\">%s</span> freigeben",
'ADMIN_ENTRY_ADDED' => "Der Eintrag wurde der Datenbank hinzugefügt.",
'ADMIN_ENTRY_NOT_ADDED' => "Der Eintrag wurde der Datenbank NICHT hinzugefügt.",
'BONUS_EXTENSION_UPGRADE' => "Bitte aktualisieren Sie Ihre Bonus-Erweiterung auf Version <span class=\"data\">v0.2.2</span> oder neuer.",
- 'WHAT_IS_OVERVIEW' => "Willkommen",
+ 'WHAT_IS_WELCOME' => "Willkommen",
'_ON' => "an",
'MEMBER_CLICK_STATISTICS' => "Mail-Statistik",
'ADMIN_CONFIG_SELECT_DEFAULT_REFID' => "Standard Referral-Id bei Anmeldung über <strong>keinen</strong> Ref-Link",
'ADMIN_CONFIG_SELECT_REFID_TARGRT' => "Ziel-Seite des Referral-Linkes",
'ADMIN_CONFIG_REFERRAL_TARGET_REGISTER' => "Zur Anmeldeseite",
'ADMIN_CONFIG_REFERRAL_TARGET_INDEX' => "Zur Eingangsseite",
- 'ADMIN_INSTALL_THEME' => "Theme importieren",
+ 'ADMIN_INSTALLER_THEME' => "Theme importieren",
'ADMIN_NO_THEMES_FOUND' => "Keine Themes gefunden.",
'THEME_UNIX' => "Uni*-Name",
'THEME_NAME' => "Theme-Titel",
'ADMIN_THEME_NEW_DEFAULT_THEME' => "Durch Anklicken des Uni*-Names wird das jeweilige Theme als Standard-Theme gesetzt, welches Ihre Besucher sofort sehen werden.",
'ADMIN_ENTRY_DELETE' => "Eintrag löschen",
'ADMIN_NO_MENUS_FOUND' => "Keine Menüs gefunden.",
- 'ADMIN_CONFIG_TITLE_SETTINGS' => "Einstellungen am Seitentitel",
+ 'ADMIN_CONFIG_TITLE_SETTINGS' => "Einstellungen und Dekorationen am Browsertitel",
+ 'ADMIN_CONFIG_TITLE_LEGEND' => "Einstellungen am Browsertitel",
'ADMIN_CONFIG_TITLE_NOTICE' => "Die Einstellungen <strong>{--ADMIN_CONFIG_TITLE_ENABLE_MODULE_TITLE--}</strong> und <strong>{--ADMIN_CONFIG_TITLE_ENABLE_WHAT_TITLE--}</strong> wirken sich nur auf den Gast-, Mitglieds-, und Sponsorbereich aus. Im Administratorbereich werden die Einstellungen ignoriert und es werden immer Modul- und der Menüpunkttitel angezeigt, damit der Administrator (also Sie) immer erkennen kann, welche Aktion gerade ausgewählt ist.",
'ADMIN_CONFIG_TITLE_DECORATIONS' => "Titeldekorationen",
'ADMIN_CONFIG_TITLE_ENABLE_DECORATIONS' => "Dekorationen aktivieren",
'CLICK_NOW' => "Hier bestätigen",
'MAILID_LINK' => "Best.-Link",
'UNKNOWN_MAILID_CODE' => "Unbekannter Fehler-Code <span class=\"data\">%s</span> erkannt.",
+ 'UNKNOWN_REDIRECT_VALUE' => "Ungültiger Konfigurationswert erkannt. Bitte benachrichtigen Sie den Support und nennen Sie dabei den genauen Zeitpunkt.",
'ADMIN_MENU_IS_LOCKED' => "Ist gesperrt",
'ADMIN_REMOVE_STATS_ENTRY' => "Hier klicken, um Mitgliederstatistik zu entfernen.",
'ADMIN_USER_STATS_REMOVED' => "Mitgliederstatistiken entfernt.",
'ADMIN_TASK_NO_SQL_TITLE' => "Aufgabe ohne SQL-Anweisungen",
'MEMBER_UNCONFIRMED_LOCKED' => "Anzahl zu best. Mails für Willkommensgutschrift",
'MEMBER_CONFIRMED_MAILS' => "Bereits best. Mails",
- 'TIME_UNIT' => "Zeiteinheit",
- 'TIME_UNIT_YEAR' => "Jahr(e)",
- 'TIME_UNIT_MONTH' => "Monat(e)",
- 'TIME_UNIT_WEEK' => "Woche(n)",
- 'TIME_UNIT_DAY' => "Tag(e)",
- 'TIME_UNIT_HOUR' => "Stunde(n)",
- 'TIME_UNIT_MINUTE' => "Minute(n)",
- 'TIME_UNIT_SECOND' => "Sekunde(n)",
'SORT_ASCENDING' => "Aufsteigend",
'SORT_DESCENDING' => "Absteigend",
- 'INVALID_EMAIL_ENTERED' => "Ungütige EMail-Adresse eingegeben.",
+ 'INVALID_EMAIL_ENTERED' => "Ungültige EMail-Adresse eingegeben.",
'NEVER_HAPPENED' => "Nie",
'NO_CONFIG_FOUND_TITLE' => "Keine Konfigurationsdaten gefunden.",
'SORTING_KEY' => "Sortierung",
'NO_UPDATE_NOTICES' => "Keine Update-Hinweise gefunden.",
'MYSQL_QUERY_STRING' => "SQL-Abfragebefehl war:",
'MEMBER_NO_MAILS_IN_POOL' => "Sie haben noch keine Mailbuchungen aufgegeben! Es können somit Ihnen auch keine angezeigt werden.",
- 'ADMIN_CONFIG_ADMIN_MENU_TITLE' => "Einstellungen am Adminmenü",
- 'ADMIN_CONFIG_SELECT_MENU_TYPE' => "Menütyp auswählen",
- 'ADMIN_CONFIG_ADMIN_MENU_NEW' => "Neues Menüsystem mit "logischen Bereichen"",
- 'ADMIN_CONFIG_ADMIN_MENU_OLD' => "Herkömliches Menüsystem links im Browser",
- 'ADMIN_CONFIG_ADMIN_MENU_JAVASCRIPT_ENABLED' => "Soll das mit JavaScript ("interaktiv") gesteuerte Adminmenü eingeschaltet werden? (Dies ist noch sehr experimentell.)",
'ADMIN_BACK_TO_GUEST_MENU' => "Zum Gastmenü zurück...",
'ADMIN_LOGOUT_NOW' => "Aus dem Admin-Bereich ausloggen",
'ADMIN_LOGOUT_NOTICE' => "Loggen Sie sich immer aus dem Admin-Bereich aus, wenn Sie beabsichten, ihn nicht mehr zu benutzen. Auch sollten Sie dies <strong>auf jedem Fall</strong> in einem Internet-Cafe vor Verlassen des Platzes tun.",
'ADMIN_PASS_SALTED' => "Admin-Password wegen Update geändert",
'ADMIN_CONFIG_SALT_LENGTH_NOTICE' => "Um für alle Accounts (Mitglieder/Admins derzeit) neue Passwörter zu generieren, lassen Sie das Eingabefeld <strong>{--ADMIN_CONFIG_SALT_LENGTH--}</strong> leer oder geben Sie eine <strong>0</strong> ein! <strong>Vorsicht!</strong> Sie müssen sich dann anschliessend erneut einloggen.",
'GUEST_LOGIN_FAILED_GENERAL' => "Genereller Loginfehler! Bitte kontaktieren Sie den Webmaster.",
+ 'DEFAULT_SUBJECT_LINE' => "Klick-Mail von {?MAIN_TITLE?}",
'DEFAULT_MT_WORD' => "Mailtausch",
'DEFAULT_MT_WORD2' => "Mailtausches",
'DEFAULT_MT_WORD3' => "Mailtauscher",
'DEFAULT_POINTS' => "Punkte",
+ 'DEFAULT_MAIN_TITLE' => "Titel Ihres {--DEFAULT_MT_WORD2--} hier",
+ 'DEFAULT_SLOGAN' => "Ihr Werbespruch hier",
+ 'DEFAULT_WEBMASTER' => "ihre@email-addresse.example",
'PROBLEM_POINTS_OVERVIEW_UNAVAILABLE' => "{?POINTS?}-Übersicht derzeit nicht verfügbar.",
'ADMIN_NOTHING_SELECTED_CHANGE' => "Sie haben nichts zum Ändern des Status ausgewählt.",
'TEMPLATE_CONTENT' => "Template-Daten",
'EXTENSION_PROBLEM_UNSET_EXT' => "Skriptfehler: Parameter <strong>ext</strong> nicht gesetzt.",
'EXTENSION_PROBLEM_EXTENSION_OUTDATED' => "Kann nicht fortfahren! Fehler Eine Erweiterung ist veraltet. Bitte benachrichten Sie den Support.",
'EXTENSION_WARNING_EXTENSION_INACTIVE' => "Die Erweiterung <span class=\"data\">%s</span> ist nicht aktiv. Dies kann zu Störungen führen.<br />\nBitte aktivieren Sie diese unter <span class=\"bad\">Verschiedenes->Erweiterungen</span>.",
- 'EXTENSION_WARNING_USER_LIMIT' => "Die Erweiterung <u>user</u> ist nicht aktiv. Die Anzahl Mitglieder pro Seite wurde auf 100 gesetzt. Bitte aktivieren Sie diese unter <span class=\"bad\">Verschiedenes->Erweiterungen</span>.",
+ 'EXTENSION_WARNING_USER_LIMIT' => "Die Erweiterung <strong>ext-user</strong> ist nicht aktiv. Die Anzahl Mitglieder pro Seite wurde auf 100 gesetzt. Bitte aktivieren Sie diese unter <span class=\"bad\">Verschiedenes->Erweiterungen</span>.",
'ADMIN_PROXY_SETTINGS_INVALID' => "Ihre Proxy-Einstellungen scheinen ungültig zu sein.",
'ADMIN_EDIT_PROXY_SETTINGS' => "Proxy-Einstellungen ändern",
'ADMIN_CONFIG_PROXY_HOST' => "Hostname oder IP-Nummer:",
'EMAIL_DELETE_COUNT' => "Buchungseinträge gelöscht",
'MAILER_HAS_DIED' => "{?TITLE?} ist in Script/Funktion <span class=\"data\">%s</span>, Zeile <span class=\"data\">%s</span> mit folgender Meldung abgebrochen: <span class=\"data\">%s</span>",
'ADMIN_CONFIG_POINTS_TITLE' => "Einstellungen für {?POINTS?}",
- 'APP_DIE_TITLE' => "Bug im Script erkannt!",
+ 'APP_DIE_TITLE' => "Bug im Script erkannt.",
'ADMIN_CONTACT_LINK_TITLE' => "Kontakt zum Administrator",
'ADMIN_MAIL_NOTHING_DELETED' => "Die Mail mit der Id <span class=\"data\">%s</span> weisst keine Mitglieder auf.",
'ADMIN_RESET_PASSWORD' => "Passwort vergessen?",
'EMAIL_DETAILS' => "Email-Details",
'EMAIL_DETAILS_LINK' => "Details anzeigen",
- 'ADMIN_CONFIG_REFID_TITLE' => "Einstellungen zum Referral-Link",
- 'ADMIN_CONFIG_RANDOM_ZERO_REFID' => "Soll per Zufall ein Mitglied ausgwählt werden oder soll die oben eingestellte Standard-Refid verwendet werden?",
- 'ADMIN_CONFIG_RANDOM_REFID_ENABLED' => "Mitglieder per Zufall wählen",
- 'ADMIN_CONFIG_RANDOM_REFID_DISABLED' => "Voreingestellte Referral-Id setzen",
- 'ADMIN_CONFIG_RANDOM_REFID_TITLE' => "Kriterien wonach ein Mitglied als Zufallsreferral ausgewählt wird:",
- 'ADMIN_CONFIG_RANDOM_MIN_CONFIRMED' => "Wie viele Mails muss ein Mitglied mindestens bestätigt haben, um per Zufall ausgewählt zu werden?",
- 'ADMIN_CONFIG_REFID_NOTICE' => "Sobald ein Mitglied ausgewählt wurde, werden die Zähler aller Mitglieder auf Null gesetzt. Dies soll Chancengleichheit bringen und dass die Mitglieder mehr Mails abklicken.",
'EMAILS_RECEIVED' => "Emails empfangen",
'MAILS_CONFIRMED' => "Emails bestätigt",
'RAND_CONFIRMED' => "Bestätigt f. Zufalls-Ref",
'GUEST_STATS_NO_CLICKS' => "Keine Klicks in Ihrem {?mt_word?} verzeichnet.",
'ADMIN_EXTENSIONS_REMOVED' => "Es wurden <span class=\"data\">%s</span> Erweiterungen aus Ihrem {?mt_word?} entfernt.",
'ADMIN_WARNING_SQL_PATCHES_MISSING' => "Eine essentielle Erweiterung <span class=\"data\">sql_patches</span> ist noch nicht installiert. Bitte erledigen Sie dies bald, da Ihr {?mt_word?} sonst nicht funktioniert.",
- 'ADMIN_EXTENSION_IS_NON_PRODUCTIVE' => "Die von Ihnen ausgewählte Erweiterung <span class=\"data\">%s</span> ist noch nicht für den produktiven Betrieb freigegeben und befindet sich somit noch in der Entwicklung. Bitte nur verwenden, wenn Sie wissen, was Sie tun.",
+ 'ADMIN_EXTENSION_IS_NON_PRODUCTIVE' => "Die von Ihnen ausgewählte Erweiterung <span class=\"data\">%s</span> ist nicht für den produktiven Betrieb geeignet und befindet sich somit in der Entwicklung. Bitte verwenden Sie diese nur, wenn Sie daran mitenwickeln wollen. Auch können die angegebenen Funktionalitäten nicht fertig implementiert sein. Nähere Informationen zum Umgang mit Entwickler-Versionen von Erweiterungen erhalten Sie im <a rel=\"external\" target=\"blank\" href=\"http://forum.mxchange.org/topic-post2351.html#post2351\" title=\"Wichtiger Hinweis zu Entwickler-Versionen\">Forum</a>.",
'ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK' => "Entwickler-Version",
'ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK_TITLE' => "Die Erweiterung '%s' sollten Sie nur installieren, wenn Sie daran mitentwickeln wollen. Produktiv ist diese nicht einsatzbereit.",
'ADMIN_ENTRIES_404' => "Es wurden keine Einträge gefunden.",
- 'DEBUG_REPORT_BUG_SUBJECT' => "[BUG!] Es wurde ein Bug im Script erkannt:",
+ 'REPORT_BUG_SUBJECT' => "[BUG!] Es wurde ein Bug im Script erkannt:",
'ADMIN_EXTENSION_ALWAYS_ACTIVE' => "Die Erweiterung <span class=\"data\">{%%pipe,getExtensionName=%s%%}</span> kann nicht deaktiviert werden, da sie immer aktiv bleiben muss.",
'MEMBER_REFERRAL_LINKS_FOOTER' => "Ihr Referral-Link eingebaut in Ihrer Homepage bringt Ihnen passiv mehr Referrals. (Aber Ihren Referral-Link bewerben schadet auch nicht... ;-) )",
'POINTS_ORDER' => "Werbeguthaben",
'ADMIN_EMAIL_CHANGES_SAVED' => "Die Maildaten wurden aktualisiert.",
'ADMIN_EMAIL_CHANGES_NOT_SAVED' => "Keine Änderungen an der Mail vorgenommen. Maildaten wurden NICHT geändert.",
'MEMBER_REFLINK_CENTER_TITLE' => "Alle Informationen zu Ihrem Werbelink",
- 'MEMBER_RANDOM_REFID_ENABLED' => "Ist die Auswahl eines Referrals per Zufall aktiviert?",
- 'MEMBER_RANDOM_REFID_CONFIRMED' => "Anzahl Mails bestätigt, damit Ihr Account per Zufall selektiert wird",
+ 'MEMBER_RANDOM_REFID_ENABLED' => "Ist die Auswahl eines Referrals per Zufall aktiviert? Dies tritt nur ein, wenn kein Referral-Link zur Anmeldung verwendet wurde",
+ 'MEMBER_RANDOM_REFID_CONFIRMED' => "Anzahl Mails bestätigt, damit Ihr Account per Zufall ausgewählt wird",
'MEMBER_YOUR_REFID_IS' => "Sie wurden geworben von",
'ADMIN_CONFIG_ADMIN_MENU_NOTICE' => "Das Menüsystem mit "logischen Bereichen" ist noch nicht fertig und führt zu Fehlern. Bitte dieses nur im Template aktivieren, wenn Sie daran mitprogrammieren wollen.",
+ 'UNKNOWN_ERROR_CODE' => "Unbekannter Fehlercode <span class=\"data\">0x{%%pipe,getHexErrorCode=%s%%}</span> erkannt.",
+
+ // Time units
+ 'TIME_UNIT' => "Zeiteinheit",
+ 'TIME_UNIT_UNKNOWN' => "Unbekannte Zeiteinheit %s erkannt.",
+ 'TIME_UNIT_YEAR' => "Jahr(e)",
+ 'TIME_UNIT_MONTH' => "Monat(e)",
+ 'TIME_UNIT_WEEK' => "Woche(n)",
+ 'TIME_UNIT_DAY' => "Tag(e)",
+ 'TIME_UNIT_HOUR' => "Stunde(n)",
+ 'TIME_UNIT_MINUTE' => "Minute(n)",
+ 'TIME_UNIT_SECOND' => "Sekunde(n)",
- // Member mails
+ // Genders
+ 'GENDER' => "Anrede",
+ 'GENDER_UNKNOWN' => "Unbekannte Anrede %s erkannt.",
+ 'GENDER_M' => "Herr",
+ 'GENDER_F' => "Frau",
+ 'GENDER_C' => ""Firma"",
+
+ // Login error messages
+ 'LOGIN_UNKNOWN_CODE' => "Unbekannter Rückgabewert.",
+ 'LOGIN_WRONG_PASS' => "Falsches Passwort eingegben.",
+ 'LOGIN_WRONG_ID' => "Es wurde kein Account unter Ihren eingegebenen Logindaten gefunden.",
+ 'LOGIN_STATUS_LOCKED' => "Ihr Account wurde gesperrt. Sperrgrund: <span class=\"data\">{%user,lock_reason%}</span>, Sperrzeitpunkt: <span class=\"data\">{%user,lock_timestamp,generateDateTime%}</span>",
+ 'LOGIN_STATUS_UNCONFIRMED' => "Bitte bestätigen Sie erst Ihre Email-Adresse! Haben Sie den Bestätigungslink verloren? Links im Menü unter "Bestätigungslink" können Sie ihn erneut anfordern.",
+ 'LOGIN_COOKIES_DISABLED' => "Sie haben in Ihrem Browser entweder die Cookies ausgeschaltet, oder die Sicherheitsstufe ist zu hoch eingestellt.",
+ 'LOGIN_UNKNOWN_ERROR' => "Es ist ein unerwarteter Account-Status aufgetreten. Bitte melden Sie sich beim Support dieses {?mt_word2?}.",
+ 'LOGIN_UNKNOWN_STATUS' => "Ihr Account weisst einen unbekannten Status auf. Bitte melden Sie sich beim Support dieses {?mt_word2?}.",
+ 'LOGIN_ID_IS_EMPTY' => "Sie haben Ihre Mitglieds-Id nicht eingegeben. Dies ist Ihre Mitglieds-Id.",
+ 'LOGIN_PASSWORD_IS_EMPTY' => "Sie haben kein Passwort eingegeben. Falls Sie Ihres vergessen haben, können Sie mit unterem Formular ein neues sich zuschicken lassen.",
+
+ // Admin config - admin menu
+ 'ADMIN_CONFIG_ADMIN_MENU_TITLE' => "Einstellungen am Adminmenü",
+ 'ADMIN_CONFIG_ADMIN_MENU_TYPE_LEGEND' => "Menütyp auswählen",
+ 'ADMIN_CONFIG_ADMIN_MENU_MISC_LEGEND' => "Interaktives Adminmenü",
+ 'ADMIN_CONFIG_ADMIN_MENU_NEW' => "Neues Menüsystem mit "logischen Bereichen"",
+ 'ADMIN_CONFIG_ADMIN_MENU_OLD' => "Herkömliches Menüsystem links im Browser",
+ 'ADMIN_CONFIG_ADMIN_MENU_JAVASCRIPT_ENABLED' => "Soll das mit JavaScript ("interaktiv") gesteuerte Adminmenü eingeschaltet werden? (Dies ist noch sehr experimentell.)",
+
+ // Admin config - refid
+ 'ADMIN_CONFIG_REFID_TITLE' => "Einstellungen zum Referral-Link",
+ 'ADMIN_CONFIG_REFID_GENERAL_LEGEND' => "Standard-Refid, Weiterleitungsziel",
+ 'ADMIN_CONFIG_RANDOM_REFID_LEGEND' => "Zufallsreferral",
+ 'ADMIN_CONFIG_RANDOM_ZERO_REFID' => "Soll per Zufall ein Mitglied ausgwählt werden oder soll die oben eingestellte Standard-Refid verwendet werden?",
+ 'ADMIN_CONFIG_RANDOM_REFID_ENABLED' => "Mitglieder per Zufall wählen",
+ 'ADMIN_CONFIG_RANDOM_REFID_DISABLED' => "Voreingestellte Referral-Id setzen",
+ 'ADMIN_CONFIG_RANDOM_MIN_CONFIRMED' => "Wie viele Mails muss ein Mitglied mindestens bestätigt haben, um per Zufall ausgewählt zu werden?",
+ 'ADMIN_CONFIG_REFID_NOTICE' => "Sobald ein Mitglied ausgewählt wurde, werden die Zähler aller Mitglieder auf Null gesetzt. Dies soll Chancengleichheit bringen und dass die Mitglieder mehr Mails abklicken. Ist <strong>{--ADMIN_CONFIG_RANDOM_REFID_ENABLED--}</strong> ausgewählt, wird die Einstellung <strong>Standard-Referral Id</strong> ignoriert.",
+
+ // Member mails: bonus/normal (click)
'MEMBER_MAIL_BONUS_CONFIRMED_ON' => "Sie haben diese Bonusmail am|um <span class=\"data\">%s</span> bestätigt.",
'MEMBER_MAIL_BONUS_CONFIRMED_UNKNOWN' => "Es konnte nicht festgestellt werden, wann Sie die Bonus-Mail <span class=\"data\">%s</span> bestätigt hatten.",
'MEMBER_MAIL_BONUS_NEVER_CONFIRMED' => "Sie haben diese Bonusmail <span class=\"data\">%s</span> noch nicht bestätigt.",
'MEMBER_REFLIST_ACTIVITY' => "Mitglied aktiv?",
// Special user lists (what=list_user)
- 'ADMIN_LIST_ALL_ACCOUNTS' => "Alle Mitglieder-Accounts auflisten",
+ 'ADMIN_LIST_ALL_ACCOUNTS' => "Alle Benutzeraccounts (auch Testaccounts) auflisten",
'ADMIN_LIST_STATUS_LOCKED_ACCOUNTS' => "Alle gesperrten Mitglieder-Accounts auflisten",
'ADMIN_LIST_STATUS_CONFIRMED_ACCOUNTS' => "Alle bestätigten Mitglieder-Accounts auflisten",
'ADMIN_LIST_STATUS_UNCONFIRMED_ACCOUNTS' => "Alle unbestätigten Mitglieder-Accounts auflisten",
'ADMIN_LIST_DO_CONFIRMED_ACCOUNTS' => "Alle bestätigten Mitglieder-Accounts auflisten",
'ADMIN_LIST_DO_NOREFS_ACCOUNTS' => "Alle Mitglieder-Accounts ohne Referrals auflisten",
'ADMIN_LIST_DO_RANDOM_REFID_ACCOUNTS' => "Alle Mitglieder-Accounts für Zufallsreferral auflisten",
+ 'ADMIN_LIST_DO_TESTERS_ACCOUNTS' => "Alle Testbenutzer auflisten",
// Admin task lines
'ADMIN_TASK_TYPE_MEMBER_SUPPORT' => "Support-Anfrage eines Mitgliedes",
'ADMIN_STATUS_CHANGED' => "Es wurden <span class=\"data\">%s</span> von <span class=\"data\">%s</span> Einträgen geändert.",
// Missing menu entries
- 'ADMIN_MENU_ACTION_404_TITLE' => "Hauptmenü '%s' deaktiviert, da keine Scriptdatei auf dem Server gefunden wurde.",
- 'ADMIN_MENU_WHAT_404_TITLE' => "Untermenü '%s' deaktiviert, da keine Scriptdatei auf dem Server gefunden wurde.",
+ 'ADMIN_MENU_ACTION_404_TITLE' => "Hauptmenü '%s' deaktiviert, da die dazugehörige Scriptdatei auf dem Server nicht gefunden wurde.",
+ 'ADMIN_MENU_WHAT_404_TITLE' => "Untermenü '%s' deaktiviert, da die dazugehörige Scriptdatei auf dem Server nicht gefunden wurde.",
// Cache messages
'CACHE_CANNOT_LOAD' => "Kann nicht Cache-Datei <strong><span class=\"data\">%s</span></strong> laden.",
'ADMIN_ACTION_DELETE_SUBMIT' => "Löschen",
'ADMIN_ACTION_REMOVE_SUBMIT' => "Einträge löschen",
'ADMIN_ACTION_EDIT_SELECT_SUBMIT' => "Ausgewählten Eintrag bearbeiten",
- 'ADMIN_ACTION_LOCK_SUBMIT' => "Ent-/sperren",
+ 'ADMIN_ACTION_UNLOCK_SUBMIT' => "Ent-/sperren",
+ 'ADMIN_ACTION_ACTIVATE_SUBMIT' => "Freischalten",
// Admin 'pool' mail actions
'ADMIN_EDIT_POOL_MAIL_LINK' => "Klick-Mail bearbeiten",
'ADMIN_DELETE_POOL_MAIL_LINK' => "Klick-Mail löschen",
// Generic points subjects
- 'POINTS_SUBJECT_UNKNOWN' => "??? (%s)",
- 'POINTS_SUBJECT_ADMIN_ADD_ALL' => "Gutschrift für alle durch den Administrator",
- 'POINTS_SUBJECT_ADMIN_ADD_SINGLE' => "Einzelgutschrift durch den Administrator",
- 'POINTS_SUBJECT_ADMIN_SUB_ALL' => "Abzug aller Accounts durch den Administrator",
- 'POINTS_SUBJECT_ADMIN_SUB_SINGLE' => "Einzelabzug durch den Administrator",
+ 'POINTS_SUBJECT_UNKNOWN' => "??? (%s)",
+ 'POINTS_SUBJECT_ADMIN_ADD_ALL' => "Gutschrift für alle durch den Administrator",
+ 'POINTS_SUBJECT_ADMIN_ADD_SINGLE' => "Einzelgutschrift durch den Administrator",
+ 'POINTS_SUBJECT_ADMIN_SUB_ALL' => "Abzug aller Accounts durch den Administrator",
+ 'POINTS_SUBJECT_ADMIN_SUB_SINGLE' => "Einzelabzug durch den Administrator",
+ 'POINTS_SUBJECT_MAIL_DELETED' => "Löschung einer Mailbuchung",
+ 'POINTS_SUBJECT_POOL_PAYBACK' => "Rückvergütung aus Sendepool",
+ 'POINTS_SUBJECT_ADMIN_ADD_ALL_REF' => "Anteilige Gutschrift für alle durch den Administrator",
+ 'POINTS_SUBJECT_ADMIN_ADD_SINGLE_REF' => "Anteilige Einzelgutschrift durch den Administrator",
// Admin - List referrals
'ADMIN_LIST_USER_NO_REFERRALS' => "Das Mitglied <span class=\"data\">%s</span> hat in dieser Referral-Ebene keine Mitglieder geworben.",
'ADMIN_NO_REFERRAL_LEVELS' => "In Ihrem {?mt_word?} sind keine Referral-Ebenen eingerichtet! Ihre Mitglieder erhalten <u>keine</u> {?POINTS?} gutgeschrieben. Richten Sie mindestens Referral-Ebene 0 mit 100% Vergütung ein.",
'ADMIN_LIST_USER_NODATA' => "Das Mitglied <span class=\"data\">%s</span> wurde bereits gelöscht.",
+
+ // Footer navigation (e.g. installer)
+ 'PAGE_PREVIOUS_SUBMIT' => "Zurück",
+ 'PAGE_NEXT_SUBMIT' => "Weiter",
+ 'SAVE_CHANGES_SUBMIT' => "Änderungen speichern",
+ 'NEXT_SAVE_CHANGES_SUBMIT' => "Änderungen speichern und zum nächsten Schritt",
+ 'PREVIOUS_SAVE_CHANGES_SUBMIT' => "Änderungen speichern und zum verherigen Schritt",
+ 'TAB_SAVE_CHANGES_SUBMIT' => "Änderungen speichern und weiter zu '%s'",
+ 'PAGE_FINISH_SUBMIT' => "Fertigstellen",
+
+ // Admin - points_data "config"
+ 'ADMIN_ENTER_POINTS_DATA_SUBJECT_LINE' => "Verwendungszweck eingeben:",
+ 'ADMIN_ENTER_POINTS_DATA_COLUMN_NAME' => "Tabellenspalte eingeben:",
+ 'ADMIN_SELECT_POINTS_DATA_LOCKED_MODE' => "Verhalten bei {?POINTS?}-Sperre einstellen:",
+ 'ADMIN_SELECT_POINTS_DATA_PAYMENT_METHOD' => "Vergütungsmethode einstellen:",
+ 'ADMIN_SELECT_POINTS_DATA_NOTIFY_RECIPIENT' => "Soll das Mitglied benachrichtigt werden?",
+ 'ADMIN_ADD_POINTS_DATA_USAGE_TITLE' => "Kleine Nutzungsanleitung:",
+ 'ADMIN_ADD_POINTS_DATA_NOTICE' => "Achten Sie bei der Verwendung dieses Formulars darauf, dass der Verwendungszweck nicht mehrfach aufgeführt ist, sollte die eingegebene Tabellenspalte nicht existieren, wird sie automatisch angelegt. Sollte das Guthabenkonto wieder gelöscht werden, werden die dort angesammelten {?POINTS?} auf das eingestellbare Guthabenkonto (aktuell: <strong>{%config,translatePointsAccountType=points_remove_account%}</strong> umgebucht. Es können mit diesem Formular nur benutzerdefinierte Guthabenkonten angelegt oder gelöscht werden, die Konten durch Erweiterungen angelegt sind dieses nicht.",
+ 'ADMIN_ADD_POINTS_DATA_SUBJECT_NOTICE' => "Der Verwendungszweck ist stets klein zu schreiben und sollte auch im Programmcode verwendet werden und muss mit dem ersten Parameter von den Funktionen <strong>addPointsThroughReferralSystem()</strong>, <strong>subtractPoints()</strong> und somit auch <strong>addBookingRecord()</strong> übereinstimmen.",
+ 'ADMIN_ADD_POINTS_DATA_COLUMN_NAME_NOTICE' => "Die Tabellenspalte ist stets klein zu schreiben, ist diese in der Tabelle <strong>{?_MYSQL_PREFIX?}_user_points</strong> nicht vorhanden, wird diese plus der selbe Spaltenname mit dem Präfix <strong>locked_</strong> automatisch dort erzeugt. Der Spaltenname sollte das Stichwort <strong>points</strong> enthalten und darf <strong><u>NIEMALS</u></strong> <strong>id</strong>, <strong>userid</strong> oder <strong>ref_depth</strong> heissen oder <strong>locked</strong> enthalten.",
+ 'ADMIN_ADD_POINTS_DATA_LOCKED_MODE_NOTICE' => "Bei der {?POINTS?}-Sperre werden dem Mitglied die {?POINTS?} auf sein so genanntes "gesperrtes Guthaben" gutgeschrieben. Auf dieses hat das Mitglied solange keinen Zugriff, bis es die Mindestanzahl zu bestätigender Mails erreicht hat. Die Einstellung <strong>{--POINTS_LOCKED_MODE_LOCKED--}</strong> bewirkt, dass das Mitglied ebenfalls auf dieses Guthaben hinarbeiten muss. <strong>{--POINTS_LOCKED_MODE_UNLOCKED--}</strong> bewirkt hingegen, dass das Mitglied die Gutschrift sofort erhält, ohne Mails bestätigen zu müssen.",
+ 'ADMIN_ADD_POINTS_DATA_PAYMENT_METHOD_NOTICE' => "Mit der Vergütungsmethode können Sie beeinflussen, ob Ihre Mitglieder Referral-Gutschriften erhalten oder nur das eigentliche Mitglied (also das, was die Gutschrift erhalten soll) diese "direkt" gutgeschrieben werden soll. Stellen Sie dies z.B. beim Verwendungszweck <strong>mailid_okay</strong> auf "{--POINTS_PAYMENT_METHOD_DIRECT--}" um, erhät das werbende Mitglied (das als Referral-Id eingetragen ist) keine Gutschriften bei der Mailbestätigung mehr. Seien Sie also auch mit dieser Einstellung nicht leichtsinnig.",
+ 'ADMIN_POINT_ACCOUNT_ADDED' => "Das Guthabenkonto wurde soeben angelegt. Bitte bauen Sie dies nun in Ihren PHP-Code ein.",
+ 'ADMIN_POINT_ACCOUNT_NOT_ADDED' => "Das Guthabenkonto konnte nicht angelegt werden. Vielleicht ist es bereits vorhanden oder von einer Erweiterung bereits angelegt?",
+ 'ADMIN_POINTS_ACCOUNT_SUBJECT' => "Verwendungszweck",
+ 'ADMIN_POINTS_ACCOUNT_COLUMN_NAME' => "Tabellenspalte",
+ 'ADMIN_POINTS_ACCOUNT_LOCKED_MODE' => "Sperrverhalten",
+ 'ADMIN_POINTS_ACCOUNT_PAYMENT_METHOD' => "Vergütungsmethode",
+ 'ADMIN_POINTS_ACCOUNT_NOTIFY_RECIPIENT' => "Empfänger benachrichtigen?",
+ 'ADMIN_POINTS_ACCOUNT_PROVIDER' => "Anbieter:",
+ 'ADMIN_CHANGE_POINTS_NOTIFY_RECIPIENT' => "Ändern von Empfangsbenachrichtigung aussenden:",
+ 'ADMIN_CHANGE_POINTS_LOCKED_MODE' => "Ändern vom Verhalten bei unzureichend bestätigten Mails:",
+ 'ADMIN_CHANGE_POINTS_PAYMENT_METHOD' => "Ändern von Vergütungsmethode:",
+
+ // Admin points data config - title
+ 'ADMIN_ADD_POINTS_DATA_TITLE' => "Benutzerdefiniertes Guthabenkonto erstellen",
+ 'ADMIN_EDIT_POINTS_DATA_TITLE' => "Ändern von Guthabenhonten",
+ 'ADMIN_LIST_POINTS_ACCOUNTS_TITLE' => "Alle Guthabenkonten auflisten",
+
+ // Admin points data config - submit buttons
+ 'ADMIN_ADD_POINTS_DATA_SUBMIT' => "Guthabenkonto anlegen",
+ 'ADMIN_POINTS_DATA_CHANGE_SUBMIT' => "Guthabenkonten ändern",
+
+ // Generic: points account types (in fact: column names)
+ 'POINTS_ACCOUNT_TYPE_UNKNOWN' => "Unbekannter Guthabenkontotyp <span class=\"data\">%s</span> erkannt.",
+ 'POINTS_ACCOUNT_TYPE_POINTS' => "Allgemeinguthaben",
+ 'POINTS_ACCOUNT_TYPE_LOCKED_POINTS' => "Gesperrtes Allgemeinguthaben",
+
+ // Generic: points "locked mode"
+ 'POINTS_LOCKED_MODE_UNKNOWN' => "Unbekannter Guthabensperrmodus <span class=\"data\">%s</span> erkannt.",
+ 'POINTS_LOCKED_MODE_LOCKED' => "Auf gesperrtes Guthaben",
+ 'POINTS_LOCKED_MODE_UNLOCKED' => "Auf ungesperrtes Guthaben",
+
+ // Generic: points payment method
+ 'POINTS_PAYMENT_METHOD_UNKNOWN' => "Unbekannte Gutschriftmethode <span class=\"data\">%s</span> erkannt.",
+ 'POINTS_PAYMENT_METHOD_DIRECT' => "Dem Mitglied direkt gutschreiben",
+ 'POINTS_PAYMENT_METHOD_REFERRAL' => "Über das Referral-System",
+
+ // Generic: points account provider
+ 'POINTS_ACCOUNT_PROVIDER_UNKNOWN' => "Unbekannten Anbieter <span class=\"data\">%s</span> erkannt.",
+ 'POINTS_ACCOUNT_PROVIDER_EXTENSION' => "Erweiterung",
+ 'POINTS_ACCOUNT_PROVIDER_CUSTOM' => "Benutzerdefiniert",
+
+ // Generic: points notify recipient
+ 'POINTS_NOTIFY_RECIPIENT_UNKNOWN' => "Unbekannte Benachrichtigungsoption <span class=\"data\">%s</span> erkannt.",
+ 'POINTS_NOTIFY_RECIPIENT_Y' => "An Mitglied aussenden",
+ 'POINTS_NOTIFY_RECIPIENT_N' => "An Mitglied NICHT aussenden",
+
+ // Admin - subject lines
+ 'ADMIN_DIRECT_ADMIN_ADD_SINGLE_SUBJECT' => "Einzeldirektgutschrift durch Administrator",
+ 'ADMIN_DIRECT_ADMIN_ADD_ALL_SUBJECT' => "Sammeldirektgutschrift durch Administrator",
+ 'ADMIN_REFERRAL_ADMIN_ADD_SINGLE_SUBJECT' => "Einzelreferralgutschrift durch Administrator",
+ 'ADMIN_REFERRAL_ADMIN_ADD_ALL_SUBJECT' => "Sammelreferralgutschrift durch Administrator",
+ 'ADMIN_REFERRAL_ADMIN_ADD_SINGLE_REF_SUBJECT' => "Anteilige Einzelreferralgutschrift durch Administrator",
+ 'ADMIN_REFERRAL_ADMIN_ADD_ALL_REF_SUBJECT' => "Anteilige Sammelreferralgutschrift durch Administrator",
+ 'ADMIN_EDIT_POINTS_DATA_SUBJECT' => "Guthabenkonto geändert",
+
+ // Member - subject lines
+ 'MEMBER_DIRECT_ADMIN_ADD_SINGLE_SUBJECT' => "Einzeldirektgutschrift vom Administrator erhalten",
+ 'MEMBER_DIRECT_ADMIN_ADD_ALL_SUBJECT' => "Sammeldirektgutschrift vom Administrator erhalten",
+ 'MEMBER_REFERRAL_ADMIN_ADD_SINGLE_SUBJECT' => "Einzelreferralgutschrift vom Administrator erhalten",
+ 'MEMBER_REFERRAL_ADMIN_ADD_ALL_SUBJECT' => "Sammelreferralgutschrift vom Administrator erhalten",
+ 'MEMBER_REFERRAL_ADMIN_ADD_SINGLE_REF_SUBJECT' => "Anteilige Einzelreferralgutschrift vom Administrator erhalten",
+ 'MEMBER_REFERRAL_ADMIN_ADD_ALL_REF_SUBJECT' => "Anteilige Sammelreferralgutschrift vom Administrator erhalten",
+
+ // AJAX admin menu
+ 'ADMIN_AJAX_MENU_IS_LOADING' => "Das Adminmenü wird geladen, bitte etwas Geduld . . .",
+ 'ADMIN_AJAX_ERROR_TITLE' => "AJAX-Abfrage im Adminmenü fehlgeschlagen",
+ 'ADMIN_AJAX_WARNING_TITLE' => "Warnung: Es sind ungespeicherte Änderungen vorhanden",
));
// Description of all months
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'DOUBLER_ENTER_LOGIN_DATA' => "Geben Sie hier Ihre Zugangsdaten ein",
'DOUBLER_NOTICE_FOR_PASSWORD' => "Das Passwort wird nicht gespeichert.",
'DOUBLER_ENTER_POINTS' => "{?POINTS?} zum Verdoppeln",
- 'DOUBLER_NOW' => "Verdoppeln.",
+ 'DOUBLER_NOW_SUBMIT' => "Verdoppeln.",
'DOUBLER_ALREADY_PAYED' => "Es wurden bereits <strong>{%config,translateComma=doubler_points%} {?POINTS?}</strong> ausgezahlt.",
'DOUBLER_MINIMUM_IS' => "Mindestens",
'DOUBLER_MAXIMUM_IS' => "verdoppeln, maximal",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Titles/notes for displaying earning data
'MEMBER_EARNING_TITLE' => "Zusatzverdienste bei {?MAIN_TITLE?}",
- 'MEMBER_EARNING_NOTICE' => "Das Team von {?MAIN_TITLE?} wünscht Ihnen gute Verdienste!",
- 'MEMBER_EARNING_DATA_INVALID_TITLE' => "Ungültigen Zusatzverdienst oder Scriptefehler!",
+ 'MEMBER_EARNING_NOTICE' => "Das Team von {?MAIN_TITLE?} wünscht Ihnen gute Verdienste.",
+ 'MEMBER_EARNING_DATA_INVALID_TITLE' => "Ungültigen Zusatzverdienst oder Scriptefehler.",
'MEMBER_EARNING_DATA_INVALID_NOTICE' => "Es liegt vermutlich ein Scriptefehler vor. Bitte teilen Sie die oben stehenden Daten dem Support mit.",
// Earning groups
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addMessages(array(
// Admin - forced ads
'ADMIN_FORCED_ADS_404' => "Es wurden keine Forced-Werbemittel gefunden.",
- 'ADMIN_ADD_FORCED_AD_TITLE' => "Hinzufügen eines Forced-Werbemittels:",
- 'ADMIN_ADD_FORCED_ADD_SUBMIT' => "Forced-Werbemittel hinzufügen",
'ADMIN_ENTER_FORCED_AD_CLICK_URL' => "Klick-URL des Forced-Werbemittels eingeben:",
'ADMIN_SELECT_FORCED_AD_TYPE' => "Forced-Werbemittelart auswählen:",
'ADMIN_SELECT_FORCED_HAS_FRAMEBREAKER' => "Hat das Forced-Werbemittel einen Framekiller?",
'ADMIN_ENTER_FORCED_ALTERNATE_TEXT' => "Alternativen Text/Titel des Forced-Werbemittels eingeben:",
'ADMIN_ENTER_FORCED_AD_WIDTH' => "Breite (in Pixel) des Forced-Werbemittels eingeben:",
'ADMIN_ENTER_FORCED_AD_HEIGHT' => "Höhe (in Pixel) des Forced-Werbemittels eingeben:",
- 'ADMIN_FORCED_ADS_TYPE_UNKNOWN' => "Unbekanntes Forced-Werbemittel %s erkannt.",
- 'ADMIN_FORCED_ADS_TYPE_BANNER' => "Forced-Banner",
- 'ADMIN_FORCED_ADS_TYPE_TEXTLINK' => "Forced-Textlink",
- 'ADMIN_FORCED_ADS_TYPE_POPUP' => "Forced-PopUp",
- 'ADMIN_LIST_FORCED_ADS_TITLE' => "Auflisten aller Forced-Werbemittel",
+ 'ADMIN_FORCED_ADS_CLICK_URL' => "Klick-URL",
+ 'ADMIN_FORCED_ADS_WIDTH' => "Breite (in Pixel) bei PopUp/Banner",
+ 'ADMIN_FORCED_ADS_HEIGHT' => "Höhe (in Pixel) bei PopUp/Banner",
+ 'ADMIN_FORCED_ADS_USERID' => "Verknüpfte Mitglieds-Id",
+ 'ADMIN_FORCED_ADS_AD_URL' => "URL des Forced-Banners",
+ 'ADMIN_FORCED_ADS_ALTERNATE_TEXT' => "Alternativen Text",
'ADMIN_FORCED_ADS_TYPE' => "Forced-Werbemittel",
'ADMIN_FORCED_ADS_VIEWS_COUNTER' => "Anzahl Forced-Views",
'ADMIN_FORCED_ADS_CLICKS_COUNTER' => "Anzahl Forced-Klicks",
'ADMIN_FORCED_ADS_HAS_FRAMEBREAKER' => "Framekiller?",
- 'ADMIN_FORCED_ADS_ADDED' => "Hinzugefügt:",
+ 'ADMIN_FORCED_ADS_ADDED' => "Hinzugefügt",
'ADMIN_CHANGE_FORCED_ADS_AD_URL' => "Banner-URL ändern:",
'ADMIN_CHANGE_FORCED_ADS_CLICK_URL' => "Klick-URL ändern:",
- 'ADMIN_CHANGE_FORCED_ADS_ALT_TEXT' => "Alternativen Text ändern:",
+ 'ADMIN_CHANGE_FORCED_ADS_ALTERNATE_TEXT' => "Alternativen Text ändern:",
'ADMIN_CHANGE_FORCED_ADS_WIDTH' => "Breite ändern:",
'ADMIN_CHANGE_FORCED_ADS_HEIGHT' => "Höhe ändern:",
'ADMIN_CHANGE_FORCED_ADS_USERID' => "Zugewiesenes Mitglied ändern:",
'ADMIN_CHANGE_FORCED_ADS_TYPE' => "Art ändern:",
'ADMIN_CHANGE_FORCED_ADS_FRAMEBREAKER' => "Ändern ob ein Framekiller vorhanden ist:",
- 'ADMIN_EDIT_FORCED_ADS_TITLE' => "Ändern von Forced-Werbemitteln:",
// Admin - forced campaigns
- 'ADMIN_FORCED_CAMPAIGNS_404' => "Es wurde keine Forced-Kampagnen gefunden.",
+ 'ADMIN_FORCED_CAMPAIGNS_404' => "Es wurden keine Forced-Kampagnen gefunden.",
+ 'ADMIN_ENTER_FORCED_CAMPAIGN_ORDERED_CLICKS' => "Anzahl Klicks/Einblendungen eingeben:",
+ 'ADMIN_SELECT_FORCED_CAMPAIGN_RELOAD_LOCK' => "Reload-Sperre einstellen:",
+ 'ADMIN_ENTER_FORCED_CAMPAIGN_MINIMUM_STAY' => "Mindestauffenthalt in Sekunden eingeben:",
+ 'ADMIN_SELECT_FORCED_AD' => "Forced-Werbemittel auswählen:",
+ 'ADMIN_SELECT_FORCED_CAMPAIGN_USERID' => "Mitgliedsaccount auswählen, dass dieser Kampagne zugewiesen werden soll:",
+ 'ADMIN_SELECT_FORCED_COSTS' => "Forced-Preis auswählen:",
+ 'ADMIN_FORCED_CAMPAIGN_STATUS' => "Kampagnen-Status",
+ 'ADMIN_FORCED_CAMPAIGN_ORDERED_CLICKS' => "Klicks übrig",
+ 'ADMIN_FORCED_CAMPAIGN_PAYMENT_API' => "Vergütung von API",
+ 'ADMIN_FORCED_CAMPAIGN_RELOAD_LOCK' => "Reload-Sperre",
+ 'ADMIN_FORCED_CAMPAIGN_MINIMUM_STAY' => "Mindestauffenthalt (Sekunden)",
+ 'ADMIN_FORCED_CAMPAIGN_LAST_LOCKED' => "Zuletzt gesperrt",
+ 'ADMIN_FORCED_CAMPAIGN_LOCK_REASON' => "Sperrgrund",
+ 'ADMIN_FORCED_CAMPAIGN_EXPIRED' => "Abgelaufen",
+ 'ADMIN_FORCED_CAMPAIGN_CREATED' => "Erstellt",
+ 'ADMIN_FORCED_CAMPAIGNS_ACTIVATED_DONE' => "Es wurden alle ausgewählten Forced-Kampagnen aktiviert.",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_ORDERED_CLICKS' => "Bestellte/Übrige Klicks ändern:",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_PAYMENT_API' => "Vergütung von API ändern:",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_RELOAD_LOCK' => "Reload-Sperre ändern:",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_MINIMUM_STAY' => "Mindestauffenthalt (Sekunden) ändern:",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_ADS_ID' => "Verknüpftes Forced-Werbemittel ändern:",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_USERID' => "Verknüpftes Mitgliedsaccount ändern:",
+ 'ADMIN_CHANGE_FORCED_CAMPAIGN_COSTS_ID' => "Verknüpfte Kosten/Vergütung ändern:",
// Admin - forced costs
- 'ADMIN_FORCED_COSTS_404' => "Es wurden keine Forced-Kosten gefunden.",
+ 'ADMIN_FORCED_COSTS_404' => "Es wurden keine Forced-Preise gefunden.",
+ 'ADMIN_ENTER_FORCED_COSTS_PRICE_PER_CLICK' => "Preis in {?POINTS?} pro Klick eingeben:",
+ 'ADMIN_ENTER_FORCED_COSTS_PAYMENT_PER_CLICK' => "Vergütung in {?POINTS?} pro Klick eingeben:",
+ 'ADMIN_SELECT_FORCED_COSTS_VISIBILITY' => "Für wen soll dieser Eintrag sichtbar sein?",
+ 'ADMIN_FORCED_COSTS_PRICE_CLICK' => "Preis ({?POINTS?})",
+ 'ADMIN_FORCED_COSTS_PAYMENT_CLICK' => "Vergütung ({?POINTS?})",
+ 'ADMIN_FORCED_COSTS_VISIBILITY' => "Sichtbarkeit",
+ 'ADMIN_CHANGE_FORCED_COSTS_PRICE_CLICK' => "Preis pro Klick ändern:",
+ 'ADMIN_CHANGE_FORCED_COSTS_PAYMENT_CLICK' => "Vergütung pro Klick ändern:",
+ 'ADMIN_CHANGE_FORCED_COSTS_VISIBILITY' => "Preis-Sichtbarkeit ändern:",
+ 'ADMIN_FORCED_COSTS_SELECTION_NOTICE' => "Erster {?POINTS?}-Wert ist zu zahlender Preis, zweiter die Vergütung.",
- // Earning names
- 'EARNING_PROVIDER_FORCED_POPUP' => "Forced-PopUp",
+ // Admin - forced ads types
+ 'ADMIN_FORCED_ADS_TYPE_UNKNOWN' => "Unbekanntes Forced-Werbemittel %s erkannt.",
+ 'ADMIN_FORCED_ADS_TYPE_BANNER' => "Forced-Banner",
+ 'ADMIN_FORCED_ADS_TYPE_TEXTLINK' => "Forced-Textlink",
+ 'ADMIN_FORCED_ADS_TYPE_POPUP' => "Forced-PopUp",
+
+ // Admin - forced campaign status
+ 'ADMIN_FORCED_CAMPAIGN_TYPE_UNKNOWN' => "Unbekannter Kampagnenstatus %s erkannt.",
+ 'ADMIN_FORCED_CAMPAIGN_TYPE_ACTIVE' => "Aktiv",
+ 'ADMIN_FORCED_CAMPAIGN_TYPE_PENDING' => "Wartend",
+ 'ADMIN_FORCED_CAMPAIGN_TYPE_EXPIRED' => "Abgelaufen",
+ 'ADMIN_FORCED_CAMPAIGN_TYPE_LOCKED' => "Gesperrt",
+
+ // Admin - forced costs visibility
+ 'ADMIN_FORCED_ADS_VISIBILITY_UNKNOWN' => "Unbekannte Preissichtbarkeit %s erkannt.",
+ 'ADMIN_FORCED_ADS_VISIBILITY_MEMBER' => "Nur Mitglieder",
+ 'ADMIN_FORCED_ADS_VISIBILITY_SPONSOR' => "Nur Sponsoren",
+ 'ADMIN_FORCED_ADS_VISIBILITY_ALL' => "Alle",
+ 'ADMIN_FORCED_ADS_VISIBILITY_NONE' => "Nur Administratoren",
+
+ // Admin - notices
+ 'ADMIN_ADD_FORCED_COSTS_NOTICE' => "Administratoren können immer alle Forced-Preise verwenden!",
+ 'ADMIN_LIST_FORCED_CAMPAIGN_NOTICE' => "Das Zuweisen eines Mitgliedsaccounts bewirkt, dass dieses Mitglied das Forced-Werbemittel nicht mehr anklicken kann (da es somit "seines" geworden ist).",
+ 'ADMIN_EDIT_FORCED_CAMPAIGN_NOTICE' => "{--ADMIN_LIST_FORCED_CAMPAIGN_NOTICE--}",
- // Submit buttons
+ // Admin - titles
+ 'ADMIN_ADD_FORCED_AD_TITLE' => "Hinzufügen eines Forced-Werbemittels",
+ 'ADMIN_LIST_FORCED_ADS_TITLE' => "Auflisten aller Forced-Werbemittel",
+ 'ADMIN_EDIT_FORCED_ADS_TITLE' => "Ändern von Forced-Werbemitteln",
+ 'ADMIN_DELETE_FORCED_ADS_TITLE' => "Löschen von Forced-Webemitteln",
+ 'ADMIN_ADD_FORCED_CAMPAIGN_TITLE' => "Hinzufügen einer Forced-Kampagne",
+ 'ADMIN_LIST_FORCED_CAMPAIGNS_TITLE' => "Auflisten aller Forced-Kampagnen",
+ 'ADMIN_EDIT_FORCED_CAMPAIGN_TITLE' => "Ändern von Forced-Kampagnen",
+ 'ADMIN_ADD_FORCED_COSTS_TITLE' => "Hinzufügen von Forced-Preisen",
+ 'ADMIN_LIST_FORCED_COSTS_TITLE' => "Auflisten aller Forced-Preise",
+ 'ADMIN_EDIT_FORCED_COSTS_TITLE' => "Ändern von Forced-Preisen",
+ 'ADMIN_DELETE_FORCED_COSTS_TITLE' => "Löschen von Forced-Preisen",
+
+ // Admin - submit buttons
+ 'ADMIN_ADD_FORCED_AD_SUBMIT' => "Forced-Werbemittel hinzufügen",
'ADMIN_FORCED_ADS_CHANGE_SUBMIT' => "Forced-Werbemittel ändern",
+ 'ADMIN_FORCED_ADS_REMOVE_SUBMIT' => "Forced-Werbemittel löschen",
+ 'ADMIN_ADD_FORCED_CAMPAIGN_SUBMIT' => "Forced-Kampagne hinzufügen",
+ 'ADMIN_FORCED_CAMPAIGN_CHANGE_SUBMIT' => "Forced-Kampagnen ändern",
+ 'ADMIN_ADD_FORCED_COSTS_ADD_SUBMIT' => "Preis hinzufügen",
+ 'ADMIN_FORCED_COSTS_CHANGE_SUBMIT' => "Preise ändern",
+ 'ADMIN_FORCED_COSTS_REMOVE_SUBMIT' => "Preise löschen",
+
+ // Admin - error messages
+ 'ADMIN_FORCED_ADS_NO_SELECTIONS' => "Es wurde keine Auswahl getroffen, bitte wählen Sie mindestens ein Forced-Werbemittel aus!",
+ 'ADMIN_FORCED_CAMPAIGNS_NO_SELECTIONS' => "Es wurde keine Auswahl getroffen, bitte wählen Sie mindestens eine Forced-Kampagne aus!",
+ 'ADMIN_FORCED_COSTS_NO_SELECTIONS' => "Es wurde keine Auswahl getroffen, bitte wählen Sie mindestens einen Forced-Preis aus!",
+ 'ADMIN_FORCED_CAMPAIGNS_ACTIVATED_FAILED' => "Bei der Aktivierung von Forced-Kampagnen ist ein Fehler unterlaufen, haben Sie auch nur Kampagnen mit dem Status <u>{--ADMIN_FORCED_CAMPAIGN_TYPE_PENDING--}</u> ausgewählt?",
+ // Admin - subject lines
+ 'ADMIN_EDIT_FORCED_ADS_SUBJECT' => "Änderungen an Forced-Werbemitteln",
+ 'ADMIN_EDIT_FORCED_COSTS_SUBJECT' => "Änderung an Forced-Preisen",
+ 'ADMIN_FORCED_NOTIFY_CAMPAIGN_PENDING_ACTIVE_SUBJECT' => "Eine Forced-Kampagne wurde freigeschaltet",
+
+ // Member - subject lines
+ 'MEMBER_FORCED_NOTIFY_CAMPAIGN_PENDING_ACTIVE_SUBJECT' => "Ihre Forced-Kampagne wurde freigeschaltet",
+
+ // All - earning names
+ 'EARNING_PROVIDER_FORCED_POPUP' => "Forced-PopUp",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
'ADMIN_HTML_DOWNLOAD_CLASS' => "Bitte laden Sie sich die Klasse <a href=\"{%pipe,generateDerefererUrl=https://sourceforge.net/projects/phpmailer/%}\" target=\"_blank\">PHPMailer</a> herunter, um diese Funktion nutzen zu können.",
- 'MEMBER_HTML_INTRO' => "HTML-Emfpang - Einstellung",
+ 'MEMBER_HTML_TITLE' => "HTML-Emfpang - Einstellung",
'MEMBER_HTML_TEXT' => "In unserem {?mt_word?} ist das Empfangen von HTML-Mails nun möglich. Gleichzeitig können Sie auch selber HTML-Mails versenden. Möchten Sie dies beides nutzen?",
- 'MEMBER_HTML_ORDER_INTRO' => "HTML- oder normale Text-Mails versenden?",
- 'MEMBER_HTML_MSG' => "HTML-Mail",
- 'MEMBER_NORMAL_MSG' => "Normale Text-Mail",
- 'MEMBER_HTML_VALID_TAGS' => "Gütige HTML-Codes sind",
- 'MEMBER_HTML_INVALID_TAGS' => "Ungütige HTML-Tags im HTML-Code gefunden.",
+ 'MEMBER_HTML_ORDER_TITLE' => "HTML- oder normale Text-Mails versenden?",
+ 'MEMBER_HTML_MESSAGE' => "HTML-Mail:",
+ 'MEMBER_NORMAL_MESSAGE' => "Normale Text-Mail:",
+ 'MEMBER_HTML_VALID_TAGS' => "Gültige HTML-Codes sind",
+ 'MEMBER_HTML_INVALID_TAGS' => "Ungültige HTML-Tags im HTML-Code gefunden.",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
+ // General language strings
'ALREADY_INSTALLED' => "{?TITLE?} ist bereits auf diesem Server installiert worden Bitte löschen Sie install.php, inc/install-inc.php und das Verzeichnis install/ von Ihrem Server! (Keine Sorge, Sie können es tun...)",
'INSTALLER_OF_MAILER' => "Installation von {?mt_word?}-Projekt-Script",
'INSTALLER_OF_MAILER_NO_ADMIN' => "Installation von {?mt_word?}-Projekt-Script - {?MAIN_TITLE?}",
+ 'INSTALLER_OF_MAILER' => "Installation von {?TITLE?}-Script",
+ 'INSTALLER_OF_MAILER_NO_ADMIN' => "Installation von {?TITLE?}-Script - {?MAIN_TITLE?}",
+ 'INSTALLER_WARN_NO_PASSWORD' => "Warnen, wenn kein Passwort angegeben wurde?",
+ 'INSTALLER_CONFIG_WRITE_FOOTER' => "Scriptname, -version und -author anzeigen?",
+ 'INSTALLER_MAIN_TITLE' => "Installation des Scriptes {?TITLE?}",
+ 'INSTALLER_SELECTOR_TITLE' => "Auswahl der Installationsvarriante",
+ 'INSTALLER_MAYBE_DONE' => "Die Installation ist möglicherweise abgeschlossen oder es ist ein unerwarteter Fehler aufgetreten.",
+ 'INSTALLER_FINISHED' => "Die Installation ist abgeschlossen.",
+ 'INSTALLER_FIN_SECU' => "Sie sollten jetzt die Dateien <u>install.php</u> und <u>inc/install-inc.php</u> von Ihrem Server löschen. Dies ist zwar normalerweise nicht erforderlich, Sie sollten es aber dennoch tun, um die Sicherheit zusätzlich zu erhöhen.",
+ 'INSTALLER_CONTINUE_ADMIN' => "Weiter zum Administrationsbereich...",
+
+ // Plain installer - general
+ 'INSTALLER_SQL_IMPORT_FAILED' => "Konnte die SQL-Dateien aus <strong>install/</strong> nicht nachladen. Bitte Zugriffsrechte (CHMOD) auf die Dateien überprüfen. Diese sollten 644 mindestens aufweisen.",
+ 'INSTALLER_PROBLEMS_DETECTED' => "Es wurden bei der Initialisierung des Installationsvorganges Probleme festgestellt.",
+ 'INSTALLER_CONTENT_404' => "Es wurde kein Content gefunden. Bitte melden Sie dies im <a href=\"http://bugs.mxchange.org\" rel=\"external\" target=\"_blank\">Bug-Tracker</a> und nennen Sie alle relevanten Informationen.",
+ 'INSTALLER_RETURN_MYSQL_PAGE' => "Zurück zu den Datenbank-Einstellungen",
+ 'INSTALLER_FINALIZER_FAILED' => "Während der Installation ist ein unerwarteter Fehler aufgetreten. Der Finalizer konnte die Installation nicht abschliessen.",
+ 'INSTALLER_FINALIZER_CANNOT_REGISTER_SQL_PATCHES' => "Währen der Registrierung von <strong>ext-sql_patches</strong> ist ein unerwarteter Fehler entstanden.",
'INSTALLER_MISSING_DUMPS' => "Die SQL-Dumps wurden nicht gefunden! Diese sollten auch mit hochgeladen werden und lesbar sein (CHMOD 644).",
- 'INSTALLER_ENABLE_BACKLINK' => "Backlink (=Rückverlinkung zu mxchange.org setzen?) <span class=\"notice\">rel="external"</span> ist gesetzt. Bitte nicht den Backlink einbauen, und <strong>nofollow</strong> verwenden! Das schadet allen.",
'INSTALLER_WRONG_PAGE' => "Sie oder dieses Script haben eine falsche Seite ausgewählt.",
'INSTALLER_NEXT_PAGE' => "Weiter zur nächsten Seite...",
- 'INSTALLER_HEADER_TEXT_PAGE1' => "Server-Pfad, Basis-URL und Webseitentitel",
- 'INSTALLER_HEADER_TEXT_PAGE2' => "Datenbankzugangsdaten: Hostname, Login, Passwort, Tabellentyp usw.",
- 'INSTALLER_HEADER_TEXT_PAGE3' => "SMTP-Server Einstellungen",
- 'INSTALLER_HEADER_TEXT_PAGE4' => "Cascading Stylesheet-Datei",
- 'INSTALLER_HEADER_TEXT_PAGE5' => "Verschiedene Einstellungen",
- 'INSTALLER_HEADER_MYSQL_ERRORS' => "Fehler beim Verbinden zur Datenbank.",
- 'INSTALLER_TEXT_PAGE_1' => "Geben Sie hier den absoluten Server-Pfad (/ihr/server/pfad/) <strong>mit</strong> abschliessendem Slash (/), die Basis-URL (vorgegebene Werte stimmen meistens) und den Titel Ihres {?mt_word2?} ein.",
- 'INSTALLER_TEXT_PAGE_2' => "Geben Sie hier die Daten vom Datenbankserver ein, die Ihnen vom Hoster mitgeteilt wurden. Es wird dann anschliessend versucht, eine Testverbindung aufzubauen.",
- 'INSTALLER_TEXT_PAGE_3' => "Geben Sie hier die Ihre Zugangsdaten zum SMTP-Server (ausgehender Mailserver) ein, wenn der mail()-Befehl auf Ihrem Server deaktiviert sein sollte. Oder lassen Sie alle Felder leer für Standard-Einstellungen.",
- 'INSTALLER_TEXT_PAGE_4' => "Geben Sie hier die URL Ihrer hochgeladenen CSS-Datei an. Wenn Sie die bestehende Standard-Datei verwenden möchten, so klicken Sie einfach auf Weiter.",
- 'INSTALLER_TEXT_PAGE_5' => "Hier können Sie weitere Einstellungen vornehmen, wie zum Beispiel den Ausgabe-Modus festlegen, in der der HTML-Code ausgegeben werden soll, usw.",
- 'INSTALLER_TEXT_MYSQL_ERRORS' => "Es konnte keine Verbindung zur Datenbank aufgebaut werden! Ist das Login richtig? Ist auch die UMSCHALT-Taste nicht betätigt? (zweite grüne Lampe leuchtet!) Ist somit das Passwort richtig?<br /><br />Hier sind / ist alle Fehler aufgelistet:",
- 'INSTALLER_SERVER_PATH' => "Absoluter Server-Pfad",
- 'INSTALLER_BASE_URL' => "Basis-URL",
- 'INSTALLER_HP_TITLE' => "{?mt_word?}-Titel",
- 'INSTALLER_HP_SLOGAN' => "Werbespruch",
- 'INSTALLER_HP_EMAIL' => "E-Mail-Adresse",
- 'INSTALLER_MYSQL_HOST' => "Server-Hostname",
- 'INSTALLER_MYSQL_DBASE' => "Datenbank",
- 'INSTALLER_MYSQL_PREFIX' => "Präfix für alle Tabellen",
- 'INSTALLER_MYSQL_TABLE_TYPE' => "Tabellentyp: (MyISAM ist meistens ausreichend)",
- 'INSTALLER_TABLE_TYPE_MYISAM' => "MyISAM (langsamer, da Tabelle gelockt wird)",
- 'INSTALLER_TABLE_TYPE_INNODB' => "InnoDB (schneller, da zweilenweis gelockt wird)",
- 'INSTALLER_MYSQL_LOGIN' => "Ihr Loginname",
- 'INSTALLER_MYSQL_PASSWORD1' => "Ihr Passwort",
- 'INSTALLER_MYSQL_PASSWORD2' => "Passwortwiederholung",
- 'INSTALLER_CSS_URL' => "URL zur CSS-Datei (relativ)",
+ 'INSTALLER_MYSQL_ERRORS_TITLE' => "Fehler beim Verbinden zur Datenbank.",
+ 'INSTALLER_MYSQL_ERRORS' => "Es konnte keine Verbindung zur Datenbank aufgebaut werden! Ist das Login richtig? Ist auch die UMSCHALT-Taste nicht betätigt? (zweite grüne Lampe leuchtet!) Ist somit das Passwort richtig?<br /><br />Hier sind / ist alle Fehler aufgelistet:",
+
+ // Plain installer: fatal error messages
'INSTALLER_FATAL_NO' => "Fataler Fehler im Installer Nr. #",
'INSTALLER_FATAL_NO_MHOST' => "Sie haben keinen Hostnamen eingeben.",
'INSTALLER_FATAL_NO_MDBASE' => "Bitte geben Sie einen Datenbankname ein.",
'INSTALLER_FATAL_NO_MLOGIN' => "Bitte geben Sie Ihr Loginname zum Datenbank-Server ein.",
'INSTALLER_FATAL_NO_MPASSWORD1' => "Sie haben kein Passwort eingegeben! Dies ist sehr unsicher und wird daher als Fehler gewertet.",
'INSTALLER_FATAL_NO_MPASSWORD2' => "Bitte geben Sie noch die Passwortbestätigung ein.",
- 'INSTALLER_FATAL_MPASSWORD1_MPASSWORD2' => "Ihre beiden Passwörter sind nicht identisch.",
+
+ // Installation pages titles
+ 'INSTALLER_PAGE_INIT_TITLE' => "Installationsroute initialisiert gerade",
+ 'INSTALLER_PAGE_WELCOME_TITLE' => "Willkommen zur Installation von {?TITLE?}, dem freien {?mt_word?}-Script.",
+ 'INSTALLER_BASE_DATA_TITLE' => "Server-Pfad, Basis-URL und Webseitentitel",
+ 'INSTALLER_DATABASE_CONFIG_TITLE' => "Datenbankzugangsdaten: Hostname, Login, Passwort, Tabellentyp usw.",
+ 'INSTALLER_SMTP_CONFIG_TITLE' => "SMTP-Server Einstellungen",
+ 'INSTALLER_OTHER_CONFIG_TITLE' => "Verschiedene Einstellungen",
+
+ // Installation pages descriptions
+ 'INSTALLER_BASE_DATA_DESCRIPTION' => "Geben Sie hier den absoluten Server-Pfad (/ihr/server/pfad/) <strong>mit</strong> abschliessendem Slash (/), die Basis-URL (vorgegebene Werte stimmen meistens) und den Titel Ihres {?mt_word2?} ein.",
+ 'INSTALLER_DATABASE_CONFIG_DESCRIPTION' => "Geben Sie hier die Daten vom Datenbankserver ein, die Ihnen vom Hoster mitgeteilt wurden. Es wird dann anschliessend versucht, eine Testverbindung aufzubauen.",
+ 'INSTALLER_SMTP_CONFIG_DESCRIPTION' => "Geben Sie hier die Ihre Zugangsdaten zum SMTP-Server (ausgehender Mailserver) ein, wenn der mail()-Befehl auf Ihrem Server deaktiviert sein sollte. Oder lassen Sie alle Felder leer für Standard-Einstellungen.",
+ 'INSTALLER_OTHER_CONFIG_DESCRIPTION' => "Hier können Sie weitere Einstellungen vornehmen, wie zum Beispiel den Ausgabe-Modus festlegen, in der der HTML-Code ausgegeben werden soll, usw.",
+
+ // Installation page - Base data
+ 'INSTALLER_LABEL_BASE_PATH' => "Absoluter Server-Pfad:",
+ 'INSTALLER_LABEL_BASE_URL' => "Basis-URL:",
+ 'INSTALLER_LABEL_MAIN_TITLE' => "{?mt_word?}-Titel:",
+ 'INSTALLER_LABEL_SLOGAN' => "Werbespruch:",
+ 'INSTALLER_LABEL_WEBMASTER' => "E-Mail-Adresse:",
+
+ // Installation page - database configuration
+ 'INSTALLER_MYSQL_HOST' => "Server-Hostname:",
+ 'INSTALLER_MYSQL_DBASE' => "Datenbank:",
+ 'INSTALLER_MYSQL_PREFIX' => "Präfix für alle Tabellen:",
+ 'INSTALLER_MYSQL_TABLE_TYPE' => "Tabellentyp:",
+ 'INSTALLER_MYSQL_TABLE_TYPE_NOTICE' => "MyISAM ist meistens ausreichend.",
+ 'INSTALLER_TABLE_TYPE_MYISAM' => "MyISAM (langsamer, da Tabelle gelockt wird)",
+ 'INSTALLER_TABLE_TYPE_INNODB' => "InnoDB (schneller, da zweilenweis gelockt wird)",
+ 'INSTALLER_MYSQL_LOGIN' => "Ihr Loginname:",
+ 'INSTALLER_MYSQL_PASSWORD1' => "Ihr Passwort:",
+ 'INSTALLER_MYSQL_PASSWORD2' => "Passwortwiederholung:",
+
+ // Installation page - Other settings
'INSTALLER_OUTPUT_MODE' => "Ausgabemodus des HTML-Codes",
- 'INSTALLER_MODE_RENDER' => "HTML-Code wird vom Server komplett erzeugt und dann ausgegeben",
- 'INSTALLER_MODE_DIRECT' => "HTML-Code wird sofort ausgegegeben. (Langsam)",
- 'INSTALLER_WARN_NO_PASSWORD' => "Warnen, wenn kein Passwort angegeben wurde?",
- 'INSTALLER_SQL_IMPORT_FAILED' => "Konnte die SQL-Dateien aus <strong>install/</strong> nicht nachladen. Bitte Zugriffsrechte (CHMOD) auf die Dateien überprüfen. Diese sollten 644 mindestens aufweisen.",
- 'INSTALLER_CONFIG_WRITE_FOOTER' => "Scriptname, -version und -author anzeigen?",
- 'INSTALLER_PROBLEMS_DETECTED' => "Es wurden bei der Initialisierung des Installationsvorganges Probleme festgestellt.",
- 'INSTALLER_MAIN_HEADER' => "Installation des Scriptes {?TITLE?}",
- 'INSTALLER_RETURN_MYSQL_PAGE' => "Zurück zu den Datenbank-Einstellungen",
- 'INSTALLER_FINALIZER_FAILED' => "Während der Installation ist ein unerwarteter Fehler aufgetreten. Der Finalizer konnte die Installation nicht abschliessen.",
- 'INSTALLER_MAYBE_DONE' => "Die Installation ist möglicherweise abgeschlossen oder es ist ein unerwarteter Fehler aufgetreten.",
- 'INSTALLER_FINISHED' => "Die Installation ist abgeschlossen.",
- 'INSTALLER_FIN_SECU' => "Sie sollten jetzt die Dateien <u>install.php</u> und <u>inc/install-inc.php</u> von Ihrem Server löschen. Dies ist zwar normalerweise nicht erforderlich, Sie sollten es aber dennoch tun, um die Sicherheit zusätzlich zu erhöhen.",
- 'INSTALLER_CONTINUE_ADMIN' => "Weiter zum Administrationsbereich...",
- 'INSTALLER_CONTENT_404' => "Es wurde kein Content gefunden. Bitte melden Sie dies im <a href=\"http://bugs.mxchange.org\" rel=\"external\" target=\"_blank\">Bug-Tracker</a> und nennen Sie alle relevanten Informationen.",
+ 'INSTALLER_MODE_RENDER' => "In $GLOBALS "rendern"",
+ 'INSTALLER_MODE_DIRECT' => "Im Ausgabebuffer cachen",
+ 'INSTALLER_ENABLE_BACKLINK' => "Backlink zu {?SERVER_URL?} setzen?",
+ 'INSTALLER_ENABLE_BACKLINK_NOTICE' => "Derzeit ist <span class=\"notice\">rel="external"</span> für den Backlink gesetzt. Bitte nicht den Backlink eingebaut lassen und <strong>rel="nofollow"</strong> verwenden. Das schadet allen.",
+
+ // Installation notes
+ 'INSTALLER_BASE_PATH_NOTICE' => "Mit abschließendem /.",
+ 'INSTALLER_BASE_URL_NOTICE' => "Ohne abschließendem /.",
+ 'INSTALLER_SMTP_HOST_NOTICE' => "Zum Beispiel <strong>mail.ihre-domain.example</strong>",
+
+ // AJAX title
+ 'INSTALLER_AJAX_ERROR_TITLE' => "AJAX-Abfrage im Installer fehlgeschlagen",
+ 'INSTALLER_AJAX_WARNING_TITLE' => "Warnung: Es sind ungespeicherte Änderungen vorhanden",
+ 'INSTALLER_AJAX_TEST_TITLE' => "AJAX-Testergebnis positiv",
-// SMTP input
- 'INSTALLER_TEXT_SMTP_HOST' => "SMTP-Servername (z.B. mail.provider.tld)",
- 'INSTALLER_TEXT_SMTP_USER' => "SMTP-Benutzername",
- 'INSTALLER_TEXT_SMTP_PASSWORD1' => "SMTP-Kennwort",
- 'INSTALLER_TEXT_SMTP_PASSWORD2' => "SMTP-Kennwortwiederholung",
+ // Installer switches
+ 'INSTALLER_SWITCH_PLAIN' => "Kompatiblitätsmodus",
+ 'INSTALLER_SWITCH_START' => "Zur Startseite zurückkehren ...",
+ 'INSTALLER_SWITCH_AJAX' => "Zur "interaktiven" AJAX-Version ...",
+
+ // SMTP input
+ // @TODO Move this to e.g. ext-smtp
+ 'INSTALLER_SMTP_HOST' => "SMTP-Servername:",
+ 'INSTALLER_SMTP_USER' => "SMTP-Benutzername:",
+ 'INSTALLER_SMTP_PASSWORD1' => "SMTP-Kennwort:",
+ 'INSTALLER_SMTP_PASSWORD2' => "SMTP-Kennwortwiederholung:",
'INSTALLER_SMTP_HOSTNAME_EMPTY' => "SMTP-Servername leer gelassen.",
'INSTALLER_SMTP_PASSWORD1_EMPTY' => "SMTP-Passwort leer gelassen.",
'INSTALLER_SMTP_PASSWORD2_EMPTY' => "SMTP-Passwortwiederholung leer gelassen.",
'INSTALLER_SMTP_PASS_MISMATCH' => "SMTP-Passwort und -wiederholung stimmen nicht überein.",
+
+ // Tab-navigation links
+ 'INSTALLER_TAB_NAVIGATION_WELCOME_TITLE' => "Zur Willkommensseite",
+ 'INSTALLER_TAB_NAVIGATION_WELCOME_LINK' => "Willkommen",
+ 'INSTALLER_TAB_NAVIGATION_BASE_DATA_TITLE' => "Seite 1: Basis-Pfad, Titel und Slogan",
+ 'INSTALLER_TAB_NAVIGATION_BASE_DATA_LINK' => "Grunddaten",
+ 'INSTALLER_TAB_NAVIGATION_DATABASE_CONFIG_TITLE' => "Seite 2: Datenbank-Konfiguration",
+ 'INSTALLER_TAB_NAVIGATION_DATABASE_CONFIG_LINK' => "Datenbankzugang",
+ 'INSTALLER_TAB_NAVIGATION_SMTP_CONFIG_TITLE' => "Seite 3: SMTP-Daten konfigurieren",
+ 'INSTALLER_TAB_NAVIGATION_SMTP_CONFIG_LINK' => "SMTP-Daten",
+ 'INSTALLER_TAB_NAVIGATION_OTHER_CONFIG_TITLE' => "Seite 5: Sonstige Grundeinstellungen",
+ 'INSTALLER_TAB_NAVIGATION_OTHER_CONFIG_LINK' => "Sonstiges",
+ 'INSTALLER_TAB_NAVIGATION_OVERVIEW_TITLE' => "Installationszusammenfassung",
+ 'INSTALLER_TAB_NAVIGATION_OVERVIEW_LINK' => "Zusammenfassung",
+
+ // Changed elements - base data
+ 'INSTALLER_CHANGED_ELEMENT_BASE_PATH' => "Sie haben den Basis-Pfad zu allen Scripten geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_BASE_URL' => "Sie haben die Basis-URL für alle URLs geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MAIN_TITLE' => "Sie haben den {?mt_word?}-Titel geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_SLOGAN' => "Sie haben den Werbespruch geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_WEBMASTER' => "Sie haben die Email-Adresse für den Webmaster geändert.",
+
+ // Changed elements - database configuration
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_HOST' => "Sie haben den Hostnamen für die Datenbankverbindung geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_DBASE' => "Sie haben den Datenbanknamen für die Datenbankverbindung geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_PREFIX' => "Sie haben den Tabellenpräfix für die Datenbankverbindung geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_TYPE' => "Sie haben den Tabellentyp für die Datenbankverbindung geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_LOGIN' => "Sie haben den Login für die Datenbankverbindung geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_PASSWORD1' => "Sie haben das Passwort für die Datenbankverbindung geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_MYSQL_PASSWORD2' => "Sie haben die Passwortwiederholung für die Datenbankverbindung geändert.",
+
+ // Changed elements - SMTP configuration
+ 'INSTALLER_CHANGED_ELEMENT_SMTP_HOST' => "Sie haben den SMTP-Hostnamen geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_SMTP_USER' => "Sie haben den SMTP-Benutzernamen geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_SMTP_PASSWORD1' => "Sie haben das SMTP-Passwort geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_SMTP_PASSWORD2' => "Sie haben die Wiederholung für das SMTP-Passwort geändert.",
+
+ // Changed elements - other configuration
+ 'INSTALLER_CHANGED_ELEMENT_OUTPUT_MODE' => "Sie haben den Ausgabemodus geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_WARN_NO_PASS' => "Sie haben die Warnung für ein leeres Datenbankpasswort geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_WRITE_FOOTER' => "Sie haben die Einstellung für das Ausgeben der Fusszeile geändert.",
+ 'INSTALLER_CHANGED_ELEMENT_ENABLE_BACKLINK' => "Sie haben die Einstellung für den Backlink zu {?SERVER_URL?} geändert.",
+
+ // Fieldset legends
+ 'INSTALLER_BASE_DATA_LEGEND_BASE_URL_PATH' => "Basis-Pfad und -URL:",
+ 'INSTALLER_BASE_DATA_LEGEND_TITLE_SLOGAN' => "{?mt_word?}-Titel und Werbespruch:",
+ 'INSTALLER_DATABASE_LEGEND_HOST_DBASE_PREFIX_TYPE' => "Hostname, Datenbankname, Präfix und Tabellentyp:",
+ 'INSTALLER_DATABASE_LEGEND_LOGIN_PASSWORD' => "Datenbanklogin und -passwort:",
+ 'INSTALLER_SMTP_LEGEND_OPTIONAL_CONFIG' => "Optionale SMTP-Daten:",
+ 'INSTALLER_OTHER_CONFIG_LEGEND_ET_CETERA' => "Sonstige Einstellungen:",
+
+ // Save changes
+ 'INSTALLER_SAVE_CHANGES_FAILED' => "Die Änderungen konnten leider nicht gespeichert werden, da einige fehlerhaft sind. Bitte korregieren Sie die rot hervorgehobenen Einträge und probieren Sie es erneut.",
+ 'INSTALLER_SAVE_CHANGES_DONE' => "Änderungen gespeichert.",
+
+ // Post-Check - General failure messages
+ 'INSTALLER_POST_CHECK_DATABASE_CONFIG_FAILED' => "Beim testweisen Aufbauen einer Datenbankverbindung ist ein Fehler entstanden: %s",
+
+ // Post-Check - Database connection
+ 'INSTALLER_POST_DATABASE_PASSWORD1_EMPTY' => "Das Passwort zur Datenbank ist leer, jedoch ist die Passwortwiederholung gesetzt.",
+ 'INSTALLER_POST_DATABASE_PASSWORD2_EMPTY' => "Das Passwort zur Datenbank ist gesetzt, jedoch ist die Passwortwiederholung leer.",
+ 'INSTALLER_POST_DATABASE_PASSWORDS_MISMATCH' => "Die von Ihnen eingegebenen Passwörter stimmen nicht überein.",
+ 'INSTALLER_POST_DATABASE_CONNECT_ERROR' => "Verbindung zur Datenbank fehlgeschlagen. <strong>mysql_error():</strong> <span class='data'>{%pipe,getLastSqlError%}</span>",
+ 'INSTALLER_POST_DATABASE_SELECT_FAILED' => "Auswahl der Datenbank klappte nicht. <strong>mysql_error():</strong> <span class='data'>{%pipe,getLastSqlError%}</span>",
+ 'INSTALLER_POST_DATABASE_ENGINES_SQL_ERROR' => "SQL-Fehler beim Abfragen der Storage-Engines. <strong>mysql_error():</strong> <span class='data'>{%pipe,getLastSqlError%}</span>",
+ 'INSTALLER_POST_DATABASE_NO_ENGINES_ACTIVE' => "Es konnten keine aktiven Storage-Engines gefunden werden. Bitte kontaktieren Sie Ihren Hoster.",
+ 'INSTALLER_POST_DATABASE_ENGINE_UNSUPPORTED' => "Die von Ihnen ausgewählte Storage-Engine wird nicht unterstützt. Meistens gilt dies für InnoDB, dann müssen Sie einfach MyISAM nehmen.",
+ 'INSTALLER_POST_DATABASE_IN_USE' => "Die von Ihnen ausgewählte Datenbank weist Tabellen auf, die von einer älteren Installation stammen. Damit keine Datenverluste entstehen, wurde die Installation abgebrochen. Bitte verwenden Sie eine neue Datenbank oder leeren Sie die alte.",
+
+ // Final check on 'overview' page
+ 'INSTALLER_OVERVIEW_FINAL_CHECK_FAILED' => "Leider kann die Installation nicht abgeschlossen werden, da nicht alle Angaben vollständig und korrekt sind.",
+ 'INSTALLER_OVERVIEW_FINAL_CHECK_DONE' => "Die Installation kann nun abgeschlossen werden.",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'MEMBER_SUBMIT_CODE' => "Abschicken",
'MEMBER_MAILID_TOTAL_POINTS' => "Ihr Kontostand beträgt jetzt <span class=\"data\">{%%pipe,translateComma=%s%%} {?POINTS?}</span>.",
'MEMBER_MAILID_CLICK_BUTTON' => "Einmal den Button anklicken",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_MAILID_OKAY' => "Vergütung einer Mailbestätigung",
+ 'POINTS_SUBJECT_MAILID_OKAY_REF' => "Referralvergütung einer Mailbestätigung",
+ 'POINTS_SUBJECT_MAILID_PAYBACK' => "Bestätungscode falsch",
+
+ // Admin - subject lines
+ 'ADMIN_DIRECT_MAILID_OKAY_SUBJECT' => "Direktgutschrift von korrekte Mailbestätigung aufgebucht",
+ 'ADMIN_REFERRAL_MAILID_OKAY_SUBJECT' => "Referralgutschrift von korrekte Mailbestätigung aufgebucht",
+ 'ADMIN_REFERRAL_MAILID_OKAY_REF_SUBJECT' => "Anteilige Referralgutschrift von korrekte Mailbestätigung aufgebucht",
+
+ // Member - subject lines
+ 'MEMBER_DIRECT_MAILID_OKAY_SUBJECT' => "Direktgutschrift durch korrekte Mailbestätigung erhalten",
+ 'MEMBER_REFERRAL_MAILID_OKAY_SUBJECT' => "Referralgutschrift durch korrekte Mailbestätigung erhalten",
+ 'MEMBER_REFERRAL_MAILID_OKAY_REF_SUBJECT' => "Anteilige Referralgutschrift durch korrekte Mailbestätigung erhalten",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_NETWORK_TYPE_HANDLER_REMOVED' => "Es wurden <span class=\"data\">%s</span> Werbeart-Handler gelöscht.",
'ADMIN_NETWORK_REQUEST_PARAMETER_REMOVED' => "Es wurden <span class=\"data\">%s</span> Abfrageparameter gelöscht.",
// - Form notes
- 'ADMIN_ADD_NETWORK_NOTICE' => "Mehr Datenschutz bei POST-Abfragen bedeutet, dass die von den Internetanbietern betriebenen Caches (Proxy) die POST-Daten nicht mitloggen (so eine Art Kodex). Der Zeichensatz ist meistens ISO-8859-1 oder WINDOWS-1252.",
+ 'ADMIN_ADD_NETWORK_NOTICE' => "Besserer Datenschutz bei POST-Abfragen bedeutet, dass die von den Internetanbietern betriebenen Caches (Proxy) die POST-Daten nicht mitloggen (so eine Art Kodex). Der Zeichensatz ist meistens ISO-8859-1 oder WINDOWS-1252.",
'ADMIN_LIST_NETWORK_NOTICE' => "Seien Sie mit dem Löschen und Editieren vonallgemeinen Daten der Werbenetzwerke sehr vorsichtig. Sie sollten hierzu Rücksprache <a href=\"http://forum.mxchange.org/forum-43.html\" target=\"_blank\" title=\"Direktlink zum Forum\">im Forum</a> halten.",
'ADMIN_LIST_NETWORK_REFERRAL_LINK_NOTICE' => "Wenn Sie Ihren Referral-Link eingeben, verwenden Sie bitte nicht dieses Formular, sondern das unter [<a href=\"{%url=modules.php?module=admin&what=config_network_api%}\">API-Zugangsdaten</a>]. Sollten Sie hier Ihren Referral-Link eingetragen haben, ist dies nicht weiter schlimm, er wird jedoch nicht veröffentlicht.",
- 'ADMIN_ADD_NETWORK_HANDLER_TYPE_NOTICE' => "Fügen Sie hier weitere Werbearten-Handler dem ausgwählten Werbenetzwerk hinzu. Die Klick- und Banner-URL müssen dabei Platzhalter enthalten, die Sie der Dokumentation und <a href=\"http://forum.mxchange.org/forum-43.html\" rel=\"external\" title=\"Direkt-Link zur Forumkategorie Werbenetzwerke\" target=\"_blank\">dem Forum</a> entnehmen können. Die API-URL muss nur bis zum Fragezeichen eingegeben werden. Richtig: <strong>http://www.some-sponsor.invalid/inteface/script.php</strong>, falsch: <strike>http://www.some-sponsor.invalid/inteface/script.php?uid=123&pw=xyzxyzxyz</strike>",
+ 'ADMIN_ADD_NETWORK_HANDLER_TYPE_NOTICE' => "Fügen Sie hier weitere Werbearten-Handler dem ausgwählten Werbenetzwerk hinzu. Die Klick- und Banner-URL müssen dabei Platzhalter enthalten, die Sie der Dokumentation und <a href=\"http://forum.mxchange.org/forum-43.html\" rel=\"external\" title=\"Direkt-Link zur Forumkategorie Werbenetzwerke\" target=\"_blank\">dem Forum</a> entnehmen können. Die API-URL muss nur bis zum Fragezeichen eingegeben werden. Richtig: <strong>http://www.some-sponsor.example/inteface/script.php</strong>, falsch: <strike>http://www.some-sponsor.example/inteface/script.php?uid=123&pw=xyzxyzxyz</strike>",
'ADMIN_NETWORK_TYPE_HANDLER_LIST_NOTICE' => "Seien Sie mit dem Löschen und Editieren von Werbeart-Handlern sehr vorsichtig. Sie sollten hierzu Rücksprache <a href=\"http://forum.mxchange.org/forum-43.html\" target=\"_blank\" title=\"Direktlink zum Forum\">im Forum</a> halten. Dokumentation zu den Platzhaltern (%FOO%, %BAR% usw.) finden Sie in der Dokumentation DOCs/de/network/README.txt.",
'ADMIN_ADD_NETWORK_REQUEST_PARAMETER_NOTICE' => "Fügen Sie hier weitere Abfrageparameter dem ausgwählten Werbenetzwerk hinzu. Geben Sie keine Werte an, wie z.B. 5 Sekunden oder 30 Mails, geben Sie bei Abfrageparameter den GET- bzw. POST-Parameternamen an.",
'ADMIN_NETWORK_REQUEST_PARAMETER_LIST_NOTICE' => "Seien Sie mit dem Löschen und Editieren von Abfrageparameter sehr vorsichtig. Sie sollten hierzu Rücksprache <a href=\"http://forum.mxchange.org/forum-43.html\" target=\"_blank\" title=\"Direktlink zum Forum\">im Forum</a> halten. Dokumentation zu den Abfragenamen (%FOO%, %BAR% usw.) finden Sie in der Dokumentation DOCs/de/network/README.txt.",
'ADMIN_NETWORK_ROW_SEPARATOR' => "Trennzeichen f. Zeilen:",
'ADMIN_NETWORK_REQUEST_TYPE' => "HTTP-Abfragetyp:",
'ADMIN_NETWORK_REQUEST_TYPE_GET' => "GET (meistens richtig)",
- 'ADMIN_NETWORK_REQUEST_TYPE_POST' => "POST (mehr Datenschutz)",
+ 'ADMIN_NETWORK_REQUEST_TYPE_POST' => "POST (besserer Datenschutz)",
'ADMIN_NETWORK_CHARSET' => "Zeichensatz:",
'ADMIN_NETWORK_REQUIRE_ID_CARD' => "ID verlangt?",
'ADMIN_NETWORK_SEPARATOR' => "Trennzeichen:",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'MEMBER_NICKNAME_CHANGE_SUBMIT' => "Nickname ändern",
'MEMBER_NICKNAME_ALREADY_IN_USE' => "Der von Ihnen eingegebene Nickname wird bereits verwendet.",
'MEMBER_NICKNAME_SAVED' => "Nickname wurde gespeichert.",
- 'GUEST_ENTER_LOGIN_NICKNAME' => "Nickname o. Login-Id",
+ 'GUEST_ENTER_LOGIN_NICKNAME' => "Nickname o. Mitglieds-Id",
'MEMBER_NICKNAME_ALLOWED_CHARS' => "Erlaubte Zeichen:",
- 'MEMBER_NICKNAME_IS_INVALID' => "Ungütige Zeichen im Nicknamen gefunden oder ist zu kurz.",
+ 'MEMBER_NICKNAME_IS_INVALID' => "Ungültige Zeichen im Nicknamen gefunden oder ist zu kurz.",
'MEMBER_NICKNAME_YOUR_REFERRAL_LINK' => "Ihr Nickname-Reflink",
'MEMBER_NO_NICKNAME_SET' => "Sie haben noch keinen Nickname eingerichtet! Damit können Sie sich alternativ zur Mitglied-Id einloggen.",
'MEMBER_PLEASE_CLICK_NICKNAME_FORM' => "Hier können Sie sich nun einen einrichten...",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
- 'ADMIN_CONFIG_ORDER_TITLE' => "Einstellungen - Mailbuchung",
- 'ADMIN_CONFIG_ORDER_MISC_TITLE' => "Weitere Einstellungen",
+ // Admin configuration
+ 'ADMIN_CONFIG_ORDER_TITLE' => "Einstellungen an der Mailbuchung",
'ADMIN_CONFIG_ORDER_SELECT_MAX' => "Wie viele Mailbuchungen können die Mitglieder maximal pro Tag versenden?",
- 'ADMIN_CONFIG_ORDER_OPTION_MAX' => "Die Mitglieder können so viele Mailbuchungen wie möglich tätigen.",
+ 'ADMIN_CONFIG_ORDER_OPTION_MAX' => "Die Mitglieder können so viele Mailbuchungen wie möglich tätigen (bis alle Empfänger aufgebraucht sind).",
'ADMIN_CONFIG_ORDER_OPTION_ORDER' => "Die Mitglieder könen nur so viele Mailbuchungen tätigen, wie sie den Mailempfang eingestellt haben.",
'ADMIN_CONFIG_ORDER_MIN_RECEIVER_PER_ORDER' => "Minimale Anzahl Empfänger pro Mailbuchung",
- 'ADMIN_ORDER_SELECTION_COLUMN' => "Tabellenspalte, nach der umsortiert werden soll",
- 'ADMIN_ORDER_SELECTION_MODE' => "Sortierreihenfolge",
- 'ADMIN_ORDER_SELECTION_SETTINGS' => "Auswahlverfahren der Empfänger",
+ 'ADMIN_CONFIG_ORDER_SELECTION_COLUMN' => "Tabellenspalte, nach der umsortiert werden soll",
+ 'ADMIN_CONFIG_ORDER_SELECTION_MODE' => "Sortierreihenfolge",
'ADMIN_CONFIG_MAX_TEXT_LENGTH' => "Maximale Länge des Werbetextes",
- 'ADMIN_CONFIG_MAX_UNCONFIRMED_MAILS' => "Maximale Anzahl unbest. Mails (Mailbuchung)",
+ 'ADMIN_CONFIG_MAX_UNCONFIRMED_MAILS' => "Maximale erlaubter Anzahl unbest. Mails um eine Mailbuchung durchzuführen",
'ADMIN_CONFIG_CHECK_EMAIL_TEXT' => "Sind URLs im Werbetext erlaubt?",
'ADMIN_CONFIG_CHECK_EMAIL_SUBJECT' => "Sind URLs in der Betreffzeile erlaubt?",
'ADMIN_CONFIG_URL_BLACKLIST' => "Black-Liste für gebuchte URLs aktivieren?",
+ 'ADMIN_CONFIG_ORDER_NOTICE' => "Das Auswahlverfahren von Mailempfängern wirkt sich nur auf kleinere Buchungen - mit weniger Empfänger als maximal möglich - aus.",
+ // Admin config - repay options
+ 'ADMIN_CONFIG_REPAY_POINTS_REPAY' => "Dem Mitglied wieder gutschreiben",
+ 'ADMIN_CONFIG_REPAY_POINTS_JACKPOT' => "In den Jackpot legen",
+ 'ADMIN_CONFIG_REPAY_POINTS_SHRED' => "Nicht gutschreiben (verfällt dann)",
+ 'ADMIN_REPAY_ON_DELETE_MODE' => "Wenn Sie eine Mailbuchung löschen, wie sollen die ausgegebenen {?POINTS?} gehandhabt werden?",
+
+ // Admin config - legends
+ 'ADMIN_CONFIG_ORDER_SELECTION_LEGEND' => "Auswahlverfahren der Empfänger",
+ 'ADMIN_CONFIG_ORDER_MISC_LEGEND' => "Sonstige Einstellungen",
+ 'ADMIN_CONFIG_ORDER_SELECT_MAX_LEGEND' => "Maximale Buchungen pro Tag, pro Mitglied",
+ // @TODO Find better text
+ 'ADMIN_CONFIG_ORDER_MEMBER_LEGEND' => "Weitere Einstellungen",
+
+ // Admin config - columns
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_USERID' => "Mitgliedsnummer",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_ZIP' => "Postleitzahl",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_COUNTRY' => "Land",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_EMAIL' => "EMail-Adresse",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_BIRTH_YEAR' => "Geburtsjahr",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_LAST_ONLINE' => "Als letztes Online",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_REFERRAL_CLICKS' => "Klicks auf Ref-Link",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_TOTAL_LOGINS' => "Gesamtlogins",
+ 'ADMIN_CONFIG_ORDER_SELECT_COLUMN_MAIL_ORDERS' => "Heutige Mailbuchungen",
+
+ // Member strings
'MEMBER_ORDER_ALLOWED_RECEIVE' => "Sie können heute noch <span class=\"data\">%s</span> von <span class=\"data\">%s</span> Mailbuchungen aufgeben.",
'MEMBER_ORDER_ALLOWED_MAX' => "Sie können solange Mailbuchungen aufgeben, bis alle Mitglieder nicht mehr empfangsbereit sind.",
'MEMBER_ORDER_ALLOWED_UNKNOWN' => "Fehler in Konfiguration erkannt! cfg=<span class=\"data\">{?order_max_full?}</span> Bitte den Administrator benachrichtigen.",
'MEMBER_ORDER_MAX_ALLOWED' => "Maximale Mailbuchungen",
'MEMBER_ORDER_ALLOWED_EXHAUSTED' => "Sie können keine weiteren Mails mehr versenden, oder stellen Sie bitte den Empfang höher ein.",
- 'MEMBER_ENTER_INVALID_URL' => "Ungütige URL eingegeben.",
+ 'MEMBER_ENTER_INVALID_URL' => "Ungültige URL eingegeben.",
'MEMBER_NO_MAIL_TYPE_SELECTED' => "Bitte wählen Sie eine Mailart aus.",
'MEMBER_ORDER_NO_POINTS' => "Sie haben keine {?POINTS?} mehr zum Versenden übrig.",
'MEMBER_ORDER_NO_PAYMENTS' => "Der Admin dieses {?mt_word3?} hat noch keine Mailarten definiert.",
'MEMBER_ORDER_LINKS_LEFT' => "Sie haben <span class=\"data\">%s</span> unbestätigte Mails. Bitte bestätigen Sie diese zuerst. Wenn Sie weniger als <span class=\"data\">{?unconfirmed?}</span> Mails im Account haben, können Sie auch wieder buchen.",
- 'ADMIN_ORDER_SELECT_COLUMN_USERID' => "Mitgliedsnummer",
- 'ADMIN_ORDER_SELECT_COLUMN_ZIP' => "Postleitzahl",
- 'ADMIN_ORDER_SELECT_COLUMN_COUNTRY' => "Land",
- 'ADMIN_ORDER_SELECT_COLUMN_EMAIL' => "EMail-Adresse",
- 'ADMIN_ORDER_SELECT_COLUMN_BIRTH_YEAR' => "Geburtsjahr",
- 'ADMIN_ORDER_SELECT_COLUMN_LAST_ONLINE' => "Als letztes Online",
- 'ADMIN_ORDER_SELECT_COLUMN_REFERRAL_CLICKS' => "Klicks auf Ref-Link",
- 'ADMIN_ORDER_SELECT_COLUMN_TOTAL_LOGINS' => "Gesamtlogins",
- 'ADMIN_ORDER_SELECT_COLUMN_MAIL_ORDERS' => "Heutige Mailbuchungen",
-
- 'ORDER_DEFAULT_SUBJECT' => "Betreffzeile in allen Mails",
- 'ORDER_DEFAULT_TEXT' => "Geben Sie hier Ihren Werbetext ein.",
'ADMIN_AUTOSEND_INACTIVE' => "Der Auto-Versand ist in Ihrem {?mt_word?} derzeit deaktiviert. Bitte loggen Sie sich in den Admin-Bereich ein und schalten Sie diese Mailbuchung frei.",
'ADMIN_AUTOSEND_ACTIVE' => "Der Auto-Versand ist in Ihrem {?mt_word?} derzeit aktiviert. Die Mailbuchung wird aktiviert und dann automatisch versand.",
'MEMBER_AUTOSEND_INACTIVE' => "Der Auto-Versand ist in unserem {?mt_word?} derzeit deaktiviert. Ihre Mailbuchung wird bald von einem Administrator überprüft und dann freigegeben.",
'MEMBER_AUTOSEND_ACTIVE' => "Der Auto-Versand ist in unserem {?mt_word?} derzeit aktiviert. Ihr Mailbuchung wurde aktiviert und wird bald automatisch versant.",
-// Repay deleted mails constants
- 'ADMIN_CONFIG_REPAY_POINTS_REPAY' => "Dem Mitglied wieder gutschreiben",
- 'ADMIN_CONFIG_REPAY_POINTS_JACKPOT' => "In den Jackpot legen",
- 'ADMIN_CONFIG_REPAY_POINTS_SHRED' => "Nicht gutschreiben (verfällt dann)",
- 'ADMIN_REPAY_ON_DELETE_MODE' => "Wenn Sie eine Mailbuchung löschen, wie sollen die ausgegebenen {?POINTS?} gehandhabt werden?",
-
'ADMIN_TASK_TYPE_MEMBER_ORDER' => "Mailbuchung vom Mitglied",
'ADMIN_UNLOCK_EMAIL_LINK' => "Mailbuchung ansehen",
+
+ // Points accounts
+ 'POINTS_ACCOUNT_TYPE_ORDER_POINTS' => "Werbeguthaben",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_CONFIG_MINIMUM_AGE' => "Ab welchem Mindestalter dürfen sich Ihre Mitglieder anmelden?",
'ADMIN_CONFIG_SQL_TITLE' => "SQL-Einstellungen",
'ADMIN_CONFIG_DISPLAY_DEBUG_SQLS' => "Sollen die SQL-Abfragen für Administratoren zu Debug-Zwecken angezeigt werden?. Das Einschalten dieser Einstellung kann enorme Performanceverluste bedeuten.",
- 'ADMIN_CONFIG_INTERNAL_STATS_TITLE' => "Interne Statistik Einstellungen",
+ 'ADMIN_CONFIG_INTERNAL_STATS_TITLE' => "Interne Statistik-Einstellungen",
'ADMIN_CONFIG_INTERNAL_STATS_ENABLED' => "Sollen die internen Statistiken eingeschaltet sein? Das Abschalten dieser Statistiken kann etwas Performance bringen, ist aber für Performancemessungen vorraussetzend.",
));
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'MEMBER_PAYOUT_ID_INVALID' => "Auszahlungs-Id ist ungültig. Bitte Support benachrichtigen.",
'MEMBER_PAYOUT_POINTS_NOT_ENOUGTH' => "Sie haben nicht ausreichend {?POINTS?} angesammelt.",
'MEMBER_PAYOUT_NOW_TITLE' => "Auszahlungsanforderung an uns senden:",
- 'MEMBER_PAYOUT_SEND_NOW' => "Auszahlung anfordern",
+ 'MEMBER_PAYOUT_SEND_SUBMIT' => "Auszahlung anfordern",
'MEMBER_PAYOUT_SELECTED_TYPE' => "Auszahlungstyp",
'MEMBER_PAYOUT_MAXIMUM_POSSIBLE' => "Maximal auszahlbar",
'MEMBER_PAYOUT_REQUESTED_AMOUNT' => "Auszuzahlender Betrag",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
- 'ADMIN_RALLYE_ADD_NEW_TITLE' => "Neue Ref-Rallye hinzufügen",
- 'ADD_RALLYE' => "Rallye hinzufügen",
- 'ADD_RALLYE_PRICE' => "Preis hinzufügen",
- 'RALLYE_START_DAY' => "Beginn der Referral-Rallye",
- 'RALLYE_END_DAY' => "Ende der Referral-Rallye",
- 'RALLYE_AUTO_ADD_USER' => "Neue Mitglieder nehmen automatisch dran teil",
- 'RALLYE_IS_ACTIVE' => "Rallye ist aktiv",
- 'RALLYE_SEND_NOTIFY' => "Autom. Benachrichtigung an Mitglieder senden",
- 'RALLYE_OVERLAP_TIMES' => "Rallyes dürfen nicht zeitgleich laufen.",
- 'RALLYE_TITLE' => "Rallye-Titel",
- 'RALLYE_DESCR' => "Kurze Beschreibung / Freier HTML-Code der Referral-Rallye",
- 'RALLYE_TEMPLATE' => "Template (anstelle freien HTML-Codes)",
- 'RALLYE_PROBLEM_CREATE' => "Problem beim Erzeugen der Referral-Rallye.",
- 'RALLYE_NO_RALLYES_SETUP' => "Bitte fügen Sie zuerst eine neue Referral-Rallye hinzu.",
- 'RALLYE_CONFIG_PRICES' => "Preise einrichten für Referral-Rallye <span class=\"data\">%s</span>",
- 'RALLYE_PRICE_LEVEL' => "Platz eingeben (1, 2, 3, usw.)",
- 'RALLYE_PRICE_POINTS' => "Preis in {?POINTS?}",
- 'RALLYE_PRICE_INFOS' => "Preisbeschreibung (<span class=\"tiny\">Sie können auch nur die Beschreibung eingeben!</span>)",
- 'RALLYE_PRICE_ALREADY_FOUND' => "Sie haben bereits für diesen Platz einen Preis vergeben oder ist identisch mit anderen Preisen.",
- 'RALLYE_PRICE_LEVEL_SAVED' => "Preis wurde hinzugefügt.",
- 'RALLYE_EDIT_DELETE_PRICES' => "Ändern und Löschen von Referral-Rallye-Preisen",
+ 'ADMIN_RALLYE_START_DAY' => "Beginn der Referral-Rallye",
+ 'ADMIN_RALLYE_END_DAY' => "Ende der Referral-Rallye",
+ 'ADMIN_SELECT_RALLYE_AUTO_ADD_USERS' => "Neue Mitglieder nehmen automatisch dran teil",
+ 'ADMIN_RALLYE_IS_ACTIVE' => "Rallye ist aktiv",
+ 'ADMIN_SELECT_RALLYE_SEND_NOTIFY' => "Autom. Benachrichtigung an Mitglieder senden",
+ 'ADMIN_RALLYE_OVERLAP_TIMES' => "Rallyes dürfen nicht zeitgleich laufen.",
+ 'ADMIN_ENTER_RALLYE_DESCRIPTION' => "Kurze Beschreibung / Freier HTML-Code der Referral-Rallye",
+ 'ADMIN_SELECT_RALLYE_TEMPLATE' => "Template (anstelle freien HTML-Codes)",
+ 'ADMIN_RALLYE_PROBLEM_CREATE' => "Problem beim Erzeugen der Referral-Rallye.",
+ 'ADMIN_RALLYE_NO_RALLYES_SETUP' => "Bitte fügen Sie zuerst eine neue Referral-Rallye hinzu.",
+ 'ADMIN_RALLYE_PRICE_POINTS' => "Preis in {?POINTS?}",
+ 'ADMIN_RALLYE_PRICE_INFOS' => "Preisbeschreibung (<span class=\"tiny\">Sie können auch nur die Beschreibung eingeben!</span>)",
+ 'ADMIN_RALLYE_PRICE_ALREADY_FOUND' => "Sie haben bereits für diesen Platz einen Preis vergeben oder ist identisch mit anderen Preisen.",
+ 'ADMIN_RALLYE_PRICE_LEVEL_SAVED' => "Preis wurde hinzugefügt.",
'RALLYE_LEVEL' => "Platz",
- 'RALLYE_PRICE_INFO' => "Infos",
- 'RALLYE_EDIT_SELECTED_PRICES' => "Preise/Plätze ändern",
- 'RALLYE_CHANGE_PRICES' => "Ändern",
+ 'ADMIN_RALLYE_PRICE_INFO' => "Infos",
'RALLYE_ID' => "Rallye-Id",
- 'RALLYE_EDIT_DELETE_RALLYES' => "Ändern / Löschen von Referral-Rallyes (Grunddaten)",
- 'RALLYE_ADMIN_ID' => "Admin-Login",
- 'RALLYE_TSTART' => "Anfang",
- 'RALLYE_TEND' => "Ende",
- 'RALLYE_EDIT_DELETE_NOTICE' => "Wenn Sie die Grunddaten der ausgewählten Referral-Rallyes ändern / löschen wollen, markieren Sie diese per Kästchen. Wollen Sie die Preise ändern, klicken Sie den Referral-Rallye-Titel an. Aktive Referral-Rallyes können nicht geändert werden, sondern müssen erst deaktiviert werden.",
+ 'ADMIN_RALLYE_TITLE' => "Rallye-Titel",
+ 'ADMIN_RALLYE_ADMIN_LOGIN' => "Admin-Login",
+ 'ADMIN_RALLYE_STARTED' => "Anfang",
+ 'ADMIN_RALLYE_ENDED' => "Ende",
+ 'ADMIN_LIST_RALLYES_NOTICE' => "Wenn Sie die Grunddaten der ausgewählten Referral-Rallyes ändern / löschen wollen, markieren Sie diese per Kästchen. Wollen Sie die Preise ändern, klicken Sie den Referral-Rallye-Titel oder die Anzahl eingerichteter Preise an.",
'ADMIN_RALLYE_PRICES_NOTICE' => "Wenn Sie die Referral-Rallye-Preise hinzufügen, ändern oder löschen wollen, klicken Sie einfach den Referral-Rallye-Titel an.",
- 'RALLYE_ENTRIES_DELETED' => "Einträge gelöscht.",
- 'RALLYE_ENTRIES_CHANGED' => "Einträge geändert.",
- 'RALLYE_ENTRIES_NOT_DELETED' => "Bitte wählen Sie mindestens einen Eintrag zum Löschen aus.",
- 'RALLYE_DESCR2' => "Kurzbeschreibung",
- 'RALLYE_TEMPLATE2' => "Template",
- 'RALLYE_AUTO_ADD' => "Autom. Teilnahme",
+ 'ADMIN_RALLYE_PRICES_DELETED' => "Rallye-Preise gelöscht.",
+ 'ADMIN_RALLYE_PRICES_CHANGED' => "Rallye-Preise geändert.",
+ 'ADMIN_RALLYE_PRICES_NOT_DELETED' => "Bitte wählen Sie mindestens einen Eintrag zum Löschen aus.",
+ 'ADMIN_RALLYE_DESCRIPTION' => "Kurzbeschreibung",
+ 'ADMIN_RALLYE_TEMPLATE' => "Template",
+ 'ADMIN_RALLYE_AUTO_ADD_USERS' => "Autom. Teilnahme",
'RALLYE_ACTIVE' => "Aktiviert",
'RALLYE_NOTIFY' => "Benachrichtigen",
'RALLYE_NOTIFIED' => "Benachrichtigt",
'RALLYE_ASSIGNED_PRICES' => "Bereits eingerichtete Preise",
'RALLYE_ASSIGNED_USERS' => "Teilnehmende Mitglieder",
- 'RALLYE_LIST_OVERVIEW_TITLE' => "Datenblätter der Referral-Rallyes",
- 'RALLYE_NO_RALLYES_SELECTED' => "Sie haben keine <a href=\"{%url=modules.php?module=admin&what=list_rallyes%}\">Rallyes zum Editieren</a> ausgewählt.",
- 'RALLYE_DEACTIVATE_NOW' => "Rallye deaktivieren",
- 'RALLYE_ACTIVATE_NOW' => "Rallye aktivieren",
- 'RALLYE_STOP_NOTIFY_NOW' => "Nicht mehr benachrichtigen",
- 'RALLYE_START_NOTIFY_NOW' => "Mitglieder autom. benachrichtigen",
- 'RALLYE_EDIT_ONLY_INACTIVE_NOTICE' => "Es können nur deaktivierte Referral-Rallyes bearbeitet bzw. gelöscht werden. Beim Löschen werden alle dazu verknüpften Daten ebenfalls ohne Vorwarnung gelöscht.",
- 'RALLYE_DELETE_NOTHING_SELECTED' => "Keine Referral-Rallye(s) zum Löschen ausgewählt.",
- 'RALLYE_DELETED' => "Rallye(s) wurde(n) gelöscht.",
+ 'ADMIN_RALLYE_NO_RALLYES_SELECTED' => "Sie haben keine <a href=\"{%url=modules.php?module=admin&what=list_rallyes%}\">Rallyes zum Editieren</a> ausgewählt.",
+ 'ADMIN_RALLYE_DEACTIVATE_NOW' => "Rallye deaktivieren",
+ 'ADMIN_RALLYE_ACTIVATE_NOW' => "Rallye aktivieren",
+ 'ADMIN_RALLYE_STOP_NOTIFY_NOW' => "Nicht mehr benachrichtigen",
+ 'ADMIN_RALLYE_START_NOTIFY_NOW' => "Mitglieder autom. benachrichtigen",
+ 'ADMIN_RALLYE_EDIT_ONLY_INACTIVE_NOTICE' => "Es können nur deaktivierte Referral-Rallyes bearbeitet bzw. gelöscht werden. Beim Löschen werden alle dazu verknüpften Daten ebenfalls ohne Vorwarnung gelöscht.",
+ 'ADMIN_RALLYE_DELETE_NOTHING_SELECTED' => "Keine Referral-Rallye(s) zum Löschen ausgewählt.",
+ 'ADMIN_RALLYE_NO_PRICES_SELECTED' => "Sie haben keine Rallye-Preise ausgewählt! <a href=\"{%%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=%s%%}\">Zurück zu den Preisen</a>",
+ 'ADMIN_RALLYE_DELETED' => "Rallye(s) wurde(n) gelöscht.",
'RALLYE_MEMBER_NO_PRICES' => "--> Keine Preise für Modus <span class=\"data\">%s</span> ausgesetzt! <--",
'RALLYE_MEMBER_PRICES_ADDED' => "Die Preise",
'RALLYE_PRICE' => ". Platz",
- 'RALLYE_MEMBER_NOTIFY' => "REF-RALLYE GESTARTET: <span class=\"data\">%s</span>",
- 'RALLYE_ADMIN_NOTIFY' => "Neue Ref-Rallye: <span class=\"data\">%s</span>",
- 'RALLYE_ADMIN_USERS_404' => "Zur ausgewählten Referral-Rallye sind noch keine Mitglieder hinzugefügt worden.",
- 'RALLYE_LIST_USERS' => "Teilnehmende Mitglieder an der Referral-Rallye <span class=\"data\">%s</span>",
+ 'ADMIN_RALLYE_USERS_404' => "Zur ausgewählten Referral-Rallye sind noch keine Mitglieder hinzugefügt worden.",
+ 'ADMIN_LIST_RALLYE_USERS_TITLE2' => "Teilnehmende Mitglieder an der Referral-Rallye <span class=\"data\">%s</span>",
'RALLYE_OLD_REFS' => "Refs vor Referral-Rallye",
'RALLYE_NEW_REFS' => "Neue Refs",
- 'RALLYE_STOP_AUTO_ADD_NOW' => "Auto-Beitreten neuer Mitglieder deaktivieren",
- 'RALLYE_START_AUTO_ADD_NOW' => "Auto-Beitreten neuer Mitglieder aktivieren",
+ 'ADMIN_RALLYE_STOP_AUTO_ADD_NOW' => "Auto-Beitreten neuer Mitglieder deaktivieren",
+ 'ADMIN_RALLYE_START_AUTO_ADD_NOW' => "Auto-Beitreten neuer Mitglieder aktivieren",
'RALLYE_REFS' => "Geworbene Mitglieder",
'_RALLYE_PRICE' => "Platz",
'RALLYE_EXPIRE_ONE_DAY' => "Rallye endet in weniger als 24 Stunden.",
'RALLYE_HAS_EXPIRED' => "Diese Referral-Rallye ist beendet.",
- 'RALLYE_ADMIN_EXPIRED' => "Rallye beendet",
- 'RALLYE_ADMIN_EXPIRED_SUBJECT' => "Rallye beendet: <span class=\"data\">%s</span>",
- 'RALLYE_MEMBER_EXPIRED_SUBJECT' => "REF-RALLYE BEENDET: %s. Platz",
+ 'ADMIN_RALLYE_EXPIRED_TASK' => "Rallye beendet",
'RALLYE_YOU_CAN_WIN' => "Was Sie gewinnen können",
'RALLYE_OUR_WINNERS_ARE' => "Unsere Gewinner sind dieses Mal",
'RALLYE_PRICE_IS' => "Hat gewonnen",
- 'RALLYE_HAPPY_WINNERS' => "Wir gratulieren allen Gewinnern.",
- 'RALLYE_ADMIN_PURGED_SUBJECT' => "[HINWEIS:] Referral-Rallye '%s' entfernt",
- 'RALLYE_ADMIN_EXPIRED_TEXT' => "Eine Referral-Rallye ist beendet worden. Bitte kontrollieren Sie diese und führen Sie ggf. weitere Schritte durch.",
- 'RALLYE_ADMIN_PURGED_TEXT' => "Eine oder mehr Referral-Rallye(s) ist/sind gelöscht worden.",
- 'RALLYE_EDIT_RALLYES' => "Rallye-Grunddaten ändern",
- 'RALLYE_CHANGE_ADMIN' => "Änderungen speichern",
- 'RALLYE_CHANGED' => "Änderungen gespeichert.",
+ 'ADMIN_RALLYE_PURGED_TASK' => "Referral-Rallye bereinigt",
+ 'ADMIN_RALLYE_EXPIRED_TEXT' => "Eine Referral-Rallye ist beendet worden. Bitte kontrollieren Sie diese und führen Sie ggf. weitere Schritte durch.",
+ 'ADMIN_RALLYE_PURGED_TEXT' => "Eine oder mehr Referral-Rallye(s) ist/sind gelöscht worden.",
+ 'ADMIN_RALLYE_CHANGED' => "Änderungen gespeichert.",
'RALLYE_REFERRAL_POINTS' => "Verdienst durch Refs",
'RALLYE_REGISTER_NOW' => "Jetzt kostenlos und unverbindlich anmelden.",
'RALLYE_GET_REFERRAL_LINK' => "Jetzt dran teilnehmen.",
'ADMIN_TASK_TYPE_RALLYE_EXPIRED' => "Rallye wurde beendet",
'ADMIN_TASK_TYPE_RALLYE_PURGED' => "Rallye wurde gelöscht",
- 'RALLYE_LIST_USERS_TITLE' => "Alle teilnehmenden Mitglieder auflisten.",
- 'RALLYE_REFERRAL_POINTS_NOTICE' => "Die {?POINTS?} in der Spalte <u>Verdienst durch Refs</u> geben den Verdienst in erster Ebene vor der Referral-Rallye an und wird sich bis Ende der Referral-Rallye nicht verändern.",
- 'RALLYE_MIN_USERS' => "Gesamtzahl der Mitglieder, ab der Referral-Rallye automatisch endet.",
- 'RALLYE_MIN_PRICES' => "Mindestens zu belegende Plätze",
- 'RALLYE_MIN_USERS_MINI' => "Mitgliederanzahl erreicht",
- 'RALLYE_MIN_PRICES_MINI' => "Minimum Plätze",
+ 'ADMIN_RALLYE_REFERRAL_POINTS_NOTICE' => "Die {?POINTS?} in der Spalte <u>Verdienst durch Refs</u> geben den Verdienst in erster Ebene vor der Referral-Rallye an und wird sich bis Ende der Referral-Rallye nicht verändern.",
+ 'ADMIN_RALLYE_MIN_USERS' => "Gesamtzahl der Mitglieder, ab der Referral-Rallye automatisch endet.",
+ 'ADMIN_RALLYE_MIN_PRICES' => "Mindestens zu belegende Plätze",
+ 'ADMIN_RALLYE_MIN_USERS_MINI' => "Mitgliederanzahl erreicht",
+ 'ADMIN_RALLYE_MIN_PRICES_MINI' => "Minimum Plätze",
'RALLYE_END_NO_USER_LIMITATION' => "Die Referral-Rallye endet ohne Mitgliederbegrenzung.",
'RALLYE_END_NO_PRICE_LIMITATION' => "Die Referral-Rallye endet ohne Platzbelegungsbegrenzung.",
'RALLYE_END_USERS' => "Die Referral-Rallye endet, wenn wir <span class=\"data\">%s</span> Mitglieder in unserem {?mt_word?} haben.",
'RALLYE_END_PRICES' => "Die Referral-Rallye endet, wenn mindestens <span class=\"data\">%s</span> Plätze belegt sind.",
'RALLYE_LIMITATIONS' => "Einschränkungen an der Dauer der Referral-Rallye",
- 'RALLYE_REMOVE_PRICES' => "Rallye-Preis(e) entfernen",
- 'RALLYE_NO_TEMPLATES_FOUND' => "Keine Templates gefunden.",
- 'ADMIN_LIST_RALLYES_PRICING' => "Auflisten von Referral-Rallyes - Preise einrichten",
+ 'ADMIN_RALLYE_TEMPLATES_404' => "Keine Templates gefunden.",
+ 'RALLYE_NONE_ACTIVE' => "Derzeit ist noch keine Rallye im Gange. Bitte kommen Sie später noch einmal wieder.",
+
+ // Title lines
+ 'ADMIN_RALLYE_ADD_NEW_TITLE' => "Neue Ref-Rallye hinzufügen",
+ 'ADMIN_LIST_RALLYE_PRICES_TITLE' => "Preise einrichten für Referral-Rallye <span class=\"data\">%s</span>",
+ 'ADMIN_ENTER_RALLYE_PRICE_LEVEL' => "Platz eingeben (1, 2, 3, usw.)",
+ 'ADMIN_LIST_RALLYE_PRICES_SIMPLE_TITLE' => "Ändern und Löschen von Referral-Rallye-Preisen",
+ 'ADMIN_EDIT_RALLYE_PRICES_TITLE' => "Preise/Plätze ändern",
+ 'ADMIN_LIST_RALLYES_TITLE' => "Ändern / Löschen von Referral-Rallyes (Grunddaten)",
+ 'ADMIN_LIST_RALLYE_DATA_OVERVIEW_TITLE' => "Datenblätter der Referral-Rallyes",
+ 'ADMIN_EDIT_RALLYES_TITLE' => "Rallye-Grunddaten ändern",
+ 'ADMIN_DELETE_RALLYES_TITLE' => "Rallye komplett löschen",
+ 'ADMIN_LIST_RALLYE_USERS_TITLE' => "Alle teilnehmenden Mitglieder auflisten",
+ 'ADMIN_DELETE_RALLYE_PRICES_TITLE' => "Ausgewähle Rallye-Preis(e) löschen",
+ 'ADMIN_LIST_RALLYES_PRICES_TITLE' => "Auflisten von Referral-Rallyes - Preise einrichten",
'GUEST_RALLYE_HAS_STARTED_TITLE' => "{?MAIN_TITLE?} - Referral-Rallye gestartet",
'RALLYE_NONE_ACTIVE_TITLE' => "Keine Referral-Rallyes aktiv",
- 'RALLYE_NONE_ACTIVE' => "Derzeit ist noch keine Rallye im Gange. Bitte kommen Sie später noch einmal wieder.",
+
+ // Admin - submit buttons
+ 'ADMIN_ADD_RALLYE_SUBMIT' => "Rallye hinzufügen",
+ 'ADMIN_ADD_RALLYE_PRICE_SUBMIT' => "Preis hinzufügen",
+ 'ADMIN_CHANGE_RALLYE_SUBMIT' => "Änderungen speichern",
+ 'ADMIN_REMOVE_RALLYE_SUBMIT' => "Rallyes löschen",
+ 'ADMIN_REMOVE_RALLYE_PRICES_SUBMIT' => "Rallye-Preis(e) löschen",
+ 'ADMIN_CHANGE_RALLYE_PRICES_SUBMIT' => "Ändern",
+
+ // Subject lines
+ 'MEMBER_RALLYE_NOTIFY_SUBJECT' => "REF-RALLYE GESTARTET: %s",
+ 'ADMIN_RALLYE_NOTIFY_SUBJECT' => "Neue Ref-Rallye: %s",
+ 'ADMIN_RALLYE_EXPIRED_SUBJECT' => "Rallye beendet: %s",
+ 'RALLYE_MEMBER_EXPIRED_SUBJECT' => "REF-RALLYE BEENDET: %s. Platz",
+ 'ADMIN_RALLYE_PURGED_SUBJECT' => "[HINWEIS:] Referral-Rallye '%s' entfernt",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_RALLYE_WINNER' => "Gewinnausschüttung der Referral-Rallye",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'MEMBER_REFBACK_LEVEL_REFID' => "Werber",
'MEMBER_REFBACK_STATUS' => "Referral-Status",
'MEMBER_REFBACK_PERCENTS' => "Refback-Prozente",
- 'MEMBER_REFBACK_POINTS' => "Refback Vergütung",
+ 'MEMBER_REFBACK_POINTS' => "Refback-Vergütung",
'MEMBER_REFBACK_EDIT' => "Einstellen",
'MEMBER_REFBACK_EDIT_TITLE' => "Refback für ausgewähltes Mitglied einstellen:",
'MEMBER_REFBACK_DELETED_SUBMIT' => "Nicht möglich",
// Subject lines
'ADMIN_REFBACK_SUBJECT' => "Es wurde Refback eingestellt",
'MEMBER_REFBACK_SUBJECT' => "Für Sie wurde Refback eingestellt",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_REFBACK' => "Refback-Gutschrift",
+ 'POINTS_SUBJECT_REFBACK_REF' => "Anteilige Refback-Gutschrift",
+
+ // Admin - Subject lines for points_data
+ 'ADMIN_DIRECT_REFBACK_SUBJECT' => "Refbackgutschrift durch Direktgutschrift von Mitglied %s erhalten",
+ 'ADMIN_REFERRAL_REFBACK_SUBJECT' => "Refbackgutschrift durch Referralgutschrift von Mitglied %s erhalten",
+ 'ADMIN_REFERRAL_REFBACK_REF_SUBJECT' => "Anteilige Refbackgutschrift durch Referralgutschrift von Mitglied %s erhalten",
+
+ // Member - Subject lines for points_data
+ 'MEMBER_DIRECT_REFBACK_SUBJECT' => "Refbackgutschrift durch Direktgutschrift von Mitglied %s erhalten",
+ 'MEMBER_REFERRAL_REFBACK_SUBJECT' => "Refbackgutschrift durch Referralgutschrift von Mitglied %s erhalten",
+ 'MEMBER_REFERRAL_REFBACK_REF_SUBJECT' => "Anteilige Refbackgutschrift durch Referralgutschrift von Mitglied %s erhalten",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_CONFIG_REGISTER_GENERATE_PASSWORD_EMPTY' => "Soll bei leergelassenem Passwort in der Anmeldung eines per Zufall generiert werden?",
'ADMIN_CONFIG_REJECT_DOUBLE_EMAIL' => "Doppelt angemeldete Email-Adressen ablehnen?",
'GUEST_EMAIL_IS_ALREADY_REGISTERED' => "Sie haben sich bereits mit dieser Email-Adresse angemeldet, oder jemand anderes verwendet Ihre. Doppelte Anmeldungen sind bei uns verboten.",
+ 'PRE_USER_REGISTRATION_FAILED' => "Anmeldung fehlgeschlagen: Pre-Filterkette nicht gelaufen! Bitte melden Sie dies beim zuständigen Webmaster.",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_REGISTER_WELCOME' => "Anmeldegutschrift",
+ 'POINTS_SUBJECT_REGISTER_WELCOME_REF' => "Anteilige Anmeldegutschrift",
+ 'POINTS_SUBJECT_REFERRAL_BONUS' => "Einmalige Werbeprämie",
+ 'POINTS_SUBJECT_REFERRAL_BONUS_REF' => "Anteilige einml. Werbeprämie",
+
+ // Admin - subject lines
+ 'ADMIN_DIRECT_REGISTER_WELCOME_SUBJECT' => "Willkommensgutschrift Mitglied gutgeschrieben",
+ 'ADMIN_DIRECT_REFERRAL_BONUS_SUBJECT' => "Werbeprämie per Direktgutschrift gutgeschrieben",
+ 'ADMIN_REFERRAL_REFERRAL_BONUS_SUBJECT' => "Werbeprämie per Referralgutschrift gutgeschrieben",
+ 'ADMIN_REFERRAL_REFERRAL_BONUS_REF_SUBJECT' => "Anteilige Werbeprämie per Referralgutschrift gutgeschrieben",
+
+ // Member - subject lines
+ 'MEMBER_DIRECT_REGISTER_WELCOME_SUBJECT' => "Willkommensgutschrift erhalten",
+ 'MEMBER_DIRECT_REFERRAL_BONUS_SUBJECT' => "Werbeprämie per Direktgutschrift erhalten",
+ 'MEMBER_REFERRAL_REFERRAL_BONUS_SUBJECT' => "Werbeprämie per Referralgutschrift erhalten",
+ 'MEMBER_REFERRAL_REFERRAL_BONUS_REF_SUBJECT' => "Anteilige Werbeprämie per Referralgutschrift erhalten",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
+ // Unsorted
'SPONSOR_NOT_INITIALIZED' => "Sponsorenbereich noch nicht eingerichtet.",
'ADMIN_CONFIG_SPONSOR_TITLE' => "Allgemeine Einstellungen",
'ADMIN_CONFIG_SPONSOR_MIN_POINTS' => "Minimum buchbare {?POINTS?}",
'SPONSOR_ID' => "Sponsor-Id",
'SPONSOR_STATUS' => "Sponsor-Status",
'SPONSOR_REFERRALS' => "Sponsoren geworben",
- 'ADMIN_SPONSOR_INVALID_MODE' => "Ungütiger Modus <span class=\"data\">%s</span> angegeben.",
+ 'ADMIN_SPONSOR_INVALID_MODE' => "Ungültiger Modus <span class=\"data\">%s</span> angegeben.",
'ADMIN_SPONSOR_MODUS_TPL_404' => "Modus-Template <span class=\"data\">%s</span> nicht gefunden.",
'ADMIN_ADD_POINTS_TO_SPONSOR' => "{?POINTS?} gutschreiben",
'ADMIN_SUB_POINTS_FROM_SPONSOR' => "{?POINTS?} abziehen",
'ADMIN_SPONSOR_POINTS_ADDED' => "{?POINTS?} wurden gutgeschrieben.",
'ADMIN_SPONSOR_POINTS_SUBTRACTED' => "{?POINTS?} wurden abgezogen.",
'ADMIN_SPONSOR_CANNOT_LOCK_PENDING_UNCINFIRMED_ACCOUNTS' => "Sie können keine auf Freischaltung wartende oder unbestätigte Accounts sperren/freigeben.",
-// @TODO Rewrite these four constants to one and use sprintf()
'ADMIN_HEADER_DELETE_SPONSOR' => "Sponsorenaccount <span class=\"data\">%s</span> löschen",
'ADMIN_TEXT_DELETE_SPONSOR' => "Möchten Sie den Sponsoren <span class=\"data\">%s</span> mit samt aller seiner Bestellungen unwiederruflich löschen?",
'ADMIN_SPONSOR_DELETED' => "Sponsorenaccount <span class=\"data\">%s</span> entfernt.",
'SPONSOR_TERMS_HEADER' => "Allgemeine Geschäftsbedingungen",
'ADMIN_SPONSOR_ACCOUNT_404_ALREADY_CONFIRMED' => "Das von Ihnen angegebene Sponsoraccount <span class=\"data\">%s</span> konnte entweder nicht gefunden werden, oder ist bereits freigegeben.",
-// Add payment types
+ // Add payment types
'ADMIN_SPONSOR_NO_PAYTYPES' => "Noch keine Buchungspakete eingerichtet.",
'ADMIN_ADD_SPONSOR_PAYTYPE_TITLE' => "Neue Buchungspaket hinzufügen",
'ADMIN_ADD_SPONSOR_PAYTYPE' => "Buchungspaket hinzufügen",
'SPONSOR_REFID_WAS' => "Sie wurden vom Sponsor geworben",
'SPONSOR_ACCOUNT_IS_PENDING' => "EMail-Adresse bestätigt! Sie haben soeben eine EMail mit weiteren Anweisungen erhalten.",
-// Header / text / email messages
+ // Header / text / email messages
'SPONSOR_LOCK_SPONSOR_HEADER' => "Sponsorenaccount sperren",
'SPONSOR_UNLOCK_SPONSOR_HEADER' => "Sponsorenaccount freigeben",
'SPONSOR_LOCK_SPONSOR_TEXT' => "Wollen Sie das ausgewählte Sponsorenaccount sperren? Falls ja, wird eine Mail an den Sponsor geschickt. Bitte geben Sie auch eine plaubsible Begründung der Sperrung mit an.",
'SPONSOR_EMAIL_CNTRY_ZIP_CITY' => "Ländercode, PLZ, Wohnort",
'SPONSOR_PASS_UNCHANGED' => "- Nicht geändert! -",
-// Guest headers
+ // Guest headers
'GUEST_SPONSOR_WANT_BECOME_HEADER' => "Sie wollen unser Sponsor sein?",
'GUEST_SPONSOR_INFOS_PRICING_HEADER' => "Hier sind Preise und was Sie für Ihr Geld bekommen.",
'GUEST_SPONSOR_PRICING_HEADER' => "Unsere Preise sind einfach fair! Schauen Sie selbst:",
'GUEST_SPONSOR_PRICING_FOOTER' => "Vergleichen Sie mal...",
'GUEST_SPONSOR_ACTIONS_FOOTER' => "Und was bieten Ihnen andere?",
-// Link descriptions
+ // Link descriptions
'ADMIN_SPONSOR_DETAILS_LINK_TITLE' => "Details des Sponsorenaccounts anzeigen",
'ADMIN_SPONSOR_EDIT_LINK_TITLE' => "Sponsorenaccount ändern",
'ADMIN_SPONSOR_ADD_POINTS_LINK_TITLE' => "{?POINTS?} gutschreiben",
'ADMIN_SPONSOR_SUB_POINTS_LINK_TITLE' => "{?POINTS?} abziehen",
-// Performable actions on a sponsor's account
+ // Performable actions on a sponsor's account
'ADMIN_SPONSOR_ACTION_EDIT' => "Sponsor ändern",
'ADMIN_SPONSOR_ACTION_DELETE' => "Sponsor löschen",
'ADMIN_SPONSOR_ACTION_LOCK' => "Sponsoren ent-/sperren",
'ADMIN_LIST_SPONSOR_ORDERS' => "Bestellungen bearbeiten",
-// Subject lines
+ // Subject lines
'SPONSOR_UNLOCKED_SUBJECT' => "HINWEIS: Freischaltung Ihres Sponsorenaccounts",
'ADMIN_SPONSOR_ADD_POINTS_SUBJECT' => "HINWEIS: Gutschrift durch den Admin.",
'ADMIN_SPONSOR_SUB_POINTS_SUBJECT' => "HINWEIS: Abzug durch den Admin.",
'ADMIN_SPONSOR_SETTINGS_SUBJECT' => "Sponsor hat seine Einstellungen geändert.",
'SPONSOR_SETTINGS_SUBJECT' => "HINWEIS: Änderung Ihrer Einstellungen",
-// Sponsor registration errors
+ // Sponsor registration errors
'SPONSOR_SURNAME_EMPTY' => "Sie haben keinen Vornamen eingegeben.",
'SPONSOR_FAMILY_EMPTY' => "Sie haben keinen Nachnamen eingegeben.",
'SPONSOR_STREET_NR1_EMPTY' => "Sie haben keine Straße eingegeben.",
'SPONSOR_ACCOUNT_FAILED' => "Sponsorenaccount konnte nicht geladen werden: <span class=\"data\">{%%pipe,translateSponsorStatus=%s%%}</span>",
'SPONSOR_ACCOUNT_EMAIL_FAILED' => "Konnten Sponsorenaccount nicht freigeben! Bitte benachrichtigen Sie den Support.",
-// Login form
+ // Login form
'SPONSOR_LOGIN_WELCOME' => "Willkommen zum Sponsorenlogin",
'SPONSOR_ENTER_ID' => "Sponsor-Id",
'SPONSOR_ENTER_PASSWORD' => "Passwort",
'SPONSOR_ACCOUNT_STATUS_FAILED' => "Unerwarteter Zustand des Scriptes erreicht! Bitte Support benachrichtigen.",
'SPONSOR_ACCOUNT_IS_CONFIRMED_AGAIN' => "Ihr Sponsorenaccount ist wieder freigegeben! Sie können sich nun erneut einloggen.",
-// Sponsor area
+ // Sponsor area
'SPONSOR_NO_MAIN_MENUS_ACTIVE' => "Keine Hauptmenüs aktiviert.",
'SPONSOR_NO_SUB_MENUS_ACTIVE' => "Keine Untermenüs aktiviert.",
'SPONSOR_CONTENT_404' => "Konnte das Sponsor-Modul <span class=\"data\">%s</span> auf dem Server nicht finden.",
'SPONSOR_UNKNOWN_WHAT' => "Scripte-Fehler: Unbekannte Sponsor-Aktion <span class=\"data\">{%pipe,getWhat%}</span> erkannt.",
'SPONSOR_SETTINGS_SAVED' => "Neue Einstellungen gespeichert.",
-// Error messages
+ // Error messages
'SPONSOR_NO_MESSAGE_GENERATED' => "Fehler bei der Verarbeitung: Keine Nachricht generiert.",
'SPONSOR_NO_CURRENT_PASSWORD_ENTERED' => "Sie haben Ihr derzeit gespeichertes Passwort nicht eingegeben.",
'SPONSOR_CURRENT_PASSWORD_DIDNOT_MATCH_DB' => "Das von Ihnen und das in der Datenbank hinterlegte Passwort stimmen nicht überein.",
'SPONSOR_PASSWORD_TWO_EMPTY' => "Zweites einzugebenes Passwort ist leer.",
'SPONSOR_PASSWORD_TOO_SHORT' => "Eingegebenes Passwort entspricht nicht der Mindestlänge von <span class=\"data\">{?pass_len?}</span> Zeichen.",
'SPONSOR_ACCOUNT_DATA_NOT_SAVED' => "Ihre Daten wurden <u>nicht</u> gespeichert.",
+
+ // Module titles
+ 'MODULE_SPONSOR_TITLE' => "Sponsorbereich"
+ 'MODULE_SPONSOR_CONFIRM_TITLE' => "Sponsor-Bestätigung"
+ 'MODULE_SPONSOR_REF_TITLE' => "Sponsor-Referrallink"
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_CONFIG_SURFBAR_DYNAMIC_PERCENT' => "Prozent auf dynamische Vergütung/ Verweildauer/Reload-Sperre:",
'ADMIN_CONFIG_SURFBAR_MAX_ORDER' => "Maximal durch Mitglied in Surfbar buchbare URLs:",
'ADMIN_CONFIG_SURFBAR_RESTART_TIME' => "Ruhezeit der Surfbar, wenn alle URLs in Reload-Lock sind:",
- 'ADMIN_CONFIG_SURFBAR_AUTOSTART' => "Surfbar soll nach Ruhezeit automatisch starten?",
+ 'ADMIN_CONFIG_SURFBAR_AUTO_START' => "Surfbar soll nach Ruhezeit automatisch starten?",
'ADMIN_CONFIG_SURFBAR_STATS_RELOAD' => "Reload-Zeit der Statistik unterhalb der beworbenen Seite:",
'ADMIN_CONFIG_SURFBAR_PURGE_DELETED' => "Verweildauer gelöschter URLs in der Datenbank:",
'ADMIN_CONFIG_SURFBAR_PURGE_MIGRATED' => "Verweildauer migrierter URLs in der Datenbank:",
- 'ADMIN_CONFIG_SURFBAR_NOTICE' => "<strong>Hinweise:</strong> Es wird empfohlen, die Ruhezeit etwas länger als die Reload-Sperre einzustellen. Migrierte URLs sind aus Mailbuchungen übernommene URLs, die das Mitglied noch bestätigen muss. Werden URLs aus freigeschalteten Mailbuchungen in die Surfbar "migriert" so muss erst das Mitglied der Aufnahme zustimmen. Tut es dies nicht, wird die URL wieder aus der Surfbar entfernt. Eine sofortige Freischaltung ist nicht möglich.",
'ADMIN_CONFIG_SURFBAR_PAUSE_MODE' => "Auf welche Seite soll umgeleitet werden, wenn das Mitglied alle gebuchten URLs besucht hat? (Wenn sie also im Reload-Lock sind)",
'ADMIN_CONFIG_SURFBAR_PAUSE_MODE_INTERNAL' => "Auf interne Pausenseite umleiten.",
'ADMIN_CONFIG_SURFBAR_PAUSE_MODE_EXTERNAL' => "Auf externe Seite umleiten.<br /><span class=\"notice\">(Bitte angeben)</span>",
'ADMIN_SURFBAR_STATS_TITLE' => "Mitglieder-Statistik der Surfbar",
'ADMIN_SURFBAR_URL_STATS_TITLE' => "URL-bezogene Statistik der Surfbar",
'ADMIN_LIST_SURFBAR_ACTIONS_TITLE' => "Mitglieder-Aktionen der Surfbar auflisten",
+ 'ADMIN_EDIT_SURFBAR_ACTIONS_TITLE' => "Mitglieder-Aktionen ändern",
+
+ // Admin submit buttons
+ 'ADMIN_SURFBAR_EDIT_URL_SUBMIT' => "URLs ändern",
+ 'ADMIN_SURFBAR_EDIT_URL_NOW_SUBMIT' => "URLs jetzt ändern",
+ 'ADMIN_SURFBAR_DELETE_URL_SUBMIT' => "URLs löschen",
+ 'ADMIN_SURFBAR_DELETE_URL_NOW_SUBMIT' => "URLs jetzt entfernen",
+ 'ADMIN_SURFBAR_UNDELETE_URL_SUBMIT' => "Löschung zurücknehmen",
+ 'ADMIN_SURFBAR_UNDELETE_URL_NOW_SUBMIT' => "URLs jetzt wiederherstellen",
+ 'ADMIN_SURFBAR_UNLOCK_URL_SUBMIT' => "URL ent-/sperren",
+ 'ADMIN_SURFBAR_LOCK_URL_NOW_SUBMIT' => "URL jetzt ent-/sperren",
+ 'ADMIN_SURFBAR_CONFIRM_URL_SUBMIT' => "URL(s) freigeben",
+ 'ADMIN_SURFBAR_REJECT_URL_SUBMIT' => "URL(s) ablehnen",
+ 'ADMIN_SURFBAR_ADD_URL_SUBMIT' => "URL hinzufügen",
+ 'ADMIN_EDIT_SURFBAR_ACTIONS_SUBMIT' => "Mitgliedsaktionen editieren",
+ 'ADMIN_CHANGE_SURFBAR_ACTIONS_SUBMIT' => "Mitglieder-Aktionen ändern",
// General admin text
'ADMIN_SURFBAR_URLS_404' => "Es konnten keine URLs in der Surfbar gefunden werden.",
- 'ADMIN_SURFBAR_ACTIONS_404' => "Es konnten keine Mitgliederaktionen in der Surfbar gefunden werden.",
+ 'ADMIN_SURFBAR_ACTIONS_404' => "Es konnten keine Mitglieder-Aktionen in der Surfbar gefunden werden.",
'ADMIN_SURFBAR_REWARD' => "Vergütung",
'ADMIN_SURFBAR_COSTS' => "Kosten",
'ADMIN_SURFBAR_PAYMENT' => "Payment",
'ADMIN_SURFBAR_REGISTERED' => "URL aufgenommen",
'ADMIN_SURFBAR_LAST_LOCKED' => "Zuletzt gesperrt",
'ADMIN_SURFBAR_LOCK_REASON' => "Sperrgrund",
- 'ADMIN_SURFBAR_EDIT_URL' => "URLs ändern",
- 'ADMIN_SURFBAR_EDIT_URL_NOW' => "URLs jetzt ändern",
- 'ADMIN_SURFBAR_DELETE_URL' => "URLs löschen",
- 'ADMIN_SURFBAR_DELETE_URL_NOW' => "URLs jetzt entfernen",
- 'ADMIN_SURFBAR_UNDELETE_URL' => "Löschung zurücknehmen",
- 'ADMIN_SURFBAR_UNDELETE_URL_NOW' => "URLs jetzt wiederherstellen",
- 'ADMIN_SURFBAR_UNLOCK_URL' => "URL ent-/sperren",
- 'ADMIN_SURFBAR_LOCK_URL_NOW' => "URL jetzt ent-/sperren",
- 'ADMIN_SURFBAR_CONFIRM_URL' => "URL(s) freigeben",
- 'ADMIN_SURFBAR_REJECT_URL' => "URL(s) ablehnen",
'ADMIN_SURFBAR_UNLOCK_DONE' => "Freischaltung ausgewählter URL(s) vollständig. :-)",
'ADMIN_SURFBAR_UNLOCK_FAILED' => "Freischaltung fehlgeschlagen. Bitte nachschauen, welche URLs nicht freigegeben wurden.",
'ADMIN_SURFBAR_URL_ADDED' => "URL wurde der Surfbar hinzugefügt.",
'ADMIN_SURFBAR_URL_NOT_ADDED' => "URL wurde wegen Fehler nicht hinzugefügt. Ist die URL bereits vorhanden?",
- 'ADMIN_SURFBAR_ADD_URL' => "URL hinzufügen",
'ADMIN_SURFBAR_NO_STATS' => "Keine Surfbar-Statistiken vorhanden.",
'ADMIN_SURFBAR_VISITED_URLS' => "Aufgerufene URLs",
'ADMIN_SURFBAR_TOTAL_VISITS' => "Gesamtbesuche",
'ADMIN_SURFBAR_TOTALS' => "Zusammenfassung",
'ADMIN_SURFBAR_LAST_ONLINE' => "Letzter Aufruf der URL",
'ADMIN_SURFBAR_NO_URL_STATS' => "Keine URL-bezogene Statistik gefunden",
- 'ADMIN_SURFBAR_NO_ACTIONS' => "Keine Mitgliederaktionen gefunden. Bitte installieren Sie die Surfbar neu.",
+ 'ADMIN_SURFBAR_NO_ACTIONS' => "Keine Mitglieder-Aktionen gefunden. Bitte installieren Sie die Surfbar neu.",
'ADMIN_SURFBAR_MEMBER_ACTION' => "Mitgliedaktion",
'ADMIN_SURFBAR_CURRENT_STATUS' => "Aktueller Status",
'ADMIN_SURFBAR_NEW_STATUS' => "Neuer Status",
- 'ADMIN_SURFBAR_EDIT_ACTIONS' => "Mitgliedsaktionen editieren",
- 'ADMIN_LIST_SURFBAR_ACTIONS_NOTICE' => "<strong>Hinweise:</strong> Sie sollten zur Sicherheit Ihres {?mt_word2?} den neuen Status nie auf <u>{--SURFBAR_URL_STATUS_ACTIVE--}</u> z.B. bei der Mitgliedaktion <u>{--MEMBER_SURFBAR_ACTION_UNPAUSE_SUBMIT--}</u> einstellen.",
'ADMIN_SURFBAR_URL' => "Gebuchte URL",
+ 'ADMIN_CHANGE_SURFBAR_ACTIONS_STATUS' => "Derzeitigen URL-Status ändern:",
+ 'ADMIN_CHANGE_SURFBAR_ACTIONS_ACTION' => "Mitglieder-Aktion ändern:",
+ 'ADMIN_CHANGE_SURFBAR_ACTIONS_NEW_STATUS' => "Neuen URL-Status ändern:",
+ 'ADMIN_SURFBAR_ACTIONS_ID' => "Aktions-Id:",
// Admin titles
'ADMIN_SURFBAR_UNLOCK_URLS_TITLE' => "Surfbar - URLs freihschalten/ablehnen",
'ADMIN_SURFBAR_LOCK_URLS_TITLE' => "Surfbar - URLs sperren/entsperren",
'ADMIN_SURFBAR_UNDELETE_URLS_TITLE' => "Surfbar - gelöschte URLs wiederherstellen",
+ // Admin notices
+ 'ADMIN_CONFIG_SURFBAR_NOTICE' => "<strong>Hinweise:</strong> Es wird empfohlen, die Ruhezeit etwas länger als die Reload-Sperre einzustellen. Migrierte URLs sind aus Mailbuchungen übernommene URLs, die das Mitglied noch bestätigen muss. Werden URLs aus freigeschalteten Mailbuchungen in die Surfbar "migriert" so muss erst das Mitglied der Aufnahme zustimmen. Tut es dies nicht, wird die URL wieder aus der Surfbar entfernt. Eine sofortige Freischaltung ist nicht möglich.",
+ 'ADMIN_LIST_SURFBAR_ACTIONS_NOTICE' => "<strong>Hinweise:</strong> Sie sollten zur Sicherheit Ihres {?mt_word2?} den neuen Status nie auf <u>{--SURFBAR_URL_STATUS_ACTIVE--}</u> z.B. bei der Mitgliedaktion <u>{--MEMBER_SURFBAR_ACTION_UNPAUSE_SUBMIT--}</u> einstellen.",
+ 'ADMIN_EDIT_SURFBAR_ACTIONS_NOTICE' => "Seien Sie beim Ändern von Mitglieder-Aktionen, URL-Status und neuen Status sehr vorsichtig! Eventuell kann der Besuchertausch Ihres {?mt_word2?} nicht mehr einwandfrei funktionieren.",
+
// Member titles
'MEMBER_SURFBAR_LIST_TITLE' => "Ihre URLs in der Surfbar verwalten",
+ // Member submit buttons
+ 'MEMBER_SURFBAR_ADD_URL_SUBMIT' => "URL in Surfbar buchen",
+ 'MEMBER_SURFBAR_TEST_URL_SUBMIT' => "URL anzeigen",
+
// General member text
'MEMBER_SURFBAR_URL_ADDED' => "URL hinzugefügt und wartet auf Freischaltung.",
'MEMBER_SURFBAR_URL_NOT_ADDED' => "URL konnte nicht hinzugefügt werden, da ein Fehler vorliegt.",
- 'MEMBER_SURFBAR_ADD_URL' => "URL in Surfbar buchen",
'MEMBER_SURFBAR_NO_MORE_ALLOWED' => "Sie können leider nicht mehr URLs in der Surfbar buchen, da Sie das Maximum erreicht haben.",
'MEMBER_SURFBAR_NO_URLS_FOUND' => "Sie haben noch keine URLs für die Surfbar gebucht.",
'MEMBER_SURFBAR_VIEWS_TOTAL' => "Views",
'MEMBER_SURFBAR_LAST_LOCKED' => "Letzte Sperre",
'MEMBER_SURFBAR_LOCK_REASON' => "Sperrgrund",
'MEMBER_SURFBAR_ACTIONS' => "Aktionen",
- 'MEMBER_SURFBAR_TEST_URL' => "URL anzeigen",
'MEMBER_SURFBAR_LIST_NOTICE' => "<strong>Hinweise:</strong> Bitte beachten Sie, dass Editieren, erneutes Aktivieren von gestoppten URLs und nochmalige Anmeldung nach Ablehnung eine Freischaltung durch unsere Administratoren nötig ist. Migrierte URLs sind in der Surfbar nicht freigegeben und bedarfen einer Buchungsbestätigung ("Jetzt buchen" bitte dazu anklicken) Ihrerseits, da die Bewerbung Ihrer URL in der Surfbar zusätzliche {?POINTS?}-Kosten bedeuten. Die aktuellen Kosten entnehmen Sie bitte der Seite "Surfbar starten" oder "URL buchen" aus dem Surfbar-Mitgliedsmenü.",
'MEMBER_SURFBAR_ACTION_DONE' => "Ausgewählte Aktion ausgeführt.",
'MEMBER_SURFBAR_ACTION_FAILED' => "Ausgewählte Aktion konnte nicht vollständig ausgeführt werden.",
'ADMIN_SURFBAR_NOTIFY_URL_PENDING_DELETED_SUBJECT' => "[Surfbar:] Mitglied hat wartende URL zurückgenommen",
'ADMIN_SURFBAR_NOTIFY_URL_STOPPED_DELETED_SUBJECT' => "[Surfbar:] Mitglied hat angehaltene URL gelöscht",
'ADMIN_SURFBAR_NOTIFY_URL_REJECTED_SUBJECT' => "[Surfbar:] URL abgelehnt",
+ 'ADMIN_SURFBAR_NOTIFY_URL_REJECTED_PENDING_SUBJECT' => "[Surfbar:] Erneute Anmeldung einer URL",
'ADMIN_SURFBAR_NOTIFY_URL_PENDING_SUBJECT' => "[Surfbar:] URL-Buchung zugestimmt",
'ADMIN_SURFBAR_NOTIFY_URL_PENDING_ACTIVE_SUBJECT' => "[Surfbar:] URL-Buchung freigeschaltet",
'ADMIN_SURFBAR_NOTIFY_URL_PENDING_REJECTED_SUBJECT' => "[Surfbar:] URL-Buchung abgelehnt",
'MEMBER_SURFBAR_NOTIFY_URL_PENDING_DELETED_SUBJECT' => "[Surfbar:] Sie haben Ihre wartende URL zurückgenommen",
'MEMBER_SURFBAR_NOTIFY_URL_STOPPED_DELETED_SUBJECT' => "[Surfbar:] Sie haben Ihre gestoppte URL gelöscht",
'MEMBER_SURFBAR_NOTIFY_URL_REJECTED_SUBJECT' => "[Surfbar:] Ihre URL wurde abgelehnt",
+ 'MEMBER_SURFBAR_NOTIFY_URL_REJECTED_PENDING_SUBJECT' => "[Surfbar:] Erneute Anmeldung Ihrer URL",
'MEMBER_SURFBAR_NOTIFY_URL_PENDING_SUBJECT' => "[Surfbar:] Zustimmung zur URL-Buchung erhalten",
'MEMBER_SURFBAR_NOTIFY_URL_PENDING_ACTIVE_SUBJECT' => "[Surfbar:] Ihre URL wurde freigeschaltet",
'MEMBER_SURFBAR_NOTIFY_URL_PENDING_REJECTED_SUBJECT' => "[Surfbar:] Ihre URL wurde abgelehnt",
// Guest texts
'GUEST_SURFBAR_LOGIN_HEADER' => "Login zur Surfbar:",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_SURFBAR' => "Vergütung im Besuchertausch",
+ 'POINTS_SUBJECT_MONTHLY_SURFBAR' => "Monatl. Reset (Besuchertausch)",
+
+ // Module title
+ 'MODULE_SURFBAR_TITLE' => "Besuchertausch",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'ADMIN_TASK_UNCONFIRMED' => "Unbestätigt",
'ADMIN_TASK_LOCKED' => "Gesperrt",
'ADMIN_TASK_RANDOM_REFID' => "Zufallsreferral",
+ 'ADMIN_TASK_TESTERS' => "Testbenutzer",
'ADMIN_TASK_NEW_TASKS' => "Ohne Zuweisung",
'ADMIN_TASK_CLOSED_TASKS' => "Geschlossen",
'ADMIN_TASK_YOUR_TASKS' => "Ihre Aufgaben",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Language definitions
addMessages(array(
+ // Admin messages
'ADMIN_CONFIG_TRANSFER_TITLE' => "Einstellungen zu {?POINTS?}-Überweisungen",
'ADMIN_CONFIG_TRANSFER_MAX' => "Maximal angezeigte Einträge",
'ADMIN_CONFIG_TRANSFER_AGE' => "Maximales Alter von Einträgen",
'ADMIN_CONFIG_TRANSFER_CODE_NOTICE' => "<strong>0</strong> deaktiviert den Touring-Code.",
'ADMIN_CONFIG_AUTOPURGE_TRANSFER' => "Veraltete Einträge automatisch löschen? (purge)",
'ADMIN_TRANSFER_POINTS_TOTAL' => "Gesamttransfersumme",
- 'TRANSFER_LIST_INCOMING' => "Eingehende Überweisungen",
- 'TRANSFER_LIST_OUTGOING' => "Ausgehende Überweisungen",
- 'TRANSFER_ALLOW_OPT_IN' => "Wollen Sie {?POINTS?}-Überweisungen von anderen Mitgliedern erhalten?",
- 'TRANSFER_TO_MEMBER_NOW' => "Neue {?POINTS?}-Überweisung starten",
- 'TRANSFER_PLEASE_ALLOW_OPT_IN' => "Bitte erst Empfangen von Überweisungen erlauben.",
- 'TRANSFER_NOW_LINK' => "Überweisung zum anderen Mitglied tätigen",
- 'TRANSFER_NOW_TITLE' => "Starten Sie hier eine Überweisung von {?POINTS?} an ein anderes Mitglied.",
- 'TRANSFER_SELECT_TARGET_USERID' => "Empfänger auswählen",
- 'TRANSFER_NO_ONE_ELSE_OPT_IN' => "Niemand weiteres möchte Überweisungen empfangen.",
- 'TRANSFER_POINTS_MAXIMUM' => "Maximaler Betrag",
- 'TRANSFER_POINTS_AMOUNT' => "Zu überweisende {?POINTS?}",
- 'TRANSFER_NO_CODE' => "Nicht erforderlich.",
+ 'ADMIN_TRANSFER_FROM_USERID' => "Sender",
+ 'ADMIN_TRANSFER_TO_USERID' => "Empfänger",
+ 'ADMIN_DELETE_TRANSFERS_SUBMIT' => "Überweisungen löschen",
+
+ // Admin/member shared messages
'TRANSFER_POINTS_REASON' => "Verwendungszweck",
- 'TRANSFER_POINTS_SECURITY_CODE' => "Touring-Code eingeben",
- 'TRANSFER_ENTER_PASSWORD' => "Ihr Passwort eingeben",
- 'TRANSFER_ADD_NEW' => "Transfer abschliessen",
- 'TRANSFER_INVALID_CODE' => "Ungütigen Touring-Code eingegeben.",
- 'TRANSFER_INVALID_PASSWORD' => "Eingegebenes und gespeichertes Passwort stimmen nicht überein.",
- 'TRANSFER_INVALID_POINTS' => "Kann nicht mehr überweisen, als dass Sie an Guthaben haben.",
- 'TRANSFER_INVALID_REASON' => "Bitte einen Verwendungszweck eingeben.",
- 'TRANSFER_INVALID_RECIPIENT' => "Bitte wählen Sie einen Empfänger aus.",
- 'TRANSFER_INVALID_DATA' => "Konnte Absender- und Empfängerdaten nicht verifizieren.",
- 'TRANSFER_ADMIN_SUBJECT' => "{?POINTS?}-Transfer abgeschlossen",
- 'TRANSFER_MEMBER_RECIPIENT_SUBJECT' => "{?POINTS?}-Überweisung durch Mitglied",
- 'TRANSFER_MEMBER_SENDER_SUBJECT' => "{?POINTS?}-Überweisung an Mitglied",
- 'TRANSFER_ADMIN_AUTOPURGE' => "Auto-Löschung von Transfer-Einträgen",
- 'TRANSFER_COMPLETED' => "Überweisung vollständig.",
- 'TRANSFER_CONTINUE_OVERVIEW' => "Weiter zur Übersichtsseite...",
- 'TRANSFER_LATEST_IS' => "Einstellung gesperrt, letzte Überweisung war am <span class=\"data\">%s</span>",
'TRANSFER_LIST_ALL' => "Gesamte Überweisungsliste anzeigen",
- 'TRANSFER_NO_INCOMING_TRANSFERS' => "Keine eingehenden Überweisungen gefunden.",
- 'TRANSFER_NO_OUTGOING_TRANSFERS' => "Keine ausgehenden Überweisungen gefunden.",
'TRANSFER_NO_INOUT_TRANSFERS' => "Keine Überweisungen gefunden.",
- 'TRANSFER_TOTAL_INCOMING' => "Gesamteingänge",
- 'TRANSFER_TOTAL_OUTGOING' => "Gesamtausgänge",
'TRANSFER_TOTAL_BALANCE' => "Saldo",
'TRANSFER_ID' => "Trans-Id",
'TRANSFER_STAMP' => "Buchungstag",
- 'TRANSFER_PARTY' => "Empf./Sender",
- 'TRANSFER_FROM_USERID' => "Sender",
- 'TRANSFER_TO_USERID' => "Empfänger",
- 'TRANSFER_TOTAL_SUM' => "Gesamt transferierte {?POINTS?}",
- 'TRANSFER_DELETE' => "Einträge löschen",
+
+ // Member languages
+ 'MEMBER_LIST_INCOMING_TRANSFER_TITLE' => "Eingehende Überweisungen",
+ 'MEMBER_LIST_OUTGOING_TRANSFER_TITLE' => "Ausgehende Überweisungen",
+ 'MEMBER_ALLOW_TRANSFER_OPT_IN' => "Wollen Sie {?POINTS?}-Überweisungen von anderen Mitgliedern erhalten?",
+ 'MEMBER_START_NEW_TRANSFER' => "Neue {?POINTS?}-Überweisung starten",
+ 'MEMBER_PLEASE_ALLOW_TRANSFER_RECEIVE' => "Bitte erst Empfangen von Überweisungen erlauben.",
+ 'MEMBER_TRANSFER_NOW_LINK' => "Überweisung zum anderen Mitglied tätigen",
+ 'MEMBER_TRANSFER_NOW_LINK_TITLE' => "Starten Sie hier eine Überweisung von {?POINTS?} an ein anderes Mitglied.",
+ 'MEMBER_SELECT_TRANSFER_TARGET_USERID' => "Empfänger auswählen",
+ 'MEMBER_TRANSFER_NO_ONE_ELSE_OPT_IN' => "Niemand weiteres möchte Überweisungen empfangen.",
+ 'MEMBER_TRANSFER_POINTS_MAXIMUM' => "Maximaler Betrag",
+ 'MEMBER_TRANSFER_POINTS_AMOUNT' => "Zu überweisende {?POINTS?}",
+ 'MEMBER_TRANSFER_NO_CODE' => "Nicht erforderlich.",
+ 'MEMBER_ENTER_TRANSFER_POINTS_REASON' => "Verwendungszweck eingeben",
+ 'MEMBER_TRANSFER_POINTS_SECURITY_CODE' => "Touring-Code eingeben",
+ 'MEMBER_ENTER_TRANSFER_PASSWORD' => "Ihr Passwort eingeben",
+ 'MEMBER_TRANSFER_ADD_NEW_SUBMIT' => "Transfer abschliessen",
+ 'MEMBER_TRANSFER_INVALID_CODE' => "Ungültigen Touring-Code eingegeben.",
+ 'MEMBER_TRANSFER_INVALID_PASSWORD' => "Eingegebenes und gespeichertes Passwort stimmen nicht überein.",
+ 'MEMBER_TRANSFER_INVALID_POINTS' => "Kann nicht mehr überweisen, als dass Sie an Guthaben haben.",
+ 'MEMBER_TRANSFER_INVALID_REASON' => "Bitte einen Verwendungszweck eingeben.",
+ 'MEMBER_TRANSFER_INVALID_RECIPIENT' => "Bitte wählen Sie einen Empfänger aus.",
+ 'MEMBER_TRANSFER_INVALID_DATA' => "Konnte Absender- und Empfängerdaten nicht verifizieren.",
+ 'MEMBER_TRANSFER_COMPLETED' => "Überweisung vollständig.",
+ 'MEMBER_TRANSFER_CONTINUE_OVERVIEW' => "Weiter zur Übersichtsseite...",
+ 'MEMBER_TRANSFER_LATEST_IS' => "Einstellung gesperrt, letzte Überweisung war am <span class=\"data\">%s</span>",
+ 'MEMBER_TRANSFER_NO_INCOMING_TRANSFERS' => "Keine eingehenden Überweisungen gefunden.",
+ 'MEMBER_TRANSFER_NO_OUTGOING_TRANSFERS' => "Keine ausgehenden Überweisungen gefunden.",
+ 'MEMBER_TRANSFER_TOTAL_INCOMING' => "Gesamteingänge",
+ 'MEMBER_TRANSFER_TOTAL_OUTGOING' => "Gesamtausgänge",
+ 'MEMBER_TRANSFER_PARTY' => "Empf./Sender",
+
+ // Subject lines
+ 'ADMIN_TRANSFER_SUBJECT' => "{?POINTS?}-Transfer abgeschlossen",
+ 'ADMIN_TRANSFER_AUTOPURGE_SUBJECT' => "Auto-Löschung von Transfer-Einträgen",
+ 'MEMBER_TRANSFER__RECIPIENT_SUBJECT' => "{?POINTS?}-Überweisung durch Mitglied",
+ 'MEMBER_TRANSFER__SENDER_SUBJECT' => "{?POINTS?}-Überweisung an Mitglied",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_TRANSFER' => "Überweisung durch Mitglied",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addMessages(array(
'ADMIN_USER_PAGENAV' => "Seiten",
'ADMIN_CONFIG_USER_TITLE' => "Konfiguration - Mitgliederliste",
- 'ADMIN_CONFIG_USER_LIMIT' => "Anzahl Mitglieder pro Seite",
- 'ADMIN_CONFIG_USER_ALPHA' => "Azanhl Buchstaben pro Zeile",
+ 'ADMIN_CONFIG_USER_LIMIT' => "Anzahl Mitglieder pro Seite:",
+ 'ADMIN_CONFIG_USER_ALPHA' => "Azanhl Buchstaben pro Zeile:",
'ADMIN_USER_ACCOUNT_SAVED' => "Mitgliedsaccount gespeichert.",
'ADMIN_USER_ACCOUNT_NOT_SAVED' => "Mitgliedsaccount <u>nicht</u> gespeichert.",
'ADMIN_USER_ACCOUNT_LOCKED' => "Mitgliedsaccount <span class=\"data\">%s</span> wurde gesperrt.",
'ADMIN_USER_ACTION_LINK_SUB_POINTS_TITLE' => "Dem Mitglied {?POINTS?} abziehen",
'ADMIN_USER_ACTION_LINK_CONFIRM_ACCOUNT_TITLE' => "Das Mitgliederaccount bestätigen",
'ADMIN_USER_ACTION_LINK_CONFIRM_ACCOUNT' => "Bestätigen",
+
+ // Legends
+ 'ADMIN_CONFIG_USER_LEGEND' => "Konfiguration zur Mitgliederliste",
+ 'ADMIN_CONFIG_TESTER_USER_LEGEND' => "Konfiguration zu Testbenutzerdaten",
+ 'ADMIN_ADD_TESTER_USER_LEGEND' => "Grunddaten eingeben/Referral auswählen",
+ 'ADMIN_ADD_TESTER_USER_CATEGORIES_LEGEND' => "Interessensgebiete",
+ 'ADMIN_ADD_TESTER_USER_MAX_RECEIVE_LEGEND' => "Maximalen Mailempfang pro Tag",
+ 'ADMIN_ADD_TESTER_USER_PASSWORDS_LEGEND' => "Passwort und -wiederholung",
+
+ // Tester user accounts:
+ // - Configuration
+ 'ADMIN_CONFIG_TESTER_USER_MAXIMUM' => "Grösster Suffix für Testbenutzer:",
+ 'ADMIN_CONFIG_TESTER_USER_GENDER' => "Anrede:",
+ 'ADMIN_CONFIG_TESTER_USER_SURNAME_PREFIX' => "Präfix für Testbenutzer:",
+ 'ADMIN_CONFIG_TESTER_USER_FAMILY' => "Nachname:",
+ 'ADMIN_CONFIG_TESTER_USER_STREET_NR' => "Straße + Hausnummer:",
+ 'ADMIN_CONFIG_TESTER_USER_ZIP' => "Postleitzahl:",
+ 'ADMIN_CONFIG_TESTER_USER_CITY' => "Wohnort:",
+ 'ADMIN_CONFIG_TESTER_USER_EMAIL' => "Email-Adresse:",
+ 'ADMIN_CONFIG_TESTER_USER_PASSWORD' => "Passwort:",
+ 'ADMIN_CONFIG_TESTER_USER_DEFAULT_REFID' => "Testbenutzer immer standardmäßig verwenden:",
+ 'ADMIN_CONFIG_TESTER_USER_CHECK_CAT' => "Sollen alle Kategorien vorausgewählt sein?",
+ 'ADMIN_CONFIG_TESTER_USER_CHECK_CAT_NOTICE' => "(Nein=Alle abgewählt)",
+
+ // - Adding new tester account
+ 'ADMIN_ADD_TESTER_USER_NOTICE' => "Es sind bereits <span class=\"data\">{%pipe,getTotalTesterUsers,translateComma%}</span> von maximal <span class=\"data\">{%config,translateComma=tester_user_maximum%}</span> Testbenutzern angelegt.",
+ 'ADMIN_ADD_TESTER_USER_TITLE' => "Neuen Testbenutzer anlegen",
+ 'ADMIN_ADD_TESTER_USER_SUBMIT' => "Testbenutzer anlegen",
+ 'ADMIN_ADD_TESTER_USER_GENDER' => "Anrede auswählen:",
+ 'ADMIN_ADD_TESTER_USER_SURNAME' => "Vorname (<strong>NICHT SPÄTER ÄNDERN!</strong>):",
+ 'ADMIN_ADD_TESTER_USER_FAMILY' => "Nachname eingeben:",
+ 'ADMIN_ADD_TESTER_USER_STREET_NR' => "Straße + Hausnummer eingeben:",
+ 'ADMIN_ADD_TESTER_USER_ZIP' => "Postleitzahl eingeben:",
+ 'ADMIN_ADD_TESTER_USER_CITY' => "Wohnort eingeben:",
+ 'ADMIN_ADD_TESTER_USER_EMAIL' => "Email-Adresse eingeben:",
+ 'ADMIN_ADD_TESTER_USER_PASSWORD1' => "Passwort eingeben:",
+ 'ADMIN_ADD_TESTER_USER_PASSWORD2' => "Passwort wiederholen:",
+ 'ADMIN_ADD_TESTER_USER_DEFAULT_REFID' => "Referral-Account auswählen:",
+ 'ADMIN_ADD_TESTER_USER_BIRTHDAY' => "Geburtstag:",
+ 'ADMIN_ADD_TESTER_USER_COUNTRY' => "Land auswählen:",
+
+ // Success/error messages
+ 'ADMIN_TESTER_USER_ACCOUNT_CREATION_DONE' => "Es wurde ein Testbenutzeraccount angelegt und sofort freigeschaltet.",
+ 'ADMIN_MAXIMUM_USER_TESTER_REACHED' => "Sie haben die maximale Anzahl an Testbenutzer angelegt. Entweder sollten Sie wieder welche löschen oder die maximale Anzahl erhöhen (hartkodiertes Maximum ist jedoch 100.000 (99.999+0=100.000).",
+ 'ADMIN_TESTER_USER_ACCOUNT_CREATION_FAILED' => "Das Anlegen eines Testbenuters ist fehlgeschlagen.",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'MEMBER_WERNIS_MODE_WITHDRAW' => "Wernis einzahlen",
'MEMBER_WERNIS_MODE_PAYOUT' => "Wernis auszahlen",
'MEMBER_WERNIS_LIST_WERNIS' => "Überweisungsliste von/an WDS66-Hauptaccount",
+
+ // Points accounts - subject
+ 'POINTS_SUBJECT_WERNIS_WITHDRAW' => "Einzahlung vom WDS66-Account",
));
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$email = '{%url=modules.php?module=' . $mod . '&what=admins_contct&id=' . bigintval($email) . '%}';
} else {
// This is strange and needs fixing
- debug_report_bug(__FUNCTION__, __LINE__, 'email[' . gettype($email) . ']=' . $email . ',mod=' . $mod . ' - This should not happen.');
+ reportBug(__FUNCTION__, __LINE__, 'email[' . gettype($email) . ']=' . $email . ',mod=' . $mod . ' - This should not happen.');
}
// Return rewritten (?) email address
$OUT = '<select name="access_mode[' . $adminId . ']" size="1" class="form_select">';
// Add option list
- $OUT .= generateOptionList('/ARRAY/', array('allow', 'deny'), array('{--ADMIN_ADMINS_ACCESS_MODE_ALLOW--}', '{--ADMIN_ADMINS_ACCESS_MODE_DENY--}'), getAdminDefaultAcl($adminId));
+ $OUT .= generateOptions(
+ '/ARRAY/',
+ array(
+ 'allow',
+ 'deny'
+ ), array(
+ '{--ADMIN_ADMINS_ACCESS_MODE_ALLOW--}',
+ '{--ADMIN_ADMINS_ACCESS_MODE_DENY--}'
+ ),
+ getAdminDefaultAcl($adminId)
+ );
// Finish it
$OUT .= '</select>';
$OUT = '<select name="la_mode[{%pipe,convertNullToZero=' . convertZeroToNull($adminId) . '%}]" size="1" class="form_select">';
// Add option list
- $OUT .= generateOptionList('/ARRAY/', array('global', 'OLD', 'NEW'), array('{--ADMIN_ADMINS_LA_MODE_GLOBAL--}', '{--ADMIN_ADMINS_LA_MODE_OLD--}', '{--ADMIN_ADMINS_LA_MODE_NEW--}'), getAdminMenuMode($adminId));
+ $OUT .= generateOptions(
+ '/ARRAY/',
+ array(
+ 'global',
+ 'OLD',
+ 'NEW'
+ ), array(
+ '{--ADMIN_ADMINS_LA_MODE_GLOBAL--}',
+ '{--ADMIN_ADMINS_LA_MODE_OLD--}',
+ '{--ADMIN_ADMINS_LA_MODE_NEW--}'
+ ),
+ getAdminMenuMode($adminId)
+ );
// Finish it
$OUT .= '</select>';
// Sends out mail to all administrators
// IMPORTANT: Please use sendAdminNotification() instead of calling this function directly
-function sendAdminsEmails ($subj, $template, $content, $userid) {
+function sendAdminsEmails ($subject, $template, $content, $userid) {
// Trim template name
$template = trim($template);
// Create new entry (to all admins)
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_admins_mails` (`admin_id`,`mail_template`) VALUES (0, '%s')",
array($template), __FUNCTION__, __LINE__);
+
+ // Select all email adresses (default)
+ $result = SQL_QUERY('SELECT `email` FROM `{?_MYSQL_PREFIX?}_admins` ORDER BY `id` ASC',
+ __FUNCTION__, __LINE__);
} else {
// Load admin ids...
// @TODO This can be, somehow, rewritten
$adminIds = array();
while ($content = SQL_FETCHARRAY($result)) {
- $adminIds[] = $content['admin_id'];
+ array_push($adminIds, $content['admin_id']);
} // END - while
// Free memory
// "implode" ids and query string
$adminId = implode(',', $adminIds);
+
+ // To which admin shall we sent it?
if ($adminId == '-1') {
+ // Is an "event"
if (isExtensionActive('events')) {
// Add line to user events
- EVENTS_ADD_LINE($subj, $message, $userid);
+ EVENTS_ADD_LINE($subject, $message, $userid);
} else {
// Log error for debug
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension 'events' missing: tpl=%s,subj=%s,userid=%s",
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Extension 'ext-events' missing: template=%s,subj=%s,userid=%s",
$template,
- $subj,
+ $subject,
$userid
));
}
}
}
+ // Default is no special mail header
+ $mailHeader = '';
+
+ // Is the template a bug report?
+ if ($template == 'admin_report_bug') {
+ // Then set 'Reply-To:' again
+ $mailHeader = 'Reply-To: webmaster@mxchange.org' . chr(10);
+ } // END - if
+
// Load email addresses and send away
while ($content = SQL_FETCHARRAY($result)) {
- sendEmail($content['email'], $subj, $message);
+ sendEmail($content['email'], $subject, $message, 'N', $mailHeader);
} // END - while
// Free memory
function getAdminLoginFailures ($adminId) {
// Admin login should not be empty
if (empty($adminId)) {
- debug_report_bug(__FUNCTION__, __LINE__, 'adminId is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'adminId is empty.');
} // END - if
// By default no admin is found
function getAdminLastFailure ($adminId) {
// Admin login should not be empty
if (empty($adminId)) {
- debug_report_bug(__FUNCTION__, __LINE__, 'adminId is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'adminId is empty.');
} // END - if
// By default no admin is found
// Wrapper functions
//-----------------------------------------------------------------------------
-// Wrapper function to check wether expert setting warning is enabled
+// Wrapper function to check whether expert setting warning is enabled
function isAdminsExpertWarningEnabled () {
return (getAminsExpertWarning() == 'Y');
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Is the userid valid?
if (!isValidUserId($userid)) {
// Please report all these bugs
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid call. userid=' . $userid . ',points=' . $points);
+ reportBug(__FUNCTION__, __LINE__, 'Invalid call. userid=' . $userid . ',points=' . $points);
} // END - if
// Add points over the ref system directly now
sendEmail($userid, '{--MEMBER_AUTOPURGE_SUBJECT--}', $message);
}
-// Checks wether auto-purging is enabled
+// Checks whether auto-purging is enabled
function isAutoPurgingActive () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether purging of inactive accounts is enabled
+// Checks whether purging of inactive accounts is enabled
function isAutopurgeInactiveEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return $GLOBALS[__FUNCTION__];
}
-// Checks wether beg_new_member_notify is enabled
+// Checks whether beg_new_member_notify is enabled
function isBegNewMemberNotifyEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether beg_include_own is "Y"
+// Checks whether beg_include_own is "Y"
function isBegIncludeOwnEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether beg_active is "Y"
+// Checks whether beg_active is "Y"
function isBegActiveEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether beg_rallye is "Y"
+// Checks whether beg_rallye is "Y"
function isBegRallyeEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether beg_rallye_enable_notify is "Y"
+// Checks whether beg_rallye_enable_notify is "Y"
function isBegRallyeEnableNotifyEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether beg_rallye_disable_notify is "Y"
+// Checks whether beg_rallye_disable_notify is "Y"
function isBegRallyeDisableNotifyEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 06/11/2012 *
+ * =================== Last change: 06/11/2012 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : birthday_functions.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Functions for ext-birthday *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Funktionen fuer ext-birthday *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+// ----------------------------------------------------------------------------
+// Wrapper functions
+// ----------------------------------------------------------------------------
+
+// Getter for birthday_points
+function getBirthdayPoints () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('birthday_points');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
break;
default: // This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid bonus-mode ' . getBonusMode() . ' detected.');
+ reportBug(__FUNCTION__, __LINE__, 'Invalid bonus-mode ' . getBonusMode() . ' detected.');
break;
} // END - switch
// Wrapper Functions
//-----------------------------------------------------------------------------
-// Determines wether the "bonus rallye" is active
+// Determines whether the "bonus rallye" is active
function isBonusRallyeActive () {
// Do we have cache?
if (!isset($GLOBALS['bonus_rallye_active'])) {
return $GLOBALS['bonus_rallye_active'];
}
-// Determines wether the "bonus new_member_notify" is active
+// Determines whether the "bonus new_member_notify" is active
function isBonusNewMemberNotifyEnabled () {
// Do we have cache?
if (!isset($GLOBALS['bonus_new_member_notify_active'])) {
return $GLOBALS[__FUNCTION__];
}
+// Getter for login_timeout
+function getLoginTimeout () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('login_timeout');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for bonus_ref
+function getBonusRef () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('bonus_ref');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return $ret;
}
+// Adds a country code selection box
+function addCountryCodeSelectionBox ($countryCode = NULL) {
+ // The admin may see all
+ $whereStatement = "WHERE `is_active`='Y'";
+
+ // Is admin?
+ if (isAdmin()) {
+ // Then display all codes
+ $whereStatement = '';
+ } // END - if
+
+ // Generate the HTML code
+ $OUT = '<select name="country_code" class="form_select" size="1">';
+ $OUT .= generateOptions('countries', 'id', 'descr', $countryCode, 'code', $whereStatement);
+ $OUT .= '</select>';
+
+ // Return it
+ return $OUT;
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
getMemberId()
), __FUNCTION__, __LINE__);
- // Determine wether something has changed
+ // Determine whether something has changed
$status = (!SQL_HASZEROAFFECTED());
// Has the record changed?
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
die();
} // END - if
-// Template helper function to create selection box for all forced-ad types
-function doTemplateForcedAdTypeSelectionBox ($templateName, $clear = false, $default = NULL) {
- // Add all types through the filter
- $forcedAdTypes = runFilterChain('add_forced_ads_types', array());
+// Translate forced ad type
+function translateForcedAdsType ($status) {
+ // Is the status null or empty?
+ if (is_null($status)) {
+ // Is NULL
+ $status = 'NULL';
+ } elseif (empty($status)) {
+ // Is empty (string)
+ $status = 'EMPTY';
+ } // END - if
- // Handle it over to generateSelectionBoxFromArray()
- $content = generateSelectionBoxFromArray($forcedAdTypes, 'forced_ads_type', 'type');
+ // Default status is unknown
+ $return = '{%message,ADMIN_FORCED_ADS_TYPE_UNKNOWN=' . $status . '%}';
- // Return prepared content
- return $content;
+ // Construct message id
+ $messageId = 'ADMIN_FORCED_ADS_TYPE_' . $status;
+
+ // Is it there?
+ if (isMessageIdValid($messageId)) {
+ // Then use it as message string
+ $return = '{--' . $messageId . '--}';
+ } // END - if
+
+ // Return the status
+ return $return;
}
-// Translate the status IN/OUT
-function translateForcedAdsType ($status) {
+// Translate forced campaign status
+function translateForcedCampaignStatus ($status) {
// Is the status null or empty?
if (is_null($status)) {
// Is NULL
} // END - if
// Default status is unknown
- $return = '{%message,ADMIN_FORCED_ADS_TYPE_UNKNOWN=' . $status . '%}';
+ $return = '{%message,ADMIN_FORCED_CAMPAIGN_TYPE_UNKNOWN=' . $status . '%}';
// Construct message id
- $messageId = 'ADMIN_FORCED_ADS_TYPE_' . $status;
+ $messageId = 'ADMIN_FORCED_CAMPAIGN_TYPE_' . $status;
// Is it there?
if (isMessageIdValid($messageId)) {
return $return;
}
-// "Getter" for an array of data from all Forced-PopUps
+// Translate visibility
+function translateForcedCostsVisibility ($visibility) {
+ // Is the status null or empty?
+ if (is_null($visibility)) {
+ // Is NULL
+ $visibility = 'NULL';
+ } elseif (empty($visibility)) {
+ // Is empty (string)
+ $visibility = 'EMPTY';
+ } // END - if
+
+ // Default status is unknown
+ $return = '{%message,ADMIN_FORCED_ADS_VISIBILITY_UNKNOWN=' . $visibility . '%}';
+
+ // Construct message id
+ $messageId = 'ADMIN_FORCED_ADS_VISIBILITY_' . $visibility;
+
+ // Is it there?
+ if (isMessageIdValid($messageId)) {
+ // Then use it as message string
+ $return = '{--' . $messageId . '--}';
+ } // END - if
+
+ // Return the status
+ return $return;
+}
+
+// "Getter" for an array of data from all Forced-PopUps except user's
function getForcedPopupDataByEarningArray ($content) {
- debug_report_bug(__FUNCTION__, __LINE__, 'content=' . print_r($content, true));
+ die('content=<pre>' . print_r($content, true) . '</pre>' . debug_get_printable_backtrace());
+
+ // Finally return the content
+ return $content;
}
-// Generator (somewhat getter) for network type options
+// Generator (somewhat getter) for forced-ads type options
function generateForcedAdsTypeOptions ($type = NULL) {
// Is this cached?
if (!isset($GLOBALS[__FUNCTION__][$type])) {
// Generate output and cache it
- $GLOBALS[__FUNCTION__][$type] = generateOptionList(
+ $GLOBALS[__FUNCTION__][$type] = generateOptions(
'/ARRAY/',
array(
'BANNER',
return $GLOBALS[__FUNCTION__][$type];
}
+// Generator (somewhat getter) for forcec-costs visibility options
+function generateForcedCostsVisibilityOptions ($visibility = NULL) {
+ // Is this cached?
+ if (!isset($GLOBALS[__FUNCTION__][$visibility])) {
+ // Generate output and cache it
+ $GLOBALS[__FUNCTION__][$visibility] = generateOptions(
+ '/ARRAY/',
+ array(
+ 'ALL',
+ 'MEMBER',
+ 'SPONSOR',
+ 'NONE'
+ ),
+ array(),
+ $visibility,
+ '', '',
+ array(),
+ 'translateForcedCostsVisibility'
+ );
+ } // END - if
+
+ // Return content
+ return $GLOBALS[__FUNCTION__][$visibility];
+}
+
+// "Getter" for an array of all given forced ads
+function getArrayFromForcedAdsByType ($forcedType = NULL) {
+ // Init array
+ $forcedAds = array();
+
+ // Init WHERE (default)
+ $where = '';
+
+ // Is forced type not NULL?
+ if (!is_null($forcedType)) {
+ // Then set proper WHERE
+ $where = sprintf("WHERE `forced_ads_type`='%s'", SQL_ESCAPE($forcedType));
+ } // END - if
+
+ // Search all given types
+ $result = SQL_QUERY('SELECT
+ `forced_ads_id`,
+ `forced_ads_ad_url`,
+ `forced_ads_click_url`,
+ `forced_ads_width`,
+ `forced_ads_height`,
+ `forced_ads_alt_text`,
+ `forced_ads_framebreaker`,
+ `forced_ads_type`,
+ `forced_ads_views_counter`,
+ `forced_ads_clicks_counter`,
+ UNIX_TIMESTAMP(`forced_ads_added`) AS `forced_ads_added`,
+ `forced_ads_userid`
+FROM
+ `{?_MYSQL_PREFIX?}_forced_ads`
+' . $where . '
+ORDER BY
+ `forced_ads_id` ASC', __FUNCTION__, __LINE__);
+
+ // Do we have at least one entry?
+ if (!SQL_HASZERONUMS($result)) {
+ // Get all elements
+ while ($content = SQL_FETCHARRAY($result)) {
+ // Add it
+ $forcedAds[$content['forced_ads_id']] = $content;
+ } // END - while
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return it
+ return $forcedAds;
+}
+
+// "Getter" for an array of all forced costs from given visibility or all
+function getArrayFromForcedCostsByVisibility ($visibility = NULL) {
+ // Init array
+ $forcedCosts = array();
+ $where = '';
+
+ // Is visibility not NULL?
+ if (!is_null($visibility)) {
+ // Then add WHERE statement
+ $where = sprintf(" WHERE `forced_costs_visibility`='%s'", SQL_ESCAPE($visibility));
+ } // END - if
+
+ // Search all given types
+ $result = SQL_QUERY("SELECT
+ `forced_costs_id`,
+ `forced_costs_price_click`,
+ `forced_costs_payment_click`,
+ `forced_costs_visibility`
+FROM
+ `{?_MYSQL_PREFIX?}_forced_costs`
+".$where."
+ORDER BY
+ `forced_costs_id` ASC", __FUNCTION__, __LINE__);
+
+ // Do we have at least one entry?
+ if (!SQL_HASZERONUMS($result)) {
+ // Get all elements
+ while ($content = SQL_FETCHARRAY($result)) {
+ // Add it
+ $forcedCosts[$content['forced_costs_id']] = $content;
+ } // END - while
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return it
+ return $forcedCosts;
+}
+
+// "Getter" for an array of all forced campaigns from given array and status
+function getArrayFromForcedCampaignsByArray ($ids, $status) {
+ // Init array
+ $forcedCampaigns = array();
+
+ // Search all given types
+ $result = SQL_QUERY_ESC("SELECT
+ `forced_campaign_id`,
+ UNIX_TIMESTAMP(`forced_campaign_created`) AS `forced_campaign_created`,
+ `forced_campaign_status`,
+ UNIX_TIMESTAMP(`forced_campaign_last_locked`) AS `forced_campaign_last_locked`,
+ `forced_campaign_lock_reason`,
+ `forced_campaign_expired`,
+ `forced_campaign_ordered_clicks`,
+ `forced_campaign_payment_api`,
+ `forced_campaign_reload_lock`,
+ `forced_campaign_minimum_stay`,
+ `forced_ads_id`,
+ `forced_campaign_userid`,
+ `forced_costs_id`
+FROM
+ `{?_MYSQL_PREFIX?}_forced_campaigns`
+WHERE
+ `forced_campaign_id` IN (%s) AND
+ `forced_campaign_status`='%s'
+ORDER BY
+ `forced_campaign_id` ASC",
+ array(
+ implode(', ', $ids),
+ $status
+ ), __FUNCTION__, __LINE__);
+
+ // Do we have at least one entry?
+ if (!SQL_HASZERONUMS($result)) {
+ // Get all elements
+ while ($content = SQL_FETCHARRAY($result)) {
+ // Add it
+ $forcedCampaigns[$content['forced_campaign_id']] = $content;
+ } // END - while
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return it
+ return $forcedCampaigns;
+}
+
+// "Activates" forced campaigns from POST data
+function doForcedAdminActivateCampaigns () {
+ // Do some sanity checks
+ if (!isAdmin()) {
+ // Not allowed to call
+ return false;
+ } elseif (countPostSelection('forced_campaign_id') == 0) {
+ // No selections made
+ return false;
+ }
+
+ // Get an array from all pending campaigns
+ $forcedCampaigns = getArrayFromForcedCampaignsByArray(array_keys(postRequestElement('forced_campaign_id')), 'PENDING');
+
+ // By default all worked (at this point)
+ $activated = true;
+
+ // Run through all entries
+ foreach ($forcedCampaigns as $campaignId => $campaignData) {
+ // Change the status of this campaign
+ if (!changeForcedCampaignStatus($campaignId, 'PENDING', 'ACTIVE', $campaignData)) {
+ // One didn't work, but continue with others
+ $activated = false;
+ } // END - if
+ } // END - foreach
+
+ // Return status
+ return $activated;
+}
+
+// Changes the status of a forced campaign from previous to new status
+function changeForcedCampaignStatus ($campaignId, $prevStatus, $newStatus, $data) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'campaignId=' . $campaignId . ',prevStatus=' . $prevStatus . ',data[]=' . gettype($data) . ',newStatus=' . $newStatus . ' - ENTERED!');
+ // Make new status always lower-case
+ $newStatus = strtolower($newStatus);
+
+ // Prepare array
+ $filterData = array(
+ 'campaign_id' => $campaignId,
+ 'prev_status' => $prevStatus,
+ 'new_status' => $newStatus,
+ 'data' => $data,
+ 'abort' => NULL
+ );
+
+ // Run pre filter chain
+ $filterData = runFilterChain('pre_change_forced_campaign_status', $filterData);
+
+ // Abort here?
+ if (!is_null($filterData['abort'])) {
+ // Abort here
+ return $filterData['abort'];
+ } // END - if
+
+ // Update the status now
+ // ---------- Comment out for debugging/developing member actions! ---------
+ SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_forced_campaigns` SET `forced_campaign_status`='%s' WHERE `forced_campaign_id`=%s LIMIT 1",
+ array(
+ $newStatus,
+ bigintval($campaignId)
+ ), __FUNCTION__, __LINE__);
+ // ---------- Comment out for debugging/developing member actions! ---------
+
+ // Was that fine?
+ // ---------- Comment out for debugging/developing member actions! ---------
+ if (SQL_AFFECTEDROWS() != 1) {
+ // No, something went wrong
+ return false;
+ } // END - if
+ // ---------- Comment out for debugging/developing member actions! ---------
+
+ // Run post filter chain
+ $filterData = runFilterChain('post_change_forced_campaign_status', $filterData);
+
+ // Check if generic 'data' is there
+ assert(isset($filterData['data']));
+
+ // All done!
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'campaignId=' . $campaignId . ',prevStatus=' . $prevStatus . ',newStatus=' . $newStatus . ' - EXIT!');
+ return true;
+}
+
+// Notify admin(s) with a selected message and content
+function doForcedNotifyAdmin ($messageType, $content) {
+ // Prepare template name
+ $templateName = sprintf("admin_forced_%s", $messageType);
+
+ // Prepare subject
+ $subject = sprintf("{--ADMIN_FORCED_NOTIFY_%s_SUBJECT--}",
+ strtoupper($messageType)
+ );
+
+ // Is the subject line there?
+ if ((substr($subject, 0, 1) == '!') && (substr($subject, -1, 1) == '!')) {
+ // Set default subject if following eval() wents wrong
+ $subject = '{%message,ADMIN_FORCED_NOTIFY_DEFAULT_SUBJECT=' . strtoupper($messageType) . '%}';
+ } // END - if
+
+ // Translate some data if present
+ $content = prepareForcedContentForTemplate($content);
+
+ // Send the notification out
+ return sendAdminNotification($subject, $templateName, $content, $content['forced_campaign_userid']);
+}
+
+// Notify the user about the performed action
+function doForcedNotifyMember ($messageType, $content) {
+ // Skip notification if userid is NULL
+ if (is_null($content['forced_campaign_userid'])) {
+ // NULL is silently ignored
+ return true;
+ } // END - if
+
+ // Prepare template name
+ $templateName = sprintf("member_forced_%s", $messageType);
+
+ // Prepare subject
+ $subject = sprintf("{--MEMBER_FORCED_NOTIFY_%s_SUBJECT--}",
+ strtoupper($messageType)
+ );
+
+ // Is the subject line there?
+ if ((substr($subject, 0, 1) == '!') && (substr($subject, -1, 1) == '!')) {
+ // Set default subject if following eval() wents wrong
+ $subject = '{--MEMBER_FORCED_NOTIFY_DEFAULT_SUBJECT--}';
+ } // END - if
+
+ // Translate some data if present
+ $content = prepareForcedContentForTemplate($content);
+
+ // Load template
+ $mailText = loadEmailTemplate($templateName, $content, $content['forced_campaign_userid']);
+
+ // Send the email
+ return sendEmail($content['forced_campaign_userid'], $subject, $mailText);
+}
+
+// Translates some data for template usage
+// @TODO Can't we use our new expression language instead of this ugly code?
+function prepareForcedContentForTemplate ($content) {
+ // Prepare some code
+ if (isset($content['forced_campaign_created'])) $content['forced_campaign_created'] = generateDateTime($content['forced_campaign_created'], 2);
+
+ // Return translated content
+ return $content;
+}
+
+// ----------------------------------------------------------------------------
+// Template helper functions
+// ----------------------------------------------------------------------------
+
+// Template helper function to create selection box for all forced-ad types
+function doTemplateForcedAdTypeSelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Add all types through the filter
+ $forcedAdTypes = runFilterChain('add_forced_ads_types', array());
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($forcedAdTypes, 'forced_ads_type', 'type', '', '', '', $default);
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper function to create selection box for costs visibility
+function doTemplateForcedCostsVisiblitySelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Init array
+ $costsVisibility = array(
+ 0 => array('visibility' => 'ALL'),
+ 1 => array('visibility' => 'MEMBER'),
+ 2 => array('visibility' => 'SPONSOR'),
+ 3 => array('visibility' => 'NONE')
+ );
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($costsVisibility, 'forced_costs_visibility', 'visibility', '', '', '', $default);
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper function to create selection box for foreced ads
+function doTemplateForcedAdSelectionBox ($templateName, $clear, $default = NULL) {
+ // Get back an array of all forced popups
+ $forcedAds = getArrayFromForcedAdsByType();
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($forcedAds, 'forced_ads_id', 'forced_ads_id', '', '', '', $default, 'forced_ads_type');
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper function to create selection box for foreced costs
+function doTemplateForcedCostsSelectionBox ($templateName, $clear, $default = NULL) {
+ // Get back an array of all forced popups
+ $forcedCosts = getArrayFromForcedCostsByVisibility();
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($forcedCosts, 'forced_costs_id', 'forced_costs_id', '', '', '', $default, '', true);
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper function to create selection box for foreced campaign userid
+function doTemplateForcedCampaignUseridSelectionBox ($templateName, $clear, $default = NULL) {
+ // Generate the selection box without all
+ $content = addMemberSelectionBox($default, false, true, true, 'forced_campaign_userid');
+
+ // Return prepared content
+ return $content;
+}
+
+// ----------------------------------------------------------------------------
+// XML call-back functions
+// ----------------------------------------------------------------------------
+
+// For 'doing' add forced-ads, the column-index is required
+function addXmlSpecialAdminAddDoForcedAds () {
+ // So set it all here
+ $GLOBALS['__COLUMN_INDEX']['doXmlCallbackFunction'] = 'column';
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_values'] = array();
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_index'] = 'column';
+}
+
+// For 'doing' add forced-campaigns, the column-index is required
+function addXmlSpecialAdminAddDoForcedCampaigns () {
+ // So set it all here
+ $GLOBALS['__COLUMN_INDEX']['doXmlCallbackFunction'] = 'column';
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_index'] = 'column';
+}
+
+// For 'doing' add forced-costs, the column-index is required
+function addXmlSpecialAdminAddDoForcedCosts () {
+ // So set it all here
+ $GLOBALS['__COLUMN_INDEX']['doXmlCallbackFunction'] = 'column';
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['extra_values'] = array();
+ $GLOBALS['__XML_ARGUMENTS']['doXmlCallbackFunction']['column_index'] = 'column';
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
sendEmail($content['userid'], '{--MEMBER_HOLIDAY_UNLOCK_SUBJECT--}', $message);
// Remember userid for admin
- $admin .= $content['userid']."\n";
+ $admin .= $content['userid'].chr(10);
} // END - if
// Send mail to admins
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$OUT = '';
if (!is_array($GLOBALS['html_tags'])) return "";
foreach ($GLOBALS['html_tags'] as $tag) {
- $OUT .= ', ' . strtoupper($tag);
- }
+ $OUT .= ', ' . strtolower($tag);
+ } // END - foreach
$OUT = substr($OUT, 2);
return $OUT;
}
} // END - if
// And now go forward...
- $idx = '0';
+ $idx = 0;
while ($idx < strlen($test)) {
$check = substr($test, $idx, 1);
if ((!in_array($check, $GLOBALS['valid_email_chars'])) && ($check != '@')) {
} // END - if
// Now replace the email against anchor with mailto and pray...
- $PARTS[] = $check2 . '<a href="' . generateEmailLink($check, 'user_data') . '">' . $check . '</a>';
+ array_push($PARTS, $check2 . '<a href="' . generateEmailLink($check, 'user_data') . '">' . $check . '</a>');
// Remove email from testing string (see above why...)
$test = substr($test, strlen($check));
}
// Now put all parts together
- $text = ''; $PARTS[] = $test;
+ $text = '';
+ array_push($PARTS, $test);
foreach ($PARTS as $part) {
$text .= $part;
} // END - foreach
// Replace new-lines agains <br />-s and finally compile possible own HTML tags out...
- return preCompileCode(str_replace("\n", "<br />\n", $text));
+ return preCompileCode(str_replace(chr(10), "<br />\n", $text));
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
default:
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected in mailid_error_redirect.", getConfig('mailid_error_redirect')));
- redirectToUrl('modules.php?module=index&code=' . getCode('UNKNOWN_STATUS') . '&ext=mailid');
+ redirectToUrl('modules.php?module=index&code=' . getCode('UNKNOWN_REDIRECT') . '&ext=mailid');
break;
} // END - switch
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return $GLOBALS[__FUNCTION__];
}
-// Checks wether 'maintenance' is "YES"
+// Checks whether 'maintenance' is "YES"
function isMaintenanceEnabled () {
// Is the cache entry set
if (!isset($GLOBALS[__FUNCTION__])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// 'do' must be provided in URL
if (!isGetRequestElementSet('do')) {
// Not provided!
- debug_report_bug(__FUNCTION__, __LINE__, 'No "do" has been provided. Please fix your templates.');
+ reportBug(__FUNCTION__, __LINE__, 'No "do" has been provided. Please fix your templates.');
} // END - if
// Default is invalid
// Has the form being detected?
if ($GLOBALS['network_form_name'] == 'invalid') {
// Not supported
- debug_report_bug(__FUNCTION__, __LINE__, 'POST form could not be detected.');
+ reportBug(__FUNCTION__, __LINE__, 'POST form could not be detected.');
} // END - if
}
// Is the function valid?
if (!function_exists($functionName)) {
// Invalid function name
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid do ' . getRequestElement('do') . ', function ' . $functionName .' does not exist.', false);
+ reportBug(__FUNCTION__, __LINE__, 'Invalid do ' . getRequestElement('do') . ', function ' . $functionName .' does not exist.', false);
} // END - if
// Init global arrays
call_user_func($functionName);
}
-// Checks wether the (short) network name is already used (valid)
+// Checks whether the (short) network name is already used (valid)
function isNetworkNameValid ($name) {
// Query for it
$result = SQL_QUERY_ESC("SELECT `network_id` FROM `{?_MYSQL_PREFIX?}_network_data` WHERE `network_short_name`='%s' LIMIT 1",
return $isValid;
}
-// Checks wether the given network type is already used (valid)
+// Checks whether the given network type is already used (valid)
function isNetworkTypeHandleValid ($type, $networkId) {
// Query for it
$result = SQL_QUERY_ESC("SELECT `network_type_id` FROM `{?_MYSQL_PREFIX?}_network_types` WHERE `network_id`=%s AND `network_type_handler`='%s' LIMIT 1",
return $isValid;
}
-// Checks wether the given network request parameter is already used (valid)
+// Checks whether the given network request parameter is already used (valid)
function isNetworkRequestElementValid ($key, $type, $networkId) {
// Query for it
$result = SQL_QUERY_ESC("SELECT `network_request_param_id` FROM `{?_MYSQL_PREFIX?}_network_request_params` WHERE `network_id`=%s AND `network_type_id`=%s AND `network_request_param_key`='%s' LIMIT 1",
return $isValid;
}
-// Checks wether the given vcheck request parameter is already used (valid)
+// Checks whether the given vcheck request parameter is already used (valid)
function isNetworkVcheckElementValid ($key, $networkId) {
// Query for it
$result = SQL_QUERY_ESC("SELECT `network_vcheck_param_id` FROM `{?_MYSQL_PREFIX?}_network_vcheck_params` WHERE `network_id`=%s AND `network_vcheck_param_key`='%s' LIMIT 1",
return $isValid;
}
-// Checks wether the given network API array translation
+// Checks whether the given network API array translation
function isNetworkArrayTranslationValid ($key, $type, $networkId) {
// Query for it
$result = SQL_QUERY_ESC("SELECT `network_array_id` FROM `{?_MYSQL_PREFIX?}_network_array_translation` WHERE `network_id`=%s AND `network_type_id`=%s AND `network_array_index`='%s' LIMIT 1",
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network id ' . $networkId . ' is smaller than 1.');
} // END - if
// Set current network id
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network type id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network type id ' . $networkId . ' is smaller than 1.');
} // END - if
// Set current network id
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network type id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network type id ' . $networkId . ' is smaller than 1.');
} // END - if
// By default we have no data
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $networkId . ' is smaller than 1.');
} // END - if
// By default we have no data
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network id ' . $networkId . ' is smaller than 1.');
} // END - if
// Just call our inner method
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network type handler id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network type handler id ' . $networkId . ' is smaller than 1.');
} // END - if
// Just call our inner method
// Ids lower one are not accepted
if ($networkId < 1) {
// Not good, should be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $networkId . ' is smaller than 1.');
+ reportBug(__FUNCTION__, __LINE__, 'Network request parameter id ' . $networkId . ' is smaller than 1.');
} // END - if
// Just call our inner method
// Is this cached?
if (!isset($GLOBALS[__FUNCTION__][$networkId])) {
// Generate output and cache it
- $GLOBALS[__FUNCTION__][$networkId] = generateOptionList(
+ $GLOBALS[__FUNCTION__][$networkId] = generateOptions(
'network_types',
'network_type_id',
'network_type_handler',
// Is it cached?
if (!isset($GLOBALS[__FUNCTION__][$defaultType])) {
// Generate list
- $GLOBALS[__FUNCTION__][$defaultType] = generateOptionList(
+ $GLOBALS[__FUNCTION__][$defaultType] = generateOptions(
'/ARRAY/',
array(
'banner',
// Is it cached?
if (!isset($GLOBALS[__FUNCTION__])) {
// Generate and cache it
- $GLOBALS[__FUNCTION__] = generateOptionList(
+ $GLOBALS[__FUNCTION__] = generateOptions(
'/ARRAY/',
array(
'id',
// Is it cached?
if (!isset($GLOBALS[__FUNCTION__])) {
// Generate and cache it
- $GLOBALS[__FUNCTION__] = generateOptionList(
+ $GLOBALS[__FUNCTION__] = generateOptions(
'/ARRAY/',
array(
'network_key',
// Is it cached?
if (!isset($GLOBALS[__FUNCTION__][$default])) {
// Generate and cache it
- $GLOBALS[__FUNCTION__][$default] = generateOptionList(
+ $GLOBALS[__FUNCTION__][$default] = generateOptions(
'network_translations',
'network_translation_id',
'network_translation_name',
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$default])) {
// Generate the list
- $GLOBALS[__FUNCTION__][$default] = generateOptionList(
+ $GLOBALS[__FUNCTION__][$default] = generateOptions(
'/ARRAY/',
array(
'GET',
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$default])) {
// Generate the list
- $GLOBALS[__FUNCTION__][$default] = generateYesNoOptionList($default);
+ $GLOBALS[__FUNCTION__][$default] = generateYesNoOptions($default);
} // END - if
// Return cache
// Is the message id there?
if (!isMessageIdValid($messageId)) {
// Not valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'type=' . $type . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'type=' . $type . ' is invalid.');
} // END - if
// Return message id
// Is the message id there?
if (!isMessageIdValid($messageId)) {
// Not valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'type=' . $type . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'type=' . $type . ' is invalid.');
} // END - if
// Return message id
// Is the message id there?
if (!isMessageIdValid($messageId)) {
// Not valid type
- debug_report_bug(__FUNCTION__, __LINE__, 'type=' . $type . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'type=' . $type . ' is invalid.');
} // END - if
// Return message id
// Is the message id there?
if (!isMessageIdValid($messageId)) {
// Not valid param
- debug_report_bug(__FUNCTION__, __LINE__, 'param=' . $param . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'param=' . $param . ' is invalid.');
} // END - if
// Return message id
// Is the message id there?
if (!isMessageIdValid($messageId)) {
// Not valid param
- debug_report_bug(__FUNCTION__, __LINE__, 'param=' . $param . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'param=' . $param . ' is invalid.');
} // END - if
// Return message id
return $GLOBALS[__FUNCTION__][$networkId];
}
-// Checks wether the given network type handler is configured
+// Checks whether the given network type handler is configured
function isNetworkTypeHandlerConfigured ($networkId, $networkTypeId) {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$networkId][$networkTypeId])) {
// Handles the network-payment-check request
function handleNetworkPaymentCheckRequest () {
// @TODO Implement this function
- debug_report_bug(__FUNCTION__, __LINE__, 'Not yet implemented.');
+ reportBug(__FUNCTION__, __LINE__, 'Not yet implemented.');
}
//------------------------------------------------------------------------------
$OUT .= loadTemplate('admin_delete_network_types_row', true, $networkTypeData);
} else {
// Problem!
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
}
} // END - if
} // END - if
loadTemplate('admin_delete_network_types', false, $OUT);
} else {
// Problem!
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
}
// Don't display the list/add new form
$OUT .= loadTemplate('admin_delete_network_request_params_row', true, $networkRequestData);
} else {
// Problem!
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
}
} // END - if
} // END - if
loadTemplate('admin_delete_network_request_params', false, $OUT);
} else {
// Problem!
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot detect edit/del.');
}
// Don't display the list/add new form
// Do we have this enty?
if (!isset($entry[$networkId])) {
// Not found, needs fixing
- debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
+ reportBug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
} // END - if
// Add this entry
// Do we have this enty?
if (!isset($entry[$networkId])) {
// Not found, needs fixing
- debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
+ reportBug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
} // END - if
// Fix empty network_type_banner_url to NULL
// Do we have this enty?
if (!isset($entry[$networkId])) {
// Not found, needs fixing
- debug_report_bug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
+ reportBug(__FUNCTION__, __LINE__, 'No entry in key=' . $key . ', id=' . $networkId . ' found.');
} // END - if
// Fix empty network_request_param_default to NULL
} // END - if
} // END - foreach
- // Initialize variables
- $content = array();
- $id = 'network_max_reload_time_ye';
- $skip = false;
-
- // Get all POST data
- $postData = postRequestArray();
-
- // Convert "reload time selections"
- convertSelectionsToEpocheTime($postData, $content, $id, $skip);
-
- // Set the POST array back
- setPostRequestArray($postData);
+ // Convert data in POST array
+ convertSelectionsToEpocheTimeInPostData($content, 'network_max_reload_time_ye', $skip);
// Is there already an entry?
if (isNetworkTypeHandlerConfigured(getRequestElement('network_id'), getRequestElement('network_type_id'))) {
} // END - if
} // END - foreach
- // Initialize variables
- $content = array();
- $id = 'network_max_reload_time_ye';
- $skip = false;
- $postData = postRequestArray();
-
- // Convert "reload time selections"
- convertSelectionsToEpocheTime($postData, $content, $id, $skip);
-
- // Set the POST array back
- setPostRequestArray($postData);
+ // Convert time selections in POST data
+ convertSelectionsToEpocheTimeInPostArray('network_max_reload_time_ye');
// Is there already an entry?
if (!isNetworkTypeHandlerConfigured(getRequestElement('network_id'), getRequestElement('network_type_id'))) {
// Is the 'what' key valid?
if (!isset($validExports[getWhat()])) {
// Not valid
- debug_report_bug(__FUNCTION__, __LINE__, 'what=' . getWhat() . ' - not supported');
+ reportBug(__FUNCTION__, __LINE__, 'what=' . getWhat() . ' - not supported');
} // END - if
// Generate call-back, some tables require to export not all columns
// Is the call-back function there?
if (!function_exists($callbackName)) {
// No, this is really bad
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid call-back function ' . $callbackName . ' detected.');
+ reportBug(__FUNCTION__, __LINE__, 'Invalid call-back function ' . $callbackName . ' detected.');
} elseif (isset($GLOBALS[__FUNCTION__][$callbackName])) {
// Already called!
- debug_report_bug(__FUNCTION__, __LINE__, 'Double-call of export function ' . $callbackName . ' detected.');
+ reportBug(__FUNCTION__, __LINE__, 'Double-call of export function ' . $callbackName . ' detected.');
}
// Call the function
// 'network_id' must be set
if (!isGetRequestElementSet('network_id')) {
// Only network handlers of one network will be exported per time
- debug_report_bug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
+ reportBug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
} // END - if
// Get all network types of given network
$SQL .= 'NULL';
} else {
// Column is set
- $SQL .= "'" . $content['network_type_banner_url'] . "'";
+ $SQL .= chr(39) . $content['network_type_banner_url'] . chr(39);
}
// Add more
// 'network_id' must be set
if (!isGetRequestElementSet('network_id')) {
// Only network request parameters of one network will be exported per time
- debug_report_bug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
+ reportBug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
} // END - if
// Get all network types of given network
$SQL .= "NULL),\n";
} else {
// Column is set
- $SQL .= "'" . $content['network_request_param_default'] . "'),\n";
+ $SQL .= chr(39) . $content['network_request_param_default'] . "'),\n";
}
} // END - while
// 'network_id' must be set
if (!isGetRequestElementSet('network_id')) {
// Only network vcheck parameters of one network will be exported per time
- debug_report_bug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
+ reportBug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
} // END - if
// Get all network types of given network
$SQL .= "NULL),\n";
} else {
// Column is set
- $SQL .= "'" . $content['network_vcheck_param_default'] . "'),\n";
+ $SQL .= chr(39) . $content['network_vcheck_param_default'] . "'),\n";
}
} // END - while
// 'network_id' must be set
if (!isGetRequestElementSet('network_id')) {
// Only network API array index translations of one network will be exported per time
- debug_report_bug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
+ reportBug(__FUNCTION__, __LINE__, 'network_id not provided, please fix your links.');
} // END - if
// Get all network types of given network
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
// And now go forward...
- $idx = '0';
+ $idx = 0;
while ($idx < strlen($test)) {
$check = substr($test, $idx, 1);
if ((!in_array($check, $GLOBALS['valid_email_chars'])) && ($check != '@')) {
}
// Now replace the email against anchor with mailto and pray...
- $PARTS[] = $check2 . $check;
+ array_push($PARTS, $check2 . $check);
// Remove email from testing string (see above why...)
$test = substr($test, strlen($check));
}
// Now put all parts together
- $text = ''; $PARTS[] = $test;
+ $text = '';
+ array_push($PARTS, $test);
foreach ($PARTS as $part) {
$text .= $part;
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
die();
} // END - if
-// Checks wether the nickname is active
+// Checks whether the nickname is active
function isNicknameOrUserid ($useridNick) {
// By default nothing is found...
$ret = false;
$result = false;
// Nickname or userid used?
- if ('' . round($userid) . '' === '' . $userid . '') {
+ if ('' . bigintval($userid, true, false) . '' === '' . $userid . '') {
// Userid given, so try to load user data
if (fetchUserData($userid)) {
// Load nickname from database
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$opt = SQL_FETCHARRAY($result1);
// Add data to array
- $ret['tables'][] = array($row['Name'], $opt['Msg_text'], $rep['Msg_text'], $total, $gain);
+ array_push($ret['tables'], array($row['Name'], $opt['Msg_text'], $rep['Msg_text'], $total, $gain));
// Count total table data
$ret['total_size'] += $total;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Generates a selection list for mail order
function addOrderSelectionOptions ($default) {
// Currenty the list is hardcoded...
+ // @TODO Move this array into a filter
$LIST = array('userid', 'zip', 'country', 'email', 'birth_year', 'last_online', 'ref_clicks', 'total_logins', 'mail_orders');
$OUT = '';
foreach ($LIST as $item) {
} // END - if
// Add option line
- $OUT .= '<option value="' . $item . '"' . $selected . '>{--ADMIN_ORDER_SELECT_COLUMN_' . strtoupper($item) . '--}</option>';
+ $OUT .= '<option value="' . $item . '"' . $selected . '>{--ADMIN_CONFIG_ORDER_SELECT_COLUMN_' . strtoupper($item) . '--}</option>';
} // END - foreach
// Return the output
return $GLOBALS[__FUNCTION__];
}
-// Determines wether 'order_multi_page' is set to 'Y'
+// Determines whether 'order_multi_page' is set to 'Y'
function isOrderMultiPageEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - foreach
// Load main template
- $GLOBALS['page_footer'] .= loadTemplate('admin_other_sqls', true, $OUT);
+ $GLOBALS['__page_footer'] .= loadTemplate('admin_other_sqls', true, $OUT);
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$userid])) {
// Determine it
- $GLOBALS[__FUNCTION__][$userid] = countSumTotalData($userid, 'user_points', 'points') - countSumTotalData($userid, 'user_data', 'used_points');
+ $GLOBALS[__FUNCTION__][$userid] = countSumTotalData($userid, 'user_points', 'points') - getUserUsedPoints($userid);
} // END - if
// Return it
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return $GLOBALS[__FUNCTION__];
}
-// Determines wether sending profile update notification is enabled
+// Determines whether sending profile update notification is enabled
function isSendProfileUpdateEnabled() {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Auto-start referral rallyes
function autostartReferralRallyes ($result) {
// Load all rallyes (usally we have only one rallye active per time!
- list($id, $title, $start, $end, $notify, $min_users, $min_prices) = SQL_FETCHROW($result);
+ $content = SQL_FETCHARRAY($result);
// Free result
SQL_FREERESULT($result);
WHERE
`id`=%s
LIMIT 1",
- array(bigintval($id)), __FUNCTION__, __LINE__);
-
- // Transfer all neccessary data to the $content array
- $content['userid_cnt'] = getTotalConfirmedUser();
- $content['start'] = generateDateTime($start, 2);
- $content['end'] = generateDateTime($end , 2);
- $content['now_t'] = generateDateTime(time(), 2);
- $content['title'] = $title;
- $content['id'] = $id; // id for the rallye details link
-
- // Determine min_users and min_prices
- $content['min_users'] = determineReferralRallyeMinimumUsers($min_users);
- $content['min_prices'] = determineReferralRallyeMinimumPrices($min_prices);
-
- // Load prices
- $content['prices'] = addReferralRallyePrices($id);
+ array(bigintval($content['id'])), __FUNCTION__, __LINE__);
// Query all users
$result_user = SQL_QUERY("SELECT
`{?_MYSQL_PREFIX?}_user_data`
WHERE
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
ORDER BY
`userid` ASC", __FUNCTION__, __LINE__);
`rallye_id`=%s AND
`userid`=%s
LIMIT 1",
- array(bigintval($id), bigintval($content['userid'])), __FUNCTION__, __LINE__);
- if (SQL_HASZERONUMS($result_ref)) {
+ array(bigintval($content['id']), bigintval($content['userid'])), __FUNCTION__, __LINE__);
+ // Do we have an entry?
+ if (SQL_HASZERONUMS($result_ref)) {
// Add userid and his ref count to table
$result_ref = SQL_QUERY_ESC("SELECT
- SUM(p.points) AS `points`
+ SUM(p.`points`) AS `points`
FROM
`{?_MYSQL_PREFIX?}_user_points` AS p
LEFT JOIN
ON
p.userid=d.userid
WHERE
- d.`status`='CONFIRMED' AND
+ d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
d.`max_mails` > 0 AND
d.`mails_confirmed` >= {?ref_payout?} AND
p.`ref_depth`=1 AND
// Add info line
SQL_QUERY_ESC("INSERT INTO
`{?_MYSQL_PREFIX?}_rallye_users`
-(`rallye_id`,`userid`,`refs`,`curr_points`)
- VALUES
-(%s, %s, %s, %s)",
+(
+ `rallye_id`,
+ `userid`,
+ `refs`,
+ `curr_points`
+) VALUES (
+ %s,
+ %s,
+ %s,
+ %s
+)",
array(
- bigintval($id),
+ bigintval($content['id']),
bigintval($content['userid']),
bigintval($count),
$cpoints
$content['refs'] = $count;
// Shall I notify this member?
- if (($notify == 'Y') && ($un)) {
+ if (($content['send_notify'] == 'Y') && ($un === true)) {
// Load email template and send it to the user
$message = loadEmailTemplate('member_rallye_notify', $content, $content['userid']);
- sendEmail($content['userid'], '{%message,RALLYE_MEMBER_NOTIFY=' . $title . '%}', $message);
+ sendEmail($content['userid'], '{%message,MEMBER_RALLYE_NOTIFY_SUBJECT=' . $content['title'] . '%}', $message);
} // END - if
} // END - while
// Choose the right admin template
$templ = 'admin_rallye_no_notify';
- if ($notify == 'Y') $templ = 'admin_rallye_notify';
+ if ($content['send_notify'] == 'Y') {
+ $templ = 'admin_rallye_notify';
+ } // END - if
// Send email to admin
- sendAdminNotification('{%message,RALLYE_ADMIN_NOTIFY=' . $title . '%}', $templ, $prices);
+ sendAdminNotification('{%message,ADMIN_RALLYE_NOTIFY_SUBJECT=' . $content['title'] . '%}', $templ, $content);
// Free memory
SQL_FREERESULT($result_user);
function addReferralRallyePrices ($rallye, $mode = 'email') {
// Output mode
switch($mode) {
- case 'email': $mode = "\n"; break;
+ case 'email': $mode = chr(10); break;
case 'html' : $mode = '<br />'; break;
} // END - switch
// Load prices
$result_prices = SQL_QUERY_ESC("SELECT
- `price_level`,`points`,`info`
+ `price_level`,
+ `points`,
+ `info`
FROM
`{?_MYSQL_PREFIX?}_rallye_prices`
WHERE
// Entries found?
if (!SQL_HASZERONUMS($result_prices)) {
// Load prices
- if ($mode == "\n") $prices = '{--RALLYE_MEMBER_PRICES_ADDED--}:' . $mode . '------------------------------' . $mode;
-
$prices = '';
+ if ($mode == chr(10)) {
+ $prices = '{--RALLYE_MEMBER_PRICES_ADDED--}:' . $mode . '------------------------------' . $mode;
+ } // END - if
+
while ($content = SQL_FETCHARRAY($result_prices)) {
- $prices .= $content['price_level']. '{--RALLYE_PRICE--}: ';
+ $prices .= $content['price_level']. '{--RALLYE_PRICE--}:';
if (!empty($content['info'])) {
$prices .= $content['info'];
} else {
- $prices .= $content['points'] . ' {?POINTS?}';
+ $prices .= '{%pipe,translateComma=' . $content['points'] . '%} {?POINTS?}';
}
$prices .= '' . $mode;
} // END - if
}
// Add last line for email mode
- if ($mode == "\n") $prices .= '------------------------------';
+ if ($mode == chr(10)) {
+ $prices .= '------------------------------';
+ } // END - if
// Return price list
return $prices;
//
function addReferralRallyeTopUsers ($mode, $rallye, $default=0) {
// Init variables
- $min_users = 0; $min_prices = 0;
+ $min_users = 0;
+ $min_prices = 0;
// First check how many prices are set
- $prices = countSumTotalData($rallye, 'rallye_prices', 'id', 'rallye_id', true);
+ $prices = getTotalRallyePrices($rallye);
// And load only limited users
- $result = SQL_QUERY_ESC("SELECT
- u.userid, u.refs, u.curr_points, rd.min_users, rd.min_prices
+ $result = SQL_QUERY_ESC("SELECT DISTINCT
+ u.`userid`,
+ u.`refs`,
+ u.`curr_points`,
+ rd.`min_users`,
+ rd.`min_prices`
FROM
`{?_MYSQL_PREFIX?}_rallye_users` AS u
-LEFT JOIN
+INNER JOIN
`{?_MYSQL_PREFIX?}_refsystem` AS r
ON
u.userid=r.userid
-LEFT JOIN
+INNER JOIN
`{?_MYSQL_PREFIX?}_rallye_data` AS rd
ON
- u.rallye_id=rd.id
+ u.`rallye_id`=rd.`id`
WHERE
u.`rallye_id`=%s AND
- r.counter > 0
+ r.`counter` > 0
ORDER BY
u.refs DESC",
array(bigintval($rallye)), __FUNCTION__, __LINE__);
);
// Load all users
- while ($content = SQL_FETCHARRAY($result)) {
+ while ($row = SQL_FETCHARRAY($result)) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $row['userid'] . ',refs=' . $row['refs']);
// Get current refs
- $count = getReferralRallyeRefsCount($content['userid'], $content['refs']);
+ $count = getReferralRallyeRefsCount($row['userid'], $row['refs']);
// Points of ref's
$result_ref = SQL_QUERY_ESC("SELECT
- p.points
+ p.`points`
FROM
`{?_MYSQL_PREFIX?}_user_points` AS p
LEFT JOIN
`{?_MYSQL_PREFIX?}_user_data` AS d
ON
- p.userid=d.userid
+ p.`userid`=d.`userid`
WHERE
- d.userid=%s AND
- d.`status`='CONFIRMED' AND
- p.ref_depth=1 AND
- d.max_mails > 0 AND
- d.mails_confirmed >= {?ref_payout?}
+ d.`userid`=%s AND
+ d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
+ p.`ref_depth`=1 AND
+ d.`max_mails` > 0 AND
+ d.`mails_confirmed` >= {?ref_payout?}
LIMIT 1",
- array(bigintval($content['userid'])), __FUNCTION__, __LINE__);
+ array(bigintval($row['userid'])), __FUNCTION__, __LINE__);
// Get points
list($refpoints) = SQL_FETCHROW($result_ref);
// Free result
SQL_FREERESULT($result_ref);
- if (empty($refpoints)) $refpoints = '0';
+ // Fix empty values (ugly code again)
+ if (empty($refpoints)) {
+ $refpoints = '0';
+ } // END - if
// Init userid for list
$userid = '---';
// List only users with at least one ref!
- //* DEBUG: */ debugOutput('*'.$count.'/'.$content['userid'].'/'.$content['curr_points'].'/'.$refpoints.'*');
- if (($count > 0) && ($refpoints > $content['curr_points'])) {
- $userid = $content['userid'];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'count=' . $count . ',userid=' . $userid . ',refpoints=' . $refpoints . ',curr_points=' . $row['curr_points']);
+ if (($count > 0) && ($refpoints > $row['curr_points'])) {
+ $userid = $row['userid'];
} else {
$count = '';
}
// Save values to array
$content['userid'][] = $userid;
$content['ref'][] = $count;
- $content['cpoints'][] = $content['curr_points'];
- $min_users = $content['min_users'];
- $min_prices = $content['min_prices'];
+ $content['cpoints'][] = $row['curr_points'];
+ $min_users = $row['min_users'];
+ $min_prices = $row['min_prices'];
} // END - while
// Free memory
SQL_FREERESULT($result);
// Sort whole array
- array_pk_sort($content, array('ref', 'cpoints'), 0, 1, true);
+ array_pk_sort($content, array('cpoints', 'ref'), 0, 1, true);
// Generate table
$OUT = '';
- for ($idx = '0'; $idx < $prices; $idx++) {
+ for ($idx = 0; $idx < $prices; $idx++) {
// Prepare marking of default (maybe current user's) id
$start = ''; $end = '';
- if (($content['userid'][$idx] == $default) && ($default > 0)) {
+ if (($default > 0) && (isset($content['userid'][$idx])) && ($content['userid'][$idx] == $default)) {
$start = '<strong>';
$end = '</strong>';
} // END - if
'idx' => ($idx + 1),
'start' => $start,
'end' => $end,
- 'userid' => $content['userid'][$idx],
- 'ref' => $content['ref'][$idx],
- 'infos' => ''
+ 'userid' => (isset($content['userid'][$idx])) ? $content['userid'][$idx] : '---',
+ 'ref' => (isset($content['ref'][$idx])) ? $content['ref'][$idx] : '---'
);
// Load row template and switch color
return loadTemplate($mode . '_list_rallye', true, $content);
}
+// Sends out a notification about the rallye
+function sendRallyeNotification ($userid, $content) {
+ // Translate more data
+ $content['start_time'] = generateDateTime($content['start_time'], 2);
+ $content['end_time'] = generateDateTime($content['end_time'] , 2);
+ $content['now_time'] = generateDateTime(time(), 2);
+ $content['ref'] = '0';
+ $content['refs'] = getUsersTotalReferrals($userid);
+
+ // Send notification to member
+ $message = loadEmailTemplate('member_rallye_notify', $content, $userid);
+ sendEmail($userid, '{%message,MEMBER_RALLYE_NOTIFY_SUBJECT=' . $content['title'] . '%}', $message);
+}
+
// Run this function only when a new member has confirmed his email address!
function addUserToReferralRallye ($userid, $content = array()) {
$add = '';
// Check for an auto-add rallye
$result = SQL_QUERY("SELECT
- `id`,`title`,`start_time`,`end_time`,`send_notify`".$add."
+ `id`,
+ `title`,
+ `start_time`,
+ `end_time`,
+ `send_notify`
+ ".$add."
FROM
`{?_MYSQL_PREFIX?}_rallye_data`
WHERE
LIMIT 1", __FUNCTION__, __LINE__);
if (SQL_NUMROWS($result) == 1) {
// Init variables
- $min_users = '0'; $min_prices = '0';
+ $min_users = '0';
+ $min_prices = '0';
- // Load data
- if (isExtensionInstalledAndNewer('rallye', '0.2.0')) {
- list($id, $title, $start, $end, $notify, $min_users, $min_prices) = SQL_FETCHROW($result);
- } else {
- list($id, $title, $start, $end, $notify) = SQL_FETCHROW($result);
- }
+ // Load and merge data
+ $content = merge_array($content, SQL_FETCHARRAY($result));
// Free result
SQL_FREERESULT($result);
- if ($notify == 'Y') {
+ // Notify the user?
+ if ($content['send_notify'] == 'Y') {
// Transfer all neccessary data to $content array
- $content['start'] = generateDateTime($start, 2);
- $content['end'] = generateDateTime($end , 2);
- $content['now_t'] = generateDateTime(time(), 2);
- $content['title'] = $title;
- $content['id'] = $id; // id for the rallye details link
- $content['ref'] = '0';
- $content['refs'] = countSumTotalData($userid, 'user_data', 'userid', 'refid', true);
-
- // Load prices
- $content['prices'] = addReferralRallyePrices($id);
-
- // Determine min_users/prices tring
- $content['min_users'] = determineReferralRallyeMinimumUsers($min_users);
- $content['min_prices'] = determineReferralRallyeMinimumPrices($min_prices);
-
- // Send notification to member
- $message = loadEmailTemplate('member_rallye_notify', $content, $userid);
- sendEmail($userid, '{%message,RALLYE_MEMBER_NOTIFY=' . $title . '%}', $message);
+ sendRallyeNotification($userid, $content);
} // END - if
// Check if line is already included...
`userid`=%s
LIMIT 1",
array(
- bigintval($id),
+ bigintval($content['id']),
bigintval($userid)
), __FUNCTION__, __LINE__);
// Add userid and his ref count to table
SQL_QUERY_ESC("INSERT INTO
`{?_MYSQL_PREFIX?}_rallye_users`
-(`rallye_id`,`userid`,`refs`)
- VALUES
-(%s,%s,0)",
+(
+ `rallye_id`,
+ `userid`,
+ `refs`
+) VALUES (
+ %s,
+ %s,
+ 0
+)",
array(
- bigintval($id),
+ bigintval($content['id']),
bigintval($userid)
), __FUNCTION__, __LINE__);
} // END - if
} // END - if
}
-//
-function markReferralRallyesAsExpired ($result) {
+// "Getter" for total rallye winners
+function getTotalRallyeWinners ($rallyeId) {
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__][$rallyeId])) {
+ // Default total is zero
+ $GLOBALS[__FUNCTION__][$rallyeId] = '0';
+
+ // Get prices
+ $prices = getArrayFromReferralRallyeUsers($rallyeId);
+
+ // "Walk" through all entries
+ foreach ($prices['userid'] as $key => $userid) {
+ // Check for userid
+ $active = countSumTotalData($userid, 'user_data', 'userid', 'userid', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
+
+ // Allow valid and active users with at least one ref
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'rallyeId=' . $rallyeId . ',userid=' . $userid . ',ref=' . $prices['ref'][$key] . ',cpoints=' . $prices['cpoints'][$key]);
+ if ((isValidUserId($userid)) && ($prices['ref'][$key] > 0) && ($active == 1) && ($prices['cpoints'][$key] > 0)) {
+ $GLOBALS[__FUNCTION__][$rallyeId]++;
+ } // END - if
+ } // END - foreach
+ } // END - if
+
+ // Return it
+ return $GLOBALS[__FUNCTION__][$rallyeId];
+}
+
+// Stops the given rallye result (from SQL layer) by marking it as expirced
+function stopRallyeByResult ($result) {
// Load rallye data
- list($id, $title, $start, $end, $notify, $min_users, $min_prices) = SQL_FETCHROW($result);
+ $content = SQL_FETCHARRAY($result);
// Free result
SQL_FREERESULT($result);
// Init array
- $content = array();
$count = '0';
$users = array();
- $content['title'] = $title;
- $content['start'] = generateDateTime($start, 1);
- $content['end'] = generateDateTime($end , 1);
- $content['now_t'] = generateDateTime(time(), 1);
+ $content['start_time'] = generateDateTime($content['start_time'], 1);
+ $content['end_time'] = generateDateTime($content['end_time'] , 1);
+ $content['now_time'] = generateDateTime(time(), 1);
// Load users array (!) with assigned prices
- $prices = getArrayFromReferralRallyeUsers($id);
+ $prices = getArrayFromReferralRallyeUsers($content['id']);
// Just count...
$total = '0';
foreach ($prices['userid'] as $key => $userid) {
- // Check status
- // active = 1: account is still confirmed
- // active = 0: account is deleted or locked
- $active = countSumTotalData($userid, 'user_data', 'userid', 'userid', true, " AND `status`='CONFIRMED'");
+ /*
+ * Check status
+ * active = 1: account is still confirmed
+ * active = 0: account is deleted or locked
+ */
+ $active = countSumTotalData($userid, 'user_data', 'userid', 'userid', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
$prices['active'][$key] = $active;
} // END - if
} // END - foreach
- if (($total < $min_prices) || ($total == '0')) {
+ // Check on 'min_prices' condition
+ if (($total < $content['min_prices']) || (getTotalConfirmedUser() < $content['min_users'])) {
// Do not end this rallye!
- unset($content);
return;
} // END - if
// Expire rallye
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `expired`='Y' WHERE `id`=%s LIMIT 1",
- array(bigintval($id)), __FUNCTION__, __LINE__);
+ array(bigintval($content['id'])), __FUNCTION__, __LINE__);
// Run array through (by userid is the most important 2nd-level-array)
foreach ($prices['userid'] as $key => $userid) {
addPointsThroughReferralSystem('rallye_winner:' . $winnerLevel, $userid, $content['points']);
} // END - if
- if ($notify == 'Y') {
+ if ($content['send_notify'] == 'Y') {
// Prepare infos for the mail template
if (!empty($content['info'])) {
// Take direct infos
} // END - foreach
// Select template depending on notfication is switch on / off
- if ($notify == 'Y') {
+ if ($content['send_notify'] == 'Y') {
$templ = 'admin_rallye_expired';
} elseif (is_array($users['userid'])) {
$templ = 'admin_rallye_expired_no';
$content['count'] = $count;
// Send mail to admin
- sendAdminNotification('{%message,RALLYE_ADMIN_EXPIRED_SUBJECT=' . $title . '%}', $templ, $content);
+ sendAdminNotification('{%message,ADMIN_RALLYE_EXPIRED_SUBJECT=' . $content['title'] . '%}', $templ, $content);
// Add task (we ignore the task id here)
- createNewTask('{--RALLYE_ADMIN_EXPIRED--}: ' . $title, '{--RALLYE_ADMIN_EXPIRED_TEXT--}', 'RALLYE_EXPIRED');
+ createNewTask('{--ADMIN_RALLYE_EXPIRED_TASK--}: ' . $content['title'], '{--ADMIN_RALLYE_EXPIRED_TEXT--}', 'RALLYE_EXPIRED');
}
//
WHERE
`userid` IN(%s) AND
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ' ) . "
ORDER BY
`userid` ASC
LIMIT %s",
// Transfer elements
while ($content = SQL_FETCHARRAY($result)) {
$prices['level'][] = $content['price_level'];
- $prices['points'][] = $content['points'];
- $prices['info'][] = $content['info'];
+ array_push($prices['points'], $content['points']);
+ array_push($prices['info'], $content['info']);
} // END - while
// Free memory
//
function getArrayFromReferralRallyeUsers ($rallye) {
// Fix zero points to 0.00000
- if (getConfig('ref_payout') == '0') setConfigEntry('ref_payout', '0.00000');
+ if (getRefPayout() == '0') {
+ setConfigEntry('ref_payout', '0.00000');
+ } // END - if
// Init multi array
$users = array(
'cpoints' => array(),
);
- // Load users userid old points earned
- $result_user = SQL_QUERY_ESC("SELECT `userid`,`refs`,`curr_points` FROM `{?_MYSQL_PREFIX?}_rallye_users` WHERE `rallye_id`=%s ORDER BY `userid` ASC",
+ /*
+ * Load users:
+ * - userid = User's id number
+ * - refs = Old amount of referrals (before the rallye has started)
+ * - curr_points = Current amount of total points
+ */
+ $result_user = SQL_QUERY_ESC("SELECT
+ `userid`,
+ `refs`,
+ `curr_points`
+FROM
+ `{?_MYSQL_PREFIX?}_rallye_users`
+WHERE
+ `rallye_id`=%s
+ORDER BY
+ `userid` ASC",
array(bigintval($rallye)), __FUNCTION__, __LINE__);
while ($content = SQL_FETCHARRAY($result_user)) {
// Load current ref count
// Points of ref's
$result_ref = SQL_QUERY_ESC("SELECT
- SUM(p.points) AS `points`
+ SUM(p.`points`) AS `points`
FROM
`{?_MYSQL_PREFIX?}_user_points` AS p
LEFT JOIN
`{?_MYSQL_PREFIX?}_user_data` AS d
ON
- p.userid=d.userid
+ p.`userid`=d.`userid`
WHERE
- d.`status`='CONFIRMED' AND
- d.max_mails > 0 AND
- d.mails_confirmed >= {?ref_payout?} AND
- p.ref_depth=1 AND
- p.points > 0 AND
- d.userid=%s
+ d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ' ) . " AND
+ d.`max_mails` > 0 AND
+ d.`mails_confirmed` >= {?ref_payout?} AND
+ p.`ref_depth`=1 AND
+ p.`points` > 0 AND
+ d.`userid`=%s
LIMIT 1",
array(bigintval($content['userid'])), __FUNCTION__, __LINE__);
if (empty($refpoints)) $refpoints = '0';
// Store calculated new refs to array
- $users['userid'][] = $content['userid'];
- $users['ref'][] = abs($count - $content['refs']);
- $users['cpoints'][] = $refpoints - $content['curr_points'];
+ array_push($users['userid'], $content['userid']);
+ array_push($users['ref'], abs($count - $content['refs']));
+ array_push($users['cpoints'], $refpoints - $content['curr_points']);
} // END - while
// Free memory
SQL_FREERESULT($result_user);
// Sort array for refs (descending)
- array_pk_sort($users, array('ref', 'cpoints'), 0, 1, true);
+ array_pk_sort($users, array('cpoints', 'ref'), 0, 1, true);
// Load prices array (!)
$prices = getArrayFromReferralRallyePrices($rallye);
// @TODO This function does not load min_users, min_prices, please encapsulate loading rallye data with e.g. getRallyeDataFromId()
function addReferralRallyeWinners ($mode, $rallye, $default=0) {
// First check how many prices are set
- $prices = countSumTotalData(bigintval($rallye), 'rallye_prices', 'id', 'rallye_id', true);
+ $prices = getTotalRallyePrices($rallye);
// Load data
$content = getArrayFromReferralRallyeUsers($rallye);
// Generate table
$OUT = '';
- for ($idx = '0'; $idx < $prices; $idx++) {
- // Check status
- // active = 1: account is still confirmed
- // active = 0: account is deleted or locked
- $active = countSumTotalData($content['userid'][$idx], 'user_data', 'userid', 'userid', true, " AND `status`='CONFIRMED'");
+ for ($idx = 0; $idx < $prices; $idx++) {
+ /*
+ * Check status
+ * active = 1: account is still confirmed
+ * active = 0: account is deleted or locked
+ */
+ $active = countSumTotalData($content['userid'][$idx], 'user_data', 'userid', 'userid', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
if ((empty($content['ref'][$idx])) || ($content['ref'][$idx] == '0') || ($active == '0') || ('' . round($content['cpoints'][$idx]) . '' == '0') || (empty($content['cpoints'][$idx]))) {
// Allow valid and active users with at least one ref to get points
- $content['ref'][$idx] = '---';
- $content['userid'][$idx] = '---';
+ $content['ref'][$idx] = '---';
+ $content['userid'][$idx] = '---';
} // END - if
if (!empty($content['info'][$idx])) {
// Check for expired rallyes
$EXPIRE = 3; // @TODO The hard-coded value...
$result_rallye = SQL_QUERY_ESC("SELECT
- `id`,`title`,`start_time`,`end_time`
+ `id`,
+ `title`,
+ `start_time`,
+ `end_time`
FROM
`{?_MYSQL_PREFIX?}_rallye_data`
WHERE
$content['now_time'] = generateDateTime(time(), 1);
// Send mail to admin
- sendAdminNotification('{%message,RALLYE_ADMIN_PURGED_SUBJECT=' . $content['title'] . '%}', 'admin_rallye_purged', $content);
+ sendAdminNotification('{%message,ADMIN_RALLYE_PURGED_SUBJECT=' . $content['title'] . '%}', 'admin_rallye_purged', $content);
// Purge whole rallye
addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_rallye_data` WHERE `id`=%s LIMIT 1",
array(bigintval($content['id'])), __FUNCTION__, __LINE__, false));
// Add task (we ignore the task id here
- createNewTask('{--RALLYE_ADMIN_PURGED--}: ' . $content['title'], '{--RALLYE_ADMIN_PURGED_TEXT--}', 'RALLYE_PURGED');
+ createNewTask('{--ADMIN_RALLYE_PURGED_TASK--}: ' . $content['title'], '{--ADMIN_RALLYE_PURGED_TEXT--}', 'RALLYE_PURGED');
} // END - while
// Run all SQLs
if (!empty($ral[0])) {
// Generate selection box for all found templates
$OUT = '<select class="form_select" name="' . $name . '" size="1">';
- $OUT .= generateOptionList('/ARRAY/', array_keys($ral), array_values($ral), $default, '', 'none');
+ $OUT .= generateOptions('/ARRAY/', array_keys($ral), array_values($ral), $default, '', 'none');
$OUT .= '</select>';
} else {
// No rallye templates found
- $OUT = '{--RALLYE_NO_TEMPLATES_FOUND--}';
+ $OUT = '{--ADMIN_RALLYE_TEMPLATES_404--}';
}
// Return selection
} // END - foreach
//* DEBUG: */ debugOutput('<pre>'.print_r($GLOBALS['cache_array']['refsystem'], true).'</pre>');
- //* DEBUG: */ shutdown();
+ //* DEBUG: */ doShutdown();
if ($count > 0) {
// Count cache hits
return $return;
}
+// "Getter" for total rallye prices by given id
+function getTotalRallyePrices ($rallyeId) {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$rallyeId])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__][$rallyeId] = countSumTotalData($rallyeId, 'rallye_prices', 'id', 'rallye_id', true);
+ } // END - if
+
+ // Return it
+ return $GLOBALS[__FUNCTION__][$rallyeId];
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Something must have been updated
if (SQL_HASZEROAFFECTED()) {
// Please report this bug
- debug_report_bug(__FUNCTION__, __LINE__, 'Nothing has been updated in user_refs,userid=' . $userid . ',refid=' . convertNullToZero($refid) . ',refbackPoints=' . $refbackPoints);
+ reportBug(__FUNCTION__, __LINE__, 'Nothing has been updated in user_refs,userid=' . $userid . ',refid=' . convertNullToZero($refid) . ',refbackPoints=' . $refbackPoints);
} // END - if
// Add points again, but only directly
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ' - ENTERED!');
if ((!isValidUserId($userid)) || (!isValidUserId($refid))) {
// userid and/or refid is invalid
- debug_report_bug(__FUNCTION__, __LINE__, 'userid=' . convertNullToZero($userid) . ', refid=' . convertNullToZero($refid) . ' - Both must be > 0');
+ reportBug(__FUNCTION__, __LINE__, 'userid=' . convertNullToZero($userid) . ', refid=' . convertNullToZero($refid) . ' - Both must be > 0');
} elseif ($userid == $refid) {
// Skip identical ids
return 0;
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ',percents=' . $GLOBALS['refback_percents'][$userid][$refid]);
} else {
// Please report all findings
- debug_report_bug(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ' - No entry found. :-(');
+ reportBug(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . $refid . ' - No entry found. :-(');
}
// Free result
// Add all
while ($content = SQL_FETCHARRAY($result)) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . convertNullToZero($refid) . ',level=' . $level . ',userid=' . $content['userid']);
- $userIds[] = $content['userid'];
+ array_push($userIds, $content['userid']);
} // END - while
} // END - if
// Prepare email content
$content['refback_percents'] = $percents;
- $content['refback_note'] = $note;
+ $content['refback_notice'] = $note;
// Load member email template
$mail = loadEmailTemplate('member_refback', $content, $content['refid']);
return $status;
}
-// Checks wether refback is enabled
+// Checks whether refback is enabled
function isRefbackEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
die();
} // END - if
-//
+// Checks whether all required registration fields are set
function ifRequiredRegisterFieldsAreSet (&$array) {
// By default all is fine
$ret = true;
}
// Generates a 'category table' for the registration form
-function registerGenerateCategoryTable ($mode) {
+function registerGenerateCategoryTable ($mode, $configEntry = 'register_default') {
// Init output
$OUT = '';
- // Guests are mostly not interested in how many members has
- // choosen an individual category
+ /*
+ * Guests are mostly not interested in how many members has choosen an
+ * individual category.
+ */
$whereStatement = "WHERE `visible`='Y' ";
// Admins are allowed to see every category...
- if (isAdmin()) $whereStatement = '';
+ if (isAdmin()) {
+ $whereStatement = '';
+ } // END - if
// Look for categories
- $result = SQL_QUERY('SELECT `id`,`cat`,`visible` FROM `{?_MYSQL_PREFIX?}_cats` ' . $whereStatement . ' ORDER BY `sort` ASC',
+ $result = SQL_QUERY('SELECT
+ `id`,
+ `cat`,
+ `visible`
+FROM
+ `{?_MYSQL_PREFIX?}_cats`
+' . $whereStatement . '
+ORDER BY
+ `sort` ASC',
__FUNCTION__, __LINE__);
if (!SQL_HASZERONUMS($result)) {
$content['default_no'] = '';
// Mark categories
- if ((postRequestElement('cat', $content['id']) == 'Y') || ((isRegisterDefaultEnabled()) && (!isPostRequestElementSet('cat', $content['id'])))) {
+ if ((postRequestElement('cat', $content['id']) == 'Y') || ((getConfig($configEntry) == 'Y') && (!isPostRequestElementSet('cat', $content['id'])))) {
$content['default_yes'] = ' checked="checked"';
} else {
$content['default_no'] = ' checked="checked"';
}
}
-// Checks wether the registration data is complete
+// Checks whether the registration data is complete
function isRegistrationDataComplete () {
// Init elements
$GLOBALS['registration_ip_timeout'] = false;
// First we only check the submitted data then we continue... :)
//
- // Did he agree to our Terms Of Usage?
+ // Did he agree to the terms of usage?
if (postRequestElement('agree') != 'Y') {
setPostRequestElement('agree', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'agree=N - User did not agree with terms of usage.');
$isOkay = false;
} // END - if
// that, he has to click on a confirmation link :P )
if ((!isPostRequestElementSet('email')) || (!isEmailValid(postRequestElement('email')))) {
setPostRequestElement('email', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did not enter proper email address.');
$isOkay = false;
} // END - if
// And what about surname and family's name?
if (!isPostRequestElementSet('surname')) {
setPostRequestElement('surname', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did not enter surname.');
$isOkay = false;
} // END - if
if (!isPostRequestElementSet('family')) {
setPostRequestElement('family', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did not enter family name.');
$isOkay = false;
} // END - if
setPostRequestElement('pass2', '!');
// ... which is both not okay
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Random password generation not possible, isExtensionInstalledAndNewer(register, 0.5.5)=' . intval(isExtensionInstalledAndNewer('register', '0.5.5')) . ',isRegisterGeneratePasswordEmptyEnabled()=' . intval(isRegisterGeneratePasswordEmptyEnabled()));
$isOkay = false;
}
} // END - if
// Did he enter his password twice?
if (((!isPostRequestElementSet('pass1')) || (!isPostRequestElementSet('pass2'))) || ((postRequestElement('pass1') != postRequestElement('pass2')) && (isPostRequestElementSet('pass1')) && (isPostRequestElementSet('pass2')))) {
if ((postRequestElement('pass1') != postRequestElement('pass2')) && (isPostRequestElementSet('pass1')) && (isPostRequestElementSet('pass2'))) {
+ // Both passwords did not match
setPostRequestElement('pass1', '!');
setPostRequestElement('pass2', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did not enter same passwords.');
} else {
if (!isPostRequestElementSet('pass1')) {
+ // Password 1 is empty
setPostRequestElement('pass1', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did not enter pass1.');
} else {
+ // Password 2 is empty
setPostRequestElement('pass1', '');
}
if (!isPostRequestElementSet('pass2')) {
+ // Password 2 is empty
setPostRequestElement('pass2', '!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did not enter pass2.');
} else {
+ // Password 1 is empty
setPostRequestElement('pass2', '');
}
}
// Is the password long enouth?
if ((strlen(postRequestElement('pass1')) < getPassLen()) && ($isOkay === true)) {
$GLOBALS['registration_short_password'] = true;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did enter a short password.');
$isOkay = false;
} // END - if
// Do this check only when no admin is logged in
- if (is_array(postRequestElement('cat'))) {
+ if (ifPostContainsSelections('cat')) {
// Only continue with array
foreach (postRequestElement('cat') as $id => $answer) {
// Is this category choosen?
// Does the email address already exists in our database?
if ((isEmailTaken(postRequestElement('email'))) && (!isAdmin())) {
setPostRequestElement('email', '?');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'User did enter a already used email address.');
$isOkay = false;
} // END - if
} // END - if
}
// Do the registration
-function doRegistration () {
- // Generate hash which will be inserted into confirmation mail
- $hash = generateHash(sha1(
- // Get total confirmed, ...
- getTotalConfirmedUser() . getEncryptSeparator() .
- // ... unconfirmed ...
- getTotalUnconfirmedUser() . getEncryptSeparator() .
- // ... and locked users
- getTotalLockedUser() . getEncryptSeparator() .
- postRequestElement('month') . '-' .
- postRequestElement('day') . '-' .
- postRequestElement('year') . getEncryptSeparator() .
- detectServerName() . getEncryptSeparator() .
- detectRemoteAddr() . getEncryptSeparator() .
- detectUserAgent() . '/' .
- getSiteKey() . '/' .
- getDateKey() . '/' .
- getConfig('CACHE_BUSTER')
- ));
-
- // Old way with enterable two-char-code
- $countryRow = '`country`';
- $countryData = substr(postRequestElement('cntry'), 0, 2);
-
- // Add design when extension ext-theme is v0.0.8 or greater
- // @TODO Rewrite these all to a single filter
- $GLOBALS['register_sql_columns'] = '';
- $GLOBALS['register_sql_data'] = '';
- if (isExtensionInstalledAndNewer('theme', '0.0.8')) {
- // Okay, add design here
- $GLOBALS['register_sql_columns'] .= ', `curr_theme`';
- $GLOBALS['register_sql_data'] .= ", '{%%pipe,getCurrentTheme%%}'";
+function doUserRegistration () {
+ // Do not register an account on absent ext-user
+ if (!isExtensionInstalled('user')) {
+ // Please report this
+ reportBug(__FUNCTION__, __LINE__, 'Tried to register a user account without ext-user installed.');
} // END - if
- // Check if I shall disable sending mail to newly registered members out about active/begging rallye
- //
- // First comes first: begging rallye
- if ((isExtensionInstalledAndNewer('beg', '0.2.7')) && (!isBegNewMemberNotifyEnabled())) {
- $GLOBALS['register_sql_columns'] .= ', `beg_rallye_enable_notify`, `beg_rallye_disable_notify`';
- $GLOBALS['register_sql_data'] .= ', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()';
- } // END - if
+ // Init filter data
+ $filterData = array(
+ // Initialization not done by default
+ 'init_done' => false
+ );
- // Second: active rallye
- if ((isExtensionActive('bonus')) && (!isBonusNewMemberNotifyEnabled())) {
- $GLOBALS['register_sql_columns'] .= ', `bonus_rallye_enable_notify`, `bonus_rallye_disable_notify`';
- $GLOBALS['register_sql_data'] .= ', UNIX_TIMESTAMP(), UNIX_TIMESTAMP()';
- } // END - if
+ // Run the pre-registration chain
+ $filterData = runFilterChain('pre_user_registration', $filterData);
- // Write user data to table
- if (isExtensionActive('country')) {
- // Save with new selectable country code
- $countryRow = '`country_code`';
- $countryData = bigintval(postRequestElement('country_code'));
+ // Did the initialization work?
+ if ($filterData['init_done'] === false) {
+ // Something bad happened!
+ displayMessage('{--PRE_USER_REGISTRATION_FAILED--}');
+
+ // Stop here
+ return false;
} // END - if
// Create user's account...
`joined`,
`last_update`,
`ref_payout`
- ".$GLOBALS['register_sql_columns']."
+ " . $GLOBALS['register_sql_columns'] . "
) VALUES (
'%s',
'%s',
%s,
%s,
%s,
- 'UNCONFIRMED',
+ '%s',
'%s',
'{%%pipe,detectRemoteAddr%%}',
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(),
{?ref_payout?}
- ".$GLOBALS['register_sql_data'].")",
+ " . $GLOBALS['register_sql_data'] . "
+)",
array(
- $countryRow,
+ $GLOBALS['register_country_row'],
substr(postRequestElement('gender'), 0, 1),
postRequestElement('surname'),
postRequestElement('family'),
postRequestElement('street_nr'),
- $countryData,
+ $GLOBALS['register_country_data'],
bigintval(postRequestElement('zip')),
postRequestElement('city'),
postRequestElement('email'),
bigintval(postRequestElement('max_mails')),
bigintval(postRequestElement('max_mails')),
convertZeroToNull(postRequestElement('refid')),
- $hash
+ postRequestElement('status'),
+ $GLOBALS['register_confirm_hash']
), __FUNCTION__, __LINE__);
// Get his userid
- $userid = bigintval(SQL_INSERTID());
+ $filterData['register_insert_id'] = bigintval(SQL_INSERTID());
// Did this work?
- if ($userid == '0') {
+ if (!isValidUserId($filterData['register_insert_id'])) {
// Something bad happened!
displayMessage('{--USER_NOT_REGISTERED--}');
// Stop here
- return;
+ return false;
} // END - if
// Shall we reset random refid? Only possible with latest ext-user
} // END - if
// Update referral table
- updateReferralCounter($userid);
+ updateReferralCounter($filterData['register_insert_id']);
// Write his welcome-points
initReferralSystem();
- addPointsThroughReferralSystem('register_welcome', $userid, getPointsRegister());
+ addPointsThroughReferralSystem(
+ // Subject
+ 'register_welcome',
+ // New user's id
+ $filterData['register_insert_id'],
+ // Points
+ getPointsRegister(),
+ // Referral id (or NULL if none set)
+ convertZeroToNull(postRequestElement('refid'))
+ );
// Write catgories
- if ((is_array(postRequestElement('cat'))) && (count(postRequestElement('cat')))) {
+ if (ifPostContainsSelections('cat')) {
+ // Write all entries
foreach (postRequestElement('cat') as $categoryId => $joined) {
+ // "Join" this group?
if ($joined == 'Y') {
// Insert category entry
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_cats` (`userid`,`cat_id`) VALUES (%s, %s)",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_cats` (`userid`, `cat_id`) VALUES (%s, %s)",
array(
- $userid,
+ $filterData['register_insert_id'],
bigintval($categoryId)
), __FUNCTION__, __LINE__);
} // END - if
} // END - foreach
} // END - if
+ // Registration phase is done here, so for tester accounts we end here
+ if (((getExtensionVersion('user') >= '0.5.0')) && (isTesterUserName(postRequestElement('surname'))) && (ifTesterAccountsAllowed())) {
+ // All fine here
+ return true;
+ } // END - if
+
// ... rewrite a zero referral id to the main title
if (!isValidUserId(postRequestElement('refid'))) {
setPostRequestElement('refid', getMainTitle());
// Prepare data array for the email template
// Start with the gender...
$content = array(
- 'hash' => $hash,
- 'userid' => $userid,
+ 'hash' => $GLOBALS['register_confirm_hash'],
+ 'userid' => $filterData['register_insert_id'],
'gender' => SQL_ESCAPE(postRequestElement('gender')),
'surname' => SQL_ESCAPE(postRequestElement('surname')),
'family' => SQL_ESCAPE(postRequestElement('family')),
'street' => SQL_ESCAPE(postRequestElement('street_nr')),
'city' => SQL_ESCAPE(postRequestElement('city')),
'zip' => bigintval(postRequestElement('zip')),
- 'country' => $countryData,
+ 'country' => $GLOBALS['register_country_data'],
'refid' => SQL_ESCAPE(postRequestElement('refid')),
'password' => SQL_ESCAPE(postRequestElement('pass1')),
);
} else {
// No ZIP code entered
$content = array(
- 'hash' => $hash,
- 'userid' => $userid,
+ 'hash' => $GLOBALS['register_confirm_hash'],
+ 'userid' => $filterData['register_insert_id'],
'gender' => SQL_ESCAPE(postRequestElement('gender')),
'surname' => SQL_ESCAPE(postRequestElement('surname')),
'family' => SQL_ESCAPE(postRequestElement('family')),
'street' => SQL_ESCAPE(postRequestElement('street_nr')),
'city' => SQL_ESCAPE(postRequestElement('city')),
'zip' => '',
- 'country' => $countryData,
+ 'country' => $GLOBALS['register_country_data'],
'refid' => SQL_ESCAPE(postRequestElement('refid')),
'password' => SQL_ESCAPE(postRequestElement('pass1')),
);
} // END - switch
// Display information to the user that he got mail and send it away
- $messageGuest = loadEmailTemplate('guest_register_done', $content, $userid, false);
+ $messageGuest = loadEmailTemplate('guest_register_done', $content, $filterData['register_insert_id'], false);
// Send mail to user (confirmation link!)
- sendEmail($userid, '{--GUEST_CONFIRM_LINK_SUBJECT--}', $messageGuest);
+ sendEmail($filterData['register_insert_id'], '{--GUEST_CONFIRM_LINK_SUBJECT--}', $messageGuest);
// Send mail to admin
- sendAdminNotification('{--ADMIN_NEW_ACCOUNT_SUBJECT--}', 'admin_register_done', $content, $userid);
+ sendAdminNotification('{--ADMIN_NEW_ACCOUNT_SUBJECT--}', 'admin_register_done', $content, $filterData['register_insert_id']);
+
+ // All fine
+ return true;
}
//-----------------------------------------------------------------------------
return $GLOBALS[__FUNCTION__];
}
-// Checks wether 'display_refid' is "YES"
+// Checks whether 'display_refid' is "YES"
function isDisplayRefidEnabled () {
// Is the cache entry set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether 'register_default' is "YES"
+// Checks whether 'register_default' is "YES"
function isRegisterDefaultEnabled () {
// Is the cache entry set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether 'register_generate_password_empty' is "YES"
+// Checks whether 'register_generate_password_empty' is "YES"
function isRegisterGeneratePasswordEmptyEnabled () {
// Is the cache entry set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
+// ----------------------------------------------------------------------------
+// Template helper functions
+// ----------------------------------------------------------------------------
+
+// Template helper for generating a category selection table for admin area with given configuration entry
+function doTemplateAdminRegisterCategoryTable ($templateName, $clear = false, $configEntry) {
+ // Call the inner function
+ return registerGenerateCategoryTable('admin', $configEntry);
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
break;
case 'url':
- if (!isUrlValid($v)) $SAVE = false;
+ if (!isUrlValid($v)) {
+ // Don't save the URL
+ $SAVE = false;
+ } // END - if
break;
default:
if ((!empty($k)) && ($skip == false)) {
// Add data
- $DATA['keys'][] = $k; $DATA['values'][] = $v;
+ array_push($DATA['keys'] , $k);
+ array_push($DATA['values'], $v);
} // END - if
} // END - if
} // END - foreach
// Remove last ", " from SQL string
$sql = substr($sql, 0, -2)." WHERE `id`=%s LIMIT 1";
- $DATA['values'][] = bigintval(getRequestElement('id'));
+ array_push($DATA['values'], bigintval(getRequestElement('id')));
// Generate message
$message = getMessageFromIndexedArray('{--ADMIN_SPONSOR_UPDATED--}', 'updated', $messageArray);
$ret = 'updated';
} elseif (($ALREADY === false) || (($postData['force'] == 1) && (isAdmin()))) {
// Add new sponsor, first add more data
- $DATA['keys'][] = 'status';
+ array_push($DATA['keys'], 'status');
if (($update === true) && (isAdmin()) && (getWhat() == 'add_sponsor')) {
// Only allowed for admin
- $DATA['values'][] = 'PENDING';
+ array_push($DATA['values'], 'PENDING');
// Add remote IP address as well
- $DATA['keys'][] = 'remote_addr';
- $DATA['values'][] = detectRemoteAddr();
+ array_push($DATA['keys'], 'remote_addr');
+ array_push($DATA['values'], detectRemoteAddr());
} else {
// Guest area
- $DATA['values'][] = 'UNCONFIRMED';
+ array_push($DATA['values'], 'UNCONFIRMED');
// Generate hash code
- $DATA['keys'][] = 'hash';
+ array_push($DATA['keys'], 'hash');
// @TODO Rewrite this to API function
- $DATA['values'][] = md5(session_id() . getEncryptSeparator() . $postData['email'] . getEncryptSeparator() . detectRemoteAddr() . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . time());
- $DATA['keys'][] = 'remote_addr';
- $DATA['values'][] = detectRemoteAddr();
+ array_push($DATA['values'], md5(session_id() . getEncryptSeparator() . $postData['email'] . getEncryptSeparator() . detectRemoteAddr() . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . time()));
+ array_push($DATA['keys'], 'remote_addr');
+ array_push($DATA['values'], detectRemoteAddr());
}
// Search the entry
$ret = getMessage($constantName);
} else {
// Not found
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
+ //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
$ret = '{%message,ACCOUNT_STATUS_UNKNOWN=' . $status . '%}';
}
$sql .= " `" . secureString($key) . "`='%s',";
// We will secure this later inside the SQL_QUERY_ESC() function
- $DATA[] = secureString($value);
+ array_push($DATA, secureString($value));
} // END - foreach
// Check if email has changed
// Generate hash code
// @TODO Rewrite this to API function
$HASH = md5(session_id() . getEncryptSeparator() . $postData['email'] . getEncryptSeparator() . detectRemoteAddr() . getEncryptSeparator() . detectUserAgent() . getEncryptSeparator() . time());
- $DATA[] = $HASH;
+ array_push($DATA, $HASH);
} // END - if
} // END - if
// Remove last commata
// Add SQL tail data
$sql .= " WHERE `id`=%s AND `password`='%s' LIMIT 1";
- $DATA[] = bigintval(getSession('sponsor_id'));
- $DATA[] = getSession('sponsor_pass');
+ array_push($DATA, bigintval(getSession('sponsor_id')), getSession('sponsor_pass'));
// Saving data was completed... ufff...
switch (getWhat()) {
if ($EMAIL === true) {
$message = '{--SPONSOR_ACCOUNT_EMAIL_CHANGED--}';
$templ = 'admin_sponsor_change_email';
- $subj = '{--ADMIN_SPONSOR_ACC_EMAIL_SUBJECT--}';
+ $subject = '{--ADMIN_SPONSOR_ACC_EMAIL_SUBJECT--}';
} else {
$message = '{--SPONSOR_ACCOUNT_DATA_SAVED--}';
$templ = 'admin_sponsor_change_data';
- $subj = '{--ADMIN_SPONSOR_ACC_DATA_SUBJECT--}';
+ $subject = '{--ADMIN_SPONSOR_ACC_DATA_SUBJECT--}';
}
break;
// Set message template and subject for admin
$message = '{--SPONSOR_SETTINGS_SAVED--}';
$templ = 'admin_sponsor_settings';
- $subj = '{--ADMIN_SPONSOR_SETTINGS_SUBJECT--}';
+ $subject = '{--ADMIN_SPONSOR_SETTINGS_SUBJECT--}';
break;
default: // Unknown sponsor what value!
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown sponsor module (what) %s detected.", getWhat()));
$message = '{--SPONSOR_UNKNOWN_WHAT--}';
$templ = '';
- $subj = '';
+ $subject = '';
break;
} // END - switch
// Has an entry updated?
if (!SQL_HASZEROAFFECTED()) {
// Template and subject are set?
- if (!empty($templ) && !empty($subj)) {
+ if (!empty($templ) && !empty($subject)) {
// Run SQL command and check for success
$result = SQL_QUERY_ESC($sql, $DATA, __FUNCTION__, __LINE__);
$content['new_data'] = $postData;
// Send email to admins
- sendAdminNotification($subj, $templ, $content);
+ sendAdminNotification($subject, $templ, $content);
// Shall we send mail to the sponsor's new email address?
if ($content['receive_warnings'] == 'Y') {
switch ($status) {
case 'added': // Sponsor successfully added with account status = UNCONFIRMED!
// Check for his id number
- $result = SQL_QUERY_ESC("SELECT `id`,`hash` FROM `{?_MYSQL_PREFIX?}_sponsor_data` WHERE '%s' REGEXP `email` LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id`, `hash` FROM `{?_MYSQL_PREFIX?}_sponsor_data` WHERE '%s' REGEXP `email` LIMIT 1",
array(postRequestElement('email')), __FUNCTION__, __LINE__);
if (SQL_NUMROWS($result) == 1) {
// id found so let's load it for the confirmation email
// Don't look for invalid sponsor_ids...
if (!isValidUserId($sponsor_id)) {
// Invalid, so abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Sponsor id ' . $sponsor_id . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'Sponsor id ' . $sponsor_id . ' is invalid.');
} elseif (isSponsorDataValid()) {
// Use cache, so it is fine
return true;
// Zero ids are not valid
if ($sponsor_id == 0) {
// Abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Zero sponsor_id provided');
+ reportBug(__FUNCTION__, __LINE__, 'Zero sponsor_id provided');
} // END - if
// Is it cached?
// Sponsorid must be set before it can be used
if (!isCurrentSponsorIdSet()) {
// Not set
- debug_report_bug(__FUNCTION__, __LINE__, 'Sponsor id is not set.');
+ reportBug(__FUNCTION__, __LINE__, 'Sponsor id is not set.');
} // END - if
// Return the sponsor_id
function getSponsorData ($column) {
// Sponsor id should not be zero
if (!isValidUserId(getCurrentSponsorId())) {
- debug_report_bug(__FUNCTION__, __LINE__, 'Sponsor id is zero.');
+ reportBug(__FUNCTION__, __LINE__, 'Sponsor id is zero.');
} // END - if
// Return the value
(setSession('sponsor_id', '')) &&
(setSession('sponsor_pass', '')) &&
(
- ((isExtensionActive('theme')) && (setTheme(''))) ||
+ ((isExtensionActive('theme')) && (setMailerTheme(''))) ||
(!isExtensionActive('theme'))
)
);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
//------------------------------------------------------------------------------
// Admin functions
//------------------------------------------------------------------------------
-//
+
// Admin has added an URL with given user id and so on
-function SURFBAR_ADMIN_ADD_URL ($url, $limit, $reload) {
+function doSurfbarAdminAddUrl ($url, $limit, $reload) {
// Do some pre-checks
if (!isAdmin()) {
// Not an admin
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Not admin.", $url, $limit, $reload));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Not admin.", $url, $limit, $reload));
return false;
} elseif (!isUrlValid($url)) {
// URL invalid
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Invalid URL.", $url, $limit, $reload));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Invalid URL.", $url, $limit, $reload));
return false;
- } elseif (SURFBAR_LOOKUP_BY_URL($url, 0)) {
+ } elseif (ifSurfbarHasUrlUserId($url, 0)) {
// URL already found in surfbar!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Already added.", $url, $limit, $reload));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Already added.", $url, $limit, $reload));
return false;
- } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS()) {
+ } elseif (!ifSurfbarMemberAllowedMoreUrls()) {
// No more allowed!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: No more URLs allowed.", $url, $limit, $reload));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: No more URLs allowed.", $url, $limit, $reload));
return false;
} elseif ('' . ($limit + 0) . '' != '' . $limit . '') {
// Invalid limit entered
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Invalid limit entered.", $url, $limit, $reload));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Invalid limit entered.", $url, $limit, $reload));
return false;
} elseif ('' . ($reload + 0) . '' != '' . $reload . '') {
// Invalid amount entered
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Invalid reload entered.", $url, $limit, $reload));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Cannot add URL=%s,limit=%s,reload=%s: Invalid reload entered.", $url, $limit, $reload));
return false;
}
// Register the new URL
- return SURFBAR_REGISTER_URL($url, 0, 'ACTIVE', 'unlock', array('limit' => $limit, 'reload' => $reload));
+ return doSurfbarRegisterUrl($url, 0, 'ACTIVE', 'unlock', array('limit' => $limit, 'reload' => $reload));
}
// Admin unlocked an email so we can migrate the URL
-function SURFBAR_ADMIN_MIGRATE_URL ($url, $userid) {
+function doSurfbarAdminMigrateUrl ($url, $userid) {
// Do some pre-checks
if (!isAdmin()) {
// Not an admin
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Not admin, url=' . $url . ',userid=' . $userid);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Not admin, url=' . $url . ',userid=' . $userid);
return false;
} elseif (!isUrlValid($url)) {
// URL invalid
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Invalid URL, url=' . $url . ',userid=' . $userid);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Invalid URL, url=' . $url . ',userid=' . $userid);
return false;
- } elseif (SURFBAR_LOOKUP_BY_URL($url, $userid)) {
+ } elseif (ifSurfbarHasUrlUserId($url, $userid)) {
// URL already found in surfbar!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Already added, url=' . $url . ',userid=' . $userid);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Already added, url=' . $url . ',userid=' . $userid);
return false;
- } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS($userid)) {
+ } elseif (!ifSurfbarMemberAllowedMoreUrls($userid)) {
// No more allowed!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Maximum exceeded, url=' . $url . ',userid=' . $userid);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot migrate URL: Maximum exceeded, url=' . $url . ',userid=' . $userid);
return false;
}
// Register the new URL
- return SURFBAR_REGISTER_URL($url, $userid, 'MIGRATED', 'migrate');
+ return doSurfbarRegisterUrl($url, $userid, 'MIGRATED', 'migrate');
}
// Admin function for unlocking URLs
-function SURFBAR_ADMIN_UNLOCK_URL_IDS ($IDs) {
+function doSurfbarAdminUnlockUrlIds ($IDs) {
// Is this an admin or invalid array?
if (!isAdmin()) {
// Not admin or invalid ids array
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Not admin');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Not admin');
return false;
} elseif (!is_array($IDs)) {
// No array
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs type ' . gettype($IDs) . '!=array');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs type ' . gettype($IDs) . '!=array');
return false;
} elseif (count($IDs) == 0) {
// Empty array
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs is empty');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs is empty');
return false;
}
// Update the status for all ids
foreach ($IDs as $id => $dummy) {
// Test all ids through (ignores failed)
- $done = (($done) && (SURFBAR_CHANGE_STATUS($id, 'PENDING', 'ACTIVE')));
+ $done = (($done) && (changeSurfbarUrlStatus($id, 'PENDING', 'ACTIVE')));
} // END - if
// Return total status
}
// Admin function for rejecting URLs
-function SURFBAR_ADMIN_REJECT_URL_IDS ($IDs) {
+function doSurfbarAdminRejectUrlIds ($IDs) {
// Is this an admin or invalid array?
if (!isAdmin()) {
// Not admin or invalid ids array
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Not admin');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Not admin');
return false;
} elseif (!is_array($IDs)) {
// No array
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs type ' . gettype($IDs) . '!=array');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs type ' . gettype($IDs) . '!=array');
return false;
} elseif (count($IDs) == 0) {
// Empty array
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs is empty');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: IDs is empty');
return false;
}
// Update the status for all ids
foreach ($IDs as $id => $dummy) {
// Test all ids through (ignores failed)
- $done = (($done) && (SURFBAR_CHANGE_STATUS($id, 'PENDING', 'REJECTED')));
+ $done = (($done) && (changeSurfbarUrlStatus($id, 'PENDING', 'REJECTED')));
} // END - if
// Return total status
return $done;
}
-//
//------------------------------------------------------------------------------
// Member functions
//------------------------------------------------------------------------------
-//
+
// Member has added an URL
-function SURFBAR_MEMBER_ADD_URL ($url, $limit) {
+function doSurfbarMemberAddUrl ($url, $limit) {
// Do some pre-checks
if (!isMember()) {
// Not a member
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Not member');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: isMember()=false');
return false;
} elseif ((!isUrlValid($url)) && (!isAdmin())) {
// URL invalid
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Invalid, url=' . $url . ',limit=' . $limit);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Invalid, url=' . $url . ',limit=' . $limit);
return false;
- } elseif (SURFBAR_LOOKUP_BY_URL($url, getMemberId())) {
+ } elseif (ifSurfbarHasUrlUserId($url, getMemberId())) {
// URL already found in surfbar!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Already found, url=' . $url . ',limit=' . $limit);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Already found, url=' . $url . ',limit=' . $limit);
return false;
- } elseif (!SURFBAR_IF_USER_BOOK_MORE_URLS(getMemberId())) {
+ } elseif (!ifSurfbarMemberAllowedMoreUrls(getMemberId())) {
// No more allowed!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Maximum exceeded, url=' . $url . ',limit=' . $limit);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Maximum exceeded, url=' . $url . ',limit=' . $limit);
return false;
} elseif (''.($limit + 0).'' != ''.$limit.'') {
// Invalid amount entered
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Invalid limit, url=' . $url . ',limit=' . $limit);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Invalid limit, url=' . $url . ',limit=' . $limit);
return false;
}
// Register the new URL
- return SURFBAR_REGISTER_URL($url, getMemberId(), 'PENDING', 'reg', array('limit' => $limit));
+ return doSurfbarRegisterUrl($url, getMemberId(), 'PENDING', 'reg', array('limit' => $limit));
}
// Create list of actions depending on status for the user
-function SURFBAR_MEMBER_ACTIONS ($urlId, $status) {
+function generateSurfbarMemberActions ($urlId, $status) {
// Load all actions in an array for given status
- $actionArray = SURFBAR_GET_ARRAY_FROM_STATUS($status);
-
- // Init HTML code
- $OUT = '<table border="0" cellspacing="0" cellpadding="1" width="100%">
-<tr>';
+ $actionArray = getSurfbarArrayFromStatus($status);
// Calculate width
$width = round(100 / count($actionArray));
// "Walk" through all actions and create forms
+ $OUT = '';
foreach ($actionArray as $actionId => $action) {
// Add form for this action
$OUT .= loadTemplate('member_list_surfbar_form', true, array(
));
} // END - foreach
- // Close table
- $OUT .= '</tr>
-</table>';
+ // Load main template
+ $output = loadTemplate('member_list_surfbar_table', true, $OUT);
// Return code
- return $OUT;
+ return $output;
}
// Do the member form request
-function SURFBAR_MEMBER_DO_FORM ($formData, $urlArray) {
+function doSurfbarMemberByFormData ($formData, $urlArray) {
// By default no action is performed
$performed = false;
// Is this a member?
if (!isMember()) {
// No member!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Not member');
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: isMember()=false');
return false;
- } elseif ((!isset($formData['id'])) || (!isset($formData['action']))) {
+ } elseif ((!isset($formData['url_id'])) || (!isset($formData['action']))) {
// Important form elements are missing!
/* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Invalid form data, required field id/action not found');
return false;
- } elseif (!isset($urlArray[$formData['id']])) {
+ } elseif (!isset($urlArray[$formData['url_id']])) {
// Id not found in cache
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Field id not found in cache');
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Field url_id not found in cache');
return false;
- } elseif (!SURFBAR_VALIDATE_MEMBER_ACTION_STATUS($formData['action'], $urlArray[$formData['id']]['url_status'])) {
+ } elseif (!isSurfbarMemberActionStatusValid($formData['action'], $urlArray[$formData['url_id']]['url_status'])) {
// Action not allowed for current URL status
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Action not allowed to perform. action=' . $formData['action'] . ',url_status=' . $urlArray[$formData['id']]['url_status'] . 'id=' . $formData['id']);
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cannot add URL: Action not allowed to perform. action=' . $formData['action'] . ',url_status=' . $urlArray[$formData['url_id']]['url_status'] . ',url_id=' . $formData['url_id']);
return false;
}
} // END - if
// Create the function name for selected action
- $functionName = sprintf("SURFBAR_MEMBER_%s_ACTION", strtoupper($action));
+ $functionName = sprintf("doSurfbarMember%sAction", firstCharUpperCase($action));
// Is the function there?
if (function_exists($functionName)) {
// Add new status
- $urlArray[$formData['id']]['new_status'] = SURFBAR_GET_NEW_STATUS('new_status');
+ $urlArray[$formData['url_id']]['new_status'] = gerSurfbarNewStatus('new_status');
// Extract URL data for call-back
- $urlData = array(merge_array($urlArray[$formData['id']], array($action => $formData)));
+ $urlData = array(merge_array($urlArray[$formData['url_id']], array($action => $formData)));
// Action found so execute it
$performed = call_user_func_array($functionName, $urlData);
} else {
// Log invalid request
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid member action! action=' . $formData['action'] . ',id=' . $formData['id'] . ',function=' . $functionName);
+ reportBug(__FUNCTION__, __LINE__, 'Invalid member action! action=' . $formData['action'] . ',url_id=' . $formData['url_id'] . ',function=' . $functionName);
}
// Return status
return $performed;
}
+// Getter for surfbar_actions table by given id number
+function getSurfbarActionsDataById ($columnName, $id) {
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__][$id][$columnName])) {
+ // Default is not found
+ $GLOBALS[__FUNCTION__][$id][$columnName] = '*INVALID*';
+
+ // Search for it
+ $result = SQL_QUERY_ESC("SELECT `%s` FROM `{?_MYSQL_PREFIX?}_surfbar_actions` WHERE `actions_id`=%s LIMIT 1",
+ array(
+ $columnName,
+ bigintval($id)
+ ), __FUNCTION__, __LINE__);
+
+ // Is there an entry?
+ if (SQL_NUMROWS($result) == 1) {
+ // Load it
+ list($GLOBALS[__FUNCTION__][$id][$columnName]) = SQL_FETCHROW($result);
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+ } // END - if
+
+ // Return value
+ return $GLOBALS[__FUNCTION__][$id][$columnName];
+}
+
// Validate if the requested action can be performed on current URL status
-function SURFBAR_VALIDATE_MEMBER_ACTION_STATUS ($action, $status) {
+function isSurfbarMemberActionStatusValid ($action, $status) {
// Search for the requested action/status combination in database
$result = SQL_QUERY_ESC("SELECT `actions_new_status` FROM `{?_MYSQL_PREFIX?}_surfbar_actions` WHERE `actions_action`='%s' AND `actions_status`='%s' LIMIT 1",
- array($action, $status), __FUNCTION__, __LINE__);
+ array(
+ strtoupper($action),
+ strtoupper($status)
+ ), __FUNCTION__, __LINE__);
// Is the entry there?
$isValid = (SQL_NUMROWS($result) == 1);
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'action=' . $action . ',status=' . $status . ',isValid=' . intval($isValid));
+
// Fetch the new status if found
- if ($isValid) {
+ if ($isValid === true) {
// Load new status
list($GLOBALS['surfbar_cache']['new_status']) = SQL_FETCHROW($result);
} // END - if
return $isValid;
}
-//
//------------------------------------------------------------------------------
// Member actions
//------------------------------------------------------------------------------
-//
+
// Retreat a booked URL
-function SURFBAR_MEMBER_RETREAT_ACTION ($urlData) {
+function doSurfbarMemberRetreatAction ($urlData) {
// Create the data array for next function call
$data = array(
- $urlData['id'] => $urlData
+ $urlData['url_id'] => $urlData
);
// Simply change the status here
- return SURFBAR_CHANGE_STATUS ($urlData['id'], $urlData['url_status'], $urlData['new_status'], $data);
+ return changeSurfbarUrlStatus ($urlData['url_id'], $urlData['url_status'], $urlData['new_status'], $data);
}
// Book an URL now (from migration)
-function SURFBAR_MEMBER_BOOKNOW_ACTION ($urlData) {
+function doSurfbarMemberBooknowAction ($urlData) {
// Create the data array for next function call
$data = array(
- $urlData['id'] => $urlData
+ $urlData['url_id'] => $urlData
);
// Simply change the status here
- return SURFBAR_CHANGE_STATUS ($urlData['id'], $urlData['url_status'], $urlData['new_status'], $data);
+ return changeSurfbarUrlStatus ($urlData['url_id'], $urlData['url_status'], $urlData['new_status'], $data);
}
// Show edit form or do the changes
-function SURFBAR_MEMBER_EDIT_ACTION ($urlData) {
+function doSurfbarMemberEditAction ($urlData) {
// Is the "execute" flag there?
if (isset($urlData['edit']['execute'])) {
// Execute the changes
- return SURFBAR_MEMBER_EXECUTE_ACTION('edit', $urlData);
+ return executeSurfbarMemberAction('edit', $urlData);
} // END - if
// Display form
- return SURFBAR_MEMBER_DISPLAY_ACTION_FORM('edit', $urlData);
+ return displaySurfbarMemberActionForm('edit', $urlData);
}
// Show delete form or do the changes
-function SURFBAR_MEMBER_DELETE_ACTION ($urlData) {
+function doSurfbarMemberDeleteAction ($urlData) {
// Is the "execute" flag there?
if (isset($urlData['delete']['execute'])) {
// Execute the changes
- return SURFBAR_MEMBER_EXECUTE_ACTION('delete', $urlData);
+ return executeSurfbarMemberAction('delete', $urlData);
} // END - if
// Display form
- return SURFBAR_MEMBER_DISPLAY_ACTION_FORM('delete', $urlData);
+ return displaySurfbarMemberActionForm('delete', $urlData);
}
// Pause active banner
-function SURFBAR_MEMBER_PAUSE_ACTION ($urlData) {
- return SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['url_status'], $urlData['new_status'], array($urlData['id'] => $urlData));
+function doSurfbarMemberPauseAction ($urlData) {
+ return changeSurfbarUrlStatus($urlData['url_id'], $urlData['url_status'], $urlData['new_status'], array($urlData['url_id'] => $urlData));
}
// Unpause stopped banner
-function SURFBAR_MEMBER_UNPAUSE_ACTION ($urlData) {
+function doSurfbarMemberUnpauseAction ($urlData) {
// Fix missing entry for template
$urlData['edit'] = $urlData['unpause'];
$urlData['edit']['url'] = $urlData['url'];
- $urlData['edit']['limit'] = SURFBAR_GET_VIEWS_MAX();
+ $urlData['edit']['limit'] = gerSurfbarViewsMax();
// Return status change
- return SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['url_status'], $urlData['new_status'], array($urlData['id'] => $urlData));
+ return changeSurfbarUrlStatus($urlData['url_id'], $urlData['url_status'], $urlData['new_status'], array($urlData['url_id'] => $urlData));
}
// Resubmit locked URL
-function SURFBAR_MEMBER_RESUBMIT_ACTION ($urlData) {
- return SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['url_status'], $urlData['new_status'], array($urlData['id'] => $urlData));
+function doSurfbarMemberResubmitAction ($urlData) {
+ return changeSurfbarUrlStatus($urlData['url_id'], $urlData['url_status'], $urlData['new_status'], array($urlData['url_id'] => $urlData));
}
// Display selected "action form"
-function SURFBAR_MEMBER_DISPLAY_ACTION_FORM ($action, $urlData) {
+function displaySurfbarMemberActionForm ($action, $urlData) {
// Translate some data if present
- $content = SURFBAR_PREPARE_CONTENT_FOR_TEMPLATE($content);
+ $content = prepareSurfbarContentForTemplate($content);
// Include fields only for action 'edit'
if ($action == 'edit') {
$urlData['limited'] = 'false';
// Is this URL limited?
- if (SURFBAR_GET_VIEWS_MAX() > 0) {
+ if (gerSurfbarViewsMax() > 0) {
// Then rewrite form data
$urlData['limited_yes'] = ' checked="checked"';
$urlData['limited_no'] = '';
}
// Execute choosen action
-function SURFBAR_MEMBER_EXECUTE_ACTION ($action, $urlData) {
+function executeSurfbarMemberAction ($action, $urlData) {
// By default nothing is executed
$executed = false;
} // END - if
// Construct function name
- $functionName = sprintf("SURFBAR_MEMBER_EXECUTE_%s_ACTION", strtoupper($action));
+ $functionName = sprintf("executeSurfbarMember%sAction", firstCharUpperCase($action));
// Is that function there?
if (function_exists($functionName)) {
// Execute the function
if (call_user_func_array($functionName, array($urlData)) == true) {
// Update status as well
- $executed = SURFBAR_CHANGE_STATUS($urlData['id'], $urlData['url_status'], $urlData['new_status'], array($urlData['id'] => $urlData));
+ $executed = changeSurfbarUrlStatus($urlData['url_id'], $urlData['url_status'], $urlData['new_status'], array($urlData['url_id'] => $urlData));
} // END - if
} else {
// Not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Callback function ' . $functionName . ' not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Callback function ' . $functionName . ' does not exist.');
}
// Return status
return $executed;
}
+
// "Execute edit" function: Update changed data
-function SURFBAR_MEMBER_EXECUTE_EDIT_ACTION ($urlData) {
+function executeSurfbarMemberEditAction ($urlData) {
// Default is nothing done
$status = false;
$urlData['url'],
$urlData['edit']['limit'],
$urlData['edit']['limit'],
- $urlData['id'],
+ $urlData['url_id'],
$urlData['url_status']
), __FUNCTION__, __LINE__);
// Return status
return $status;
}
+
// "Execute delete" function: Does nothing...
-function SURFBAR_MEMBER_EXECUTE_DELETE_ACTION ($urlData) {
+function executeSurfbarMemberDeleteAction ($urlData) {
// Nothing special to do (see above function for such "special actions" to perform)
return true;
}
-//
+
//------------------------------------------------------------------------------
// Self-maintenance functions
//------------------------------------------------------------------------------
-//
+
// Main function
-function SURFBAR_HANDLE_SELF_MAINTENANCE () {
+function doSurfbarSelfMaintenance () {
// Handle URLs which limit has depleted so we can stop them
- SURFBAR_HANDLE_DEPLETED_VIEWS();
+ doHandleSurfbarDepletedViews();
// Handle low-points amounts
- SURFBAR_HANDLE_LOW_POINTS();
+ doHandleSurfbarLowPoints();
}
// Handle URLs which limit has depleted
-function SURFBAR_HANDLE_DEPLETED_VIEWS () {
+function doHandleSurfbarDepletedViews () {
// Get all URLs
- $urlArray = SURFBAR_GET_URL_DATA(0, 'url_views_max', 'url_id', 'ASC', 'url_id', " AND `url_views_allowed` > 0 AND `url_status`='ACTIVE'");
+ $urlArray = getSurfbarUrlData(0, 'url_views_max', 'url_id', 'ASC', 'url_id', " AND `url_views_allowed` > 0 AND `url_status`='ACTIVE'");
// Do we have some entries?
if (count($urlArray) > 0) {
);
// Handle the status
- SURFBAR_CHANGE_STATUS($id, 'ACTIVE', 'DEPLETED', $urlData);
+ changeSurfbarUrlStatus($id, 'ACTIVE', 'DEPLETED', $urlData);
} // END - foreach
} // END - if
}
// Alert users which have URLs booked and are low on points amount
-function SURFBAR_HANDLE_LOW_POINTS () {
+function doHandleSurfbarLowPoints () {
// Get all userids
- $userids = SURFBAR_DETERMINE_DEPLETED_USERIDS(getConfig('surfbar_warn_low_points'));
+ $userids = determineSurfbarDepletedUserids(getConfig('surfbar_warn_low_points'));
// "Walk" through all URLs
foreach ($userids['url_userid'] as $userid => $dummy) {
);
// Notify this user
- SURFBAR_NOTIFY_USER('low_points', $content);
+ doSurfbarNotifyMember('low_points', $content);
// Update last notified
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `surfbar_low_notified`=NOW() WHERE `userid`=%s LIMIT 1",
//
// Looks up by an URL
-function SURFBAR_LOOKUP_BY_URL ($url, $userid) {
+function ifSurfbarHasUrlUserId ($url, $userid) {
// Now lookup that given URL by itself
- $urlArray = SURFBAR_GET_URL_DATA($url, 'url', 'url_id', 'ASC', 'url_id', sprintf(" AND `url_userid`=%s", bigintval($userid)));
+ $urlArray = getSurfbarUrlData($url, 'url', 'url_id', 'ASC', 'url_id', sprintf(" AND `url_userid`=%s", bigintval($userid)));
// Was it found?
return (count($urlArray) > 0);
}
// Load URL data by given search term and column
-function SURFBAR_GET_URL_DATA ($searchTerm, $column = 'url_id', $order = 'url_id', $sort = 'ASC', $group = 'url_id', $add = '') {
+function getSurfbarUrlData ($searchTerm, $column = 'url_id', $order = 'url_id', $sort = 'ASC', $group = 'url_id', $add = '') {
// By default nothing is found
$GLOBALS['last_url_data'] = array();
$searchTerm = bigintval($searchTerm);
} // END - if
- // If the column is 'id' there can be only one entry
+ // If the column is 'url_id' there can be only one entry
$limit = '';
- if ($column == 'id') {
+ if ($column == 'url_id') {
$limit = "LIMIT 1";
} // END - if
return $GLOBALS['last_url_data'];
}
-// Registers an URL with the surfbar. You should have called SURFBAR_LOOKUP_BY_URL() first!
-function SURFBAR_REGISTER_URL ($url, $userid, $status = 'PENDING', $addMode = 'reg', $extraFields = array()) {
+// Registers an URL with the surfbar. You should have called ifSurfbarHasUrlUserId() first!
+function doSurfbarRegisterUrl ($url, $userid, $status = 'PENDING', $addMode = 'reg', $extraFields = array()) {
// Make sure by the user registered URLs are always pending
if ($addMode == 'reg') {
$status = 'PENDING';
} // END - if
// Insert the URL into database
- $content['insert_id'] = SURFBAR_INSERT_URL_BY_ARRAY($content);
+ $content['insert_id'] = insertSurfbarUrlByArray($content);
// Is this id valid?
if ($content['insert_id'] == '0') {
// If in reg-mode we notify admin
if (($addMode == 'reg') || (getConfig('surfbar_notify_admin_unlock') == 'Y')) {
// Notify admin even when he as unlocked an email
- SURFBAR_NOTIFY_ADMIN('url_' . $addMode, $content);
+ doSurfbarNotifyAdmin('url_' . $addMode, $content);
} // END - if
// Send mail to user
- SURFBAR_NOTIFY_USER('url_' . $addMode, $content);
+ doSurfbarNotifyMember('url_' . $addMode, $content);
// Return the insert id
return $content['insert_id'];
}
// Inserts an url by given data array and return the insert id
-function SURFBAR_INSERT_URL_BY_ARRAY ($urlData) {
+function insertSurfbarUrlByArray ($urlData) {
// Get userid
$userid = bigintval($urlData['url_userid']);
}
// Notify admin(s) with a selected message and content
-function SURFBAR_NOTIFY_ADMIN ($messageType, $content) {
+function doSurfbarNotifyAdmin ($messageType, $content) {
// Prepare template name
$templateName = sprintf("admin_surfbar_%s", $messageType);
} // END - if
// Translate some data if present
- $content = SURFBAR_PREPARE_CONTENT_FOR_TEMPLATE($content);
+ $content = prepareSurfbarContentForTemplate($content);
// Send the notification out
return sendAdminNotification($subject, $templateName, $content, $content['url_userid']);
}
// Notify the user about the performed action
-function SURFBAR_NOTIFY_USER ($messageType, $content) {
+function doSurfbarNotifyMember ($messageType, $content) {
// Skip notification if userid is zero
if ($content['url_userid'] == '0') {
return false;
} // END - if
// Translate some data if present
- $content = SURFBAR_PREPARE_CONTENT_FOR_TEMPLATE($content);
+ $content = prepareSurfbarContentForTemplate($content);
// Load template
$mailText = loadEmailTemplate($templateName, $content, $content['url_userid']);
// Translates some data for template usage
// @TODO Can't we use our new expression language instead of this ugly code?
-function SURFBAR_PREPARE_CONTENT_FOR_TEMPLATE ($content) {
+function prepareSurfbarContentForTemplate ($content) {
// Prepare some code
if (isset($content['url_registered'])) $content['url_registered'] = generateDateTime($content['url_registered'], 2);
if (isset($content['url_last_locked'])) $content['url_last_locked'] = generateDateTime($content['url_last_locked'], 2);
}
// Determine reward
-function SURFBAR_DETERMINE_REWARD ($onlyMin = false) {
+function determineSurfbarReward ($onlyMin = false) {
// Static values are default
$reward = getConfig('surfbar_static_reward');
if (getSurfbarPaymentModel() == 'DYNAMIC') {
// "Calculate" dynamic reward
if ($onlyMin === true) {
- $reward += SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE();
+ $reward += calculateSurfbarDynamicMininumValue();
} else {
- $reward += SURFBAR_CALCULATE_DYNAMIC_ADD();
+ $reward += calculateSurfbarDynamicAddValue();
}
} // END - if
}
// Determine costs
-function SURFBAR_DETERMINE_COSTS ($onlyMin=false) {
+function determineSurfbarCosts ($onlyMin=false) {
// Static costs is default
$costs = getConfig('surfbar_static_costs');
if (getSurfbarPaymentModel() == 'DYNAMIC') {
// "Calculate" dynamic costs
if ($onlyMin) {
- $costs += SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE();
+ $costs += calculateSurfbarDynamicMininumValue();
} else {
- $costs += SURFBAR_CALCULATE_DYNAMIC_ADD();
+ $costs += calculateSurfbarDynamicAddValue();
}
} // END - if
}
// "Calculate" dynamic add
-function SURFBAR_CALCULATE_DYNAMIC_ADD () {
+function calculateSurfbarDynamicAddValue () {
// Get min/max values
- $min = SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE();
- $max = SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE();
+ $min = calculateSurfbarDynamicMininumValue();
+ $max = calculateSurfbarDynamicMaximumValue();
// "Calculate" dynamic part and return it
return mt_rand($min, $max);
}
// Determine right template name
-function SURFBAR_DETERMINE_TEMPLATE_NAME() {
+function determineSurfbarTemplateName() {
// Default is the frameset
$templateName = 'surfbar_frameset';
// Any frame set? ;-)
- if (isGetRequestElementSet('frame')) {
+ if (!isFullPage()) {
// Use the frame as a template name part... ;-)
$templateName = sprintf("surfbar_frame_%s",
getRequestElement('frame')
return $templateName;
}
-// Check if the "reload lock" of the current user is full, call this function
-// before you call SURFBAR_CHECK_RELOAD_LOCK().
-function SURFBAR_CHECK_RELOAD_FULL () {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Fixed surf lock is ' . getConfig('surfbar_static_lock') . ' - ENTERED!');
+/**
+ * Check if the "reload lock" of the current user is full, call this function
+ * before you call ifSurfbarReloadLock().
+ */
+function isSurfbarReloadFull () {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Fixed surf lock is ' . getConfig('surfbar_static_lock') . ' - ENTERED!');
// Default is full!
$isFull = true;
$GLOBALS['surfbar_cache']['surf_lock'] = getConfig('surfbar_static_lock');
// Do we have dynamic model?
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'surf_lock=' . $GLOBALS['surfbar_cache']['surf_lock'] . ' - BEFORE');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'surf_lock=' . $GLOBALS['surfbar_cache']['surf_lock'] . ' - BEFORE');
if (getSurfbarPaymentModel() == 'DYNAMIC') {
// "Calculate" dynamic lock
- $GLOBALS['surfbar_cache']['surf_lock'] += SURFBAR_CALCULATE_DYNAMIC_ADD();
+ $GLOBALS['surfbar_cache']['surf_lock'] += calculateSurfbarDynamicAddValue();
} // END - if
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'surf_lock=' . $GLOBALS['surfbar_cache']['surf_lock'] . ' - AFTER');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'surf_lock=' . $GLOBALS['surfbar_cache']['surf_lock'] . ' - AFTER');
// Ask the database
$result = SQL_QUERY_ESC("SELECT
u.`url_id`=l.`locks_url_id`
WHERE
l.`locks_userid`=%s AND
- (UNIX_TIMESTAMP() - {%%pipe,SURFBAR_GET_SURF_LOCK%%}) < UNIX_TIMESTAMP(l.`locks_last_surfed`) AND
+ (UNIX_TIMESTAMP() - {%%pipe,gerSurfbarSurfLock%%}) < UNIX_TIMESTAMP(l.`locks_last_surfed`) AND
(
((UNIX_TIMESTAMP(l.`locks_last_surfed`) - u.`url_fixed_reload`) < 0 AND u.`url_fixed_reload` > 0) OR
u.`url_fixed_reload` = 0
SQL_FREERESULT($result);
// Get total URLs
- $total = SURFBAR_GET_TOTAL_URLS();
+ $total = getSurfbarTotalUrls();
// Do we have some URLs in lock? Admins can always surf on own URLs!
- $isFull = ((SURFBAR_GET_USER_LOCKS() == $total) && ($total > 0));
+ $isFull = ((getSurfbarUserLocks() == $total) && ($total > 0));
// Return result
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userLocks=' . SURFBAR_GET_USER_LOCKS() . ',total=' . $total . 'isFull=' . intval($isFull) . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userLocks=' . getSurfbarUserLocks() . ',total=' . $total . 'isFull=' . intval($isFull) . ' - EXIT!');
return $isFull;
}
// Get total amount of URLs of given status for current user or of ACTIVE URLs by default
-function SURFBAR_GET_TOTAL_URLS ($status = 'ACTIVE', $excludeUserId = NULL) {
+function getSurfbarTotalUrls ($status = 'ACTIVE', $excludeUserId = NULL) {
// Determine depleted user account
- $userids = SURFBAR_DETERMINE_DEPLETED_USERIDS();
+ $userids = determineSurfbarDepletedUserids();
// If we dont get any user ids back, there are no URLs
if (count($userids['url_userid']) == 0) {
FROM
`{?_MYSQL_PREFIX?}_surfbar_urls`
WHERE
- `url_userid` NOT IN (".implode(', ', $userids['url_userid']).") AND
+ (`url_userid` NOT IN (".implode(', ', $userids['url_userid']).") OR `url_userid` IS NULL) AND
`url_status`='%s'
LIMIT 1",
array($status), __FUNCTION__, __LINE__
SQL_FREERESULT($result);
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'cnt=' . $count);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'cnt=' . $count . ' - EXIT!');
// Return result
return $count;
}
-// Check wether the user is allowed to book more URLs
-function SURFBAR_IF_USER_BOOK_MORE_URLS ($userid = NULL) {
+// Check whether the user is allowed to book more URLs
+function ifSurfbarMemberAllowedMoreUrls ($userid = NULL) {
// Is this admin and userid is zero or does the user has some URLs left to book?
- return (((is_null($userid)) && (isAdmin())) || (SURFBAR_GET_TOTAL_USER_URLS($userid, '', array('REJECTED')) < getSurfbarMaxOrder()));
+ return (((is_null($userid)) && (isAdmin())) || (getSurfbarTotalUserUrls($userid, '', array('REJECTED')) < getSurfbarMaxOrder()));
}
// Get total amount of URLs of given status for current user
-function SURFBAR_GET_TOTAL_USER_URLS ($userid = NULL, $status = '', $exclude = '') {
+function getSurfbarTotalUserUrls ($userid = NULL, $status = '', $exclude = '') {
// Is the user 0 and user is logged in?
if ((is_null($userid)) && (isMember())) {
// Then use this userid
// Is the status set?
if (is_array($status)) {
// Only URLs with these status
- $add = sprintf(" WHERE `url_status` IN('%s')", implode("','", $status));
+ $add = sprintf(" AND `url_status` IN('%s')", implode("','", $status));
} elseif (!empty($status)) {
// Only URLs with this status
- $add = sprintf(" WHERE `url_status`='%s'", $status);
+ $add = sprintf(" AND `url_status`='%s'", $status);
} elseif (is_array($exclude)) {
// Exclude URLs with these status
- $add = sprintf(" WHERE `url_status` NOT IN('%s')", implode("','", $exclude));
+ $add = sprintf(" AND `url_status` NOT IN('%s')", implode("','", $exclude));
} elseif (!empty($exclude)) {
// Exclude URLs with this status
- $add = sprintf(" WHERE `url_status` != '%s'", $exclude);
+ $add = sprintf(" AND `url_status` != '%s'", $exclude);
}
// Get amount from database
}
// Generate a validation code for the given id number
-function SURFBAR_GENERATE_VALIDATION_CODE ($urlId, $salt = '') {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',salt=' . $salt . ' - ENTERED!');
+function generateSurfbarValidationCode ($urlId, $salt = '') {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',salt=' . $salt . ' - ENTERED!');
// Init hash with invalid value
if (empty($salt)) {
// Generate random hashed string
$GLOBALS['surfbar_cache']['salt'] = sha1(generatePassword(mt_rand(200, 255)));
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'newSalt='.SURFBAR_GET_SALT().'', false);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'newSalt='.gerSurfbarSalt().'', false);
} else {
// Use this as salt!
$GLOBALS['surfbar_cache']['salt'] = $salt;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'oldSalt='.SURFBAR_GET_SALT().'', false);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'oldSalt='.gerSurfbarSalt().'', false);
}
// Hash it with md5() and salt it with the random string
- $hashedCode = generateHash(md5($urlId . getEncryptSeparator() . getMemberId()), SURFBAR_GET_SALT());
+ $hashedCode = generateHash(md5($urlId . getEncryptSeparator() . getMemberId()), gerSurfbarSalt());
// Finally encrypt it PGP-like and return it
$valHashedCode = encodeHashForCookie($hashedCode);
// Return hashed value
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',salt=' . $salt . ',urlId=' . $urlId . ',salt=' . $salt . ',valHashedCode=' . $valHashedCode . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',salt=' . $salt . ',urlId=' . $urlId . ',salt=' . $salt . ',valHashedCode=' . $valHashedCode . ' - EXIT!');
return $valHashedCode;
}
// Check validation code
-function SURFBAR_CHECK_VALIDATION_CODE ($urlId, $check, $salt) {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',check=' . $check . ',salt=' . $salt . ' - ENTERED!');
+function isSurfbarValidationCodeValid ($urlId, $check, $salt) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',check=' . $check . ',salt=' . $salt . ' - ENTERED!');
// Secure id number
$urlId = bigintval($urlId);
// Now generate the code again
- $code = SURFBAR_GENERATE_VALIDATION_CODE($urlId, $salt);
+ $code = generateSurfbarValidationCode($urlId, $salt);
// Return result of checking hashes and salts
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',(code==check)=' . intval($code == $check) . ',(salt==salts_last_salt)=' . intval($salt == SURFBAR_GET_DATA('salts_last_salt')) . ' - EXIT!');
- return (($code == $check) && ($salt == SURFBAR_GET_DATA('salts_last_salt')));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',(code==check)=' . intval($code == $check) . ',(salt==salts_last_salt)=' . intval($salt == getSurfbarData('salts_last_salt')) . ' - EXIT!');
+ return (($code == $check) && ($salt == getSurfbarData('salts_last_salt')));
}
// Lockdown the userid/id combination (reload lock)
-function SURFBAR_LOCKDOWN_ID ($urlId) {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',getMemberId()=' . getMemberId() . ' - ENTERED!');
+function addSurfbarReloadLockById ($urlId) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',getMemberId()=' . getMemberId() . ' - ENTERED!');
// Search for an entry
$countLock = countSumTotalData(getMemberId(), 'surfbar_locks', 'locks_id', 'locks_userid', true, ' AND `locks_url_id`=' . bigintval($urlId));
getMemberId()
), __FUNCTION__, __LINE__);
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',getMemberId()=' . getMemberId() . ',SQL_AFFECTEDROWS()=' . SQL_AFFECTEDROWS() . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',getMemberId()=' . getMemberId() . ',SQL_AFFECTEDROWS()=' . SQL_AFFECTEDROWS() . ' - EXIT!');
}
// Pay points to the user and remove it from the sender if userid is given else it is a "sponsored surf"
-function SURFBAR_PAY_POINTS () {
+function doSurfbarPayPoints () {
// Remove it from the URL owner
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.SURFBAR_GET_USERID().',costs='.SURFBAR_GET_COSTS() . ' - ENTERED!');
- if (isValidUserId(SURFBAR_GET_USERID())) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.gerSurfbarUserid().',costs='.gerSurfbarCosts() . ' - ENTERED!');
+ if (isValidUserId(gerSurfbarUserid())) {
// Subtract points and ignore return status
- subtractPoints(sprintf("surfbar_%s", getSurfbarPaymentModel()), SURFBAR_GET_USERID(), SURFBAR_GET_COSTS());
+ subtractPoints(sprintf("surfbar_%s", getSurfbarPaymentModel()), gerSurfbarUserid(), gerSurfbarCosts());
} // END - if
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.getMemberId().',reward='.SURFBAR_GET_REWARD());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.getMemberId().',reward='.gerSurfbarReward());
// Init referral system here
initReferralSystem();
// Book it to the user and ignore return status
- addPointsThroughReferralSystem(sprintf("surfbar:%s", getSurfbarPaymentModel()), getMemberId(), SURFBAR_GET_REWARD());
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.SURFBAR_GET_USERID().',costs='.SURFBAR_GET_COSTS() . ' - EXIT!');
+ addPointsThroughReferralSystem(sprintf("surfbar:%s", getSurfbarPaymentModel()), getMemberId(), gerSurfbarReward());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.gerSurfbarUserid().',costs='.gerSurfbarCosts() . ' - EXIT!');
}
// Updates the statistics of current URL/userid
-function SURFBAR_UPDATE_INSERT_STATS_RECORD () {
+function updateInsertSurfbarStatisticsRecord () {
// Init add
$add = '';
// Get allowed views
- $allowed = SURFBAR_GET_VIEWS_ALLOWED();
+ $allowed = gerSurfbarViewsAllowed();
// Do we have a limit?
if ($allowed > 0) {
// Update URL stats
SQL_QUERY_ESC('UPDATE `{?_MYSQL_PREFIX?}_surfbar_urls` SET `url_views_total`=`url_views_total`+1' . $add . ' WHERE `url_id`=%s LIMIT 1',
- array(SURFBAR_GET_ID()), __FUNCTION__, __LINE__);
+ array(gerSurfbarId()), __FUNCTION__, __LINE__);
// Update the stats entry
SQL_QUERY_ESC('UPDATE `{?_MYSQL_PREFIX?}_surfbar_stats` SET `stats_count`=`stats_count`+1 WHERE `stats_userid`=%s AND `stats_url_id`=%s LIMIT 1',
array(
getMemberId(),
- SURFBAR_GET_ID()
+ gerSurfbarId()
), __FUNCTION__, __LINE__);
// Was that update okay?
SQL_QUERY_ESC('INSERT INTO `{?_MYSQL_PREFIX?}_surfbar_stats` (`stats_userid`,`stats_url_id`,`stats_count`) VALUES (%s,%s,1)',
array(
getMemberId(),
- SURFBAR_GET_ID()
+ gerSurfbarId()
), __FUNCTION__, __LINE__);
} // END - if
}
// Update the salt for validation and statistics
-function SURFBAR_UPDATE_SALT_STATS () {
+function updateSurfbarSaltStatistics () {
// Update salt
- SURFBAR_GENERATE_VALIDATION_CODE(SURFBAR_GET_ID());
+ generateSurfbarValidationCode(gerSurfbarId());
// Make sure only valid salts can pass
- if (SURFBAR_GET_SALT() == 'INVALID') {
+ if (gerSurfbarSalt() == 'INVALID') {
// Invalid provided
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid salt provided, id=' . SURFBAR_GET_ID() . ',getMemberId()=' . getMemberId());
+ reportBug(__FUNCTION__, __LINE__, 'Invalid salt provided, id=' . gerSurfbarId() . ',getMemberId()=' . getMemberId());
} // END - if
// Update statistics record
- SURFBAR_UPDATE_INSERT_STATS_RECORD();
+ updateInsertSurfbarStatisticsRecord();
// Simply store the salt from cache away in database...
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_surfbar_salts` SET `salts_last_salt`='%s' WHERE `salts_url_id`=%s AND `salts_userid`=%s LIMIT 1",
array(
- SURFBAR_GET_SALT(),
- SURFBAR_GET_ID(),
+ gerSurfbarSalt(),
+ gerSurfbarId(),
getMemberId()
), __FUNCTION__, __LINE__);
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'salt=' . SURFBAR_GET_SALT() . ',id=' . SURFBAR_GET_ID() . ',userid=' . getMemberId() . ',SQL_AFFECTEDROWS()=' . SQL_AFFECTEDROWS() . ' - UPDATE!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'salt=' . gerSurfbarSalt() . ',id=' . gerSurfbarId() . ',userid=' . getMemberId() . ',SQL_AFFECTEDROWS()=' . SQL_AFFECTEDROWS() . ' - UPDATE!');
// Was that okay?
if (SQL_HASZEROAFFECTED()) {
// Insert missing entry!
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_surfbar_salts` (`salts_url_id`,`salts_userid`,`salts_last_salt`) VALUES (%s, %s, '%s')",
array(
- SURFBAR_GET_ID(),
+ gerSurfbarId(),
getMemberId(),
- SURFBAR_GET_SALT()
+ gerSurfbarSalt()
), __FUNCTION__, __LINE__);
} // END - if
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'affectedRows=' . SQL_AFFECTEDROWS() . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'affectedRows=' . SQL_AFFECTEDROWS() . ' - EXIT!');
// Return if the update was okay
return (!SQL_HASZEROAFFECTED());
}
// Check if the reload lock is active for given id
-function SURFBAR_CHECK_RELOAD_LOCK ($urlId) {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $urlId . ' - ENTERED!');
+function ifSurfbarReloadLock ($urlId) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $urlId . ' - ENTERED!');
// Ask the database
$result = SQL_QUERY_ESC("SELECT COUNT(`locks_id`) AS cnt
FROM
WHERE
`locks_userid`=%s AND
`locks_url_id`=%s AND
- (UNIX_TIMESTAMP() - ".SURFBAR_GET_SURF_LOCK().") < UNIX_TIMESTAMP(`locks_last_surfed`)
+ (UNIX_TIMESTAMP() - ".gerSurfbarSurfLock().") < UNIX_TIMESTAMP(`locks_last_surfed`)
ORDER BY
`locks_last_surfed` ASC
LIMIT 1",
SQL_FREERESULT($result);
// Return check
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',count=' . $count . ',SURFBAR_GET_SURF_LOCK()=' . SURFBAR_GET_SURF_LOCK() . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',count=' . $count . ',gerSurfbarSurfLock()=' . gerSurfbarSurfLock() . ' - EXIT!');
return ($count == 1);
}
// Determine which user hash no more points left
-function SURFBAR_DETERMINE_DEPLETED_USERIDS ($limit=0) {
+function determineSurfbarDepletedUserids ($limit=0) {
// Init array
$userids = array(
'url_userid' => array(),
ON
u.`url_userid`=d.`userid`
WHERE
- u.`url_userid` NOT IN (%s,0) AND
+ u.`url_userid` NOT IN (%s) AND
+ u.`url_userid` IS NOT NULL AND
u.`url_status`='ACTIVE'
GROUP BY
u.`url_userid`
while ($content = SQL_FETCHARRAY($result)) {
// Get total points
$points = getTotalPoints($content['url_userid']);
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $content['url_userid'] . ',points=' . $points);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $content['url_userid'] . ',points=' . $points);
// Shall we add this to ignore?
if ($points <= $limit) {
// Ignore this one!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $content['url_userid'] . ' has depleted points amount!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $content['url_userid'] . ' has depleted points amount!');
$userids['url_userid'][$content['url_userid']] = $content['url_userid'];
$userids['points'][$content['url_userid']] = $points;
$userids['notified'][$content['url_userid']] = $content['notified'];
SQL_FREERESULT($result);
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UIDs::count=' . count($userids) . ' (with own userid=' . getMemberId() . ')');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UIDs::count=' . count($userids) . ' (with own userid=' . getMemberId() . ')');
// Return result
return $userids;
}
// Determine how many users are Online in surfbar
-function SURFBAR_DETERMINE_TOTAL_ONLINE () {
+function determineSurfbarTotalOnline () {
// Count all users in surfbar modue and return the value
$result = SQL_QUERY('SELECT
`stats_id`
}
// Determine waiting time for one URL
-function SURFBAR_DETERMINE_WAIT_TIME () {
+function determineSurfbarWaitingTime () {
// Get fixed reload lock
- $fixed = SURFBAR_GET_FIXED_RELOAD();
+ $fixed = getSurfbarFixedReload();
// Is the fixed reload time set?
if ($fixed > 0) {
// Which payment model do we have?
if (getSurfbarPaymentModel() == 'DYNAMIC') {
// "Calculate" dynamic time
- $time += SURFBAR_CALCULATE_DYNAMIC_ADD();
+ $time += calculateSurfbarDynamicAddValue();
} // END - if
// Return value
}
// Changes the status of an URL from given to other
-function SURFBAR_CHANGE_STATUS ($urlId, $prevStatus, $newStatus, $data = array()) {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',prevStatus=' . $prevStatus . ',newStatus=' . $newStatus . ' - ENTERED!');
+function changeSurfbarUrlStatus ($urlId, $prevStatus, $newStatus, $data = array()) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',prevStatus=' . $prevStatus . ',data[]=' . gettype($data) . ',newStatus=' . $newStatus . ' - ENTERED!');
// Make new status always lower-case
$newStatus = strtolower($newStatus);
// Get URL data for status comparison if missing
if ((!is_array($data)) || (count($data) == 0)) {
// Fetch missing URL data
- $data = SURFBAR_GET_URL_DATA($urlId);
+ $data = getSurfbarUrlData($urlId);
} // END - if
// Prepare array
'prev_status' => $prevStatus,
'new_status' => $newStatus,
'data' => $data,
- 'abort' => null
+ 'abort' => NULL
);
// Run pre filter chain
if (!is_null($filterData['abort'])) {
// Abort here
return $filterData['abort'];
- }
+ } // END - if
// Update the status now
// ---------- Comment out for debugging/developing member actions! ---------
// Run post filter chain
$filterData = runFilterChain('post_change_surfbar_url_status', $filterData);
- // Extract data from it again
- $data = $filterData['data'];
+ // Check if generic 'data' is there
+ assert(isset($filterData['data']));
// All done!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',prevStatus=' . $prevStatus . ',newStatus=' . $newStatus . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',prevStatus=' . $prevStatus . ',newStatus=' . $newStatus . ' - EXIT!');
return true;
}
// Calculate minimum value for dynamic payment model
-function SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE () {
+function calculateSurfbarDynamicMininumValue () {
// Addon is zero by default
$addon = '0';
$totalUsers = getTotalConfirmedUser();
// Get online users
- $onlineUsers = SURFBAR_DETERMINE_TOTAL_ONLINE();
+ $onlineUsers = determineSurfbarTotalOnline();
// Calculate addon
$addon += abs(log($onlineUsers / $totalUsers + 1) * $percent * $totalUsers);
// Get total URLs
- $totalUrls = SURFBAR_GET_TOTAL_URLS('ACTIVE', 0);
+ $totalUrls = getSurfbarTotalUrls('ACTIVE', 0);
// Get user's total URLs
- $userUrls = SURFBAR_GET_TOTAL_USER_URLS(0, 'ACTIVE');
+ $userUrls = getSurfbarTotalUserUrls(0, 'ACTIVE');
// Calculate addon
if ($totalUrls > 0) {
}
// Calculate maximum value for dynamic payment model
-function SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE () {
+function calculateSurfbarDynamicMaximumValue () {
// Addon is zero by default
$addon = '0';
$addon += abs($max * $percent * $totalUsers);
// Get total URLs
- $totalUrls = SURFBAR_GET_TOTAL_URLS('ACTIVE', 0);
+ $totalUrls = getSurfbarTotalUrls('ACTIVE', 0);
// Calculate addon
$addon += abs($max * $percent * $totalUrls);
}
// Calculate dynamic lock
-function SURFBAR_CALCULATE_DYNAMIC_LOCK () {
+function calculateSurfbarDynamicLock () {
// Default lock is 30 seconds
$addon = 30;
// Get online users
- $onlineUsers = SURFBAR_DETERMINE_TOTAL_ONLINE();
+ $onlineUsers = determineSurfbarTotalOnline();
// Calculate lock
$addon = abs(log($onlineUsers / $addon + 1));
}
// "Getter" for lock ids array
-function SURFBAR_GET_LOCK_IDS () {
+function getSurfbarLockIdsArray () {
// Prepare some arrays
$IDs = array();
$USE = array();
// Load all entries
while ($content = SQL_FETCHARRAY($result)) {
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'next - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',rest='.(time() - $content['last_surfed']).'/'.SURFBAR_GET_SURF_LOCK());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'next - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',rest='.(time() - $content['last_surfed']).'/'.gerSurfbarSurfLock());
// Skip entries that are too old
- if (($content['last_surfed'] > (time() - SURFBAR_GET_SURF_LOCK())) && (!in_array($content['locks_url_id'], $ignored))) {
+ if (($content['last_surfed'] > (time() - gerSurfbarSurfLock())) && (!in_array($content['locks_url_id'], $ignored))) {
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'okay - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',last='.$content['last_surfed']);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'okay - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',last='.$content['last_surfed']);
// Add only if missing or bigger
if ((!isset($IDs[$content['locks_url_id']])) || ($IDs[$content['locks_url_id']] > $content['last_surfed'])) {
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ADD - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',last='.$content['last_surfed']);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ADD - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',last='.$content['last_surfed']);
// Add this id
$IDs[$content['locks_url_id']] = $content['last_surfed'];
} // END - if
} else {
// Debug message
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ignore - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',last='.$content['last_surfed']);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ignore - lid='.$content['locks_id'].',url='.$content['locks_url_id'].',last='.$content['last_surfed']);
// Ignore these old entries!
- $ignored[] = $content['locks_url_id'];
+ array_push($ignored, $content['locks_url_id']);
unset($IDs[$content['locks_url_id']]);
unset($USE[$content['locks_url_id']]);
}
}
// "Getter" for maximum random number
-function SURFBAR_GET_MAX_RANDOM ($userids, $add) {
+function getSurfbarMaximumRandom ($userids, $add) {
// Count max availabe entries
$result = SQL_QUERY("SELECT
sbu.url_id AS cnt
sbu.url_id ASC", __FUNCTION__, __LINE__);
// Log last query
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'lastQuery='.getConfig('db_last_query').'|numRows='.SQL_NUMROWS($result).'|Affected='.SQL_AFFECTEDROWS());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'lastQuery='.getConfig('db_last_query').'|numRows='.SQL_NUMROWS($result).'|Affected='.SQL_AFFECTEDROWS());
// Fetch max rand
$maxRand = SQL_NUMROWS($result);
}
// Load all URLs of the current user and return it as an array
-function SURFBAR_GET_USER_URLS () {
+function getSurfbarUserUrls () {
// Init array
$urlArray = array();
// Begin the query
$result = SQL_QUERY_ESC("SELECT
- u.url_id,
- u.url_userid,
- u.url,
- u.url_status,
- u.url_views_total,
- u.url_views_max,
- u.url_views_allowed,
- UNIX_TIMESTAMP(u.url_registered) AS `url_registered`,
+ u.`url_id`,
+ u.`url_userid`,
+ u.`url`,
+ u.`url_status`,
+ u.`url_views_total`,
+ u.`url_views_max`,
+ u.`url_views_allowed`,
+ UNIX_TIMESTAMP(u.`url_registered`) AS `url_registered`,
UNIX_TIMESTAMP(u.`url_last_locked`) AS `url_last_locked`,
u.`url_lock_reason`
FROM
u.`url_userid`=%s AND
u.`url_status` != 'DELETED'
ORDER BY
- u.url_id ASC",
- array(getMemberId()), __FUNCTION__, __LINE__);
+ u.`url_id` ASC",
+ array(getMemberId()), __FUNCTION__, __LINE__);
// Are there entries?
if (!SQL_HASZERONUMS($result)) {
}
// "Getter" for member action array for given status
-function SURFBAR_GET_ARRAY_FROM_STATUS ($status) {
+function getSurfbarArrayFromStatus ($status) {
// Init array
$returnArray = array();
// Load all actions
// @TODO This can be somehow rewritten
while ($content = SQL_FETCHARRAY($result)) {
- $returnArray[] = $content['actions_action'];
+ array_push($returnArray, $content['actions_action']);
} // END - if
} // END - if
}
// Reload to configured stop page
-function SURFBAR_RELOAD_TO_STOP_PAGE ($page = 'stop') {
+function redirectToSurfbarStopPage ($page = 'stop') {
// Internal or external?
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'page=' . $page . ' - ENTERED!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'page=' . $page . ' - ENTERED!');
if ((getConfig('surfbar_pause_mode') == 'INTERNAL') || (getConfig('surfbar_pause_url') == '')) {
// Reload to internal page
redirectToUrl('surfbar.php?frame=' . $page);
}
}
-// Determine next id for surfbar or get data for given id, always call this before you call other
-// getters below this function!
-function SURFBAR_DETERMINE_NEXT_ID ($urlId = NULL) {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ' - ENTERED!');
+/**
+ * Determine next id for surfbar or get data for given id, always call this
+ * before you call other getters below this function!
+ */
+function determineSurfbarNextId ($urlId = NULL) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ' - ENTERED!');
// Default is no id and no random number
$nextId = '0';
$randNum = '0';
// Is the id set?
if (is_null($urlId)) {
// Get array with lock ids
- $USE = SURFBAR_GET_LOCK_IDS();
+ $USE = getSurfbarLockIdsArray();
// Shall we add some URL ids to ignore?
$add = '';
} // END - if
// Determine depleted user account
- $userids = SURFBAR_DETERMINE_DEPLETED_USERIDS();
+ $userids = determineSurfbarDepletedUserids();
// Get maximum randomness factor
- $maxRand = SURFBAR_GET_MAX_RANDOM($userids['url_userid'], $add);
+ $maxRand = getSurfbarMaximumRandom($userids['url_userid'], $add);
// If more than one URL can be called generate the random number!
if ($maxRand > 1) {
} // END - if
// And query the database
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'randNum='.$randNum.',maxRand='.$maxRand.',surfLock='.SURFBAR_GET_SURF_LOCK());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'randNum='.$randNum.',maxRand='.$maxRand.',surfLock='.gerSurfbarSurfLock());
$result = SQL_QUERY_ESC("SELECT
sbu.url_id,
sbu.url_userid,
ON
sbu.url_id=l.locks_url_id
WHERE
- sbu.`url_userid` NOT IN (".implode(',', $userids['url_userid']).") AND
+ (sbu.`url_userid` NOT IN (".implode(',', $userids['url_userid']).") OR sbu.`url_userid` IS NULL) AND
sbu.url_status='ACTIVE' AND
(sbu.url_views_allowed=0 OR (sbu.url_views_allowed > 0 AND sbu.url_views_max > 0))
".$add."
ON
sbu.url_id=l.locks_url_id
WHERE
- sbu.url_userid != %s AND
+ (sbu.url_userid != %s OR sbu.url_userid IS NULL) AND
sbu.url_status='ACTIVE' AND
sbu.url_id=%s AND
(sbu.url_views_allowed=0 OR (sbu.url_views_allowed > 0 AND sbu.url_views_max > 0))
}
// Is there an id number?
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'lastQuery='.getConfig('db_last_query').'|numRows='.SQL_NUMROWS($result).'|Affected='.SQL_AFFECTEDROWS());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'lastQuery='.getConfig('db_last_query').'|numRows='.SQL_NUMROWS($result).'|Affected='.SQL_AFFECTEDROWS());
if (SQL_NUMROWS($result) == 1) {
// Load/cache data
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'count('.count($GLOBALS['surfbar_cache']).') - BEFORE', false);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'count('.count($GLOBALS['surfbar_cache']).') - BEFORE', false);
$GLOBALS['surfbar_cache'] = merge_array($GLOBALS['surfbar_cache'], SQL_FETCHARRAY($result));
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'count('.count($GLOBALS['surfbar_cache']).') - AFTER', false);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'count('.count($GLOBALS['surfbar_cache']).') - AFTER', false);
// Determine waiting time
- $GLOBALS['surfbar_cache']['time'] = SURFBAR_DETERMINE_WAIT_TIME();
+ $GLOBALS['surfbar_cache']['time'] = determineSurfbarWaitingTime();
// Is the last salt there?
if (is_null($GLOBALS['surfbar_cache']['salts_last_salt'])) {
// Then repair it wit the static!
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'last_salt - FIXED!', false);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'last_salt - FIXED!', false);
$GLOBALS['surfbar_cache']['salts_last_salt'] = '';
} // END - if
// Fix missing last_surfed
if ((!isset($GLOBALS['surfbar_cache']['last_surfed'])) || (is_null($GLOBALS['surfbar_cache']['last_surfed']))) {
// Fix it here
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'last_surfed - FIXED!', false);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'last_surfed - FIXED!', false);
$GLOBALS['surfbar_cache']['last_surfed'] = '0';
} // END - if
// Get base/fixed reward and costs
- $GLOBALS['surfbar_cache']['reward'] = SURFBAR_DETERMINE_REWARD();
- $GLOBALS['surfbar_cache']['costs'] = SURFBAR_DETERMINE_COSTS();
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'BASE/STATIC - reward='.SURFBAR_GET_REWARD().'|costs='.SURFBAR_GET_COSTS());
+ $GLOBALS['surfbar_cache']['reward'] = determineSurfbarReward();
+ $GLOBALS['surfbar_cache']['costs'] = determineSurfbarCosts();
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'BASE/STATIC - reward='.gerSurfbarReward().'|costs='.gerSurfbarCosts());
// Only in dynamic model add the dynamic bonus!
if (getSurfbarPaymentModel() == 'DYNAMIC') {
// Calculate dynamic reward/costs and add it
- $GLOBALS['surfbar_cache']['reward'] += SURFBAR_CALCULATE_DYNAMIC_ADD();
- $GLOBALS['surfbar_cache']['costs'] += SURFBAR_CALCULATE_DYNAMIC_ADD();
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'DYNAMIC+ - reward='.SURFBAR_GET_REWARD().'|costs='.SURFBAR_GET_COSTS());
+ $GLOBALS['surfbar_cache']['reward'] += calculateSurfbarDynamicAddValue();
+ $GLOBALS['surfbar_cache']['costs'] += calculateSurfbarDynamicAddValue();
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'DYNAMIC+ - reward='.gerSurfbarReward().'|costs='.gerSurfbarCosts());
} // END - if
// Now get the id
- $nextId = SURFBAR_GET_ID();
+ $nextId = gerSurfbarId();
} // END - if
// Free result
SQL_FREERESULT($result);
// Return result
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',nextId=' . $nextId . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'urlId=' . $urlId . ',nextId=' . $nextId . ' - EXIT!');
return $nextId;
}
return $GLOBALS[__FUNCTION__];
}
+//------------------------------------------------------------------------------
+// Template helper functions
+//------------------------------------------------------------------------------
+
+// Template helper to generate a selection box for surfbar actions
+function doTemplateSurfbarActionsActionSelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Init array
+ $actionsAction = array(
+ 0 => array('actions_action' => 'EDIT'),
+ 1 => array('actions_action' => 'DELETE'),
+ 2 => array('actions_action' => 'PAUSE'),
+ 3 => array('actions_action' => 'UNPAUSE'),
+ 4 => array('actions_action' => 'FRAMETEST'),
+ 5 => array('actions_action' => 'RETREAT'),
+ 6 => array('actions_action' => 'RESUBMIT'),
+ 7 => array('actions_action' => 'BOOKNOW')
+ );
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($actionsAction, 'surfbar_actions_action', 'actions_action', '', '', '', $default, '', false, true);
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper to generate a selection box for surfbar status
+function doTemplateSurfbarActionsStatusSelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Init array
+ $status = array(
+ 0 => array('actions_status' => 'PENDING'),
+ 1 => array('actions_status' => 'ACTIVE'),
+ 2 => array('actions_status' => 'LOCKED'),
+ 3 => array('actions_status' => 'STOPPED'),
+ 4 => array('actions_status' => 'REJECTED'),
+ 5 => array('actions_status' => 'DELETED'),
+ 6 => array('actions_status' => 'MIGRATED'),
+ 7 => array('actions_status' => 'DEPLETED')
+ );
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($status, 'surfbar_actions_status', 'actions_status', '', '', '', $default, '', false, true);
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper to generate a selection box for surfbar status
+function doTemplateSurfbarActionsNewStatusSelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Init array
+ $status = array(
+ 0 => array('actions_new_status' => 'PENDING'),
+ 1 => array('actions_new_status' => 'ACTIVE'),
+ 2 => array('actions_new_status' => 'LOCKED'),
+ 3 => array('actions_new_status' => 'STOPPED'),
+ 4 => array('actions_new_status' => 'REJECTED'),
+ 5 => array('actions_new_status' => 'DELETED'),
+ 6 => array('actions_new_status' => 'MIGRATED'),
+ 7 => array('actions_new_status' => 'DEPLETED')
+ );
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($status, 'surfbar_actions_new_status', 'actions_new_status', '', '', '', $default, '', true, true);
+
+ // Return prepared content
+ return $content;
+}
+
//------------------------------------------------------------------------------
// PLEASE DO NOT ADD ANY OTHER FUNCTIONS BELOW THIS LINE IF THEY DON'T "WRAP"
// THE $GLOBALS['surfbar_cache'] ARRAY!
//------------------------------------------------------------------------------
// Initializes the surfbar
-function SURFBAR_INIT () {
+function initSurfbar () {
// Init cache array
$GLOBALS['surfbar_cache'] = array();
}
// Private getter for data elements
-function SURFBAR_GET_DATA ($element) {
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ' - ENTERED!');
+function getSurfbarData ($element) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ' - ENTERED!');
// Default is null
$data = NULL;
// Is the entry there?
- if (isset($GLOBALS['surfbar_cache'][$element])) {
+ if ((isset($GLOBALS['surfbar_cache'][$element])) || (is_null($GLOBALS['surfbar_cache'][$element]))) {
// Then take it
$data = $GLOBALS['surfbar_cache'][$element];
} else { // END - if
- print('<pre>');
+ print('surfbar_cache=<pre>');
print_r($GLOBALS['surfbar_cache']);
print('</pre>');
- debug_report_bug(__FUNCTION__, __LINE__, 'Element ' . $element . ' not found.');
+ reportBug(__FUNCTION__, __LINE__, 'Element ' . $element . ' not found.');
}
// Return result
- /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element[' . $element . ']=[' . gettype($data) . ']' . $data . ' - EXIT!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element[' . $element . ']=[' . gettype($data) . ']' . $data . ' - EXIT!');
return $data;
}
// Getter for reward from cache
-function SURFBAR_GET_REWARD () {
+function gerSurfbarReward () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('reward');
+ return getSurfbarData('reward');
}
// Getter for costs from cache
-function SURFBAR_GET_COSTS () {
+function gerSurfbarCosts () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('costs');
+ return getSurfbarData('costs');
}
// Getter for URL from cache
-function SURFBAR_GET_URL () {
+function gerSurfbarUrl () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('url');
+ return getSurfbarData('url');
}
// Getter for salt from cache
-function SURFBAR_GET_SALT () {
+function gerSurfbarSalt () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('salt');
+ return getSurfbarData('salt');
}
// Getter for id from cache
-function SURFBAR_GET_ID () {
+function gerSurfbarId () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('url_id');
+ return getSurfbarData('url_id');
}
// Getter for userid from cache
-function SURFBAR_GET_USERID () {
+function gerSurfbarUserid () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('url_userid');
+ return getSurfbarData('url_userid');
}
// Getter for user reload locks
-function SURFBAR_GET_USER_LOCKS () {
+function getSurfbarUserLocks () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('user_locks');
+ return getSurfbarData('user_locks');
}
// Getter for reload time
-function SURFBAR_GET_RELOAD_TIME () {
+function gerSurfbarReloadTime () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('time');
+ return getSurfbarData('time');
}
// Getter for allowed views
-function SURFBAR_GET_VIEWS_ALLOWED () {
+function gerSurfbarViewsAllowed () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('url_views_allowed');
+ return getSurfbarData('url_views_allowed');
}
// Getter for maximum views
-function SURFBAR_GET_VIEWS_MAX () {
+function gerSurfbarViewsMax () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('url_views_max');
+ return getSurfbarData('url_views_max');
}
// Getter for fixed reload
-function SURFBAR_GET_FIXED_RELOAD () {
+function getSurfbarFixedReload () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('url_fixed_reload');
+ return getSurfbarData('url_fixed_reload');
}
// Getter for surf lock
-function SURFBAR_GET_SURF_LOCK () {
+function gerSurfbarSurfLock () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('surf_lock');
+ return getSurfbarData('surf_lock');
}
// Getter for new status
-function SURFBAR_GET_NEW_STATUS () {
+function gerSurfbarNewStatus () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('new_status');
+ return getSurfbarData('new_status');
}
// Getter for last salt
-function SURFBAR_GET_LAST_SALT () {
+function gerSurfbarLastSalt () {
// Get data element and return its contents
- return SURFBAR_GET_DATA('salts_last_salt');
+ return getSurfbarData('salts_last_salt');
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
foreach (
array(
// Member accounts
- 'confirmed_members','unconfirmed_members','locked_members','random_refid',
+ 'confirmed_members','unconfirmed_members','locked_members','random_refid','testers',
// Tasks
'update_tasks','new_tasks','closed_tasks','your_tasks','deleted_tasks','solved_tasks',
// Mail orders
//
// Confirmed accounts
$value = getTotalConfirmedUser();
-
if ($value > 0) {
$content['confirmed_members'] = '<a href="{%url=modules.php?module=admin&what=list_user&status=confirmed%}">' . $value . '</a>';
} // END - if
// Unconfirmed accounts
$value = getTotalUnconfirmedUser();
-
if ($value > 0) {
$content['unconfirmed_members'] = '<a href="{%url=modules.php?module=admin&what=list_user&status=UNCONFIRMED%}">' . $value . '</a>';
} // END - if
- // And locked accounts
+ // Locked accounts
$value = getTotalLockedUser();
if ($value > 0) {
$content['locked_members'] = '<a href="{%url=modules.php?module=admin&what=list_user&status=locked%}">' . $value . '</a>';
if ($value > 0) {
$content['random_refid'] = '<a href="{%url=modules.php?module=admin&what=list_user&do=random_refid%}">' . $value . '</a>';
} // END - if
+
+ if (isExtensionInstalledAndNewer('user', '0.5.0')) {
+ // And tester accounts
+ $value = getTotalTesterUsers();
+ if ($value > 0) {
+ $content['testers'] = '<a href="{%url=modules.php?module=admin&what=list_user&do=testers%}">' . $value . '</a>';
+ } // END - if
+ } // END - if
} // END - if
//
// Both extensions must be there
if ((isExtensionActive('autopurge')) && (isExtensionActive('user'))) {
// Start finding them...
- $EXCLUDE_LIST = '';
+ $EXCLUDE_LIST = ' ';
// Check for more extensions
// @TODO These can be rewritten to filter
// Recent ext-holiday found
$EXCLUDE_LIST .= " AND d.`holiday_active`='N'";
} // END - if
+ if (isExtensionInstalledAndNewer('user', '0.5.0')) {
+ // Exclude test accounts
+ $EXCLUDE_LIST = runFilterChain('user_exclusion_sql', $EXCLUDE_LIST);
+ } // END - if
// Check for all accounts
addSql("SELECT
- d.userid, d.email, d.last_online
+ d.`userid`,
+ d.`email`,
+ d.`last_online`
FROM
`{?_MYSQL_PREFIX?}_user_data` AS d
WHERE
- d.`status`='CONFIRMED' AND
+ d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
(UNIX_TIMESTAMP() - d.`joined`) >= {?ap_inactive_since?} AND
(UNIX_TIMESTAMP() - d.`last_online`) >= {?ap_inactive_since?} AND
(UNIX_TIMESTAMP() - d.`ap_notified`) >= {?ap_inactive_since?}
".$EXCLUDE_LIST."
ORDER BY
- d.userid ASC");
+ d.`userid` ASC");
$WHATs[] = 'list_autopurge';
$DESCRs[] = '{--ADMIN_TASK_INACTIVE_AUTOPURGE--}';
$TITLEs[] = '{--ADMIN_TASK_INACTIVE_AUTOPURGE_TITLE--}';
- }
+ } // END - if
if ((isExtensionInstalledAndNewer('sql_patches', '0.3.4')) && (isExtensionActive('user'))) {
// Check for accounts without referral
- addSql("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=0 OR `refid` IS NULL ORDER BY `userid` ASC");
+ addSql('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=0 OR `refid` IS NULL ' . runFilterChain('user_exclusion_sql', ' ') . ' ORDER BY `userid` ASC');
$DESCRs[] = '{--ADMIN_TASK_LIST_ACCOUNT_NO_REFERRAL--}';
$TITLEs[] = '{--ADMIN_TASK_LIST_ACCOUNT_NO_REFERRAL_TITLE--}';
$WHATs[] = 'list_user&do=norefs';
$TITLEs[] = '{--ADMIN_TASK_LIST_WERNIS_ALL_TITLE--}';
} // END - if
- if (isExtensionActive('primera')) {
- // List new primera requests
- addSql('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_primera` ORDER BY `userid` ASC');
- $WHATs[] = 'list_primera';
- $DESCRs[] = '{--ADMIN_TASK_LIST_PRIMERA_ALL--}';
- $TITLEs[] = '{--ADMIN_TASK_LIST_PRIMERA_ALL_TITLE--}';
- } // END - if
-
if (isExtensionActive('holiday')) {
// List holiday requests
addSql('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_holidays` ORDER BY `userid` ASC');
$add = runFilterChain('add_bonus_points_user_columns', '');
// Active rallye, so add more point columns, if not empty
- $USE = '`turbo_bonus`';
+ $pointsColumns = '`turbo_bonus`';
if (!empty($add)) {
- $USE = '(0' . $add . ')';
+ $pointsColumns = '(0' . $add . ')';
} // END - if
// Init variable
} // END - if
addSql("SELECT
- " . $USE . " AS `points`
+ " . $pointsColumns . " AS `points`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
`status`='CONFIRMED' AND
- " . $USE . " > 0
+ " . $pointsColumns . " > 0
" . $lastOnline . "
ORDER BY
`points` DESC,
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (isIncludeReadable($inc)) {
// And save all data in array
loadInclude($inc);
- $themesArray['theme_unix'][] = $content['theme_path'];
- $themesArray['theme_name'][] = $GLOBALS['theme_data']['name'];
+ array_push($themesArray['theme_unix'], $content['theme_path']);
+ array_push($themesArray['theme_name'], $GLOBALS['theme_data']['name']);
} // END - if
} // END - while
return $cver;
}
-// Checks wether a theme is found in db
+// Checks whether a theme is found in db
function ifThemeExists ($name) {
// Get theme and is it not nul?
return ((isExtensionActive('theme')) && (getThemeId($name) > 0));
$ret = 'default';
// Load default theme if not empty from configuration
- if ((isConfigEntrySet('default_theme')) && (getConfig('default_theme') != '')) $ret = getConfig('default_theme');
+ if ((isConfigEntrySet('default_theme')) && (getConfig('default_theme') != '')) {
+ $ret = getConfig('default_theme');
+ } // END - if
- if (!isSessionVariableSet('mailer_theme')) {
+ if (!isMailerThemeSet()) {
// Set default theme
- setTheme($ret);
- } elseif ((isSessionVariableSet('mailer_theme')) && (isExtensionInstalledAndNewer('sql_patches', '0.1.4'))) {
+ setMailerTheme($ret);
+ } elseif ((isMailerThemeSet()) && (isExtensionInstalledAndNewer('sql_patches', '0.1.4'))) {
//die("<pre>".print_r($GLOBALS['cache_array']['themes'], true)."</pre>");
// Get theme from cookie
$ret = getSession('mailer_theme');
// Installation mode active
if ((isGetRequestElementSet('theme')) && (isIncludeReadable($theme))) {
// Set cookie from URL data
- setTheme(getRequestElement('theme'));
+ setMailerTheme(getRequestElement('theme'));
} elseif (isIncludeReadable(sprintf("theme/%s/theme.php", postRequestElement('theme')))) {
// Set cookie from posted data
- setTheme(postRequestElement('theme'));
+ setMailerTheme(postRequestElement('theme'));
}
// Set return value
$ret = getSession('mailer_theme');
} else {
// Invalid design, reset cookie
- setTheme($ret);
+ setMailerTheme($ret);
}
// Return theme value
return $ret;
}
-/**
- * Setter for theme in session (This setter does return the success of
- * setSession() which is required e.g. for destroySponsorSession().
- */
-function setTheme ($newTheme) {
- return setSession('mailer_theme', $newTheme);
-}
-
// Get id from theme
function getThemeId ($name) {
// Default id
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Only send email to admin(s) when we have removed entries
if ($removed > 0) {
- sendAdminNotification('{--TRANSFER_ADMIN_AUTOPURGE--}', 'admin_transfer_ap', $removed);
+ sendAdminNotification('{--ADMIN_TRANSFER_AUTOPURGE_SUBJECT--}', 'admin_transfer_ap', $removed);
} // END - if
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Loads the snippet for the uberwach action
function loadUberwachSnippet () {
// Simply load the template here
- $GLOBALS['page_footer'] .= loadTemplate('uberwach_snippet', true);
+ $GLOBALS['__page_footer'] .= loadTemplate('uberwach_snippet', true);
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Add links for selecting some users
-function alpha ($sortby) {
+function addAlphabeticalSorting ($sortby) {
$add = '';
- foreach (array('page','offset','do','status') as $param) {
+ foreach (array('page', 'offset', 'do', 'status') as $param) {
if (isGetRequestElementSet($param)) {
$add .= '&' . $param . '=' . getRequestElement($param);
} // END - if
} // END - foreach
- /* Creates the list of letters and makes them a link. */
+ // Creates the list of letters and makes them a link.
$alphabet = explode(',', 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,');
$num = count($alphabet) - 1;
+
+ // Add all letter links
$OUT = '';
while (list($counter, $ltr) = each($alphabet)) {
if (getRequestElement('letter') == $ltr) {
$OUT .= '<a href="{%url=modules.php?module=admin&what=' . getWhat() . '&letter=' . $ltr . '&sortby=' . $sortby . $add . '%}">' . $ltr . '</a>';
}
- if ((($counter / getConfig('user_alpha')) == round($counter / getConfig('user_alpha'))) && ($counter > 0)) {
+ if ((($counter / getUserAlpha()) == round($counter / getUserAlpha())) && ($counter > 0)) {
$OUT .= ']<br />[';
- } elseif ( $counter != $num ) {
+ } elseif ($counter != $num) {
$OUT .= '|';
}
} // END - while
// Prepare content
$content = array (
- 'alpha_selection' => $OUT
+ 'alpha_selection' => $OUT,
);
// Load template
} // END - foreach
// Letter and so on
- $OUT .= '&letter=' . getRequestElement('letter') . '&sortby=' . getRequestElement('sortby') . '&page=' . $page . '&offset=' . getConfig('user_limit') . '%}">';
+ $OUT .= '&letter=' . getRequestElement('letter') . '&sortby=' . getRequestElement('sortby') . '&page=' . $page . '&offset=' . getUserLimit() . '%}">';
}
$OUT .= $page;
}
// Selects a random user id as the new referral id if they have at least X confirmed mails in this run
-// @TODO Double-check configuration entry here
function determineRandomReferralId () {
// Default is zero refid
$refid = NULL;
// Is the extension version fine?
- if (isExtensionInstalledAndNewer('user', '0.3.4')) {
+ if ((isRandomReferralIdEnabled()) && (isExtensionInstalledAndNewer('user', '0.3.4'))) {
// Get all user ids
- $totalUsers = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, " AND `rand_confirmed` >= {?user_min_confirmed?}");
+ $totalUsers = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, runFilterChain('user_exclusion_sql', ' AND `rand_confirmed` >= {?user_min_confirmed?}'));
// Do we have at least one?
if ($totalUsers > 0) {
- // Then choose random number
- $randNum = mt_rand(0, ($totalUsers - 1));
+ // Then choose random userid
+ $randUserid = mt_rand(0, ($totalUsers - 1));
// Look for random user
- $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' AND `rand_confirmed` >= {?user_min_confirmed?} ORDER BY `rand_confirmed` DESC LIMIT %s, 1",
- array($randNum), __FUNCTION__, __LINE__);
+ $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` " . runFilterChain('user_exclusion_sql', "WHERE `status`='CONFIRMED'") . ' AND `rand_confirmed` >= {?user_min_confirmed?} ORDER BY `rand_confirmed` DESC LIMIT %s, 1',
+ array($randUserid), __FUNCTION__, __LINE__);
// Do we have one entry there?
if (SQL_NUMROWS($result) == 1) {
// Use that userid as new referral id
list($refid) = SQL_FETCHROW($result);
+
+ // Debug message
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ' - choosen!');
} // END - if
// Free result
} // END - if
} // END - if
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',isUserDataValid()=' . intval(isUserDataValid()) . ',userStatus=' . getUserData('status') . ',errorCode=' . $errorCode . ',ext=' . $ext . ',isFound=' . intval($isFound));
+
// Is there an entry?
if (($errorCode == '0') && (isUserDataValid()) && (getUserData('status') == 'CONFIRMED') && (!empty($content['userid']))) {
// Check for old MD5 passwords
$errorCode = generateErrorCodeFromUserStatus(getUserData('status'));
// Set userid in session
- setSession('current_userid', getUserData('userid'));
+ setSession('userid', getUserData('userid'));
} elseif (!isUserDataValid()) {
// User id not found
$errorCode = getCode('WRONG_ID');
// Fetch user data
if (!fetchUserData($userid)) {
// Not found, should not happen
- debug_report_bug(__FILE__, __LINE__, 'User account ' . $userid . ' not found.');
+ reportBug(__FILE__, __LINE__, 'User account ' . $userid . ' not found.');
} // END - if
// Load all data and add points
break;
default: // This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Unknown user status ' . $status . ' detected.');
+ reportBug(__FUNCTION__, __LINE__, 'Unknown user status ' . $status . ' detected.');
break;
} // END - switch
return $message;
}
+// "Getter" for total tester accounts
+function getTotalTesterUsers () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = countSumTotalData('', 'user_data', 'userid', '', true, runFilterChain('user_inclusion_sql'));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Checks whether the admin is allowed to create more tester accounts
+function isNewUserTesterAllowed () {
+ // By default only admins are allowed
+ if (!isAdmin()) {
+ // This should not happen and must be fixed
+ reportBug(__FUNCTION__, __LINE__, 'isAdmin()=false - Not allowed.');
+ } // END - if
+
+ // Are more tester accounts allowed?
+ $isAllowed = (getTotalTesterUsers() < bigintval(getTesterUserMaximum() + 1));
+
+ // Return result
+ return $isAllowed;
+}
+
+// "Getter" for next free tester account number
+function getNextFreeTesterUserNumber () {
+ // Get current total amount because we start with zero
+ $nextTester = getTotalTesterUsers();
+
+ // Prepend zeros
+ $nextTester = prependZeros($nextTester, 6);
+
+ // Return it
+ return $nextTester;
+}
+
+// Wrapper function to return a selection box for tester user default referral id
+function addTesterUserDefaultRefidSelectionBox ($fieldName = 'tester_user_default_refid') {
+ // Return it
+ return addMemberSelectionBox(getConfig('tester_user_default_refid'), false, true, true, $fieldName, " WHERE `surname` LIKE '{?tester_user_surname_prefix?}%'");
+}
+
+// Checks whether given surname is a test user name
+function isTesterUserName ($surname) {
+ // Determine it
+ return (substr($surname, 0, strlen(getTesterUserSurnamePrefix())) == getTesterUserSurnamePrefix());
+}
+
+// Creates a tester account from given POST data
+function createTesterUserAccount () {
+ // Add generated surname
+ setPostRequestElement('surname', (getTesterUserSurnamePrefix() . getNextFreeTesterUserNumber()));
+
+ // Is the registration data complete?
+ if (!isRegistrationDataComplete()) {
+ // Then abort here
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'isRegistrationDataComplete()=false, please check if you e.g. have selected the required minimum of categories.');
+ return false;
+ } // END - if
+
+ // Do registration
+ $isCreated = doUserRegistration();
+
+ // Remove cache to force recalculation of total tester accounts
+ unset($GLOBALS['getTotalTesterUsers']);
+
+ // Return status
+ return $isCreated;
+}
+
+//-----------------------------------------------------------------------------
+// EL code functions
+//-----------------------------------------------------------------------------
+
// Expression call-back function for fetching user data
function doExpressionUser ($data) {
// Use current userid by default
return $code;
}
+//-----------------------------------------------------------------------------
+// Template helper functions
+//-----------------------------------------------------------------------------
+
// Template call-back function for list_user admin function
function doTemplateAdminListUserTitle ($template, $clear = false) {
// Init title with "all accounts"
// Is a userid set?
if (!isValidUserId($userid)) {
// Please don't call this without a valid userid
- debug_report_bug(__FUNCTION__, __LINE__, 'template=' . $template . ',clear=' . intval($clear) . ',userid[' . gettype($userid) . ']=' . intval($userid) . ' - Invalid userid provided.');
+ reportBug(__FUNCTION__, __LINE__, 'template=' . $template . ',clear=' . intval($clear) . ',userid[' . gettype($userid) . ']=' . intval($userid) . ' - Invalid userid provided.');
} // END - if
// Do we have cache?
return $GLOBALS[__FUNCTION__][$userid];
}
+// ----------------------------------------------------------------------------
+// Wrapper functions for configuration entries
+// ----------------------------------------------------------------------------
+
+// Getter for user_alpha
+function getUserAlpha () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('user_alpha');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for user_limit
+function getUserLimit () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('user_limit');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_surname_prefix
+function getTesterUserSurnamePrefix () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_surname_prefix');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_maximum
+function getTesterUserMaximum () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_maximum');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_check_cat
+function getTesterUserCheckCat () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_check_cat');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_gender
+function getTesterUserGender () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_gender');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_family
+function getTesterUserFamily () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_family');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_password
+function getTesterUserPassword () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_password');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_street_nr
+function getTesterUserStreetNr () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_street_nr');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_zip
+function getTesterUserZip () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_zip');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_city
+function getTesterUserCity () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_city');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for tester_user_email
+function getTesterUserEmail () {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = getConfig('tester_user_email');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// If we have no result, abort here
if (count($dummy) == 0) {
// Empty response from API
- debug_report_bug(__FUNCTION__, __LINE__, 'Empty result from API received. response()=' . count($response) . ',type=' . $type);
+ reportBug(__FUNCTION__, __LINE__, 'Empty result from API received. response()=' . count($response) . ',type=' . $type);
return array();
} // END - if
// The result is now still raw, so we must split it up and trim spaces away
- $responseLine = trim(implode("\n", $dummy));
+ $responseLine = trim(implode(chr(10), $dummy));
// Last line should never be a pipe!
if (substr($responseLine, -1, 1) == '|') {
}
// Is the waiting time below one second? Then fix it to one (zero seconds are not yet supported!)
- if ($data['wait'] < 1) $data['wait'] = 1;
+ if ($data['wait'] < 1) {
+ $data['wait'] = 1;
+ } // END - if
// Half of waiting time is a good reward!
$data['reward'] = round($data['wait'] / 2 + 0.4);
// Is the reward below one?
- if ($data['reward'] < 1) $data['reward'] = 1;
+ if ($data['reward'] < 1) {
+ $data['reward'] = 1;
+ } // END - if
// Load template
loadTemplate('admin_send_yoomedia', false, $data);
$return = $GLOBALS['translation_tables']['yoomedia']['error_codes'][$errorCode];
} else {
// Log missing entries
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown error code <strong>%s[%s]</strong> detected.", $errorCode, gettype($errorCode)));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Unknown error code <strong>%s[%s]</strong> detected.", $errorCode, gettype($errorCode)));
}
// Return value
$code = $codeArray[0];
// Remove all new-line characters
- $codeArray = explode("\n", $code);
+ $codeArray = explode(chr(10), $code);
$code = $codeArray[0];
// Remove carrige-return
- $code = trim(str_replace("\n", '', $code));
+ $code = trim(str_replace(chr(10), '', $code));
// Is it still empty?
if (empty($code)) {
$code = '0';
} else {
// Should not happen!
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot parse response. Raw response:<pre>' . print_r($response, true) . '</pre>');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot parse response. Raw response:<pre>' . print_r($response, true) . '</pre>');
}
// Return error code
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Is the local configuration there?
if ((isIncludeReadable(getCachePath() . 'config-local.php')) && (isIncludeReadable('inc/config.php'))) {
// We are better in installation mode
- $GLOBALS['mailer_installing'] = true;
+ $GLOBALS['__mailer_installing'] = true;
// Define default main_title here
setConfigEntry('MAIN_TITLE', 'Your mail-exchange title');
setConfigEntry('OUTPUT_MODE', 'render');
// Both exist! This is bad and should be avoided by the admin
- debug_report_bug(__FILE__, __LINE__, 'You have uploaded or kept an out-dated file at <strong>inc/config.php</strong> along with the new file <strong>'.getCachePath().'config-local.php</strong>. Please remove <strong>inc/config.php</strong> to avoid incompatiblity issues. Thank you.');
+ reportBug(__FILE__, __LINE__, 'You have uploaded or kept an out-dated file at <strong>inc/config.php</strong> along with the new file <strong>'.getCachePath().'config-local.php</strong>. Please remove <strong>inc/config.php</strong> to avoid incompatiblity issues. Thank you.');
} elseif (isIncludeReadable(getCachePath() . 'config-local.php')) {
// Then load it
loadIncludeOnce(getCachePath() . 'config-local.php');
// @TODO Rewrite them to avoid this else block
setConfigEntry('MAIN_TITLE', 'Your mail-exchanger title');
setConfigEntry('SLOGAN' , 'Your cool slogan here');
- setConfigEntry('WEBMASTER' , 'you@some-hoster.tld.invalid');
+ setConfigEntry('WEBMASTER' , 'you@some-hoster.example');
// Set output mode here
setConfigEntry('OUTPUT_MODE', 'render');
outputHtml('<strong>{--MAILER_WARNING--}:</strong>');
if (isInstalled()) {
// You have changed my configuration file!
- debug_report_bug(__FILE__, __LINE__, '{--DIE_CONFIG_CHANGED_YOU--}');
+ reportBug(__FILE__, __LINE__, '{--DIE_CONFIG_CHANGED_YOU--}');
} else {
// Please run the installation script (maybe again)
- debug_report_bug(__FILE__, __LINE__, '{--DIE_RUN_INSTALL_MYSQL--}');
+ reportBug(__FILE__, __LINE__, '{--DIE_RUN_INSTALLER_MYSQL--}');
}
} elseif ((!isInstalling()) && (!isInstallationPhase()) && (empty($GLOBALS['mysql']['password'])) && (getConfig('WARN_NO_PASS') == 'Y')) {
// No database password entered
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Do we have 'admin_id' or regular entries?
if ($key != 'admin_id') {
// Regular entry so use id
- $admins[$key][$GLOBALS['cache_array']['admin_acls']['admin_id'][$idx]][] = $entry[$idx];
+ array_push($admins[$key][$GLOBALS['cache_array']['admin_acls']['admin_id'][$idx]], $entry[$idx]);
} // END - if
} // END - foreach
} // END - foreach
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Load extension file itself
if (($EXT_DUMMY['ext_active'][$k] == 'Y') || ($EXT_DUMMY['ext_keep'][$k] == 'Y')) {
- $EXT_POOL[] = $ext_name;
+ array_push($EXT_POOL, $ext_name);
} // END - if
// Version number
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$GLOBALS['cache_instance']->removeCacheFile();
// We should fix this
- debug_report_bug(__FILE__, __LINE__, 'modArray=<pre>' . print_r($modArray, true) . '</pre>Please try to reload to fix this.');
+ reportBug(__FILE__, __LINE__, 'modArray=<pre>' . print_r($modArray, true) . '</pre>Please try to reload to fix this.');
} // END - if
// Rewrite some parts
// Is ext-sql_patches newer or equal 0.3.6?
if (isExtensionInstalledAndNewer('sql_patches', '0.3.6')) {
// Add 'has_menu'
- $entries[] = 'has_menu';
+ array_push($entries, 'has_menu');
} // END - if
// Add all
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$GLOBALS['cache_instance']->removeCacheFile();
// Not found, so better abort here
- debug_report_bug(__FILE__, __LINE__, 'points_data has been generated, but does not contain "subject". Please try to reload to fix this.');
+ reportBug(__FILE__, __LINE__, 'points_data has been generated, but does not contain "subject". Please try to reload to fix this.');
} // END - if
// Init temporary array
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (!defined('__SECURITY')) {
die();
} elseif (!isExtensionActive('')) {
+ // Do not execute script on missing/out-dated extension ext-
+ return;
+} elseif (!isHtmlOutputMode()) {
+ // Do not execute script if not in HTML mode
return;
}
-// Do not execute when script is in CSS mode
-if (!isHtmlOutputMode()) return;
-
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (!defined('__SECURITY')) {
die();
} elseif ((!isExtensionActive('beg')) || (isExtensionInstalledAndOlder('beg', '0.2.8'))) {
+ // Do not execute script on missing/out-dated extension ext-beg
+ return;
+} elseif (!isHtmlOutputMode()) {
+ // Do not execute script if not in HTML mode
return;
}
-// Do not execute when script is in CSS mode
-if (!isHtmlOutputMode()) return;
-
// Create timemark from saved month
$mark = mktime(0, 0, 0, getLastMonth(), getDay(), getYear());
$sql = ''; $mode = '';
if (!empty($sql)) {
// The SQL command needs to be finisched here (only confirmed accounts!)
- $sql .= ") AND `status`='CONFIRMED' ORDER BY `last_online` ASC";
+ $sql .= ')' . runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'") . ' ORDER BY `last_online` ASC';
// No IP locking setuped by default
$content['ip_locker'] = '{--BEG_NO_LIMITATION--}';
// Load email template and send it to the user!
if ($sentBonusMails === true) {
// Add userid to queue
- $userids[] = $content['userid'];
+ array_push($userids, $content['userid']);
} else {
// Send normal notification mail to the members
$message = loadEmailTemplate('beg_' . $mode . '_notify', $content, $content['userid']);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (!defined('__SECURITY')) {
die();
} elseif ((!isExtensionActive('bonus')) || (isExtensionInstalledAndOlder('bonus', '0.9.2'))) {
+ // Do not execute script on missing/out-dated extension ext-bonus
+ return;
+} elseif (!isHtmlOutputMode()) {
+ // Do not execute script if not in HTML mode
return;
}
-// Do not execute when script is in CSS mode
-if (!isHtmlOutputMode()) return;
-
// Create timemark from saved month
$mark = mktime(0, 0, 0, getLastMonth(), getDay(), getYear());
$sql = ''; $mode = '';
if (!empty($sql)) {
// The SQL command needs to be finisched here (only confirmed accounts!)
- $sql .= ") AND `status`='CONFIRMED' ORDER BY `last_online` ASC";
+ $sql .= ')' . runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'") . ' ORDER BY `last_online` ASC';
// Normal notification mails or bonus mails?
$sentBonusMails = ((getConfig('bonus_notify_points') > 0) && ($mode == 'enable') && (isExtensionActive('bonus')));
// Load email template and send it to the user!
if ($sentBonusMails === true) {
// Add userid to queue
- $userids[] = $content['userid'];
+ array_push($userids, $content['userid']);
} else {
// Send normal notification mail to the members
$message = loadEmailTemplate('bonus_' . $mode . '_notify', $content, $content['userid']);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
LEFT JOIN
`{?_MYSQL_PREFIX?}_user_data` AS u
ON
- d.userid=u.userid
+ d.`userid`=u.`userid`
WHERE
- u.`status`='CONFIRMED' AND
- d.points <= %s AND
- d.points >= ({?doubler_min?} * 2) AND
- d.completed='N' AND
- d.is_ref='N'
+ u.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
+ d.`points` <= %s AND
+ d.`points` >= ({?doubler_min?} * 2) AND
+ d.`completed`='N' AND
+ d.`is_ref`='N'
ORDER BY
- d.timemark ASC",
+ d.`timemark` ASC",
array(
$DOUBLER_POINTS
), __FILE__, __LINE__);
// Check for accounts with limitation
$result_main = SQL_QUERY_ESC("SELECT
- d.id, d.userid, d.points, d.remote_ip, d.timemark
+ d.`id`,
+ d.`userid`,
+ d.`points`,
+ d.`remote_ip`,
+ d.`timemark`
FROM
`{?_MYSQL_PREFIX?}_doubler` AS d
LEFT JOIN
`{?_MYSQL_PREFIX?}_user_data` AS u
ON
- d.userid=u.userid
+ d.`userid`=u.`userid`
WHERE
- u.`status`='CONFIRMED' AND
- d.points <= %s AND
- d.points >= ({?doubler_min?} * 2) AND
- d.completed='N' AND
- d.is_ref='N'
+ u.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
+ d.`points` <= %s AND
+ d.`points` >= ({?doubler_min?} * 2) AND
+ d.`completed`='N' AND
+ d.`is_ref`='N'
ORDER BY
- d.timemark ASC
+ d.`timemark` ASC
LIMIT {?doubler_max_sent?}",
array(
$DOUBLER_POINTS
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// "Getter" for module title
function getModuleTitle ($module) {
- // Init variables
- $data['title'] = '';
- $result = false;
-
- // Is the script installed?
- if ((isInstalled()) && ($module != 'error')) {
- // Check if cache is valid
- if ((isExtensionInstalledAndNewer('cache', '0.1.2')) && (isset($GLOBALS['cache_array']['modules']['module'])) && (in_array($module, $GLOBALS['cache_array']['modules']['module']))) {
- // Load from cache
- $data['title'] = $GLOBALS['cache_array']['modules']['title'][$module];
-
- // Update cache hits
- incrementStatsEntry('cache_hits');
- } elseif (!isExtensionActive('cache')) {
- // Load from database
- $result = SQL_QUERY_ESC("SELECT `title` FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='%s' LIMIT 1",
- array($module), __FUNCTION__, __LINE__);
-
- // Is the entry there?
- if (SQL_NUMROWS($result) == 1) {
- // Get the title from database
- $data = SQL_FETCHARRAY($result);
- } // END - if
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$module])) {
+ // Init variables
+ $data['title'] = '';
+ $result = false;
+
+ // Is the script installed?
+ if ((isInstalled()) && ($module != 'error')) {
+ // Check if cache is valid
+ if ((isExtensionInstalledAndNewer('cache', '0.1.2')) && (isset($GLOBALS['cache_array']['modules']['module'])) && (in_array($module, $GLOBALS['cache_array']['modules']['module']))) {
+ // Load from cache
+ $data['title'] = $GLOBALS['cache_array']['modules']['title'][$module];
+
+ // Update cache hits
+ incrementStatsEntry('cache_hits');
+ } elseif (!isExtensionActive('cache')) {
+ // Load from database
+ $result = SQL_QUERY_ESC("SELECT `title` FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='%s' LIMIT 1",
+ array($module), __FUNCTION__, __LINE__);
+
+ // Is the entry there?
+ if (SQL_NUMROWS($result) == 1) {
+ // Get the title from database
+ $data = SQL_FETCHARRAY($result);
+ } // END - if
+
+ // Free the result
+ SQL_FREERESULT($result);
+ }
+ } // END - if
- // Free the result
- SQL_FREERESULT($result);
- }
- } // END - if
+ // Trim name
+ $data['title'] = trim($data['title']);
+
+ // Still no luck or empty title?
+ if (empty($data['title'])) {
+ // Is it 'error'?
+ if ($module == 'error') {
+ // Error (real module was not found)
+ $data['title'] = '{--MODULE_ERROR_404--}';
+ } else {
+ // No name found
+ $data['title'] = '{%message,UNKNOWN_MODULE_DETECTED_TITLE=' . $module . '%}';
+ if ((is_resource($result)) && (SQL_HASZERONUMS($result))) {
+ // Add module to database and ignore return value
+ checkModulePermissions($module);
+ } // END - if
+ }
+ } // END - if
- // Trim name
- $data['title'] = trim($data['title']);
-
- // Still no luck or empty title?
- if (empty($data['title'])) {
- // Is it 'error'?
- if ($module == 'error') {
- // Error (real module was not found)
- $data['title'] = '{--MODULE_ERROR_404--}';
- } else {
- // No name found
- $data['title'] = '{%message,UNKNOWN_MODULE_DETECTED_TITLE=' . $module . '%}';
- if ((is_resource($result)) && (SQL_HASZERONUMS($result))) {
- // Add module to database and ignore return value
- checkModulePermissions($module);
- } // END - if
- }
+ // Store in cache
+ $GLOBALS[__FUNCTION__][$module] = $data['title'];
} // END - if
- // Return name
- return $data['title'];
+ // Return it
+ return $GLOBALS[__FUNCTION__][$module];
}
// Checks if module_status entry is there
// Is the module_status entry there?
if (!isModuleStatusSet($module)) {
// Abort
- debug_report_bug('Module status not set. module=' . $module);
+ reportBug('Module status not set. module=' . $module);
} // END - if
// Return it
return $GLOBALS['module_status'][$module];
}
-// Checks wether the given module is registered
+// Checks whether the given module is registered
function isModuleRegistered ($module) {
// By default nothing is found
$found = false;
return $found;
}
-// Checks wether the given module is locked by just checking the cache
+// Checks whether the given module is locked by just checking the cache
function isModuleLocked ($module) {
// Determine if there a cache entry and is it set
$return = ((isset($GLOBALS['cache_array']['modules']['locked'][$module])) && ($GLOBALS['cache_array']['modules']['locked'][$module] == 'Y'));
return $return;
}
-// Checks wether the given module is hidden by just checking the cache
+// Checks whether the given module is hidden by just checking the cache
function isModuleHidden ($module) {
// Determine if there a cache entry and is it set
$return = ((isset($GLOBALS['cache_array']['modules']['hidden'][$module])) && ($GLOBALS['cache_array']['modules']['hidden'][$module] == 'Y'));
return $return;
}
-// Checks wether the given module is mem_only by just checking the cache
+// Checks whether the given module is mem_only by just checking the cache
function isModuleMemberOnly ($module) {
// Determine if there a cache entry and is it set
$return = ((isset($GLOBALS['cache_array']['modules']['mem_only'][$module])) && ($GLOBALS['cache_array']['modules']['mem_only'][$module] == 'Y'));
return $return;
}
-// Checks wether the given module is admin_only by just checking the cache
+// Checks whether the given module is admin_only by just checking the cache
function isModuleAdminOnly ($module) {
// Determine if there a cache entry and is it set
$return = ((isset($GLOBALS['cache_array']['modules']['admin_only'][$module])) && ($GLOBALS['cache_array']['modules']['admin_only'][$module] == 'Y'));
}
// Adds a SQL for given module
-function addModuleSql ($module, $locked, $hidden, $adminOnly, $memOnly) {
+function addModuleSql ($module, $title, $locked, $hidden, $adminOnly, $memOnly) {
// Is the module already registered?
if (!isModuleRegistered($module)) {
// Add it
- addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_mod_reg` (`module`,`locked`,`hidden`,`admin_only`,`mem_only`) VALUES ('" . $module . "','" . $locked . "','" . $hidden . "','" . $adminOnly . "','" . $memOnly . "')");
+ addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_mod_reg` (`module`,`title`,`locked`,`hidden`,`admin_only`,`mem_only`) VALUES ('" . $module . "','" . $title . "','" . $locked . "','" . $hidden . "','" . $adminOnly . "','" . $memOnly . "')");
} else {
// Already registered
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Already registered: module=%s,locked=%s,hidden=%s,admin=%s,mem=%s",
case 'locked':
// Set HTTP status
- setHttpStatus('403 FORBIDDEN');
+ setHttpStatus('403 Forbidden');
if (!isIncludeReadable($GLOBALS['module_inc'])) {
// Set HTTP status again
- setHttpStatus('404 NOT FOUND');
+ setHttpStatus('404 Not Found');
// Module does addionally not exists
- addFatalMessage(__FUNCTION__, __LINE__, '{--MODULE_REGISTRY_404--}');
+ addFatalMessage(__FUNCTION__, __LINE__, '{--MODULE_REGISTRY_LOCKED_404--}');
} // END - if
// Add fatal message
addFatalMessage(__FUNCTION__, __LINE__, '{--MYSQL_ERRORS--}');
}
+ // Is the module valid?
if (($isModuleValid === true) && (!is_null($GLOBALS['module_inc']))) {
+ // Run pre-filter
+ runFilterChain('pre_module_load');
+
// Everything is okay so we can load the module
loadIncludeOnce($GLOBALS['module_inc']);
+
+ // Run post-filter
+ runFilterChain('post_module_load');
} // END - if
- // Add the footer (this will call shutdown())
+ // Add the footer (this will call doShutdown())
loadIncludeOnce('inc/footer.php');
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Load include file
// Check if the admin has submitted data or not
if ((isFormSent()) && ((!isPostRequestElementSet('admin_login')) || (!isPostRequestElementSet('admin_password')) || (strlen(postRequestElement('admin_password')) < getConfig('minium_admin_pass_length')))) {
- setPostRequestElement('ok', '***');
+ setPostRequestElement('login', '***');
} // END - if
- if ((isFormSent()) && (postRequestElement('ok') != '***')) {
+ if ((isFormSent('login')) && (postRequestElement('login') != '***')) {
// All required data was entered so we check his account
$ret = ifAdminLoginDataIsValid(postRequestElement('admin_login'), postRequestElement('admin_password'));
break;
case '404': // Administrator login not found
- setPostRequestElement('ok', $ret);
+ setPostRequestElement('login', $ret);
$ret = '{%message,ADMIN_ACCOUNT_404=' . postRequestElement('admin_login') . '%}';
destroyAdminSession();
break;
case 'password': // Wrong password
- setPostRequestElement('ok', $ret);
+ setPostRequestElement('login', $ret);
$ret = '{--WRONG_PASS--} [<a href="{%url=modules.php?module=admin&reset_pass=1%}">{--ADMIN_RESET_PASS--}</a>]';
destroyAdminSession();
break;
$content['login_message'] = '';
$content['pass_message'] = '';
- if (isFormSent()) {
+ if (isFormSent('login')) {
// Set messages to zero
$loginMessage = '';
$passwdMessage = '';
if (!isPostRequestElementSet('admin_login')) {
// No login entered?
$loginMessage = '{--ADMIN_NO_LOGIN--}';
- } elseif ((!empty($ret)) && (postRequestElement('ok') == '404')) {
+ } elseif ((!empty($ret)) && (postRequestElement('login') == '404')) {
// An error comes back from login?
$loginMessage = $ret;
}
} elseif (strlen(postRequestElement('admin_password')) < getConfig('minium_admin_pass_length')) {
// Or password too short?
$passwdMessage = '{--ADMIN_SHORT_PASS--}';
- } elseif ((!empty($ret)) && (postRequestElement('ok') == 'password')) {
+ } elseif ((!empty($ret)) && (postRequestElement('login') == 'password')) {
// An error comes back from login?
$passwdMessage = $ret;
}
runFilterChain('check_admin_acl');
// Check for version and switch between old menu system and new intelligent menu system
- if ((adminGetMenuMode() == 'NEW') && (isIncludeReadable('inc/modules/admin/lasys-inc.php'))) {
- // Default area is the entrance, of course
- $area = 'entrance';
-
- // Check for similar URL variable
- if (isGetRequestElementSet('area')) {
- $area = getRequestElement('area');
- } // END - if
-
- // Load logical-area menu-system file
- loadIncludeOnce('inc/modules/admin/lasys-inc.php');
+ if (adminGetMenuMode() == 'NEW') {
+ // Load include for admin AJAX
+ loadIncludeOnce('inc/ajax/ajax_admin.php');
- // Create new-style menu system will logical areas
- doAdminLogicalArea($area, $action, getWhat());
+ // Load main template
+ loadTemplate('admin_ajax_main');
} else {
/*
* This little call constructs the whole default old and lacky menu system
break;
case '404': // Administrator login not found
- setPostRequestElement('ok', $ret);
+ setPostRequestElement('login', $ret);
displayMessage('{%message,ADMIN_ACCOUNT_404=' . getCurrentAdminId() . '%}');
destroyAdminSession();
break;
case 'password': // Wrong password
- setPostRequestElement('ok', $ret);
+ setPostRequestElement('login', $ret);
displayMessage('{--WRONG_PASS--}');
destroyAdminSession();
break;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if ($adminHash != '-1') {
// Now, we need to encode the password in the same way the one is encoded in database
$testHash = encodeHashForCookie($adminHash);
- //* DEBUG: */ debugOutput('adminLogin=' . $adminLogin . ',passHash='.$passHash.',adminHash='.$adminHash.',testHash='.$testHash);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'adminLogin=' . $adminLogin . ',passHash='.$passHash.',adminHash='.$adminHash.',testHash='.$testHash);
// If they both match, the login data is valid
if ($testHash == $passHash) {
} // END - if
// Return status
- //* DEBUG: */ debugOutput('ret='.$ret);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret='.$ret);
return $ret;
}
// Do an admin action
function doAdminAction () {
- // Get default what
- $what = getWhat();
-
- //* DEBUG: */ debugOutput(__LINE__.'*'.$what.'/'.getModule().'/'.getAction().'/'.getWhat().'*');
-
- // Remove any spaces from variable
- if (empty($what)) {
- // Default admin action is the overview page
- $what = 'overview';
- } else {
- // Secure it
- $what = secureString($what);
- }
+ // Determine correct 'what' value
+ $what = determineWhat();
// Get action value
$action = getActionFromModuleWhat(getModule(), $what);
`action`='%s' AND
(
(
- `what`='%s' AND `what` != 'overview'
+ `what`='%s' AND `what` != 'welcome'
) OR (
(
`what`='' OR `what` IS NULL
) AND (
- '%s'='overview'
+ '%s'='welcome'
)
)
)
loadTemplate('admin_main_footer', false, $content);
}
-// Checks wether current admin is allowed to access given action/what combination
-// (only one is allowed to be null!)
+/**
+ * Checks whether current admin is allowed to access given action/what
+ * combination (only one is allowed to be null!).
+ */
function isAdminAllowedAccessMenu ($action, $what = NULL) {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$action][$what])) {
// ACL is always 'allow' when no ext-admins is installed
// @TODO This can be rewritten into a filter
- $GLOBALS[__FUNCTION__][$action][$what] = ((!isExtensionInstalledAndNewer('admins', '0.2.0')) || (isAdminsAllowedByAcl($action, $what)));
+ $GLOBALS[__FUNCTION__][$action][$what] = ((!isExtensionInstalledAndNewer('admins', '0.2.0')) || ((isExtensionActive('admins')) && (isAdminsAllowedByAcl($action, $what))));
} // END - if
// Return the cached value
// Filename
$inc = sprintf("inc/modules/admin/action-%s.php", $mainContent['main_action']);
- // Is the file readable?
- $readable = isIncludeReadable($inc);
-
// Is the current admin allowed to access this 'action' menu?
if (isAdminAllowedAccessMenu($mainContent['main_action'])) {
if ($SUB === false) {
$OUT .= '<li class="admin_menu"' . addJavaScriptMenuContent('admin', $mainContent['main_action'], $action, $what) . '>
<div class="nobr"><strong>·</strong> ';
- if ($readable === true) {
+ // Is the file readable?
+ if (isIncludeReadable($inc)) {
if (($mainContent['main_action'] == $action) && (empty($what))) {
$OUT .= '<strong>';
} else {
$OUT .= $mainContent['main_title'];
- if ($readable === true) {
+ // Is the file readable?
+ if (isIncludeReadable($inc)) {
if (($mainContent['main_action'] == $action) && (empty($what))) {
$OUT .= '</strong>';
} else {
if (ifAdminMenuHasEntries($mainContent['main_action'])) {
// Sub menu has been called
$SUB = true;
- $OUT .= '<ul class="admin_menu_sub">';
- // Load all entries
- while ($subContent = SQL_FETCHARRAY($result_what)) {
- // Filename
- $inc = sprintf("inc/modules/admin/what-%s.php", $subContent['sub_what']);
-
- // Is the file readable?
- $readable = isIncludeReadable($inc);
-
- // Is the current admin allowed to access this 'what' menu?
- if (isAdminAllowedAccessMenu(NULL, $subContent['sub_what'])) {
- // Insert compiled title and description
- $GLOBALS['menu']['title'][$subContent['sub_what']] = $subContent['sub_title'];
- $GLOBALS['menu']['description'][$subContent['sub_what']] = $subContent['sub_descr'];
- $OUT .= '<li class="admin_menu">
+ // Do we have entries?
+ if (!SQL_HASZERONUMS($result_what)) {
+ // Start HTML code
+ $OUT .= '<ul class="admin_menu_sub">';
+
+ // Load all entries
+ while ($subContent = SQL_FETCHARRAY($result_what)) {
+ // Filename
+ $inc = sprintf("inc/modules/admin/what-%s.php", $subContent['sub_what']);
+
+ // Is the current admin allowed to access this 'what' menu?
+ if (isAdminAllowedAccessMenu(NULL, $subContent['sub_what'])) {
+ // Insert compiled title and description
+ $GLOBALS['menu']['title'][$subContent['sub_what']] = $subContent['sub_title'];
+ $GLOBALS['menu']['description'][$subContent['sub_what']] = $subContent['sub_descr'];
+ $OUT .= '<li class="admin_menu">
<div class="nobr"><strong>--></strong> ';
- if ($readable === true) {
- if ($what == $subContent['sub_what']) {
- $OUT .= '<strong>';
+
+ // Is the file readable?
+ if (isIncludeReadable($inc)) {
+ if ($what == $subContent['sub_what']) {
+ $OUT .= '<strong>';
+ } else {
+ $OUT .= '[<a href="{%url=modules.php?module=admin&what=' . $subContent['sub_what'] . '%}">';
+ }
} else {
- $OUT .= '[<a href="{%url=modules.php?module=admin&what=' . $subContent['sub_what'] . '%}">';
+ $OUT .= '<span class="bad" style="cursor:help" title="{%message,ADMIN_MENU_WHAT_404_TITLE=' . $subContent['sub_what'] . '%}">';
}
- } else {
- $OUT .= '<span class="bad" style="cursor:help" title="{%message,ADMIN_MENU_WHAT_404_TITLE=' . $subContent['sub_what'] . '%}">';
- }
- $OUT .= $subContent['sub_title'];
+ $OUT .= $subContent['sub_title'];
- if ($readable === true) {
- if ($what == $subContent['sub_what']) {
- $OUT .= '</strong>';
+ // Is the file readable?
+ if (isIncludeReadable($inc)) {
+ if ($what == $subContent['sub_what']) {
+ $OUT .= '</strong>';
+ } else {
+ $OUT .= '</a>]';
+ }
} else {
- $OUT .= '</a>]';
+ $OUT .= '</span>';
}
- } else {
- $OUT .= '</span>';
- }
- $OUT .= '</div>
+ $OUT .= '</div>
</li>';
- } // END - if
- } // END - while
+ } // END - if
+ } // END - while
+
+ // Finish HTML output
+ $OUT .= '</ul>';
+ } // END - if
// Free memory
SQL_FREERESULT($result_what);
- $OUT .= '</ul>';
} // END - if
// Close li-tag
}
// Create a member selection box
-function addMemberSelectionBox ($userid = NULL, $add_all = false, $return = false, $none = false, $field = 'userid') {
+function addMemberSelectionBox ($userid = NULL, $add_all = false, $return = false, $none = false, $field = 'userid', $whereStatement = " WHERE `surname` NOT LIKE '{?tester_user_surname_prefix?}%'") {
// Output selection form with all confirmed user accounts listed
$result = SQL_QUERY('SELECT
- `userid`,`surname`,`family`
+ `userid`,
+ `surname`,
+ `family`
FROM
`{?_MYSQL_PREFIX?}_user_data`
+' . $whereStatement . '
ORDER BY
`userid` ASC', __FUNCTION__, __LINE__);
// Load all entries
while ($content = SQL_FETCHARRAY($result)) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . intval($userid) . '/' . $content['userid']);
$OUT .= '<option value="' . bigintval($content['userid']) . '"';
- if ($userid == $content['userid']) $OUT .= ' selected="selected"';
+ if (bigintval($userid) === bigintval($content['userid'])) {
+ $OUT .= ' selected="selected"';
+ } // END - if
$OUT .= '>' . $content['surname'] . ' ' . $content['family'] . ' (' . bigintval($content['userid']) . ')</option>';
} // END - while
// Load all entries
while ($content = SQL_FETCHARRAY($result)) {
$OUT .= '<option value="' . $content['menu'] . '"';
- if ((!empty($default)) && ($default == $content['menu'])) $OUT .= ' selected="selected"';
+ if ((!empty($default)) && ($default == $content['menu'])) {
+ $OUT .= ' selected="selected"';
+ } // END - if
$OUT .= '>' . $content['title'] . '</option>';
} // END - while
// Now, walk through all entries and prepare them for saving
foreach ($postData as $id => $val) {
// Process only formular field but not submit buttons ;)
- if ($id != 'ok') {
- // Do not save the ok value
- convertSelectionsToEpocheTime($postData, $tableData, $id, $skip);
-
- // Shall we process this id? It muss not be empty, of course
- if (($skip === false) && (!empty($id)) && ((!isset($GLOBALS['skip_config'][$id]))) || ($tableName != '_config')) {
- // Translate the value? (comma to dot!)
- if ((is_array($translateComma)) && (in_array($id, $translateComma))) {
- // Then do it here... :)
- $val = convertCommaToDot($val);
- } // END - if
-
- // Shall we add numbers or strings?
- $test = (float) $val;
- if ('' . $val . '' == '' . $test . '') {
- // Add numbers
- $tableData[] = sprintf("`%s`=%s", $id, $test);
- } elseif (is_null($val)) {
- // Add NULL
- $tableData[] = sprintf("`%s`=NULL", $id);
- } else {
- // Add strings
- $tableData[] = sprintf("`%s`='%s'", $id, trim($val));
- }
+ if ($id == 'ok') {
+ // Skip this button
+ continue;
+ } // END - if
- // Do not add a config entry twice
- $GLOBALS['skip_config'][$id] = true;
+ // Do not save the ok value
+ convertSelectionsToEpocheTime($postData, $tableData, $id, $skip);
- // Update current configuration
- setConfigEntry($id, $val);
+ // Shall we process this id? It muss not be empty, of course
+ if (($skip === false) && (!empty($id)) && ((!isset($GLOBALS['skip_config'][$id]))) || ($tableName != '_config')) {
+ // Translate the value? (comma to dot!)
+ if ((is_array($translateComma)) && (in_array($id, $translateComma))) {
+ // Then do it here... :)
+ $val = convertCommaToDot($val);
} // END - if
+
+ // Shall we add numbers or strings?
+ $test = (float) $val;
+ if ('' . $val . '' == '' . $test . '') {
+ // Add numbers
+ array_push($tableData, sprintf("`%s`=%s", $id, $test));
+ } elseif (is_null($val)) {
+ // Add NULL
+ array_push($tableData, sprintf("`%s`=NULL", $id));
+ } else {
+ // Add strings
+ array_push($tableData, sprintf("`%s`='%s'", $id, trim($val)));
+ }
+
+ // Do not add a config entry twice
+ $GLOBALS['skip_config'][$id] = true;
+
+ // Update current configuration
+ setConfigEntry($id, $val);
} // END - if
} // END - foreach
foreach ($tableData as $entry) {
// Split up
$line = explode('=', $entry);
- $keys[] = $line[0];
- $values[] = $line[1];
+ array_push($keys , $line[0]);
+ array_push($values, $line[1]);
} // END - foreach
// Add both in one line
- $keys = implode('`,`', $keys);
- $values = implode(', ', $values);
+ $keys = implode('`,`', $keys);
+ $values = implode(', ' , $values);
// Generate SQL string
$sql = sprintf("INSERT INTO `{?_MYSQL_PREFIX?}%s` (%s) VALUES (%s)",
$part = substr($part, 0, -4);
// Is that part different from the overview?
- if ($part != 'overview') {
+ if ($part != 'welcome') {
$OUT .= '<option value="' . $part . '"';
- if ($part == $default) $OUT .= ' selected="selected"';
+ if ($part == $default) {
+ $OUT .= ' selected="selected"';
+ } // END - if
$OUT .= '>' . $part . '</option>';
} // END - if
} // END - if
if (($title == '0') && ($what == 'list_refs')) {
// Return title again
return $title;
+ } elseif (!empty($title)) {
+ // Not empty, so skip next one
} elseif (isExtensionActive('nickname')) {
// Get nickname
$nick = getNickname($userid);
// $tableName must be an array
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// $tableName is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif ((!is_array($userIdColumn)) || (count($userIdColumn) != 1)) {
// $tableName is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
} // END - if
// Default subject is the subject part
// $tableName and $idColumn must bove be arrays!
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// $tableName is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($idColumn)) {
// $idColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif ((!is_array($userIdColumn)) || (count($userIdColumn) != 1)) {
// $tableName is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
}
// Init row output
$OUT = '';
// "Walk" through all entries
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'listType=<pre>'.print_r($listType,true).'</pre>,tableName<pre>'.print_r($tableName,true).'</pre>,columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,idColumn=<pre>'.print_r($idColumn,true).'</pre>,userIdColumn=<pre>'.print_r($userIdColumn,true).'</pre>,rawUserId=<pre>'.print_r($rawUserId,true).'</pre>');
+ //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'listType=<pre>'.print_r($listType,true).'</pre>,tableName<pre>'.print_r($tableName,true).'</pre>,columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,idColumn=<pre>'.print_r($idColumn,true).'</pre>,userIdColumn=<pre>'.print_r($userIdColumn,true).'</pre>,rawUserId=<pre>'.print_r($rawUserId,true).'</pre>');
foreach (postRequestElement($idColumn[0]) as $id => $selected) {
// Secure id number
$id = bigintval($id);
// Skip any missing entries
if ($idx === false) {
// Skip this one
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'key=' . $key . ' - SKIPPED!');
+ //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'key=' . $key . ' - SKIPPED!');
continue;
} // END - if
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',userIdColumn=' . $userIdColumn[0]);
if ($key == $userIdColumn[0]) {
// Add it again as raw id
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'key=' . $key . ',userIdColumn=' . $userIdColumn[0]);
+ //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'key=' . $key . ',userIdColumn=' . $userIdColumn[0]);
$content[$userIdColumn[0]] = convertZeroToNull($value);
$content[$userIdColumn[0] . '_raw'] = $content[$userIdColumn[0]];
} // END - if
// If the key matches the idColumn variable, we need to temporary remember it
- //* DEBUG: */ debugOutput('key=' . $key . ',idColumn=' . $idColumn[0] . ',value=' . $value);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',idColumn=' . $idColumn[0] . ',value=' . $value);
if ($key == $idColumn[0]) {
- // Found, so remember it
- $GLOBALS['admin_list_builder_id_value'] = $value;
+ /*
+ * Found, so remember it securely (to make sure only id
+ * numbers can pass, don't use alpha-numerical values!)
+ */
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - set as admin_list_builder_id_value!');
+ $GLOBALS['admin_list_builder_id_value'] = bigintval($value);
} // END - if
// Do we have a call-back function and extra-value pair?
if ((isset($filterFunctions[$idx])) && (isset($extraValues[$idx]))) {
// Handle the call in external function
- //* DEBUG: */ debugOutput('key=' . $key . ',fucntion=' . $filterFunctions[$idx] . ',value=' . $value);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',fucntion=' . $filterFunctions[$idx] . ',value=' . $value);
$content[$key] = handleExtraValues(
$filterFunctions[$idx],
$value,
);
} elseif ((isset($columns[$idx]['name'])) && (isset($filterFunctions[$columns[$idx]['name']])) && (isset($extraValues[$columns[$idx]['name']]))) {
// Handle the call in external function
- //* DEBUG: */ debugOutput('key=' . $key . ',fucntion=' . $filterFunctions[$columns[$idx]['name']] . ',value=' . $value);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',fucntion=' . $filterFunctions[$columns[$idx]['name']] . ',value=' . $value);
$content[$key] = handleExtraValues(
$filterFunctions[$columns[$idx]['name']],
$value,
}
// Change status of "build" list
-function adminBuilderStatusHandler ($mode, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray, $rawUserId = array('userid')) {
+function adminBuilderStatusHandler ($mode, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray, $rawUserId = array('userid'), $cacheFiles = array()) {
// $tableName must be an array
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($idColumn)) {
// $idColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif ((!is_array($userIdColumn)) || (count($userIdColumn) != 1)) {
// $tableName is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
} // END - if
- // All valid entries? (We hope so here!)
- if ((count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && (count($statusArray) > 0)) {
- // "Walk" through all entries
- foreach (postRequestElement($idColumn[0]) as $id => $sel) {
- // Construct SQL query
- $sql = sprintf("UPDATE `{?_MYSQL_PREFIX?}_%s` SET", SQL_ESCAPE($tableName[0]));
-
- // Load data of entry
- $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
- array(
- $tableName[0],
- $idColumn[0],
- $id
- ), __FUNCTION__, __LINE__);
+ // "Walk" through all entries
+ foreach (postRequestElement($idColumn[0]) as $id => $sel) {
+ // Construct SQL query
+ $sql = sprintf("UPDATE `{?_MYSQL_PREFIX?}_%s` SET", SQL_ESCAPE($tableName[0]));
- // Fetch the data
- $content = SQL_FETCHARRAY($result);
+ // Load data of entry
+ $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
+ array(
+ $tableName[0],
+ $idColumn[0],
+ $id
+ ), __FUNCTION__, __LINE__);
- // Free the result
- SQL_FREERESULT($result);
+ // Fetch the data
+ $content = SQL_FETCHARRAY($result);
- // Add all status entries (e.g. status column last_updated or so)
- $newStatus = 'UNKNOWN';
- $oldStatus = 'UNKNOWN';
- $statusColumn = 'unknown';
- foreach ($statusArray as $column => $statusInfo) {
- // Does the entry exist?
- if ((isset($content[$column])) && (isset($statusInfo[$content[$column]]))) {
- // Add these entries for update
- $sql .= sprintf(" `%s`='%s',", SQL_ESCAPE($column), SQL_ESCAPE($statusInfo[$content[$column]]));
-
- // Remember status
- if ($statusColumn == 'unknown') {
- // Always (!!!) change status column first!
- $oldStatus = $content[$column];
- $newStatus = $statusInfo[$oldStatus];
- $statusColumn = $column;
- } // END - if
- } elseif (isset($content[$column])) {
- // Unfinished!
- debug_report_bug(__FUNCTION__, __LINE__, ':UNFINISHED: id=' . $id . ',column=' . $column . '[' . gettype($statusInfo) . '] = ' . $content[$column]);
- }
- } // END - foreach
+ // Free the result
+ SQL_FREERESULT($result);
- // Add other columns as well
- foreach (postRequestArray() as $key => $entries) {
- // Debug message
- logDebugMessage(__FUNCTION__, __LINE__, 'Found entry: ' . $key);
-
- // Skip id, raw userid and 'do_$mode'
- if (!in_array($key, array($idColumn[0], $rawUserId[0], ('do_' . $mode)))) {
- // Are there brackets () at the end?
- if (substr($entries[$id], -2, 2) == '()') {
- // Direct SQL command found
- $sql .= sprintf(" `%s`=%s,", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id]));
- } else {
- // Add regular entry
- $sql .= sprintf(" `%s`='%s',", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id]));
+ // Add all status entries (e.g. status column last_updated or so)
+ $newStatus = 'UNKNOWN';
+ $oldStatus = 'UNKNOWN';
+ $statusColumn = 'unknown';
+ foreach ($statusArray as $column => $statusInfo) {
+ // Does the entry exist?
+ if ((isset($content[$column])) && (isset($statusInfo[$content[$column]]))) {
+ // Add these entries for update
+ $sql .= sprintf(" `%s`='%s',", SQL_ESCAPE($column), SQL_ESCAPE($statusInfo[$content[$column]]));
+
+ // Remember status
+ if ($statusColumn == 'unknown') {
+ // Always (!!!) change status column first!
+ $oldStatus = $content[$column];
+ $newStatus = $statusInfo[$oldStatus];
+ $statusColumn = $column;
+ } // END - if
+ } elseif (isset($content[$column])) {
+ // Unfinished!
+ reportBug(__FUNCTION__, __LINE__, ':UNFINISHED: id=' . $id . ',column=' . $column . '[' . gettype($statusInfo) . '] = ' . $content[$column]);
+ }
+ } // END - foreach
- // Add entry
- $content[$key] = $entries[$id];
- }
+ // Add other columns as well
+ foreach (postRequestArray() as $key => $entries) {
+ // Debug message
+ logDebugMessage(__FUNCTION__, __LINE__, 'Found entry: ' . $key);
+
+ // Skip id, raw userid and 'do_$mode'
+ if (!in_array($key, array($idColumn[0], $rawUserId[0], ('do_' . $mode)))) {
+ // Are there brackets () at the end?
+ if (substr($entries[$id], -2, 2) == '()') {
+ // Direct SQL command found
+ $sql .= sprintf(" `%s`=%s,", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id]));
} else {
- // Skipped entry
- logDebugMessage(__FUNCTION__, __LINE__, 'Skipped: ' . $key);
- }
- } // END - foreach
+ // Add regular entry
+ $sql .= sprintf(" `%s`='%s',", SQL_ESCAPE($key), SQL_ESCAPE($entries[$id]));
- // Finish SQL statement
- $sql = substr($sql, 0, -1) . sprintf(" WHERE `%s`=%s AND `%s`='%s' LIMIT 1",
- $idColumn[0],
- bigintval($id),
- $statusColumn,
- $oldStatus
- );
+ // Add entry
+ $content[$key] = $entries[$id];
+ }
+ } else {
+ // Skipped entry
+ logDebugMessage(__FUNCTION__, __LINE__, 'Skipped: ' . $key);
+ }
+ } // END - foreach
- // Run the SQL
- SQL_QUERY($sql, __FUNCTION__, __LINE__);
+ // Finish SQL statement
+ $sql = substr($sql, 0, -1) . sprintf(" WHERE `%s`=%s AND `%s`='%s' LIMIT 1",
+ $idColumn[0],
+ bigintval($id),
+ $statusColumn,
+ $oldStatus
+ );
- // Do we have an URL?
- if (isset($content['url'])) {
- // Then add a framekiller test as well
- $content['frametester'] = generateFrametesterUrl($content['url']);
- } // END - if
+ // Run the SQL
+ SQL_QUERY($sql, __FUNCTION__, __LINE__);
- // Send "build mails" out
- sendAdminBuildMails($mode, $tableName, $content, $id, $statusInfo[$content[$column]], $userIdColumn);
- } // END - foreach
- } // END - if
+ // Send "build mails" out
+ sendAdminBuildMails($mode, $tableName, $content, $id, $statusInfo[$content[$column]], $userIdColumn);
+ } // END - foreach
}
// Delete rows by given id numbers
-function adminDeleteEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $deleteNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid')) {
+function adminDeleteEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $deleteNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
// $tableName must be an array
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($idColumn)) {
// $idColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($userIdColumn)) {
// $userIdColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($deleteNow)) {
// $deleteNow is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'deleteNow[]=' . gettype($deleteNow) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'deleteNow[]=' . gettype($deleteNow) . '!=array: userIdColumn=' . $userIdColumn);
} // END - if
- // All valid entries? (We hope so here!)
- if ((count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues))) {
- // Shall we delete here or list for deletion?
- if ($deleteNow[0] === true) {
- // The base SQL command:
- $sql = "DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s` IN (%s)";
-
- // Delete them all
- $idList = '';
- foreach (postRequestElement($idColumn[0]) as $id => $sel) {
- // Is there a userid?
- if (isPostRequestElementSet($rawUserId[0], $id)) {
- // Load all data from that id
- $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
- array(
- $tableName[0],
- $idColumn[0],
- $id
- ), __FUNCTION__, __LINE__);
+ // Shall we delete here or list for deletion?
+ if ($deleteNow[0] === true) {
+ // The base SQL command:
+ $sql = "DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s` IN (%s)";
+
+ // Delete them all
+ $idList = '';
+ foreach (postRequestElement($idColumn[0]) as $id => $sel) {
+ // Is there a userid?
+ if (isPostRequestElementSet($rawUserId[0], $id)) {
+ // Load all data from that id
+ $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
+ array(
+ $tableName[0],
+ $idColumn[0],
+ $id
+ ), __FUNCTION__, __LINE__);
- // Fetch the data
- $content = SQL_FETCHARRAY($result);
+ // Fetch the data
+ $content = SQL_FETCHARRAY($result);
- // Free the result
- SQL_FREERESULT($result);
+ // Free the result
+ SQL_FREERESULT($result);
- // Send "build mails" out
- sendAdminBuildMails('delete', $tableName, $content, $id, '', $userIdColumn);
- } // END - if
+ // Send "build mails" out
+ sendAdminBuildMails('delete', $tableName, $content, $id, '', $userIdColumn);
+ } // END - if
- // Add id number
- $idList .= $id . ',';
- } // END - foreach
+ // Add id number
+ $idList .= $id . ',';
+ } // END - foreach
- // Run the query
- SQL_QUERY_ESC($sql, array($tableName[0], $idColumn[0], substr($idList, 0, -1)), __FUNCTION__, __LINE__);
+ // Run the query
+ SQL_QUERY_ESC($sql, array($tableName[0], $idColumn[0], substr($idList, 0, -1)), __FUNCTION__, __LINE__);
- // Was this fine?
- if (SQL_AFFECTEDROWS() == count(postRequestElement($idColumn[0]))) {
- // All deleted
- displayMessage('{--ADMIN_ALL_ENTRIES_REMOVED--}');
- } else {
- // Some are still there :(
- displayMessage(sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_DELETED'), SQL_AFFECTEDROWS(), count(postRequestElement($idColumn[0]))));
- }
+ // Was this fine?
+ if (SQL_AFFECTEDROWS() == countPostSelection($idColumn[0])) {
+ // All deleted
+ displayMessage('{--ADMIN_ALL_ENTRIES_REMOVED--}');
} else {
- // List for deletion confirmation
- adminListBuilder('delete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+ // Some are still there :(
+ displayMessage(sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_DELETED'), SQL_AFFECTEDROWS(), countPostSelection($idColumn[0])));
}
- } // END - if
+ } else {
+ // List for deletion confirmation
+ adminListBuilder('delete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+ }
}
// Edit rows by given id numbers
-function adminEditEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $editNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid')) {
+function adminEditEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $editNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
// $tableName must be an array
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($idColumn)) {
// $idColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($userIdColumn)) {
// $userIdColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($editNow)) {
// $editNow is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'editNow[]=' . gettype($editNow) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'editNow[]=' . gettype($editNow) . '!=array: userIdColumn=' . $userIdColumn);
} // END - if
- // All valid entries? (We hope so here!)
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'idColumn=<pre>'.print_r($idColumn,true).'</pre>,tableName<pre>'.print_r($tableName,true).'</pre>,columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,editNow=<pre>'.print_r($editNow,true).'</pre>,userIdColumn=<pre>'.print_r($userIdColumn,true).'</pre>,rawUserId=<pre>'.print_r($rawUserId,true).'</pre>');
- //if ((count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues))) {
- if (true) {
- // Shall we change here or list for editing?
- if ($editNow[0] === true) {
- // Change them all
- $affected = '0';
- foreach (postRequestElement($idColumn[0]) as $id => $sel) {
- // Prepare content array (new values)
- $content = array();
-
- // Prepare SQL for this row
- $sql = sprintf("UPDATE `{?_MYSQL_PREFIX?}_%s` SET",
- SQL_ESCAPE($tableName[0])
- );
- foreach (postRequestArray() as $key => $entries) {
- // Skip raw userid which is always invalid
- if ($key == $rawUserId[0]) {
- // Continue with next field
- continue;
- } // END - if
+ // Shall we change here or list for editing?
+ if ($editNow[0] === true) {
+ // Change them all
+ $affected = '0';
+ foreach (postRequestElement($idColumn[0]) as $id => $sel) {
+ // Prepare content array (new values)
+ $content = array();
- // Is entries an array?
- if (($key != $idColumn[0]) && (is_array($entries)) && (isset($entries[$id]))) {
- // Add this entry to content
- $content[$key] = $entries[$id];
+ // Prepare SQL for this row
+ $sql = sprintf("UPDATE `{?_MYSQL_PREFIX?}_%s` SET",
+ SQL_ESCAPE($tableName[0])
+ );
- // Send data through the filter function if found
- if ((isset($filterFunctions[$key])) && (isset($extraValues[$key]))) {
- // Filter function set!
- $entries[$id] = handleExtraValues($filterFunctions[$key], $entries[$id], $extraValues[$key]);
- } // END - if
+ // "Walk" through all entries
+ foreach (postRequestArray() as $key => $entries) {
+ // Skip raw userid which is always invalid
+ if ($key == $rawUserId[0]) {
+ // Continue with next field
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',idColumn[0]=' . $idColumn[0] . ',rawUserId=' . $rawUserId[0]);
+ continue;
+ } // END - if
+
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',idColumn[0]=' . $idColumn[0] . ',entries=<pre>'.print_r($entries,true).'</pre>');
+
+ // Is entries an array?
+ if (($key != $idColumn[0]) && (is_array($entries)) && (isset($entries[$id]))) {
+ // Add this entry to content
+ $content[$key] = $entries[$id];
+
+ // Send data through the filter function if found
+ if ($key == $userIdColumn[0]) {
+ // Is the userid, we have to process it with convertZeroToNull()
+ $entries[$id] = convertZeroToNull($entries[$id]);
+ } elseif ((isset($filterFunctions[$key])) && (isset($extraValues[$key]))) {
+ // Filter function set!
+ $entries[$id] = handleExtraValues($filterFunctions[$key], $entries[$id], $extraValues[$key]);
+ }
- // Then add this value
+ // Is the value NULL?
+ if ($entries[$id] == 'NULL') {
+ // Add it directly
+ $sql .= sprintf(' `%s`=NULL,',
+ SQL_ESCAPE($key)
+ );
+ } else {
+ // Else add the value covered
$sql .= sprintf(" `%s`='%s',",
SQL_ESCAPE($key),
SQL_ESCAPE($entries[$id])
);
- } elseif (($key != $idColumn[0]) && (!is_array($entries))) {
- // Add normal entries as well!
- $content[$key] = $entries;
}
+ } elseif (($key != $idColumn[0]) && (!is_array($entries))) {
+ // Add normal entries as well!
+ $content[$key] = $entries;
+ }
+ } // END - foreach
- // Do we have an URL?
- if ($key == 'url') {
- // Then add a framekiller test as well
- $content['frametester'] = generateFrametesterUrl($content[$key]);
- } // END - if
- } // END - foreach
+ // Finish SQL command
+ $sql = substr($sql, 0, -1) . " WHERE `" . SQL_ESCAPE($idColumn[0]) . "`=" . bigintval($id) . " LIMIT 1";
- // Finish SQL command
- $sql = substr($sql, 0, -1) . " WHERE `" . $idColumn[0] . "`=" . bigintval($id) . " LIMIT 1";
+ // Run this query
+ SQL_QUERY($sql, __FUNCTION__, __LINE__);
- // Run this query
- SQL_QUERY($sql, __FUNCTION__, __LINE__);
+ // Add affected rows
+ $affected += SQL_AFFECTEDROWS();
- // Add affected rows
- $affected += SQL_AFFECTEDROWS();
+ // Load all data from that id
+ $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
+ array(
+ $tableName[0],
+ $idColumn[0],
+ $id
+ ), __FUNCTION__, __LINE__);
- // Load all data from that id
- $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
- array(
- $tableName[0],
- $idColumn[0],
- $id
- ), __FUNCTION__, __LINE__);
+ // Fetch the data and merge it into $content
+ $content = merge_array($content, SQL_FETCHARRAY($result));
- // Fetch the data and merge it into $content
- $content = merge_array($content, SQL_FETCHARRAY($result));
+ // Free the result
+ SQL_FREERESULT($result);
- // Free the result
- SQL_FREERESULT($result);
+ // Send "build mails" out
+ sendAdminBuildMails('edit', $tableName, $content, $id, '', $userIdColumn);
+ } // END - foreach
- // Send "build mails" out
- sendAdminBuildMails('edit', $tableName, $content, $id, '', $userIdColumn);
- } // END - foreach
+ // Delete cache?
+ if ((count($cacheFiles) > 0) && (!empty($cacheFiles[0]))) {
+ // Delete cache file(s)
+ foreach ($cacheFiles as $cacheFile) {
+ // Skip any empty entries
+ if (empty($cacheFile)) {
+ // This may cause trouble in loadCacheFile()
+ continue;
+ } // END - if
- // Was this fine?
- if ($affected == count(postRequestElement($idColumn[0]))) {
- // All deleted
- displayMessage('{--ADMIN_ALL_ENTRIES_EDITED--}');
- } else {
- // Some are still there :(
- displayMessage(sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_EDITED'), $affected, count(postRequestElement($idColumn[0]))));
- }
+ // Is the cache file loadable?
+ if ($GLOBALS['cache_instance']->loadCacheFile($cacheFile)) {
+ // Then remove it
+ $GLOBALS['cache_instance']->removeCacheFile();
+ } // END - if
+ } // END - if
+ } // END - if
+
+ // Was this fine?
+ if ($affected == countPostSelection($idColumn[0])) {
+ // All deleted
+ displayMessage('{--ADMIN_ALL_ENTRIES_EDITED--}');
} else {
- // List for editing
- adminListBuilder('edit', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+ // Some are still there :(
+ displayMessage(sprintf(getMessage('ADMIN_SOME_ENTRIES_NOT_EDITED'), $affected, countPostSelection($idColumn[0])));
}
} else {
- // Maybe some invalid parameters
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName=' . $tableName[0] . ',columns[]=' . gettype($columns) . ',filterFunctions[]=' . gettype($filterFunctions) . ',extraValues[]=' . gettype($extraValues) . ',idColumn=' . $idColumn[0] . ',userIdColumn=' . $userIdColumn[0] . ' - INVALID!');
+ // List for editing
+ adminListBuilder('edit', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
}
}
// $tableName must be an array
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($idColumn)) {
// $idColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($lockNow)) {
// $lockNow is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'lockNow[]=' . gettype($lockNow) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'lockNow[]=' . gettype($lockNow) . '!=array: userIdColumn=' . $userIdColumn);
} // END - if
- // All valid entries? (We hope so here!)
- if ((count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && (($lockNow[0] === false) || (count($statusArray) == 1))) {
- // Shall we un-/lock here or list for locking?
- if ($lockNow[0] === true) {
- // Un-/lock entries
- adminBuilderStatusHandler('lock', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray);
- } else {
- // List for editing
- adminListBuilder('lock', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
- }
- } // END - if
+ // Shall we un-/lock here or list for locking?
+ if ($lockNow[0] === true) {
+ // Un-/lock entries
+ adminBuilderStatusHandler('lock', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray);
+ } else {
+ // List for editing
+ adminListBuilder('lock', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+ }
}
// Undelete rows by given id numbers
// $tableName must be an array
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($idColumn)) {
// $idColumn is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (!is_array($undeleteNow)) {
// $undeleteNow is no array
- debug_report_bug(__FUNCTION__, __LINE__, 'undeleteNow[]=' . gettype($undeleteNow) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'undeleteNow[]=' . gettype($undeleteNow) . '!=array: userIdColumn=' . $userIdColumn);
} // END - if
- // All valid entries? (We hope so here!)
- if ((count($columns) == count($filterFunctions)) && (count($columns) == count($extraValues)) && (($undeleteNow[0] === false) || (count($statusArray) == 1))) {
- // Shall we un-/lock here or list for locking?
- if ($undeleteNow[0] === true) {
- // Undelete entries
- adminBuilderStatusHandler('undelete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray);
- } else {
- // List for editing
- adminListBuilder('undelete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
- }
- } // END - if
+ // Shall we un-/lock here or list for locking?
+ if ($undeleteNow[0] === true) {
+ // Undelete entries
+ adminBuilderStatusHandler('undelete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $statusArray);
+ } else {
+ // List for editing
+ adminListBuilder('undelete', $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
+ }
}
// Adds a given entry to the database
-function adminAddEntries ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array()) {
+function adminAddEntries ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $columnIndex = NULL) {
//* DEBUG: */ die('columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,POST=<pre>'.print_r($_POST,true).'</pre>');
// Verify that tableName and columns are not empty
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array');
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
} elseif (count($columns) == 0) {
// No columns specified
- debug_report_bug(__FUNCTION__, __LINE__, 'columns is not given. Please fix your XML.');
+ reportBug(__FUNCTION__, __LINE__, 'columns is not given. Please fix your XML.');
}
// Init columns and value elements
$sqlColumns = array();
$sqlValues = array();
+ // Do we have "time columns"?
+ if (count($timeColumns) > 0) {
+ // Then "walk" through all entries
+ foreach ($timeColumns as $column) {
+ // Convert all (possible) selections
+ convertSelectionsToEpocheTimeInPostData($column . '_ye');
+ } // END - foreach
+ } // END - if
+
// Add columns and values
foreach ($columns as $key => $columnName) {
- // Copy entry to final arrays
- $sqlColumns[$key] = $columnName;
- $sqlValues[$key] = postRequestElement($columnName);
- //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key='.$key.',columnName='.$columnName.',filterFunctions='.$filterFunctions[$key].',extraValues='.intval(isset($extraValues[$key])).',extraValuesName='.intval(isset($extraValues[$columnName . '_list'])).'<br />');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',columnName=' . $columnName);
+ // Is columnIndex set?
+ if (!is_null($columnIndex)) {
+ // Check conditions
+ //* DEBUG: */ die('columnIndex=<pre>'.print_r($columnIndex,true).'</pre>'.debug_get_printable_backtrace());
+ assert((is_array($columnName)) && (isset($columnName[$columnIndex])));
+
+ // Then use that index "blindly"
+ $columnName = $columnName[$columnIndex];
+ } // END - if
+
+ // Debug message
+ /* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',columnName[' . gettype($columnName) . ']=' . $columnName . ',filterFunctions=' . $filterFunctions[$key] . ',extraValues=' . intval(isset($extraValues[$key])) . ',extraValuesName=' . intval(isset($extraValues[$columnName . '_list'])) . '<br />');
+
+ // Copy entry securely to the final arrays
+ $sqlColumns[$key] = SQL_ESCAPE($columnName);
+ $sqlValues[$key] = SQL_ESCAPE(postRequestElement($columnName));
// Send data through the filter function if found
if ((isset($filterFunctions[$key])) && (isset($extraValues[$key . '_list']))) {
// Filter function set!
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - BEFORE!');
$sqlValues[$key] = call_user_func_array($filterFunctions[$key], merge_array(array($columnName), $extraValues[$key . '_list']));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - AFTER!');
+ } elseif ((isset($filterFunctions[$key])) && (!empty($filterFunctions[$key]))) {
+ // Run through an extra filter
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - BEFORE!');
+ $sqlValues[$key] = handleExtraValues($filterFunctions[$key], $sqlValues[$key], '');
+ /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - AFTER!');
+ }
+
+ // Is the value not a number?
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key]);
+ if (($sqlValues[$key] != 'NULL') && (is_string($sqlValues[$key]))) {
+ // Add quotes around it
+ $sqlValues[$key] = chr(39) . $sqlValues[$key] . chr(39);
} // END - if
} // END - foreach
// Build the SQL query
- $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName[0] . '` (`' . implode('`,`', $sqlColumns) . "`) VALUES ('" . implode("','", $sqlValues) . "')";
+ $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName[0] . '` (`' . implode('`,`', $sqlColumns) . "`) VALUES (" . implode(',', $sqlValues) . ')';
// Run the SQL query
SQL_QUERY($SQL, __FUNCTION__, __LINE__);
}
// List all given rows (callback function from XML)
-function adminListEntries ($tableTemplate, $rowTemplate, $noEntryMessageId, $tableName, $columns, $whereColumns, $orderByColumns, $callbackColumns, $extraParameters = array()) {
+function adminListEntries ($tableTemplate, $rowTemplate, $noEntryMessageId, $tableName, $columns, $whereColumns, $orderByColumns, $callbackColumns, $extraParameters = array(), $conditions = array()) {
// Verify that tableName and columns are not empty
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
- debug_report_bug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array,tableTemplate=' . $tableTemplate . ',rowTemplate=' . $rowTemplate);
+ reportBug(__FUNCTION__, __LINE__, 'tableName is not given. Please fix your XML,tableName[]=' . gettype($tableName) . '!=array,tableTemplate=' . $tableTemplate . ',rowTemplate=' . $rowTemplate);
} elseif (count($columns) == 0) {
// No columns specified
- debug_report_bug(__FUNCTION__, __LINE__, 'columns is not given. Please fix your XML,tableTemplate=' . $tableTemplate . ',rowTemplate=' . $rowTemplate . ',tableName[0]=' . $tableName[0]);
+ reportBug(__FUNCTION__, __LINE__, 'columns is not given. Please fix your XML,tableTemplate=' . $tableTemplate . ',rowTemplate=' . $rowTemplate . ',tableName[0]=' . $tableName[0]);
}
// This is the minimum query, so at least columns and tableName must have entries
} // END - if
// Add the rest
- $SQL .= '`' . $whereColumns[0]['column'] . '`' . $whereColumns[0]['condition'] . "'" . $whereColumns[0]['look_for'] . "'";
+ $SQL .= '`' . $whereColumns[0]['column'] . '`' . $whereColumns[0]['condition'] . chr(39) . $whereColumns[0]['look_for'] . chr(39);
+ } elseif ((count($whereColumns > 1)) && (count($conditions) > 0)) {
+ // More than one "WHERE" + condition found
+ foreach ($whereColumns as $idx => $columnArray) {
+ // Default is WHERE
+ $condition = 'WHERE';
+
+ // Is the condition element there?
+ if (isset($conditions[$columnArray['column']])) {
+ // Assume the condition
+ $condition = $conditions[$columnArray['column']];
+ } // END - if
+
+ // Add to SQL query
+ $SQL .= ' ' . $condition;
+
+ // Table/alias included?
+ if (!empty($whereColumns[$idx]['table'])) {
+ // Add it as well
+ $SQL .= $whereColumns[$idx]['table'] . '.';
+ } // END - if
+
+ // Add the rest
+ $SQL .= '`' . $whereColumns[$idx]['column'] . '`' . $whereColumns[$idx]['condition'] . chr(39) . convertDollarDataToGetElement($whereColumns[$idx]['look_for']) . chr(39);
+ } // END - foreach
} else {
- // More than one entry -> Unsupported
- debug_report_bug(__FUNCTION__, __LINE__, 'More than one WHERE statement found. This is currently not supported.');
+ // Did not set $conditions
+ reportBug(__FUNCTION__, __LINE__, 'Supplied more than "whereColumns" entries but no conditions! Please fix your XML template.');
}
} // END - if
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
// "Translate" content
- foreach ($callbackColumns as $columnName => $callbackFunction) {
+ foreach ($callbackColumns as $columnName => $callbackName) {
// Fill the callback arguments
$args = array($content[$columnName]);
} // END - if
// Call the callback-function
- //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'callbackFunction=' . $callbackFunction . ',args=<pre>'.print_r($args, true).'</pre>');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'callbackFunction=' . $callbackName . ',args=<pre>'.print_r($args, true).'</pre>');
// @TODO If we can rewrite the EL sub-system to support more than one parameter, this call_user_func_array() can be avoided
- $content[$columnName] = call_user_func_array($callbackFunction, $args);
+ $content[$columnName] = call_user_func_array($callbackName, $args);
} // END - foreach
// Load row template
// Should be admin and valid id
if (!isAdmin()) {
// Not an admin so redirect better
- debug_report_bug(__FUNCTION__, __LINE__, 'id=' . $id . ',row=' . $row . ',data=' . $data . ' - isAdmin()=false');
+ reportBug(__FUNCTION__, __LINE__, 'id=' . $id . ',row=' . $row . ',data=' . $data . ' - isAdmin()=false');
} elseif ($id <= 0) {
// Initiate backtrace
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("id is invalid: %s. row=%s, data=%s",
+ reportBug(__FUNCTION__, __LINE__, sprintf("id is invalid: %s. row=%s, data=%s",
$id,
$row,
$data
), __FUNCTION__, __LINE__);
}
-// Checks wether if the admin menu has entries
+// Checks whether if the admin menu has entries
function ifAdminMenuHasEntries ($action) {
return (
((
$adminLink = '{--ADMIN_NO_ADMIN_ASSIGNED--}';
// Zero? = Not assigned
- if (bigintval($adminId) > 0) {
+ if (isValidUserId($adminId)) {
// Load admin's login
$login = getAdminLogin($adminId);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// At last - but not least - check for own and new unassigned tasks...
$result_tasks = SQL_QUERY_ESC("SELECT
- `id`,`assigned_admin`,`userid`,`task_type`,`subject`,`text`,`task_created`
+ `id`,
+ `assigned_admin`,
+ `userid`,
+ `task_type`,
+ `subject`,
+ `text`,
+ `task_created`
FROM
`{?_MYSQL_PREFIX?}_task_system`
WHERE
$taskData['text'] .= getExtensionNotes();
} else {
// This should not normally happen!
- debug_report_bug(__FILE__, __LINE__, 'ext_name(' . $ext_name . ') or ext_ver(' . $ext_ver . ') is empty! isVerboseSqlEnabled=' . intval(isVerboseSqlEnabled()));
+ reportBug(__FILE__, __LINE__, 'ext_name(' . $ext_name . ') or ext_ver(' . $ext_ver . ') is empty! isVerboseSqlEnabled=' . intval(isVerboseSqlEnabled()));
}
// Prepare array for the template
'add' => $add,
'text' => $taskData['text'],
'task_created' => generateDateTime($taskData['task_created'], '1'),
- 'extension' => $ext_name
+ 'ext_name' => $ext_name
);
// Load template
// @TODO This may also be rewritten to include files
switch ($mode) {
default: // @TODO Unknown support mode
- logDebugMessage(__FILE__, __LINE__, sprintf("Unknown support mode %s detected. This part is under construction!", $mode));
+ logDebugMessage(__FILE__, __LINE__, sprintf("Unknown support mode %s detected. This part is under construction.", $mode));
$OUT .= '<div class="notice medium">{%message,ADMIN_UNKNOWN_SUPPORT_MODE=' . $mode . '%}</div>';
break;
} // END - switch
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `assigned_admin`=NULL WHERE `id`=%s AND `assigned_admin`=%s LIMIT 1",
array(bigintval($taskId), getCurrentAdminId()), __FILE__, __LINE__);
} // END - foreach
- } elseif (isset($postData['delete'])) {
+ } elseif (!empty($postData['delete'])) {
// Delete tasks
foreach ($postData['sel'] as $taskId => $sel) {
SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_task_system` WHERE `id`=%s AND `assigned_admin` IN (%s,0,NULL) LIMIT 1",
} // END - foreach
} else {
// Unknown action
- debug_report_bug(__FILE__, __LINE__, sprintf("Unknown task action performed. data=<pre>%s</pre>", print_r($postData, true)));
+ reportBug(__FILE__, __LINE__, sprintf("Unknown task action performed. data=<pre>%s</pre>", print_r($postData, true)));
}
// Update query
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (isFormSent()) {
// @TODO Check if category does already exist
- debug_report_bug(__FILE__, __LINE__, 'Unfinished area!');
+ reportBug(__FILE__, __LINE__, 'Unfinished area!');
} else {
// Display form
loadTemplate('admin_add_guestnl_cat');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Merge $row into $content
$content = merge_array($content, $row);
+ // Init referral system
+ initReferralSystem();
+
// Ok, add points and send an email to him...
- addPointsDirectly('admin_add_all', $content['userid'], bigintval(postRequestElement('points')));
+ addPointsThroughReferralSystem('admin_add_all', $content['userid'], bigintval(postRequestElement('points')));
// Prepare content
$content = array(
$content = getUserDataArray();
if ((isFormSent()) && (isPostRequestElementSet('points'))) {
+ // Init referral system
+ initReferralSystem();
+
// Add points and send an email to him...
- addPointsDirectly('admin_add_single', bigintval(getRequestElement('userid')), bigintval(postRequestElement('points')));
+ addPointsThroughReferralSystem('admin_add_single', bigintval(getRequestElement('userid')), bigintval(postRequestElement('points')));
// Prepare content
$content = array(
// Send the email out
sendEmail(bigintval(getRequestElement('userid')), '{--ADMIN_ADD_SUBJECT--}', $message);
- // .. and display a message
+ // ... and display a message
displayMessage('{--ADMIN_POINTS_ADDED--}');
} else {
// Prepare content
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (isFormSent()) {
// Generate timestamps
- $START = mktime(postRequestElement('start_hour'), postRequestElement('start_min'), postRequestElement('start_sec'), postRequestElement('start_month'), postRequestElement('start_day'), postRequestElement('start_year'));
- $END = mktime(postRequestElement('end_hour') , postRequestElement('end_min') , postRequestElement('end_sec') , postRequestElement('end_month') , postRequestElement('end_day') , postRequestElement('end_year') );
+ $START = mktime(postRequestElement('start_time_hour'), postRequestElement('start_time_min'), 0, postRequestElement('start_time_month'), postRequestElement('start_time_day'), postRequestElement('start_time_year'));
+ $END = mktime(postRequestElement('end_time_hour') , postRequestElement('end_time_min') , 0, postRequestElement('end_time_month') , postRequestElement('end_time_day') , postRequestElement('end_time_year') );
// Is there already a rallye running?
$result = SQL_QUERY_ESC("SELECT `id`,`admin_id` FROM `{?_MYSQL_PREFIX?}_rallye_data` WHERE (`start_time` <= %s AND `end_time` >= %s) OR (`start_time` >= %s AND `start_time` <= %s) LIMIT 1",
`end_time`,
`auto_add_new_user`,
`is_active`,
- `send_notify`
+ `send_notify`,
+ `min_users`,
+ `min_prices`
) VALUES (
%s,
'%s',
%s,
'%s',
'%s',
- '%s'
+ '%s',
+ %s,
+ %s
)",
array(
getCurrentAdminId(),
postRequestElement('auto_add'),
postRequestElement('active'),
postRequestElement('notify'),
+ bigintval(postRequestElement('min_users')),
+ bigintval(postRequestElement('min_prices'))
), __FILE__, __LINE__);
// Load id
if (!empty($id)) {
// Reload to prices...
- redirectToUrl('modules.php?module=admin&what=config_rallye_prices&rallye='.$id);
+ redirectToUrl('modules.php?module=admin&what=config_rallye_prices&rallye_id=' . bigintval($id));
} else {
// Problem detected...
- displayMessage('{--RALLYE_PROBLEM_CREATE--}');
+ displayMessage('{--ADMIN_RALLYE_PROBLEM_CREATE--}');
}
} else {
- // Free memory
- SQL_FREERESULT($result);
// Overlapping detected
- displayMessage('{--RALLYE_OVERLAP_TIMES--}');
+ displayMessage('{--ADMIN_RALLYE_OVERLAP_TIMES--}');
}
+
+ // Free memory
+ SQL_FREERESULT($result);
} // END - if
// Starting day
-$content['start_sec'] = addSelectionBox('sec' , 0 , 'start');
-$content['start_min'] = addSelectionBox('min' , 0 , 'start');
-$content['start_hour'] = addSelectionBox('hour' , getShortHour() , 'start');
-$content['start_day'] = addSelectionBox('day' , getDay() , 'start');
-$content['start_month'] = addSelectionBox('month', getMonth() , 'start');
-$content['start_year'] = addSelectionBox('year' , getYear() , 'start');
+$content['start_min'] = addSelectionBox('min' , 0 , 'start_time');
+$content['start_hour'] = addSelectionBox('hour' , getShortHour() , 'start_time');
+$content['start_day'] = addSelectionBox('day' , getDay() , 'start_time');
+$content['start_month'] = addSelectionBox('month', getMonth() , 'start_time');
+$content['start_year'] = addSelectionBox('year' , getYear() , 'start_time');
// Ending timestamp
$endingStamp = time() + (getOneDay() * 7);
// Ending day
-$content['end_sec'] = addSelectionBox('sec' , 0 , 'end');
-$content['end_min'] = addSelectionBox('min' , 0 , 'end');
-$content['end_hour'] = addSelectionBox('hour' , getShortHour() , 'end');
-$content['end_day'] = addSelectionBox('day' , getDay($endingStamp) , 'end');
-$content['end_month'] = addSelectionBox('month', getMonth($endingStamp), 'end');
-$content['end_year'] = addSelectionBox('year' , getYear($endingStamp) , 'end');
+$content['end_min'] = addSelectionBox('min' , 0 , 'end_time');
+$content['end_hour'] = addSelectionBox('hour' , getShortHour() , 'end_time');
+$content['end_day'] = addSelectionBox('day' , getDay($endingStamp) , 'end_time');
+$content['end_month'] = addSelectionBox('month', getMonth($endingStamp), 'end_time');
+$content['end_year'] = addSelectionBox('year' , getYear($endingStamp) , 'end_time');
// Load template
loadTemplate('admin_add_rallye', false, $content);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Was an URL added?
if ((isFormSent('add')) && (isPostRequestElementSet('url'))) {
- // Initialize variables
- $content = array();
- $id = 'reload_ye';
- $skip = false;
- $postData = postRequestArray();
-
// Convert the "reload selections"
- // @TODO Find all convertSelectionsToEpocheTime() calls and rewrite postRequestElement() calls to $postData
- convertSelectionsToEpocheTime($postData, $content, $id, $skip);
+ convertSelectionsToEpocheTimeInPostArray('reload_ye');
// Then add this URL
- if (SURFBAR_ADMIN_ADD_URL($postData['url'], $postData['limit'], $postData['reload'])) {
+ if (doSurfbaradminAddUrl(postRequestElement('url'), postRequestElement('limit'), postRequestElement('reload'))) {
// URL was added
displayMessage('{--ADMIN_SURFBAR_URL_ADDED--}');
} else {
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 05/12/2011 *
+ * =================== Last change: 05/12/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : what-add_tester_user.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Easy creation of tester accounts and their refs *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Einfaches Anlegen von Testbenutzern + Referrals *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if ((!defined('__SECURITY')) || (!isAdmin())) {
+ die();
+} // END - if
+
+// Add description as navigation point
+addYouAreHereLink('admin', __FILE__);
+
+// Is the form sent or something did go wrong?
+if (!isNewUserTesterAllowed()) {
+ // No more accounts allowed to create (maximum reached)
+ displayMessage('{--ADMIN_MAXIMUM_USER_TESTER_REACHED--}');
+
+ // Abort here
+ return;
+} elseif (isFormSent()) {
+ // Yes, so try to create the tester account
+ if (createTesterUserAccount()) {
+ // Account has been created
+ displayMessage('{--ADMIN_TESTER_USER_ACCOUNT_CREATION_DONE--}');
+ } else {
+ // Account not created
+ displayMessage('{--ADMIN_TESTER_USER_ACCOUNT_CREATION_FAILED--}');
+ }
+} // END - if
+
+// Generate max-receive selection
+$content['max_receive_selection'] = addMaxReceiveList('admin', '', true);
+
+// Display form
+loadTemplate('admin_add_tester_user', false, $content);
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (!isFormSent()) {
// Create arrays
- $menus = array(); $titles = array(); $below = array();
+ $menus = array();
+ $titles = array();
+ $below = array();
// Get all available main menus
$result = SQL_QUERY("SELECT `action`,`title`,`sort` FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE (`what`='' OR `what` IS NULL) ORDER BY `sort` ASC", __FILE__, __LINE__);
// @TODO Cant this be rewritten?
while ($content = SQL_FETCHARRAY($result)) {
// Menu actions
- $menus[] = $content['action'];
+ array_push($menus, $content['action']);
// Menu titles
- $titles[] = $content['title'];
+ array_push($titles, $content['title']);
// Below this menu point should the new be added so we simply increase the sort value by 1 :-)
- $below[] = $content['sort'] + 1;
+ array_push($below, $content['sort'] + 1);
} // END - while
// Free memory
// Read menu structure
while ($content = SQL_FETCHARRAY($result)) {
// Menu actions
- $menus[$value_main][] = $content['what'];
+ array_push($menus[$value_main], $content['what']);
// Menu titles
- $titles[$value_main][] = $content['title'];
+ array_push($titles[$value_main], $content['title']);
// Below this menu point should the new be added so we simply increase the sort value by 1 :-)
- $below[$value_main][] = $content['sort'] + 1;
+ array_push($below[$value_main], $content['sort'] + 1);
} // END - while
// Free memory
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (($content['sort'] == '0') || (($content['sort'] == 1) && (!empty($subMenu)))) {
// Is highest position
$content['navi'] = '<a href="{%url=modules.php?module=admin&what=adminedit&sub=' . $content['sub'] . '&act=' . $content['action'] . '&w=' . $content['what'] . '&tid=' . ($content['sort']+1) . '&fid=' . $content['sort'] . '%}">{--LOWER--}</a>';
- } elseif ($count == SQL_NUMROWS($result)) {
+ } elseif (SQL_NUMROWS($result) == $count) {
// Is lowest position
$content['navi'] = '<a href="{%url=modules.php?module=admin&what=adminedit&sub=' . $content['sub'] . '&act=' . $content['action'] . '&w=' . $content['what'] . '&tid=' . ($content['sort']-1) . '&fid=' . $content['sort'] . '%}">{--HIGHER--}</a>';
} elseif ($content['sort'] > 0) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if ((isFormSent('edit')) && (ifPostContainsSelections())) {
// Edit account(s)
adminsEditAdminAccount(postRequestArray());
-} elseif ((isFormSent('do_edit')) && (count(postRequestElement('login')) > 0)) {
+} elseif ((isFormSent('do_edit')) && (ifPostContainsSelections('login'))) {
// Change admin accounts
adminsChangeAdminAccount(postRequestArray());
} elseif ((isFormSent('delete')) && (ifPostContainsSelections())) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$OUT .= '>{--ADMIN_ADMINS_TO_USER_EVENTS--}</option>';
} // END - if
- $OUT .= generateOptionList('admins', 'id', 'login', $content['admin_id'], 'email');
+ $OUT .= generateOptions('admins', 'id', 'login', $content['admin_id'], 'email');
$OUT .= '</select>';
// Transfer ids
// Prepare content
$content['id'] = $id;
$content['mail_template'] = $template;
- $content['admins'] = generateOptionList('admins', 'id', 'login', '', 'email');;
+ $content['admins'] = generateOptions('admins', 'id', 'login', '', 'email');;
- if ($adminId2 > 0) {
+ if (isValidUserId($adminId2)) {
// Add form for an additional admin
$OUT .= loadTemplate('admin_admins_mails_edit_form', true, $content);
} // END - if
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admins_mails` SET `admin_id`=%s WHERE `id`=%s ORDER BY `id` LIMIT 1",
array($content['admin_id'], $id), __FILE__, __LINE__, false));
- if (($content['admin_id'] < 1) && (isPostRequestElementSet('template', $id))) {
+ if ((!isValidUserId($content['admin_id'])) && (isPostRequestElementSet('template', $id))) {
// Remove any other admin entries
addSql(SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admins_mails` WHERE mail_template='%s' AND id != '%s'",
array(postRequestElement('template', $id), $id), __FILE__, __LINE__, false));
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Activated?
if (ifInternalStatsEnabled()) {
// Prepare data for the template
- $content['db_hits'] = getStatsEntry('db_hits');
- $content['cache_hits'] = getStatsEntry('cache_hits');
$content['total_hits'] = (getStatsEntry('db_hits') + getStatsEntry('cache_hits'));
$content['cache_perc'] = (getStatsEntry('cache_hits') / $content['total_hits'] * 100);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
setPostRequestElement('turbo_rates', '');
$RATES = array();
foreach (postRequestElement('rate') as $rate) {
+ // Convert German comma to dot
$rate = trim(convertCommaToDot($rate));
- if (!empty($rate)) $RATES[] = $rate;
+
+ if (!empty($rate)) {
+ array_push($RATES, $rate);
+ } // END - if
} // END - foreach
setPostRequestElement('turbo_rates', trim(implode(';', $RATES)));
unsetPostRequestElement('rate');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Display message
displayMessage($content);
-} elseif ((isFormSent()) && (isPostRequestElementSet('id')) && (is_array(postRequestElement('id')))) {
+} elseif ((isFormSent()) && (ifPostContainsSelections('id'))) {
// Change or delete categories...
$TEXT = '';
foreach (postRequestElement('id') as $id => $cat) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Number of rows to display (option lines!!!)
foreach (array('new','pay','old') as $entry) {
- $content['display_' . $entry] = generateOptionList(
+ $content['display_' . $entry] = generateOptions(
'/ARRAY/',
array(
5,
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
adminSaveSettingsFromPostData();
} else {
// Start of this exchange
- if (getConfig('mt_start') > 0) {
+ if (getMtStart() > 0) {
// Only show start
- $content['mt_start'] = '<strong>' . generateDateTime(getConfig('mt_start'), 3) . '</strong>';
+ $content['mt_start'] = '<strong>' . generateDateTime(getMtStart(), 3) . '</strong>';
} else {
// Make start editable
$content['mt_start'] =
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
array('allow_direct_pay', 'ref_payout'),
array(postRequestElement('allow_direct_pay'), $REF)
);
- if ((getConfig('ref_payout') == '0') && (postRequestElement('ref_payout') > 0)) {
+ if ((getRefPayout() == '0') && (postRequestElement('ref_payout') > 0)) {
// Update account's ref_payout for "must-confirm"
- addSql(sprintf("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `ref_payout`=(%s - `mails_confirmed`)
+ addSql(sprintf("UPDATE
+ `{?_MYSQL_PREFIX?}_user_data`
+SET
+ `ref_payout`=(%s - `mails_confirmed`)
WHERE
`mails_confirmed` < %s", $REF, $REF));
- } elseif ((getConfig('ref_payout') > 0) && (postRequestElement('ref_payout') == '0')) {
+ } elseif ((getRefPayout() > 0) && (postRequestElement('ref_payout') == '0')) {
// Update account's ref_payout for "not-must-confirm"
addSql("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `ref_payout`=0 WHERE `ref_payout` > 0");
+ // @TODO Rewrite these two lines for new user_points columns (e.g. locked_order_points) with a filter
addSql("UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `points`=`points`+`locked_points` WHERE `locked_points` > 0");
addSql("UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `locked_points`=0 WHERE `locked_points` > 0");
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
addYouAreHereLink('admin', __FILE__);
-if (isGetRequestElementSet('rallye')) {
+if (isGetRequestElementSet('rallye_id')) {
// Price submitted?
if (isFormSent('add')) {
if ((isPostRequestElementSet('level')) && ((isPostRequestElementSet('points')) || (isPostRequestElementSet('info')))) {
// Submitted data is valid, but maybe we already have this price level?
$result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_rallye_prices` WHERE `rallye_id`=%s AND `price_level`='%s' LIMIT 1",
- array(bigintval(getRequestElement('rallye')), bigintval(postRequestElement('level'))), __FILE__, __LINE__);
+ array(bigintval(getRequestElement('rallye_id')), bigintval(postRequestElement('level'))), __FILE__, __LINE__);
if (SQL_HASZERONUMS($result)) {
// Ok, new price level entered!
VALUES
(%s, %s, '%s', '%s')",
array(
- bigintval(getRequestElement('rallye')),
+ bigintval(getRequestElement('rallye_id')),
bigintval(postRequestElement('level')),
- postRequestElement('points'),
+ convertCommaToDot(postRequestElement('points')),
postRequestElement('info')
), __FILE__, __LINE__);
- displayMessage('{--RALLYE_PRICE_LEVEL_SAVED--}');
+ displayMessage('{--ADMIN_RALLYE_PRICE_LEVEL_SAVED--}');
} else {
// Free memory
SQL_FREERESULT($result);
// Price level found
- displayMessage('{--RALLYE_PRICE_ALREADY_FOUND--}');
+ displayMessage('{--ADMIN_RALLYE_PRICE_ALREADY_FOUND--}');
}
}
} elseif (isFormSent('do_delete')) {
} // END - foreach
// Output message
- displayMessage('{--RALLYE_ENTRIES_DELETED--}');
+ displayMessage('{--ADMIN_RALLYE_PRICES_DELETED--}');
} else {
- displayMessage('{--RALLYE_ENTRIES_NOT_DELETED--}');
+ displayMessage('{--ADMIN_RALLYE_PRICES_NOT_DELETED--}');
}
} elseif (isFormSent('do_edit')) {
// Change entries
array(
postRequestElement('rallye_id', $id),
bigintval($level),
- postRequestElement('points', $id),
- postRequestElement('infos', $id),
+ convertCommaToDot(postRequestElement('points', $id)),
+ postRequestElement('info', $id),
$id
), __FILE__, __LINE__);
}
// Output message
- displayMessage('{--RALLYE_ENTRIES_CHANGED--}');
+ displayMessage('{--ADMIN_RALLYE_PRICES_CHANGED--}');
}
if (isFormSent('edit')) {
$OUT = '';
foreach (postRequestElement('sel') as $id => $sel) {
// Load data to selected rallye
- $result = SQL_QUERY_ESC("SELECT `rallye_id`,`price_level`,`points`,`info` FROM `{?_MYSQL_PREFIX?}_rallye_prices` WHERE `id`=%s LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT
+ `id`,
+ `rallye_id`,
+ `price_level`,
+ `points`,
+ `info`
+FROM
+ `{?_MYSQL_PREFIX?}_rallye_prices`
+WHERE
+ `id`=%s
+LIMIT 1",
array(bigintval($id)), __FILE__, __LINE__);
+
+ // Fetch data
$content = SQL_FETCHARRAY($result);
+
+ // Free result
SQL_FREERESULT($result);
// Add more content
- $content['rallye_content'] = generateOptionList('rallye_data', 'id', 'title', $content['rallye_id']);
+ $content['rallye_content'] = generateOptions('rallye_data', 'id', 'title', $content['rallye_id']);
// Load row template and switch color
- $OUT .= loadTemplate('admin_config_rallye_edit_row', true, $content);
+ $OUT .= loadTemplate('admin_edit_rallye_prices_row', true, $content);
} // END - foreach
// Remember row content
$content['rows'] = $OUT;
// Prepare data for the main template
- $content['rallye'] = getRequestElement('rallye');
+ $content['rallye_id'] = bigintval(getRequestElement('rallye_id'));
// Load main template
- loadTemplate('admin_config_rallye_edit', false, $content);
+ loadTemplate('admin_edit_rallye_prices', false, $content);
} else {
// Nothing selected
- $content = '{--RALLYE_NO_PRICES_SELECTED_1--}<a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=' . getRequestElement('rallye') . '%}">{--RALLYE_NO_PRICES_SELECTED_2--}</a>{--RALLYE_NO_PRICES_SELECTED_3--}';
- displayMessage($content);
+ displayMessage('{%message,ADMIN_RALLYE_NO_PRICES_SELECTED=' . getRequestElement('rallye_id') . '%}');
}
} elseif (isFormSent('delete')) {
// Check if at last one line is selected
$OUT = '';
foreach (postRequestElement('sel') as $id => $sel) {
// Load data to selected rallye
- $result = SQL_QUERY_ESC("SELECT `rallye_id`,`price_level`,`points`,`info` FROM `{?_MYSQL_PREFIX?}_rallye_prices` WHERE `id`=%s LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT
+ `id`,
+ `rallye_id`,
+ `price_level`,
+ `points`,
+ `info`
+FROM
+ `{?_MYSQL_PREFIX?}_rallye_prices`
+WHERE
+ `id`=%s
+LIMIT 1",
array(bigintval($id)), __FILE__, __LINE__);
+
+ // Fetch data
$content = SQL_FETCHARRAY($result);
+
+ // Free result
SQL_FREERESULT($result);
// Load row template and switch color
- $OUT .= loadTemplate('admin_config_rallye_del_row', true, $content);
+ $OUT .= loadTemplate('admin_delete_rallye_prices_row', true, $content);
} // END - foreach
$content['rows'] = $OUT;
// Prepare data for the main template
- $content['rallye'] = getRequestElement('rallye');
+ $content['rallye_id'] = bigintval(getRequestElement('rallye_id'));
// Load main template
- loadTemplate('admin_config_rallye_del', false, $content);
+ loadTemplate('admin_delete_rallye_prices', false, $content);
} else {
// Nothing selected
- $content = '{--RALLYE_NO_PRICES_SELECTED_1--}<a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=' . getRequestElement('rallye') . '%}">{--RALLYE_NO_PRICES_SELECTED_2--}</a>{--RALLYE_NO_PRICES_SELECTED_3--}';
+ $content = '{--RALLYE_NO_PRICES_SELECTED_1--}<a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=' . getRequestElement('rallye_id') . '%}">{--RALLYE_NO_PRICES_SELECTED_2--}</a>{--RALLYE_NO_PRICES_SELECTED_3--}';
displayMessage($content);
}
} else {
- // a rallye was selected, so check if there are already prices assigned...
+ // A rallye was selected, so check if there are already prices assigned...
$result = SQL_QUERY_ESC("SELECT `id`,`price_level`,`points`,`info` FROM `{?_MYSQL_PREFIX?}_rallye_prices` WHERE `rallye_id`=%s ORDER BY `price_level` ASC",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__);
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__);
if (!SQL_HASZERONUMS($result)) {
// Load all prices for the selected rallye
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
// Load row template and switch color
- $OUT .= loadTemplate('admin_config_rallye_prices_row', true, $content);
+ $OUT .= loadTemplate('admin_list_rallye_prices_simple_row', true, $content);
} // END - while
// Free memory
$content['rows'] = $OUT;
// Prepare data for the main template
- $content['rallye'] = getRequestElement('rallye');
+ $content['rallye_id'] = bigintval(getRequestElement('rallye_id'));
// Load main template
- loadTemplate('admin_config_rallye_prices', false, $content);
+ loadTemplate('admin_list_rallye_prices_simple', false, $content);
} // END - if
}
// Add form for adding new price level
- if (!isFormSent('edit')) {
- loadTemplate('admin_add_rallye_prices', false, getRequestElement('rallye'));
+ if ((!isFormSent('edit')) && (!isFormSent('delete'))) {
+ loadTemplate('admin_add_rallye_prices', false, getRequestElement('rallye_id'));
} // END - if
} else {
// No rallye selected so display all available without prices
$result = SQL_QUERY("SELECT
- d.id, d.admin_id, d.start_time, d.end_time, d.title, a.login, d.is_active
+ d.id AS `rallye_id`,
+ d.admin_id,
+ d.start_time,
+ d.end_time,
+ d.title,
+ a.login,
+ d.is_active
FROM
`{?_MYSQL_PREFIX?}_rallye_data` AS d
LEFT JOIN
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
// Prepare data for the row template
- // @TODO rename: start->start_time, end->end_time
- $content['start'] = generateDateTime($content['start_time'], '3');
- $content['end'] = generateDateTime($content['end_time'] , '3');
+ $content['start_time'] = generateDateTime($content['start_time'], '3');
+ $content['end_time'] = generateDateTime($content['end_time'] , '3');
// Load row template and switch color
$OUT .= loadTemplate('admin_list_rallye_prices_row', true, $content);
loadTemplate('admin_list_rallye_prices', false, $OUT);
} else {
// No rallyes setup so far
- displayMessage('{--RALLYE_NO_RALLYES_SETUP--}');
+ displayMessage('{--ADMIN_RALLYE_NO_RALLYES_SETUP--}');
}
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Now you can never deselect the admin module, bah!!! ;-)
if (($sel == 'Y') || ($mod == 'admin')) {
// Add module to queue
- $MODs[] = $mod;
- }
- }
+ array_push($MODs, $mod);
+ } // END - if
+ } // END - foreach
// Implode array to string and remove posted mod array
setPostRequestElement('rewrite_skip', implode(':', $MODs));
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Save settings
adminSaveSettingsFromPostData();
} else {
+ // Prepare gender selection box
+ $content['tester_user_gender_selection'] = generateGenderSelectionBox(getConfig('tester_user_gender'), 'tester_user_gender');
+
// Load form template
- loadTemplate('admin_config_user');
+ loadTemplate('admin_config_user', false, $content);
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
} else {
// Erotic selection
- for ($idx = '0'; $idx <= 2; $idx++) {
+ for ($idx = 0; $idx <= 2; $idx++) {
$content['yoomedia_erotic_allowed_' . $idx] = '';
} // END - for
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$content['reason'] = postRequestElement('reason');
// Prepare message and send it away
- $message = loadEmailTemplate('del_sponsor', $content, bigintval(getRequestElement('id')));
+ $message = loadEmailTemplate('sponsor_deleted', $content, bigintval(getRequestElement('id')));
sendEmail($content['email'], '{--ADMIN_SPONSOR_DELETE_SUBJECT--}', $message);
// Remove account
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Show delete button here
$content['delete'] = '<input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
-<input type="submit" name="delete" class="form_delete" value="{--TRANSFER_DELETE--}" />';
+<input type="submit" name="delete" class="form_delete" value="{--ADMIN_DELETE_TRANSFERS_SUBMIT--}" />';
// Load final template
loadTemplate('admin_list_transfer', false, $content);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
} // END - if
// Convert time selection
- $content = array(); $id = 'warning_interval_ye'; $skip = false;
- convertSelectionsToEpocheTime(postRequestArray(), $content, $id, $skip);
+ convertSelectionsToEpocheTimeInPostData('warning_interval_ye');
// Save the sponsor
handleSponsorRequest(postRequestArray());
* @TODO Add support for ext-country *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// @TODO Cant this be rewritten?
while ($content = SQL_FETCHARRAY($result_menu)) {
// Menu actions
- $menus[] = $content['action'];
+ array_push($menus, $content['action']);
// Menu titles
- $titles[] = $content['title'];
+ array_push($titles, $content['title']);
// Below this menu point should the new be added so we simply increase the sort value by 1 :-)
- $below[] = $content['sort'] + 1;
+ array_push($below, $content['sort'] + 1);
} // END - while
// Remove double eintries
// Read menu structure
while ($content = SQL_FETCHARRAY($result)) {
// Menu actions
- $menus[$value_main][] = $content['what'];
+ array_push($menus[$value_main], $content['what']);
// Menu titles
- $titles[$value_main][] = $content['title'];
+ array_push($titles[$value_main], $content['title']);
// Below this menu point should the new be added so we simply increase the sort value by 1 :-)
- $below[$value_main][] = $content['sort'] + 1;
+ array_push($below[$value_main], $content['sort'] + 1);
} // END - while
// Remove double eintries
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (($content['sort'] == '0') || (($content['sort'] == 1) && (!empty($subMenu)))) {
// Is highest position
$NAVI = '<a href="{%url=modules.php?module=admin&what=guestedit&sub=' . $content['sub'] . '&act=' . $content['action'] . '&w=' . $content['what'] . '&tid=' . ($content['sort']+1) . '&fid=' . $content['sort'] . '%}">{--LOWER--}</a>';
- } elseif ($count == SQL_NUMROWS($result)) {
+ } elseif (SQL_NUMROWS($result) == $count) {
// Is lowest position
$NAVI = '<a href="{%url=modules.php?module=admin&what=guestedit&sub=' . $content['sub'] . '&act=' . $content['action'] . '&w=' . $content['what'] . '&tid=' . ($content['sort']-1) . '&fid=' . $content['sort'] . '%}">{--HIGHER--}</a>';
} elseif ($content['sort'] > 0) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Prepare data for the row template
$content = array(
'id' => $content['id'],
- 'admins_selection' => generateOptionList('admins', 'id', 'login', $content['admin_id'], 'default_acl'),
+ 'admins_selection' => generateOptions('admins', 'id', 'login', $content['admin_id'], 'default_acl'),
'action_selection' => adminMenuSelectionBox_DEPRECATED('action', $content['action_menu'], $content['id']),
'what_selection' => adminMenuSelectionBox_DEPRECATED('what', $content['what_menu'], $content['id']),
);
} // END - if
// Prepare some constants for the template
- $content['admins_selection'] = generateOptionList('admins', 'id', 'login', '', 'default_acl');
+ $content['admins_selection'] = generateOptions('admins', 'id', 'login', '', 'default_acl');
$content['action_selection'] = adminMenuSelectionBox_DEPRECATED('action');
$content['what_selection'] = adminMenuSelectionBox_DEPRECATED('what');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Check if there is enougth selected
$show = true;
-if ((isPostRequestElementSet('id')) && (is_array(postRequestElement('id'))) && (count(postRequestElement('id')) > 0)) {
+if (ifPostContainsSelections('id')) {
// Okay, which button was pressed?
if (isFormSent('change')) {
// Change permissions
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Check if at least one is in the active rallye
$result = SQL_QUERY("SELECT
- `userid`,`email`,`beg_points`,`last_online`
+ `userid`,
+ `email`,
+ `beg_points`,
+ `last_online`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
`status`='CONFIRMED' AND
`beg_points` > 0
" . $lastOnline . "
+ " . runFilterChain('user_exclusion_sql', ' ') . "
ORDER BY
`beg_points` DESC,
`last_online` DESC,
$OUT = ''; $count = 1; $total = '0';
while ($content = SQL_FETCHARRAY($result)) {
// Init variables
- $WIN1 = ''; $WIN2 = '';
+ $WIN1 = '';
+ $WIN2 = '';
// Maybe he can win his active beg?
if ($count <= getBegRanks()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Old version ???
- $USE = '`turbo_bonus`';
+ $pointsColumns = '`turbo_bonus`';
// Run filter chain to find more columns
$add = runFilterChain('add_bonus_points_user_columns', '');
// Add them, if some where configured
if (!empty($add)) {
// Add more bonus points here
- $USE = '(0' . $add . ')';
+ $pointsColumns = '(0' . $add . ')';
} // END - if
// Init variables
$result = SQL_QUERY("SELECT
`userid`,
`email`,
- " . $USE . " AS `points`,
+ " . $pointsColumns . " AS `points`,
`last_online`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
`status`='CONFIRMED' AND
- " . $USE . " > 0
+ " . $pointsColumns . " > 0
" . $lastOnline . "
+ " . runFilterChain('user_exclusion_sql', ' ') . "
ORDER BY
`points` DESC,
`last_online` DESC,
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'title' => '{--ADMIN_COUNTRY_ACTIVATION_NEXT_LINK--}'
));
} elseif (((isFormSent('edit')) || (isPostRequestElementSet('delete'))) && (isPostRequestElementSet('id'))) {
- if (count(postRequestElement('id')) > 0) {
+ // Do we have entries?
+ if (ifPostContainsSelections('id')) {
+ // Is the proper form sent?
if (isFormSent('edit')) {
// Edit template
$row = 'admin_edit_country_row';
} elseif ((isFormSent('do_delete')) && (isPostRequestElementSet('id'))) {
// Remove
$IDs = implode(',', array_keys(postRequestElement('id')));
- addSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_countries` WHERE `id` IN (".$IDs.") LIMIT ".count(postRequestElement('id'))."");
+ addSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_countries` WHERE `id` IN (' . $IDs . ') LIMIT ' . countPostSelection('id') . '');
// Create message
$message = '{--ADMIN_COUNTRIES_REMOVED--}';
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
UNIX_TIMESTAMP(u.`cashed_on`) AS `cashed_on`,
UNIX_TIMESTAMP(d.`coupon_created`) AS `coupon_created`,
UNIX_TIMESTAMP(d.`coupon_expired`) AS `coupon_expired`,
- d.`points`, d.`total_created`, d.`total_cashed`, d.`coupon_description`
+ d.`points`,
+ d.`total_created`,
+ d.`total_cashed`,
+ d.`coupon_description`
FROM
`{?_MYSQL_PREFIX?}_user_coupons` AS u
INNER JOIN
), __FILE__, __LINE__);
// Do we have entries?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// Init variable
$OUT = '';
d.`id` ASC', __FILE__, __LINE__);
// Do we have entries?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// Init variable
$OUT = '';
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$show = true;
// Check for 'url_id' element
-if ((countRequestPost() > 0) && ((!isPostRequestElementSet('forced_ads_id')) || (!is_array(postRequestElement('forced_ads_id'))) || (count(postRequestElement('forced_ads_id')) == 0))) {
+if ((!isFormSent('add')) && (countRequestPost() > 0) && (!ifPostContainsSelections('forced_ads_id'))) {
// Not found so output message
displayMessage('{--ADMIN_FORCED_ADS_NO_SELECTIONS--}');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$show = true;
// Check for 'url_id' element
-if ((countRequestPost() > 0) && ((!isPostRequestElementSet('forced_campaigns_id')) || (!is_array(postRequestElement('forced_campaigns_id'))) || (count(postRequestElement('forced_campaigns_id')) == 0))) {
+if ((!isFormSent('add')) && (countRequestPost() > 0) && (!ifPostContainsSelections('forced_campaign_id'))) {
// Not found so output message
displayMessage('{--ADMIN_FORCED_CAMPAIGNS_NO_SELECTIONS--}');
} elseif (isFormSent('do_delete')) {
// Remove entries from database
showEntriesByXmlCallback('admin_delete_do_forced_campaigns');
+} elseif (isFormSent('lock')) {
+ // Un-/lock selected campaigns. This does not work for pending campaigns
+ showEntriesByXmlCallback('admin_lock_show_forced_campaigns');
+
+ // Do not show the list of URLs after this template
+ $show = false;
+} elseif (isFormSent('do_lock')) {
+ // Un-/lock selected campaigns. This does not work for pending campaigns
+ showEntriesByXmlCallback('admin_lock_do_forced_campaigns');
+} elseif (isFormSent('activate')) {
+ // List activation of selected campaigns. This does not work for locked campaigns
+ if (doForcedAdminActivateCampaigns()) {
+ // Has all worked
+ displayMessage('{--ADMIN_FORCED_CAMPAIGNS_ACTIVATED_DONE--}');
+ } else {
+ // Something went wrong
+ displayMessage('{--ADMIN_FORCED_CAMPAIGNS_ACTIVATED_FAILED--}');
+ }
}
// Show entries?
return false;
} // END - if
-// List all URLs
+// List all campaigns
showEntriesByXmlCallback('admin_list_forced_campaigns');
+// Init array
+$content = array(
+ 'reload' => createTimeSelections(0, 'forced_campaign_reload_lock', 'Dhms')
+);
+
// Display form for adding a forced-ad
-loadTemplate('admin_add_forced_campaign');
+loadTemplate('admin_add_forced_campaign', false, $content);
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$show = true;
// Check for 'url_id' element
-if ((countRequestPost() > 0) && ((!isPostRequestElementSet('forced_costs_id')) || (!is_array(postRequestElement('forced_costs_id'))) || (count(postRequestElement('forced_costs_id')) == 0))) {
+if ((!isFormSent('add')) && (countRequestPost() > 0) && (!ifPostContainsSelections('forced_costs_id'))) {
// Not found so output message
displayMessage('{--ADMIN_FORCED_COSTS_NO_SELECTIONS--}');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (isGetRequestElementSet('userid')) {
// Check if the user already exists
if (fetchUserData(getRequestElement('userid'))) {
- // Grab user's all unconfirmed mails
- // @TODO Try to rewrite this to a filter
+ // Default is ext-bonus is not installed
+ $rowName = 'stats_id';
+
+ // Is ext-bonus installed?
if (isExtensionActive('bonus')) {
- // Load bonus id
- $result = SQL_QUERY_ESC("SELECT `stats_id`,`bonus_id`,`link_type` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s ORDER BY `id` ASC",
- array(bigintval(getRequestElement('userid'))), __FILE__, __LINE__);
- } else {
- // Load stats id (2nd will be ignored later! But it is needed for the same fetchrow command)
- $result = SQL_QUERY_ESC("SELECT `stats_id`,`stats_id`,`link_type` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s ORDER BY `id` ASC",
- array(bigintval(getRequestElement('userid'))), __FILE__, __LINE__);
- }
+ // Use bonus_id
+ $linkDataName = 'bonus_id';
+ } // END - if
+
+ // Load user links data
+ $result = SQL_QUERY_ESC("SELECT `userid`, `stats_id`, `%s`, `link_type` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s ORDER BY `id` ASC",
+ array(
+ $linkDataName,
+ bigintval(getRequestElement('userid'))
+ ), __FILE__, __LINE__);
// Do we have some entries?
if (!SQL_HASZERONUMS($result)) {
// Some unconfirmed mails left
- if (getRequestElement('delete') == "all") {
+ if (getRequestElement('delete') == 'all') {
// Delete all unconfirmed mails by this user
SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid`=%s LIMIT %s",
array(bigintval(getRequestElement('userid')), SQL_NUMROWS($result)), __FILE__, __LINE__);
$OUT = '';
// List all unconfirmed mails
- // @TODO Find a way to rewrite this. See some lines above for different queries
- while (list($id, $id2, $type) = SQL_FETCHROW($result)) {
- // Initializes all variables
- $mailId = '';
- $problemMessage = '{--ADMIN_GENERAL_MAIL_PROBLEM--}';
+ while ($linkData = SQL_FETCHARRAY($result)) {
+ // Initializes all other elements
+ $linkData['mail_id'] = '';
+ $linkData['problem'] = '{--ADMIN_GENERAL_MAIL_PROBLEM--}';
$result_data = false;
// Load data from stats table...
// @TODO Rewrite this to includes/filter
- switch ($type) {
+ switch ($linkData['link_type']) {
case 'NORMAL':
- $result_data = SQL_QUERY_ESC("SELECT `subject`,`timestamp_ordered` AS `timestamp`,`cat_id` FROM `{?_MYSQL_PREFIX?}_user_stats` WHERE `id`=%s LIMIT 1",
- array(bigintval($id)), __FILE__, __LINE__);
- $type = 'mailid'; $mailId = $id; $problemMessage = '{--NORMAL_MAIL_PROBLEM--}';
- $LINK = '<a href="{%url=mailid.php?userid=' . getRequestElement('userid') . '&mailid=' . $id . '%}" target="_blank">' . $id . '</a>';
+ $result_data = SQL_QUERY_ESC("SELECT `subject`, `timestamp_ordered` AS `timestamp`, `cat_id` FROM `{?_MYSQL_PREFIX?}_user_stats` WHERE `id`=%s LIMIT 1",
+ array(bigintval($linkData['stats_id'])), __FILE__, __LINE__);
+ $linkData['link_type'] = 'mailid';
+ $linkData['mail_id'] = $linkData['stats_id'];
+ $linkData['problem'] = '{--NORMAL_MAIL_PROBLEM--}';
break;
case 'BONUS':
- $result_data = SQL_QUERY_ESC("SELECT `subject`,`timestamp`,`cat_id` FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `id`=%s LIMIT 1",
- array(bigintval($id2)), __FILE__, __LINE__);
- $type = 'bonusid'; $mailId = $id2; $problemMessage = '{--BONUS_MAIL_PROBLEM--}';
- $LINK = '<a href="{%url=mailid.php?userid=' . getRequestElement('userid') . '&bonusid=' . $id2 . '%}" target="_blank">' . $id2 . '</a>';
+ $result_data = SQL_QUERY_ESC("SELECT `subject`, `timestamp`, `cat_id` FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `id`=%s LIMIT 1",
+ array(bigintval($linkData['bonus_id'])), __FILE__, __LINE__);
+ $linkData['link_type'] = 'bonusid';
+ $linkData['mail_id'] = $linkData['bonus_id'];
+ $linkData['problem'] = '{--BONUS_MAIL_PROBLEM--}';
break;
default: // Problem in application detected!
- // Log the error
- logDebugMessage(__FILE__, __LINE__, sprintf("Invalid email type %s detected.", $type));
+ reportBug(__FILE__, __LINE__, sprintf("Invalid email type %s detected.", $linkData['link_type']));
break;
} // END - switch
// Do we have an entry?
if (SQL_NUMROWS($result_data) == 1) {
// Mail was found
- $content = SQL_FETCHARRAY($result_data);
+ $mailData = merge_array($linkData, SQL_FETCHARRAY($result_data));
// Fix empty subject
- if (empty($content['subject'])) {
+ if (empty($mailData['subject'])) {
// The subject line is empty so we use the default
- $content['subject'] = '{--DEFAULT_SUBJECT_LINE--}';
+ $mailData['subject'] = '{--DEFAULT_SUBJECT_LINE--}';
} // END - if
// Prepare data for the row template
- $content['link'] = $LINK;
- $content['timestamp'] = generateDateTime($content['timestamp'], 0);
+ $mailData['timestamp'] = generateDateTime($mailData['timestamp'], 0);
// Load row template
- $OUT .= loadTemplate('admin_list_links_row', true, $content);
+ $OUT .= loadTemplate('admin_list_links_row', true, $mailData);
} else {
// Load template for error
- $OUT .= loadTemplate('admin_list_links_problem', true,
- array(
- 'problem' => $problemMessage,
- 'mail_id' => $mailId
- )
- );
+ $OUT .= loadTemplate('admin_list_links_problem', true, $linkData);
}
// Free result
} // END - while
// Remember list in constant for the template
- $content['email'] = '<a href="' . generateEmailLink(getUserData('email'), 'user_data') . '">' . getUserData('email') . '</a>';
- $content['rows'] = $OUT;
- $content['nums'] = SQL_NUMROWS($result);
- $content['userid'] = bigintval(getRequestElement('userid'));
+ $content = array(
+ 'email' => '<a href="' . generateEmailLink(getUserData('email'), 'user_data') . '">' . getUserData('email') . '</a>',
+ 'rows' => $OUT,
+ 'nums' => SQL_NUMROWS($result),
+ 'userid' => bigintval(getRequestElement('userid')),
+ );
// Free memory
SQL_FREERESULT($result);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Load user's data
if (!fetchUserData($userid)) {
// Abort here because it is not valid!
- debug_report_bug(__FILE__, __LINE__, 'No user account ' . $userid . ' found.');
+ reportBug(__FILE__, __LINE__, 'No user account ' . $userid . ' found.');
} // END - if
if ((getRequestElement('do') == 'accept') && (getUserData('email') != '')) {
// Clear task
if ($taskId > 0) {
runFilterChain('solve_task', $taskId);
- }
+ } // END - if
// Clear payout request
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_payouts` SET `status`='ACCEPTED' WHERE `id`=%s LIMIT 1",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Add description as navigation point
addYouAreHereLink('admin', __FILE__);
+// By default show the list...
+$show = true;
+
+// Check for 'url_id' element
+if ((!isFormSent('add')) && (countRequestPost() > 0) && (!ifPostContainsSelections('id'))) {
+ // Not found so output message
+ displayMessage('{--ADMIN_POINT_ACCOUNTS_NO_SELECTIONS--}');
+
+ // Abort here
+ return;
+} // END - if
+
+// Edit or delete button hit?
+if (isFormSent('add')) {
+ // Add new forced ad
+ if (doAdminAddPointsAccountByType(postRequestArray(), 'CUSTOM')) {
+ // Did work
+ displayMessage('{--ADMIN_POINT_ACCOUNT_ADDED--}');
+ } else {
+ // Doesn't work
+ displayMessage('{--ADMIN_POINT_ACCOUNT_NOT_ADDED--}');
+ }
+} elseif (isFormSent('edit')) {
+ // Show only custom entries for editing
+ showEntriesByXmlCallback('admin_edit_show_point_accounts');
+
+ // Do not show the list of URLs after this template
+ $show = false;
+} elseif (isFormSent('do_edit')) {
+ // Change data of only custom entries
+ showEntriesByXmlCallback('admin_edit_do_point_accounts');
+} elseif ((isFormSent('delete')) && (ifPointsAccountTypeMatchesPost('CUSTOM'))) {
+ // Show only custom entries for deleting
+ showEntriesByXmlCallback('admin_delete_show_point_accounts');
+
+ // Do not show the list of URLs after this template
+ $show = false;
+} elseif ((isFormSent('do_delete')) && (ifPointsAccountTypeMatchesPost('CUSTOM'))) {
+ // Remove only custom entries
+ showEntriesByXmlCallback('admin_delete_do_point_accounts');
+}
+
+// Show entries?
+if ($show === false) {
+ // No, a form has already been show
+ return false;
+} // END - if
+
+// List all campaigns
+showEntriesByXmlCallback('admin_list_point_accounts');
+
+// Display form for adding a forced-ad
+loadTemplate('admin_add_point_accounts');
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$message = '';
// Quick actions on a rallye
-if (isGetRequestElementSet('rallye')) {
+if (isGetRequestElementSet('rallye_id')) {
// Init SQL queries
initSqls();
switch (getRequestElement('activate')) {
case '1': // Activate
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `is_active`='Y' WHERE `id`=%s AND `is_active`='N' LIMIT 1",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__, false)
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__, false)
);
break;
case '0': // Deactivate
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `is_active`='N' WHERE `id`=%s AND `is_active`='Y' LIMIT 1",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__, false)
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__, false)
);
break;
} // END - switch
switch (getRequestElement('notify')) {
case '1': // Activate
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `send_notify`='Y' WHERE `id`=%s AND `send_notify`='N' LIMIT 1",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__, false)
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__, false)
);
break;
case '0': // Deactivate
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `send_notify`='N' WHERE `id`=%s AND `send_notify`='Y' LIMIT 1",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__, false)
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__, false)
);
break;
} // END - switch
switch (getRequestElement('auto')) {
case '1': // Activate
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `auto_add_new_user`='Y' WHERE `id`=%s AND `auto_add_new_user`='N' LIMIT 1",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__, false)
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__, false)
);
break;
case '0': // Deactivate
addSql(SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_rallye_data` SET `auto_add_new_user`='N' WHERE `id`=%s AND `auto_add_new_user`='Y' LIMIT 1",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__, false)
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__, false)
);
break;
} // END - switch
runFilterChain('run_sqls');
// Output message
- $message = '{--RALLYE_DELETED--}';
+ $message = '{--ADMIN_RALLYE_DELETED--}';
} else {
// No rallye selected to delete!
- $message = '{--RALLYE_DELETE_NOTHING_SELECTED--}';
+ $message = '{--ADMIN_RALLYE_DELETE_NOTHING_SELECTED--}';
}
} elseif (isFormSent('do_edit')) {
// Change rallye
$id = bigintval($id);
// Generate timestamps
- $START = mktime(postRequestElement('start_hour', $id), postRequestElement('start_min', $id), postRequestElement('start_sec', $id), postRequestElement('start_month', $id), postRequestElement('start_day', $id), postRequestElement('start_year', $id));
- $END = mktime(postRequestElement('end_hour', $id) , postRequestElement('end_min', $id) , postRequestElement('end_sec', $id) , postRequestElement('end_month', $id) , postRequestElement('end_day', $id) , postRequestElement('end_year', $id) );
+ $START = mktime(postRequestElement('start_time_hour', $id), postRequestElement('start_time_min', $id), 0, postRequestElement('start_time_month', $id), postRequestElement('start_time_day', $id), postRequestElement('start_time_year', $id));
+ $END = mktime(postRequestElement('end_time_hour', $id) , postRequestElement('end_time_min', $id) , 0, postRequestElement('end_time_month', $id) , postRequestElement('end_time_day', $id) , postRequestElement('end_time_year', $id) );
// Update entry
addSql(SQL_QUERY_ESC("UPDATE
runFilterChain('run_sqls');
// Output message
- $message = '{--RALLYE_CHANGED--}';
+ $message = '{--ADMIN_RALLYE_CHANGED--}';
}
}
-if (isFormSent('edit')) {
+// edit/delete are both handled the same way
+if ((isFormSent('edit')) || (isFormSent('delete'))) {
+ // Default is 'edit'
+ $mode = 'edit';
+
+ // Is delete button used?
+ if (isFormSent('delete')) {
+ // Then set it
+ $mode = 'delete';
+ } // END - if
+
// Check for selections
if (ifPostContainsSelections()) {
// Make all selected and deactivated rallyes editable
foreach (postRequestElement('sel') as $id => $selected) {
// Load rallye basic data
$result = SQL_QUERY_ESC("SELECT
- `title`,`descr`,`template`,`start_time`,`end_time`,`min_users`,`min_prices`
+ `title`,
+ `descr`,
+ `template`,
+ `start_time`,
+ `end_time`,
+ `min_users`,
+ `min_prices`
FROM
`{?_MYSQL_PREFIX?}_rallye_data`
WHERE
`id`=%s
LIMIT 1",
array(bigintval($id)), __FILE__, __LINE__);
+
// Fetch an array
$content = SQL_FETCHARRAY($result);
// Free result
SQL_FREERESULT($result);
- // Starting day
- $content['s_sec'] = addSelectionBox('sec' , getSecond($content['start_time']) , 'start', $id);
- $content['s_min'] = addSelectionBox('min' , getMinute($content['start_time']) , 'start', $id);
- $content['s_hour'] = addSelectionBox('hour' , getShortHour($content['start_time']), 'start', $id);
- $content['s_day'] = addSelectionBox('day' , getDay($content['start_time']) , 'start', $id);
- $content['s_month'] = addSelectionBox('month', getMonth($content['start_time']) , 'start', $id);
- $content['s_year'] = addSelectionBox('year' , getYear($content['start_time']) , 'start', $id);
-
- // Ending day
- $content['e_sec'] = addSelectionBox('sec' , getSecond($content['end_time']) , 'end' , $id);
- $content['e_min'] = addSelectionBox('min' , getMinute($content['end_time']) , 'end' , $id);
- $content['e_hour'] = addSelectionBox('hour' , getShortHour($content['end_time']) , 'end' , $id);
- $content['e_day'] = addSelectionBox('day' , getDay($content['end_time']) , 'end' , $id);
- $content['e_month'] = addSelectionBox('month', getMonth($content['end_time']) , 'end' , $id);
- $content['e_year'] = addSelectionBox('year' , getYear($content['end_time']) , 'end' , $id);
-
- // Remember other values
- $content['templ'] = addReferralRallyeTemplateSelection('templ['.$id.']', $content['template']);
- $content['id'] = $id;
+ // Only for editing ...
+ if ($mode == 'edit') {
+ // Starting day
+ $content['s_min'] = addSelectionBox('min' , getMinute($content['start_time']) , 'start_time', $id);
+ $content['s_hour'] = addSelectionBox('hour' , getShortHour($content['start_time']), 'start_time', $id);
+ $content['s_day'] = addSelectionBox('day' , getDay($content['start_time']) , 'start_time', $id);
+ $content['s_month'] = addSelectionBox('month', getMonth($content['start_time']) , 'start_time', $id);
+ $content['s_year'] = addSelectionBox('year' , getYear($content['start_time']) , 'start_time', $id);
+
+ // Ending day
+ $content['e_min'] = addSelectionBox('min' , getMinute($content['end_time']) , 'end_time' , $id);
+ $content['e_hour'] = addSelectionBox('hour' , getShortHour($content['end_time']) , 'end_time' , $id);
+ $content['e_day'] = addSelectionBox('day' , getDay($content['end_time']) , 'end_time' , $id);
+ $content['e_month'] = addSelectionBox('month', getMonth($content['end_time']) , 'end_time' , $id);
+ $content['e_year'] = addSelectionBox('year' , getYear($content['end_time']) , 'end_time' , $id);
+
+ // Remember other values
+ $content['templ'] = addReferralRallyeTemplateSelection('templ[' . $id . ']', $content['template']);
+ } else {
+ // Convert timestamps into human-readable
+ $content['start_time'] = generateDateTime($content['start_time'], '2');
+ $content['end_time'] = generateDateTime($content['end_time'] , '2');
+ }
+
+ // Remember id number
+ $content['rallye_id'] = bigintval($id);
// Output row
- $OUT .= loadTemplate('admin_edit_rallyes_row', true, $content);
+ $OUT .= loadTemplate('admin_' . $mode . '_rallyes_row', true, $content);
} // END - foreach
// Load final template
- loadTemplate('admin_edit_rallyes', false, $OUT);
+ loadTemplate('admin_' . $mode . '_rallyes', false, $OUT);
} else {
// Nothing selected to edit
- displayMessage('{--RALLYE_NO_RALLYES_SELECTED--}');
+ displayMessage('{--ADMIN_RALLYE_NO_RALLYES_SELECTED--}');
}
-} elseif ((getRequestElement('sub') == 'users') && (getRequestElement('rallye') > 0)) {
+} elseif ((getRequestElement('sub') == 'users') && (getRequestElement('rallye_id') > 0)) {
// List users and their refs before start and current
$result = SQL_QUERY_ESC("SELECT
- `userid`,`refs`,`curr_points`
+ `userid`,
+ `refs`,
+ `curr_points`
FROM
`{?_MYSQL_PREFIX?}_rallye_users`
WHERE
`rallye_id`=%s
ORDER BY
`userid` ASC",
- array(bigintval(getRequestElement('rallye'))), __FILE__, __LINE__);
+ array(bigintval(getRequestElement('rallye_id'))), __FILE__, __LINE__);
if (!SQL_HASZERONUMS($result)) {
$OUT = '';
- $content['rallye'] = getRequestElement('rallye');
+ $content['rallye_id'] = bigintval(getRequestElement('rallye_id'));
while ($row = SQL_FETCHARRAY($result)) {
// Check for referral count
$count = getReferralRallyeRefsCount($row['userid'], $row['refs']);
} // END - if
// Get user points
- $points = countSumTotalData($row['userid'], 'user_points', 'points', 'userid', false, " AND `ref_depth`=1 LIMIT 1");
+ $points = countSumTotalData($row['userid'], 'user_points', 'points', 'userid', false, " AND `ref_depth`=1");
//* DEBUG: */ debugOutput(basename(__FILE__).':userid='.$row['userid'].',points='.$points.',opoints='.$row['curr_points']);
// Prepare content
} // END - while
// Remember rows
- $content['rows'] = $OUT;
- $content['rallye'] = getRequestElement('rallye');
+ $content['rows'] = $OUT;
+ $content['rallye_id'] = bigintval(getRequestElement('rallye_id'));
// Free memory
SQL_FREERESULT($result);
loadTemplate('admin_list_rallye_usr', false, $content);
} else {
// No entries found?
- displayMessage('{--RALLYE_ADMIN_USERS_404--}');
+ displayMessage('{--ADMIN_RALLYE_USERS_404--}');
}
} else {
// Start listing rallyes
$result = SQL_QUERY("SELECT
- `id`,`admin_id`,`title`,`descr`,`template`,`start_time`,`end_time`,
- `auto_add_new_user`,`is_active`,`send_notify`,`notified`,`min_users`,`min_prices`
+ `id` AS `rallye_id`,
+ `admin_id`,
+ `title`,
+ `descr`,
+ `template`,
+ `start_time`,
+ `end_time`,
+ `auto_add_new_user`,
+ `is_active`,
+ `send_notify`,
+ `notified`,
+ `min_users`,
+ `min_prices`
FROM
`{?_MYSQL_PREFIX?}_rallye_data`
ORDER BY
$OUT = '';
while ($data = SQL_FETCHARRAY($result)) {
// Count joined userids
- $users = countSumTotalData($data['id'], 'rallye_users', 'id', 'rallye_id', true);
+ $users = countSumTotalData($data['rallye_id'], 'rallye_users', 'rallye_id', 'rallye_id', true);
// Did some users joined this rallye?
if ($users > 0) {
// List joined users
- $users = '<a href="{%url=modules.php?module=admin&what=list_rallyes&sub=users&rallye=' . $data['id'] . '%}" title="{--RALLYE_LIST_USERS_TITLE--}">' . $users . '</a>';
+ $users = '<a href="{%url=modules.php?module=admin&what=list_rallyes&sub=users&rallye_id=' . $data['rallye_id'] . '%}" title="{--ADMIN_LIST_RALLYE_USERS_TITLE--}">{%pipe,translateComma=' . $users . '%}</a>';
} // END - if
// Transfer data into array for the template
$row = array(
- 'select' => '<input type="checkbox" name="sel[' . $data['id'] . ']" class="form_field" value="1" />',
+ 'select' => '<input type="checkbox" name="sel[' . $data['rallye_id'] . ']" class="form_field" value="1" />',
'admin_id' => $data['admin_id'],
- 'id' => $data['id'],
+ 'rallye_id' => $data['rallye_id'],
'title' => $data['title'],
'template' => $data['template'],
'users_content' => $users,
'send_notify' => $data['send_notify'],
'auto_add_new_user' => $data['auto_add_new_user'],
'notified' => $data['notified'],
- 'prices_cnt' => countSumTotalData($data['id'], 'rallye_prices', 'id', 'rallye_id', true),
+ 'prices_cnt' => countSumTotalData($data['rallye_id'], 'rallye_prices', 'rallye_id', 'rallye_id', true),
'descr' => $data['descr'],
'min_users' => $data['min_users'],
'min_prices' => $data['min_prices'],
switch ($data['is_active']) {
case 'Y':
// Rallye is active so do not edit it!
- $row['select'] = '<div class="big">' . $row['id'] . '</div>';
- $row['active_title'] = '{--RALLYE_DEACTIVATE_NOW--}';
+ $row['select'] = '<div class="big">' . $row['rallye_id'] . '</div>';
+ $row['active_title'] = '{--ADMIN_RALLYE_DEACTIVATE_NOW--}';
$row['active'] = '0';
break;
case 'N':
- $row['active_title'] = '{--RALLYE_ACTIVATE_NOW--}';
+ $row['active_title'] = '{--ADMIN_RALLYE_ACTIVATE_NOW--}';
$row['active'] = 1;
break;
} // END - switch
// Notification to members?
switch ($data['send_notify']) {
case 'Y':
- $row['notify_title'] = '{--RALLYE_STOP_NOTIFY_NOW--}';
+ $row['notify_title'] = '{--ADMIN_RALLYE_STOP_NOTIFY_NOW--}';
$row['notify'] = '0';
break;
case 'N':
- $row['notify_title'] = '{--RALLYE_START_NOTIFY_NOW--}';
+ $row['notify_title'] = '{--ADMIN_RALLYE_START_NOTIFY_NOW--}';
$row['notify'] = 1;
break;
} // END - switch
// Auto-add of new joined members?
switch ($data['auto_add_new_user']) {
case 'Y':
- $row['auto_title'] = '{--RALLYE_STOP_AUTO_ADD_NOW--}';
+ $row['auto_title'] = '{--ADMIN_RALLYE_STOP_AUTO_ADD_NOW--}';
$row['auto'] = '0';
break;
case 'N':
- $row['auto_title'] = '{--RALLYE_START_AUTO_ADD_NOW--}';
+ $row['auto_title'] = '{--ADMIN_RALLYE_START_AUTO_ADD_NOW--}';
$row['auto'] = 1;
break;
} // END - switch
loadTemplate('admin_list_rallyes', false, $content);
} else {
// No rallyes setup so far
- displayMessage('{--RALLYE_NO_RALLYES_SETUP--}');
+ displayMessage('{--ADMIN_RALLYE_NO_RALLYES_SETUP--}');
}
}
* Kurzbeschreibung : Alle generierten Refs eines Mitgliedes anzeigen *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// User found?
if (fetchUserData($userid)) {
// Get total refs
- $menge = countSumTotalData($userid, 'user_data', 'userid', 'refid', true);
- $menge_lck = countSumTotalData($userid, 'user_data', 'userid', 'refid', true, " AND `status` != 'CONFIRMED'");
+ $totalReferrals = getUsersTotalReferrals($userid);
+ $totalLockedReferrals = getUsersTotalLockedReferrals($userid);
// Output info message
- displayMessage(sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink(getRequestElement('userid')), $menge, $menge_lck));
+ displayMessage(sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink(getRequestElement('userid')), $totalReferrals, $totalLockedReferrals));
// Load all referral levels
$result_levels = SQL_QUERY("SELECT
- `level`,`percents`
+ `level`,
+ `percents`
FROM
`{?_MYSQL_PREFIX?}_refdepths`
WHERE
// Do we have levels?
if (!SQL_HASZERONUMS($result_refs)) {
// Count entries
- $menge = countSumTotalData($userid, 'user_data', 'userid', 'refid', true);
- $menge_lck = countSumTotalData($userid, 'user_data', 'userid', 'refid', true, " AND `status` != 'CONFIRMED'");
+ $totalReferrals = getUsersTotalReferrals($userid, $levels['level']);
+ $totalLockedReferrals = getUsersTotalLockedReferrals($userid, $levels['level']);
// Output info message
- $levels['info'] = sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink($userid), $menge, $menge_lck);
+ $levels['info'] = sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink($userid), $totalReferrals, $totalLockedReferrals);
// Init variables
$OUT_REFS = '';
// @TODO Try to rewrite some to EL
$content = array(
'userid' => getUserData('userid'),
- 'gender' => getUserData('gender'),
- 'refs_link' => 0,
- 'surname' => getUserData('surname'),
- 'family' => getUserData('family'),
+ 'refs_link' => '0',
'email' => '[<a href="' . generateEmailLink(getUserData('email'), 'user_data') . '">' . getUserData('email') . '</a>]',
- 'status' => getUserData('status'),
'registered' => generateDateTime(getUserData('joined'), 3),
);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* -------------------------------------------------------------------- *
* Short description : List surfbar member actions *
* -------------------------------------------------------------------- *
- * Kurzbeschreibung : Auflistung von Mitgliederaktionen der Surfbar *
+ * Kurzbeschreibung : Auflistung von Mitglieder-Aktionen der Surfbar *
* -------------------------------------------------------------------- *
* $Revision:: $ *
* $Date:: $ *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$show = true;
// Check for 'url_id' element
-if ((countRequestPost() > 0) && ((!isPostRequestElementSet('url_id')) || (!is_array(postRequestElement('url_id'))) || (count(postRequestElement('url_id')) == 0))) {
+if ((countRequestPost() > 0) && (!ifPostContainsSelections('url_id'))) {
// Not found so output message
displayMessage('{--ADMIN_SURFBAR_NO_SELECTIONS--}');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
__FILE__, __LINE__);
if ((ifPostContainsSelections()) && (!isDemoModeActive())) {
// Only unassign / delete tasks when there are selected tasks posted
- if (isPostRequestElementSet('unassign')) {
+ if (isFormSent('unassign')) {
// Unassign from tasks
foreach (postRequestElement('sel') as $id => $sel) {
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `assigned_admin`=NULL WHERE `id`=%s AND `assigned_admin`=%s LIMIT 1",
} // END - foreach
} else {
// Unknown action performed
- debug_report_bug(__FILE__, __LINE__, sprintf("Unknown task action performed. data=<pre>%s</pre>", print_r(postRequestArray(), true)));
+ reportBug(__FILE__, __LINE__, sprintf("Unknown task action performed. data=<pre>%s</pre>", print_r(postRequestArray(), true)));
}
// Update query
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// We only need outgoing transfers
$result = SQL_QUERY('SELECT
- `userid` AS `from_userid`,`to_userid`,`trans_id`,`points`,`reason`,`time_trans`
+ `userid` AS `from_userid`,
+ `to_userid`,
+ `trans_id`,
+ `points`,
+ `reason`,
+ `time_trans`
FROM
`{?_MYSQL_PREFIX?}_user_transfers_out`
ORDER BY
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Does the account exists?
$result_user = SQL_QUERY_ESC("SELECT
- `userid`,`country`,`email`,`birth_day`,`birth_month`,`birth_year`,`last_online`,`used_points`,`emails_sent`,`joined`,`last_update`,`last_profile_sent`,`notified`,`emails_received`,`mails_confirmed`".$MORE."
+ `userid`,
+ `country`,
+ `email`,
+ `birth_day`,
+ `birth_month`,
+ `birth_year`,
+ `last_online`,
+ `used_points`,
+ `emails_sent`,
+ `joined`,
+ `last_update`,
+ `last_profile_sent`,
+ `notified`,
+ `emails_received`,
+ `mails_confirmed`
+ ".$MORE."
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
$content['links'] = getTotalUnconfirmedMails($userid);
// Add links to the numbers
- if ($content['links'] > 0) $content['links'] = $base . '&what=list_links&userid=' . $userid . '%}">' . $content['links'] . '</a>]';
- if ($content['refs'] > 0) $content['refs'] = $base . '&what=list_refs&userid=' . $userid . '%}">{%pipe,translateComma=' . $content['refs'] . '%}</a>]';
- if ($content['cats'] > 0) $content['cats'] = $base . '&what=list_cats&userid=' . $userid . '%}">{%pipe,translateComma=' . $content['cats'] . '%}</a>]';
+ if ($content['links'] > 0) {
+ $content['links'] = $base . '&what=list_links&userid=' . $userid . '%}">' . $content['links'] . '</a>]';
+ } // END - if
+ if ($content['refs'] > 0) {
+ $content['refs'] = $base . '&what=list_refs&userid=' . $userid . '%}">{%pipe,translateComma=' . $content['refs'] . '%}</a>]';
+ } // END - if
+ if ($content['cats'] > 0) {
+ $content['cats'] = $base . '&what=list_cats&userid=' . $userid . '%}">{%pipe,translateComma=' . $content['cats'] . '%}</a>]';
+ } // END - if
// Calculate timestamp for birthday
$stamp = mktime(0, 0, 0, $content['birth_month'], $content['birth_day'], $content['birth_year']);
}
break;
+ case 'testers': // Test accounts
+ // Add statement through filter
+ $whereStatement = runFilterChain('user_inclusion_sql', $whereStatement);
+ break;
+
default: // Invalid list mode
- debug_report_bug(__FILE__, __LINE__, sprintf("Invalid do %s detected.", getRequestElement('do')));
+ reportBug(__FILE__, __LINE__, sprintf("Invalid do %s detected.", SQL_ESCAPE(secureString(getRequestElement('do')))));
break;
} // END - switch
+
+ // If it is not 'testers', add exclusion SQL
+ if (getRequestElement('do') != 'testers') {
+ // Exclude tester users
+ $whereStatement = runFilterChain('user_exclusion_sql', $whereStatement);
+ } // END - if
} // END - if
// Generate master query string
- $sql = sprintf("SELECT `userid`,`email`,`emails_sent`,`mails_confirmed`,`emails_received`" . $MORE . " FROM `{?_MYSQL_PREFIX?}_user_data`" . $whereStatement . " ORDER BY `%s` ASC",
+ $sql = sprintf("SELECT
+ `userid`,
+ `email`,
+ `emails_sent`,
+ `mails_confirmed`,
+ `emails_received`
+ " . $MORE . "
+FROM
+ `{?_MYSQL_PREFIX?}_user_data`
+" . $whereStatement . "
+ORDER BY
+ `%s` ASC",
getRequestElement('sortby')
);
// Prepare SQL and run it
$result_master = SQL_QUERY($sql, __FILE__, __LINE__);
- // Calculate page count (0.5 fixes a bug with page count)
- if (getConfig('user_limit') == '0') {
+ // Is the user limit zero?
+ if (getUserLimit() == '0') {
+ // Then set it to default ...
setConfigEntry('user_limit', 100);
+
+ // ... but output warning
displayMessage('{--EXTENSION_WARNING_USER_LIMIT--}');
} // END - if
- // Activate the extension please!
- $numPages = round(SQL_NUMROWS($result_master) / getConfig('user_limit') + 0.5);
+ // Calculate page count (0.5 fixes a bug with page count)
+ $numPages = round(SQL_NUMROWS($result_master) / getUserLimit() + 0.5);
if (!isGetRequestElementSet('page')) setGetRequestElement('page' , 1);
- if (!isGetRequestElementSet('offset')) setGetRequestElement('offset', getConfig('user_limit'));
+ if (!isGetRequestElementSet('offset')) setGetRequestElement('offset', getUserLimit());
// Add limitation to SQL string and run him again
$sql .= ' LIMIT ' . (getRequestElement('offset') * getRequestElement('page') - getRequestElement('offset')) . ', ' . getRequestElement('offset');
// Are there some entries?
if (!SQL_HASZERONUMS($result_master)) {
- // We have some (new?) registrations!
- $templateContent['user_count'] = getTotalConfirmedUser();
-
// Sorting links and number of pages
$templateContent['sort_links'] = addSortLinks(getRequestElement('letter'), getRequestElement('sortby'));
$templateContent['num_pages'] = $numPages;
$content['email'] = '[<a href="' . generateEmailLink($content['email'], 'user_data') . '">' . $content['email'] . '</a>]';
$content['lock_timestamp'] = generateDateTime($content['lock_timestamp'], '2');
$content['refs'] = countSumTotalData($content['userid'], 'user_refs', 'id', 'userid', true);
- $content['own_points'] = countSumTotalData($content['userid'], 'user_points', 'points') + countSumTotalData($content['userid'], 'user_points', 'order_points');
- $content['locked_points'] = countSumTotalData($content['userid'], 'user_points', 'locked_points') + countSumTotalData($content['userid'], 'user_points', 'locked_order_points');
+
+ // Prepare array for filter
+ $data = array(
+ 'userid' => $content['userid'],
+ 'points' => 0
+ );
+
+ // Run the filter chain
+ $data = runFilterChain('get_own_points', $data);
+
+ // Copy points
+ $content['own_points'] = $data['points'];
+
+ // Prepare array for filter again
+ $data = array(
+ 'userid' => $content['userid'],
+ 'points' => 0
+ );
+
+ // Run the filter chain
+ $data = runFilterChain('get_locked_points', $data);
+
+ // Copy points
+ $content['locked_points'] = $data['points'];
// If we have at least one referral, make it clickable to referral list
if ($content['refs'] > 0) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software. You can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
// Load email message
- $message = loadEmailTemplate('lock_sponsor', $content, bigintval(getRequestElement('id')));
+ $message = loadEmailTemplate('sponsor_locked', $content, bigintval(getRequestElement('id')));
// And send it away
sendEmail($content['email'], $subject, $message);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Output the logfile's content and exit
print($content);
- shutdown();
+ doShutdown();
} else {
// Not readable!
displayMessage('{%message,LOGFILE_NOT_READABLE=' . $access . '%}');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// @TODO Cant this be rewritten?
while ($content = SQL_FETCHARRAY($result)) {
// Menu actions
- $menus[] = $content['action'];
+ array_push($menus, $content['action']);
// Menu titles
- $titles[] = $content['title'];
+ array_push($titles, $content['title']);
// Below this menu point should the new be added so we simply increase the sort value by 1 :-)
- $below[] = $content['sort'] + 1;
+ array_push($below, $content['sort'] + 1);
} // END - if
// Free memory
// Read menu structure
while ($content = SQL_FETCHARRAY($result)) {
// Menu actions
- $menus[$value_main][] = $content['what'];
+ array_push($menus[$value_main], $content['what']);
// Menu titles
- $titles[$value_main][] = $content['title'];
+ array_push($titles[$value_main], $content['title']);
// Below this menu point should the new be added so we simply increase the sort value by 1 :-)
- $below[$value_main][] = $content['sort'] + 1;
+ array_push($below[$value_main], $content['sort'] + 1);
} // END - while
// Free memory
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (empty($row_array[1])) $row_array[1] = 'NONE';
// Get repair/optimization status
- $repairStatus = '{--ADMIN_OPTIMIZE_STATUS_' . str_replace('__', '_', str_replace(',', '', str_replace('+', '', str_replace("'", '', str_replace(' ', '_', strtoupper($row_array[1])))))) . '--}';
+ $repairStatus = '{--ADMIN_OPTIMIZE_STATUS_' . str_replace(array('__', ',', '+', chr(39), ' '), array('_', '', '', '', '_'), strtoupper($row_array[1])) . '--}';
$optimizeStatus = '{--ADMIN_OPTIMIZE_STATUS_UNSUPPORTED--}';
if ($row_array[4] > 0) {
<?php
-/************************************************************************
- * Mailer v0.2.1-FINAL Start: 09/05/2003 *
- * =================== Last change: 07/13/2004 *
- * *
- * -------------------------------------------------------------------- *
- * File : what-overview.php *
- * -------------------------------------------------------------------- *
- * Short description : Generate a simple task list or menu descriptions *
- * -------------------------------------------------------------------- *
- * Kurzbeschreibung : Einfache Task-Liste oder Menuebeschreibungen *
- * -------------------------------------------------------------------- *
- * $Revision:: $ *
- * $Date:: $ *
- * $Tag:: 0.2.1-FINAL $ *
- * $Author:: $ *
- * -------------------------------------------------------------------- *
- * Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
- * For more information visit: http://mxchange.org *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software *
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
- * MA 02110-1301 USA *
- ************************************************************************/
-
-// Some security stuff...
-if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
-} // END - if
-
-// Is sql_patches not yet installed?
-if (!isExtensionInstalled('sql_patches')) {
- // Output warning
- displayMessage('{--ADMIN_WARNING_SQL_PATCHES_MISSING--}');
-} // END - if
-
- // Load include file 'overview-inc' (old standard overview page)
-loadIncludeOnce('inc/modules/admin/overview-inc.php');
-
-// Default is that all jobs are done (why?)
-$jobsDone = true;
-
-// Default is that 'task' is not installed
-$taskExt = false;
-
-// When the admin is logging in check several things first (new jobs to complete and so on)
-if (getAction() == 'login') {
- if ((isExtensionActive('task')) && (function_exists('outputAdvancedOverview'))) {
- // When task extension is registered output advanced overview page
- $jobsDone = outputAdvancedOverview($result_tasks); // This function is provided by the extension 'task'
- $taskExt = true;
- } else {
- // Output standart overview (provided by overview-inc.php)
- $jobsDone = outputStandardOverview($result_tasks);
- }
-} // END - if
-
-// Are we in 'welcome' page and are there jobs to be done?
-if (!ifAdminMenuHasEntries(getAction())) {
- // This menu is empty and so no content is displayed
- displayMessage('{--ADMIN_MENU_EMPTY--}');
-} elseif ($jobsDone === true) {
- // Generate overview of all main menus
- if ((is_array($GLOBALS['menu']['description'])) && (count($GLOBALS['menu']['description']) > 0)) {
- $OUT = '';
- foreach ($GLOBALS['menu']['description'] as $key => $value) {
- // Prepare content
- $content = array(
- 'title' => $GLOBALS['menu']['title'][$key],
- 'text' => $value
- );
-
- // Load row template
- $OUT .= loadTemplate('admin_menu_hints_row', true, $content);
- } // END - foreach
-
- // Load base template
- loadTemplate('admin_menu_hints', false, $OUT);
- }
-} elseif ($taskExt === false) {
- if (isExtensionActive('task')) {
- // Output warning message
- displayMessage('{%message,EXTENSION_WARNING_EXTENSION_INACTIVE=task%}');
- } // END - if
-
- // List selected tasks on overview when task management is not active
- outputSeletectedTasks(postRequestArray(), $result_tasks);
-}
-
-// [EOF]
+// @DEPRECATED
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$count = '0'; $repairedWeights = '0';
while ($content = SQL_FETCHARRAY($result_fix)) {
// Store act value for later usage in sorting sub menus
- $actions[] = $content['action'];
+ array_push($actions, $content['action']);
// Fix weight
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET sort=%s WHERE `id`=%s LIMIT 1",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$result = SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_cats` GROUP BY `userid` ORDER BY `userid` ASC", __FILE__, __LINE__);
if (!SQL_HASZERONUMS($result)) {
// Nothing is removed for now... ;-)
- $REMOVED = '0';
+ $removedRows = '0';
// Check if found userid is also found in user_data table
while ($content = SQL_FETCHARRAY($result)) {
// Ok, we found something to remove
SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `userid`=%s",
array(bigintval($content['userid'])), __FILE__, __LINE__);
- $REMOVED += SQL_AFFECTEDROWS();
+ $removedRows += SQL_AFFECTEDROWS();
} // END - if
} // END - while
- if ($REMOVED > 0) {
+ if ($removedRows > 0) {
// Entries repaired
- $content = '{%message,ADMIN_REPAIR_ENTRIES_FIXED=' . $REMOVED . '%}';
+ $content = '{%message,ADMIN_REPAIR_ENTRIES_FIXED=' . $removedRows . '%}';
} else {
// Nothing repaired
$content = '<div class="notice">{--ADMIN_REPAIR_NOTHING_FIXED--}</div>';
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$count = '0'; $repairedWeights = '0';
while ($content = SQL_FETCHARRAY($result_fix)) {
// Store act value for later usage in sorting sub menus
- $actions[] = $content['action'];
+ array_push($actions, $content['action']);
// Fix weight
$result_sort = SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `sort`=%s WHERE `id`=%s LIMIT 1",
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$count = '0'; $repairedWeights = '0';
while ($content = SQL_FETCHARRAY($result_fix)) {
// Store action value for later usage in sorting sub menus
- $actions[] = $content['action'];
+ array_push($actions, $content['action']);
// Fix weight
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `sort`=%s WHERE `id`=%s LIMIT 1",
while ($content = SQL_FETCHARRAY($result_fix)) {
// Fix weight
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET sort=%s WHERE `id`=%s LIMIT 1",
- array($count, $content['id']), __FILE__, __LINE__);
+ array($count, $content['id']), __FILE__, __LINE__);
$repairedWeights += SQL_AFFECTEDROWS();
// Count one up
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
displayMessage('{--ADMIN_SEND_COUPON_DESCRIPTION_NOT_ENTERED--}');
} else {
// All fields are set, so we can start looking for users who wants to receive coupons
- $result = SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' AND `receiving_coupons`='Y' ORDER BY `userid` ASC",
+ $result = SQL_QUERY("SELECT
+ `userid`
+FROM
+ `{?_MYSQL_PREFIX?}_user_data`
+WHERE
+ `status`='CONFIRMED' AND
+ `receiving_coupons`='Y'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
+ORDER BY
+ `userid` ASC",
__FILE__, __LINE__);
// Do we have entries left?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// Convert timestamp selections
$expirationTime = time() + createEpocheTimeFromSelections('coupon_default_time', postRequestArray());
* table-unique "id". The function generatePassword() can do
* this job for us but we want to exclude some characters.
*/
- $couponCode = generatePassword(30, array('-','+','_','/','.'));
+ $couponCode = generatePassword(30, array('-', '+', '_', '/', '.'));
// Is it really unique?
$isUnique = (countSumTotalData($couponCode, 'user_coupons', 'id', 'coupon_code', true) == 0);
// The above loop should always set $couponCode, so we can now insert it
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_coupons` (`coupon_id`,`userid`,`coupon_code`) VALUES (%s,%s,'%s')",
- array($couponId, $userid, $couponCode), __FILE__, __LINE__);
+ array(
+ $couponId,
+ $userid,
+ $couponCode
+ ), __FILE__, __LINE__);
// Fill array with all required data
$content = array(
sendEmail($userid, '{--MEMBER_COUPON_SUBJECT--}', $mailText);
// Rember this user for the admin email
- $adminUserids[] = $userid;
+ array_push($adminUserids, $userid);
} // END - while
// Prepare content for template
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if (isFormSent()) {
$result = SQL_QUERY("SELECT
- `userid`,`email`
+ `userid`,
+ `email`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `status`='CONFIRMED' AND `nl_receive`='Y'
+ `status`='CONFIRMED' AND
+ `nl_receive`='Y'
ORDER BY
`userid` ASC", __FILE__, __LINE__);
if (!SQL_HASZERONUMS($result)) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$postData['default_theme'] = getRequestElement('default_theme');
// Set session
- setTheme($postData['default_theme']);
+ setMailerTheme($postData['default_theme']);
// Set it in config and current theme as well
setConfigEntry('default_theme', $postData['default_theme']);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if ((!defined('__SECURITY')) || (!isAdmin())) {
- die();
+ exit();
} // END - if
// Add description as navigation point
loadInclude($inc);
// Add found theme to array
- $themes['theme_unix'][] = $dir;
- $themes['theme_name'][] = $GLOBALS['theme_data']['name'];
- $themes['theme_author'][] = $GLOBALS['theme_data']['author'];
- $themes['theme_email'][] = $GLOBALS['theme_data']['email'];
- $themes['theme_url'][] = $GLOBALS['theme_data']['url'];
- $themes['theme_version'][] = $GLOBALS['theme_data']['version'];
+ array_push($themes['theme_unix'] , $dir);
+ array_push($themes['theme_name'] , $GLOBALS['theme_data']['name']);
+ array_push($themes['theme_author'] , $GLOBALS['theme_data']['author']);
+ array_push($themes['theme_email'] , $GLOBALS['theme_data']['email']);
+ array_push($themes['theme_url'] , $GLOBALS['theme_data']['url']);
+ array_push($themes['theme_version'], $GLOBALS['theme_data']['version']);
} // END - while
// Sort array by Uni* name
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// @TODO Rewrite these if-blocks to a filter
if ((isExtensionActive('surfbar')) && (getConfig('surfbar_migrate_order') == 'Y')) {
// Then "migrate" the URL to the surfbar
- SURFBAR_ADMIN_MIGRATE_URL($content['url'], $content['sender']);
+ doSurfbarAdminMigrateUrl($content['url'], $content['sender']);
} // END - if
// Check for bonus extension version >= 0.4.4 for the order bonus
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Set default email
$content['email'] = '{--SPONSOR_NO_ADMIN--}';
- if ($content['admin_id'] > 0) {
+ if (isValidUserId($content['admin_id'])) {
// Load admin's email address for contact
$content['email'] = getAdminEmail($content['admin_id']);
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addYouAreHereLink('admin', __FILE__);
// Is the form sent?
-if ((isPostRequestElementSet('unlock')) && (is_array(postRequestElement('url_id'))) && (count(postRequestElement('url_id')) > 0)) {
+if ((isPostRequestElementSet('unlock')) && (ifPostContainsSelections('url_id'))) {
// Unlock selected URLs
- if (SURFBAR_ADMIN_UNLOCK_URL_IDS(postRequestElement('url_id'))) {
+ if (doSurfbaradminUnlockUrlIds(postRequestElement('url_id'))) {
// Unlock done! :-)
displayMessage('{--ADMIN_SURFBAR_UNLOCK_DONE--}');
} else {
// Unlock failed!
displayMessage('{--ADMIN_SURFBAR_UNLOCK_FAILED--}');
}
-} elseif ((isPostRequestElementSet('reject')) && (is_array(postRequestElement('url_id'))) && (count(postRequestElement('url_id')) > 0)) {
+} elseif ((isPostRequestElementSet('reject')) && (ifPostContainsSelections('url_id'))) {
// Reject selected URLs
- if (SURFBAR_ADMIN_REJECT_URL_IDS(postRequestElement('url_id'))) {
+ if (doSurfbaradminRejectUrlIds(postRequestElement('url_id'))) {
// Unlock done! :-)
displayMessage('{--ADMIN_SURFBAR_UNLOCK_DONE--}');
} else {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Which is the latest version on server?
$ONLINE = array(
- 'version' => trim(str_replace("\n", '', $response[0])),
- 'changed' => trim(str_replace("\n", '', $response[1])),
- 'revision' => trim(str_replace("\n", '', $response[2])),
+ 'version' => trim(str_replace(chr(10), '', $response[0])),
+ 'changed' => trim(str_replace(chr(10), '', $response[1])),
+ 'revision' => trim(str_replace(chr(10), '', $response[2])),
'code' => '200 OK'
);
} else {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
getConfig('usage_base')
);
} else {
- if (strpos(getRequestElement('image'), "\\") > 0) {
- setGetRequestElement('image', substr(getRequestElement('image'), 0, strpos(getRequestElement('image'), "\\")));
+ if (strpos(getRequestElement('image'), chr(92)) > 0) {
+ setGetRequestElement('image', substr(getRequestElement('image'), 0, strpos(getRequestElement('image'), chr(92))));
} // END - if
$FQFN = sprintf("%s%s/%s_usage_%s.png",
getPath(),
imagepng($image);
imagedestroy($image);
} // END - if
- shutdown();
+ doShutdown();
} elseif (isGetRequestElementSet('usage')) {
$FQFN = sprintf("%s%s/usage_%s.html",
getPath(),
// Until here...
// Replace URLs
- $content = str_replace('usage.png' , '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=usage&image=usage', $content);
- $content = str_replace('daily_usage_' , '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=daily&image=' , $content);
- $content = str_replace('hourly_usage_', '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=hourly&image=' , $content);
- $content = str_replace('ctry_usage_' , '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=ctry&image=' , $content);
- $content = str_replace('usage_' , '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&usage=' , str_replace('.html', '', $content));
+ $content = str_replace(
+ // From:
+ array(
+ 'usage.png',
+ 'daily_usage_',
+ 'hourly_usage_',
+ 'ctry_usage_',
+ 'usage_',
+ '.html',
+ ),
+ // To:
+ array(
+ '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=usage&image=usage',
+ '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=daily&image=',
+ '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=hourly&image=',
+ '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&type=ctry&image=',
+ '{?URL?}/modules.php?module=admin&what=' . getWhat() . '&usage=',
+ '',
+ ),
+ // Target to replace on:
+ $content
+ );
$test = strtolower($content);
// Do we need to strip out above and including <body> plus trailing </html> tag?
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
addYouAreHereLink('admin', __FILE__);
// Is a user id given?
-if ((isGetRequestElementSet('userid')) && (bigintval(getRequestElement('userid')) > 0)) {
+if ((isGetRequestElementSet('userid')) && (isValidUserId(getRequestElement('userid')))) {
// Is a user account found?
if (fetchUserData(getRequestElement('userid'))) {
// Load the data
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 12/05/2011 *
+ * =================== Last change: 12/05/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : what-welcome.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Generate a simple task list or menu descriptions *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Einfache Task-Liste oder Menuebeschreibungen *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if ((!defined('__SECURITY')) || (!isAdmin())) {
+ die();
+} // END - if
+
+// Is sql_patches not yet installed?
+if (!isExtensionInstalled('sql_patches')) {
+ // Output warning
+ displayMessage('{--ADMIN_WARNING_SQL_PATCHES_MISSING--}');
+} // END - if
+
+ // Load include file 'overview-inc' (old standard overview page)
+loadIncludeOnce('inc/modules/admin/overview-inc.php');
+
+// Default is that all jobs are done (why?)
+$jobsDone = true;
+
+// Default is that 'task' is not installed
+$taskExt = false;
+
+// When the admin is logging in check several things first (new jobs to complete and so on)
+if (getAction() == 'login') {
+ if ((isExtensionActive('task')) && (function_exists('outputAdvancedOverview'))) {
+ // When task extension is registered output advanced overview page
+ $jobsDone = outputAdvancedOverview($result_tasks); // This function is provided by the extension 'task'
+ $taskExt = true;
+ } else {
+ // Output standart overview (provided by overview-inc.php)
+ $jobsDone = outputStandardOverview($result_tasks);
+ }
+} // END - if
+
+// Are we in 'welcome' page and are there jobs to be done?
+if (!ifAdminMenuHasEntries(getAction())) {
+ // This menu is empty and so no content is displayed
+ displayMessage('{--ADMIN_MENU_EMPTY--}');
+} elseif ($jobsDone === true) {
+ // Generate overview of all main menus
+ if ((is_array($GLOBALS['menu']['description'])) && (count($GLOBALS['menu']['description']) > 0)) {
+ $OUT = '';
+ foreach ($GLOBALS['menu']['description'] as $key => $value) {
+ // Prepare content
+ $content = array(
+ 'title' => $GLOBALS['menu']['title'][$key],
+ 'text' => $value
+ );
+
+ // Load row template
+ $OUT .= loadTemplate('admin_menu_hints_row', true, $content);
+ } // END - foreach
+
+ // Load base template
+ loadTemplate('admin_menu_hints', false, $OUT);
+ }
+} elseif ($taskExt === false) {
+ if (isExtensionActive('task')) {
+ // Output warning message
+ displayMessage('{%message,EXTENSION_WARNING_EXTENSION_INACTIVE=task%}');
+ } // END - if
+
+ // List selected tasks on overview when task management is not active
+ outputSeletectedTasks(postRequestArray(), $result_tasks);
+}
+
+// [EOF]
+?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Initial message part
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
$mode = 'guest';
}
} // END - if
-if ((isPostRequestElementSet('url')) || (isGetRequestElementSet('url')) || (isGetRequestElementSet('frame'))) {
+if ((isPostRequestElementSet('url')) || (isGetRequestElementSet('url')) || (!isFullPage())) {
// Default URL is ours
$url = getUrl();
// Add missing element
$frame = '';
- if (isGetRequestElementSet('frame')) $frame = getRequestElement('frame');
+ if (!isFullPage()) {
+ $frame = getRequestElement('frame');
+ } // END - if
+
+ // Switch on 'frame'
+ // @TODO Rewrite this somehow
switch ($frame) {
case '':
switch ($mode) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (isBlockModeEnabled()) {
// Block mode detected
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (isBlockModeEnabled()) {
// Block mode detected
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (isBlockModeEnabled()) {
// Block mode detected
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (isBlockModeEnabled()) {
// Block mode detected
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif ((!isExtensionActive('online')) && (!isAdmin())) {
// Just skip this extension
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software. You can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (isBlockModeEnabled()) {
// Block mode detected
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isBlockModeEnabled()) {
// Non-block mode detected
return;
$num_themes = countSumTotalData('Y', 'themes', 'id', 'theme_active', true);
}
+// Default is no box
$OUT = '';
+
+// Choose from it
if ($num_themes > 1) {
// If more than 1 is installed output selection box
$OUT = generateThemeSelectionBox();
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
}
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
WHERE
`last_online` >= {?START_TDAY?} AND
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
ORDER BY
`last_online` DESC
LIMIT {?active_limit?}", __FILE__, __LINE__);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// A simple redirect...
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
}
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
if ((isMemberIdSet()) && (isSessionVariableSet('u_hash'))) {
// Maybe, then continue with it
$userid = getMemberId();
-} elseif ((isPostRequestElementSet('id')) && (isPostRequestElementSet('password')) && (isFormSent())) {
+} elseif ((isPostRequestElementSet('id')) && (isPostRequestElementSet('password')) && (isFormSent('login'))) {
// Set userid and crypt password when login data was submitted
if (isNicknameUsed(postRequestElement('id'))) {
// Nickname entered
if (isMember()) {
// Login immidiately...
$url = 'modules.php?module=login';
-} elseif ((isFormSent()) && ('' . $userid . '' != '' . postRequestElement('id') . '')) {
+} elseif ((isFormSent('login')) && ('' . $userid . '' != '' . postRequestElement('id') . '')) {
// Invalid input (no nickname extension installed but nickname entered)
$errorCode = getCode('EXTENSION_PROBLEM');
-} elseif (isFormSent()) {
- // Try the login (see inc/libs/user_functions.php)
- $url = doUserLogin(postRequestElement('id'), postRequestElement('password'));
+} elseif (isFormSent('login')) {
+ // Are both 'id' and 'password' set?
+ if ((isPostRequestElementSet('id')) && (isPostRequestElementSet('password'))) {
+ // Try the login (see inc/libs/user_functions.php)
+ $url = doUserLogin(postRequestElement('id'), postRequestElement('password'));
+ } elseif (!isPostRequestElementSet('id')) {
+ // Empty 'id'
+ $errorCode = getCode('LOGIN_EMPTY_ID');
+ } else {
+ // Empty 'password'
+ $errorCode = getCode('LOGIN_EMPTY_PASSWORD');
+ }
} elseif ((isPostRequestElementSet('new_pass')) && (!empty($userid))) {
// Try the userid/email lookup (see inc/libs/user_functions.php)
$errorCode = doNewUserPassword(postRequestElement('email'), $userid);
// Login problems?
if (!empty($errorCode)) {
// Do we have a userid set?
- if (isSessionVariableSet('current_userid')) {
+ if (isSessionVariableSet('userid')) {
// Then prefetch data for this account
- fetchUserData(getSession('current_userid'));
+ fetchUserData(getSession('userid'));
} // END - if
// @TODO Move this HTML code into a template
- $content['message'] = '<tr>
- <td colspan="4" align="center">
- <span class="bad">' . getMessageFromErrorCode($errorCode) . '</span>
- </td>
-</tr>';
+ $content['message'] = loadTemplate('guest_login_error_message', true, $errorCode);
} // END - if
// Display login form with resend-password form
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
$content['user_count'] = ($content['user_confirmed'] + $content['user_unconfirmed'] + $content['user_locked']);
// Start of this exchange
-$content['mt_start'] = generateDateTime(getConfig('mt_start'), 3);
+$content['mt_start'] = generateDateTime(getMtStart(), '3');
// Project timestamp when number of members are reached
$PROJECTED = '0';
if ($content['user_count'] > 0) {
// @TODO Find a better formular than this one
- $PROJECTED = round((time() - getConfig('mt_start')) / $content['user_count'] * getConfig('mt_stage') + getConfig('mt_start'));
+ $PROJECTED = round((time() - getMtStart()) / $content['user_count'] * getConfig('mt_stage') + getMtStart());
} // END - if
// Generate timestamp
$content['rec'] = countSumTotalData('CONFIRMED', 'user_data', 'receive_mails', 'status', false, " AND `receive_mails` > 0");
// Initial lots of variables
-$bmails = '0'; $sent = '0'; $max = '0'; $rec = '0'; $clicks = '0';
+$bmails = '0';
+$sent = '0';
+$max = '0';
+$rec = '0';
+$clicks = '0';
// Mail orders (only current)
$nmails = getMediadataEntry('normal_orders');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
outputHtml('<div align="center">');
// Check for possible running rallyes
-$ADD = " AND d.is_active='Y'";
+$ADD = " AND d.`is_active`='Y'";
if (isAdmin()) $ADD = '';
$result = SQL_QUERY("SELECT
- d.id, d.admin_id, a.login, d.title, d.descr, d.template, d.start_time, d.end_time, d.min_users, d.min_prices
+ d.`id`,
+ d.`admin_id`,
+ a.`login`,
+ d.`title`,
+ d.`descr`,
+ d.`template`,
+ d.`start_time`,
+ d.`end_time`,
+ d.`min_users`,
+ d.`min_prices`
FROM
`{?_MYSQL_PREFIX?}_rallye_data` AS d
INNER JOIN
`{?_MYSQL_PREFIX?}_admins` AS a
ON
- d.admin_id=a.id
+ d.`admin_id`=a.`id`
WHERE
- d.notified='Y'" . $ADD . "
+ d.`notified`='Y'
+ " . $ADD . "
ORDER BY
- d.end_time
+ d.`end_time` ASC
LIMIT 1", __FILE__, __LINE__);
if (SQL_NUMROWS($result) == 1) {
// Found some (normally one...
- list($id, $adminId, $login, $title, $descr, $templ, $start, $end, $min_users, $min_prices) = SQL_FETCHROW($result);
+ $content = SQL_FETCHARRAY($result);
$expired = false;
- if ($end < time()) {
+ if (($content['end_time'] < time()) && (getTotalConfirmedUser() >= $content['min_users']) && (getTotalRallyeWinners($content['id']) >= $content['min_prices'])) {
// Rallye is expired
$content['extras'] = '{--RALLYE_HAS_EXPIRED--}';
$expired = true;
- } elseif (time() >= ($end - getOneDay())) {
+ } elseif (time() >= ($content['end_time'] - getOneDay())) {
// Rallye will expire in less one day!
$content['extras'] = '{--RALLYE_EXPIRE_ONE_DAY--}';
} else {
}
// Set admin line (currently set to impressum, later to contact form)
- // @TODO Reactivate this: $content['admin'] = '<a href="{%url=modules.php?module=index&what=impressum&id=' . $adminId . '%}">' . $login . '</a>';
-
- // Set title
- $content['title'] = $title;
+ // @TODO Reactivate this: $content['admin'] = '<a href="{%url=modules.php?module=index&what=impressum&id=' . $content['admin_id'] . '%}">' . $content['login'] . '</a>';
// Handle description...
- if ((empty($descr)) && (!empty($templ))) {
+ if ((empty($content['descr'])) && (!empty($content['template']))) {
// Use description from template
- $content['descr'] = loadTemplate('rallye_' . $templ, true);
- } else {
- // Use description from database
- $content['descr'] = $descr;
- }
+ $content['descr'] = loadTemplate('rallye_' . $content['template'], true);
+ } // END - if
// Set start and end time
- $content['start'] = generateDateTime($start, 1);
- $content['end'] = generateDateTime($end , 1);
+ $content['start_time'] = generateDateTime($content['start_time'], 1);
+ $content['end_time'] = generateDateTime($content['end_time'] , 1);
// Determine min_users
- $content['min_users'] = determineReferralRallyeMinimumUsers($min_users);
+ $content['min_users'] = determineReferralRallyeMinimumUsers($content['min_users']);
// Determine min prices (now in function)
- $content['min_prices'] = determineReferralRallyeMinimumPrices($min_prices);
+ $content['min_prices'] = determineReferralRallyeMinimumPrices($content['min_prices']);
if ($expired === true) {
- $content['prices'] = addReferralRallyeWinners('guest', $id);
+ $content['prices'] = addReferralRallyeWinners('guest', $content['id']);
$content['top_users'] = '<div align="center" class="big">' . $content['extras'] . '</div>';
$content['can_win_this'] = '{--RALLYE_OUR_WINNERS_ARE--}';
} else {
- $content['prices'] = addReferralRallyePrices($id, 'html');
- $content['top_users'] = addReferralRallyeTopUsers('guest', $id, getMemberId());
+ $content['prices'] = addReferralRallyePrices($content['id'], 'html');
+ $content['top_users'] = addReferralRallyeTopUsers('guest', $content['id'], getMemberId());
$content['can_win_this'] = '{--RALLYE_YOU_CAN_WIN--}';
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
//* DEBUG: */ debugOutput('isFormSent=' . intval(isFormSent()) . ',isRegistrationDataComplete=' . intval(isRegistrationDataComplete()) . ',isAdmin=' . intval(isAdmin()));
if ((isFormSent()) && (isRegistrationDataComplete())) {
// Do the registration here
- doRegistration();
+ doUserRegistration();
// Output success registration
displayMessage('{--REGISTRATION_DONE--}');
$content[$entry] = SQL_ESCAPE(postRequestElement($entry));
} // END - foreach
- // The admin may see all
- $whereStatement = "WHERE `is_active`='Y'";
- if (isAdmin()) {
- $whereStatement = '';
- } // END - if
-
// Prepare country selection box
- $OUT = '<select name="country_code" class="form_select" size="1">';
- $OUT .= generateOptionList('countries', 'id', 'descr', postRequestElement('country_code'), 'code', $whereStatement);
- $OUT .= '</select>';
- $content['country'] = $OUT;
+ $content['country'] = addCountryCodeSelectionBox(postRequestElement('country_code'));
// Set must-fillout fields
$content = runFilterChain('register_must_fillout', $content);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
SQL_FREERESULT($result);
} elseif ($mode == 'activate') {
// Send activation link again
- if (isFormSent()) {
+ if (isFormSent('login')) {
// Check submitted data
- if (!isPostRequestElementSet('email')) unsetPostRequestElement('ok');
+ if (!isPostRequestElementSet('email')) unsetPostRequestElement('login');
}
- if (isFormSent()) {
+ if (isFormSent('login')) {
// Check email
$result = SQL_QUERY_ESC("SELECT
`id`,`hash`,`status`,`remote_addr`,`gender`,`surname`,`family`,
}
} elseif ($mode == 'lost_pass') {
// Send new password
- if (isFormSent()) {
+ if (isFormSent('login')) {
// Check submitted data
- if (!isPostRequestElementSet('email')) unsetPostRequestElement('ok');
+ if (!isPostRequestElementSet('email')) unsetPostRequestElement('login');
} // END - if
- if (isFormSent()) {
+ if (isFormSent('login')) {
// Check email
$result = SQL_QUERY_ESC("SELECT
`id`,`hash`,`remote_addr`,`gender`,`surname`,`family`,
// Load form
loadTemplate('guest_sponsor_lost');
}
-} elseif (isFormSent()) {
+} elseif (isFormSent('login')) {
// Check status and login data ...
$result = SQL_QUERY_ESC("SELECT
`status`
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
// 1. Salutation / Surname / family name
if (!isPostRequestElementSet('gender')) {
// Surname is empty
- $formErrors[] = '{--SPONSOR_NO_GENDER_SELECTED--}';
+ array_push($formErrors, '{--SPONSOR_NO_GENDER_SELECTED--}');
} // END - if
if (!isPostRequestElementSet('surname')) {
// Surname is empty
- $formErrors[] = '{--SPONSOR_SURNAME_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_SURNAME_EMPTY--}');
} // END - if
if (!isPostRequestElementSet('family')) {
// Surname is empty
- $formErrors[] = '{--SPONSOR_FAMILY_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_FAMILY_EMPTY--}');
} // END - if
// 2. Company name
if (((!isPostRequestElementSet('company')) && ((isPostRequestElementSet('tax_ident')) || (isPostRequestElementSet('position')))) || ((isPostRequestElementSet('company')) && (!isPostRequestElementSet('tax_ident')))) {
if (!isPostRequestElementSet('company')) {
// Company name is empty
- $formErrors[] = '{--SPONSOR_COMPANY_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_COMPANY_EMPTY--}');
} elseif (!isPostRequestElementSet('tax_ident')) {
// Tax ident number name is empty
- $formErrors[] = '{--SPONSOR_TAX_IDENT_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_TAX_IDENT_EMPTY--}');
}
if (!isPostRequestElementSet('position')) {
// Not fatal but not nice: position in company is empty
- $formErrors[] = '{--SPONSOR_POSITION_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_POSITION_EMPTY--}');
} // END - if
} // END - if
// 3. Street and number
if (!isPostRequestElementSet('street_nr1')) {
// Street name and house number are empty
- $formErrors[] = '{--SPONSOR_STREET_NR1_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_STREET_NR1_EMPTY--}');
} elseif ((isPostRequestElementSet('street_nr2')) && (!isPostRequestElementSet('street_nr1'))) {
// 1st line for street is empty, but 2nd line not
- $formErrors[] = '{--SPONSOR_STREET_NR1_EMPTY_2_NOT--}';
+ array_push($formErrors, '{--SPONSOR_STREET_NR1_EMPTY_2_NOT--}');
}
// 4. Country code
if (!isPostRequestElementSet('country')) {
// Country code is empty
- $formErrors[] = '{--kSPONSOR_COUNTRY_EMPTY--}';
+ array_push($formErrors, '{--kSPONSOR_COUNTRY_EMPTY--}');
} elseif (strlen(postRequestElement('country')) != 2) {
// Country code is invalid
- $formErrors[] = '{--SPONSOR_COUNTRY_IS_INVALID--}';
+ array_push($formErrors, '{--SPONSOR_COUNTRY_IS_INVALID--}');
}
// 3. ZIP code
if (!isPostRequestElementSet('zip')) {
// ZIP code is empty
- $formErrors[] = '{--SPONSOR_ZIP_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_ZIP_EMPTY--}');
} elseif (bigintval(postRequestElement('zip')) != postRequestElement('zip')) {
// ZIP is invalid
- $formErrors[] = '{--SPONSOR_ZIP_IS_INVALID--}';
+ array_push($formErrors, '{--SPONSOR_ZIP_IS_INVALID--}');
setPostRequestElement('zip', '');
}
// 4. City
if (!isPostRequestElementSet('city')) {
// City is empty
- $formErrors[] = '{--SPONSOR_CITY_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_CITY_EMPTY--}');
} // END - if
// 5. Phone number
if (!isPostRequestElementSet('phone')) {
// City is empty
- $formErrors[] = '{--SPONSOR_PHONE_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_PHONE_EMPTY--}');
} // END - if
// 6. Homepage URL
if (!isPostRequestElementSet('url')) {
// Homepage URL is empty
- $formErrors[] = '{--SPONSOR_URL_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_URL_EMPTY--}');
} elseif (!isUrlValid(postRequestElement('url'))) {
// Homepage URL is invalid
- $formErrors[] = '{--SPONSOR_URL_IS_INVALID--}';
+ array_push($formErrors, '{--SPONSOR_URL_IS_INVALID--}');
setPostRequestElement('url', '');
}
// 7. Light validation of email address
if ((!isPostRequestElementSet('email')) || (postRequestElement('email') == '@')) {
// Email is invalid/empty
- $formErrors[] = '{--SPONSOR_EMAIL_IS_INVALID--}';
+ array_push($formErrors, '{--SPONSOR_EMAIL_IS_INVALID--}');
} elseif (isSponsorRegisteredWithEmail(postRequestElement('email'))) {
// Email already found in database!
- $formErrors[] = '{--SPONSOR_EMAIL_IS_ALREADY_REGISTERED--}';
+ array_push($formErrors, '{--SPONSOR_EMAIL_IS_ALREADY_REGISTERED--}');
setPostRequestElement('email', '');
}
// 8. Pay type selected?
if (!isPostRequestElementSet('pay_type')) {
// Not pay type selected
- $formErrors[] = '{--SPONSOR_NO_PAYTYPE_SELECTED--}';
+ array_push($formErrors, '{--SPONSOR_NO_PAYTYPE_SELECTED--}');
} // END - if
// 9. Interval of mails
if (!isPostRequestElementSet('warning_interval')) {
// No warning interval selected
- $formErrors[] = '{--SPONSOR_NO_WARNING_INTERVAL_SELECTED--}';
+ array_push($formErrors, '{--SPONSOR_NO_WARNING_INTERVAL_SELECTED--}');
} // END - if
// 10. Mail notifications disabled/enabled
if (!isPostRequestElementSet('receive_warnings')) {
// Option not selected!
- $formErrors[] = '{--SPONSOR_NO_RECEIVE_WARNINGS_SELECTED--}';
+ array_push($formErrors, '{--SPONSOR_NO_RECEIVE_WARNINGS_SELECTED--}');
} // END - if
// Did he enter his password twice?
if (((!isPostRequestElementSet('pass1')) || (!isPostRequestElementSet('pass2'))) || ((postRequestElement('pass1') != postRequestElement('pass2')) && (isPostRequestElementSet('pass1')) && (isPostRequestElementSet('pass2')))) {
if ((postRequestElement('pass1') != postRequestElement('pass2')) && (isPostRequestElementSet('pass1')) && (isPostRequestElementSet('pass2'))) {
// Passwords missmatch
- $formErrors[] = '{--SPONSOR_PASSWORDS_MISMATCH--}';
+ array_push($formErrors, '{--SPONSOR_PASSWORDS_MISMATCH--}');
} else {
if (!isPostRequestElementSet('pass1')) {
// Password 1 is empty
- $formErrors[] = '{--SPONSOR_PASSWORD1_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_PASSWORD1_EMPTY--}');
}
if (!isPostRequestElementSet('pass2')) {
// Password 2 is empty
- $formErrors[] = '{--SPONSOR_PASSWORD2_EMPTY--}';
+ array_push($formErrors, '{--SPONSOR_PASSWORD2_EMPTY--}');
}
}
} elseif (strlen(postRequestElement('pass1')) < getPassLen()) {
// Password is to short!
- $formErrors[] = '{--SPONSOR_PASSWORD_TOO_SHORT--}';
+ array_push($formErrors, '{--SPONSOR_PASSWORD_TOO_SHORT--}');
}
// Check if he has accepted the terms&conditions
if (!isPostRequestElementSet('terms')) {
// Homepage URL is empty
- $formErrors[] = '{--SPONSOR_TERMS_NOT_ACCEPTED--}';
+ array_push($formErrors, '{--SPONSOR_TERMS_NOT_ACCEPTED--}');
} // END - if
// If there is something wrong/missing stop registration
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
default:
// Unsupported mode
- debug_report_bug(__FILE__, __LINE__, sprintf("Unsupported mode <span class=\"data\">%s</span> detected.", secureString(getRequestElement('do'))));
+ reportBug(__FILE__, __LINE__, sprintf("Unsupported mode <span class=\"data\">%s</span> detected.", secureString(getRequestElement('do'))));
break;
}
switch (getConfig('guest_stats')) {
case 'MEMBERS': // Statistics about your members
// Only males / females
- $male = countSumTotalData('M', 'user_data', 'userid', 'gender', true, " AND `status`='CONFIRMED'");
- $female = countSumTotalData('F', 'user_data', 'userid', 'gender', true, " AND `status`='CONFIRMED'");
+ $male = countSumTotalData('M', 'user_data', 'userid', 'gender', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
+ $female = countSumTotalData('F', 'user_data', 'userid', 'gender', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
// List every month
$months = array();
$month = $idx;
// Append leading zero
- if ($idx < 10) $month = '0' . $idx;
+ if ($idx < 10) {
+ $month = '0' . $idx;
+ } // END - if
// Count months
- $months[$month] = countSumTotalData(bigintval($month), 'user_data', 'userid', 'birth_month', true, " AND `status`='CONFIRMED'");
+ $months[$month] = countSumTotalData(bigintval($month), 'user_data', 'userid', 'birth_month', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
} // END - for
// Members in categories
$content['unconfirmed'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status` != 'CONFIRMED'", __FILE__, __LINE__));
$content['total_males'] = $male;
$content['total_females'] = $female;
- $content['tmem_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_TDAY?} AND `status`='CONFIRMED'", __FILE__, __LINE__));
- $content['ymem_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_YDAY?} AND `last_online` < {?START_TDAY?} AND `status`='CONFIRMED'", __FILE__, __LINE__));
+ $content['tmem_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_TDAY?}" . runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"), __FILE__, __LINE__));
+ $content['ymem_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_YDAY?} AND `last_online` < {?START_TDAY?}" . runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"), __FILE__, __LINE__));
$content['treg_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `joined` >= {?START_TDAY?}", __FILE__, __LINE__));
$content['yreg_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `joined` >= {?START_YDAY?} AND `joined` < {?START_TDAY?}", __FILE__, __LINE__));
$content['lmode'] = $lmode;
if ($SW == 2) $OUT .= '<tr>';
// Prepare data for template
- $data = array(
+ $row = array(
'l_class' => $l,
'm_descr' => $GLOBALS['month_descr'][$month],
'r_class' => $r,
);
// Load row template
- $OUT .= loadTemplate('guest_stats_month_row', true, $data);
+ $OUT .= loadTemplate('guest_stats_month_row', true, $row);
if ($SW == 2) {
$r2 = '';
$OUT = '';
foreach ($cat_cnt as $id => $count) {
// Prepare data for the template
- $data = array(
+ $row = array(
'cat' => $cats[$id],
'count' => $count,
);
// Load row template and switch colors
- $OUT .= loadTemplate('guest_stats_cats_row', true, $data);
+ $OUT .= loadTemplate('guest_stats_cats_row', true, $row);
} // END - foreach
$content['cats_rows'] = $OUT;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
WHERE
`total_logins` > 0 AND
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
ORDER BY
`total_logins` DESC
LIMIT {?top10_max?}", __FILE__, __LINE__);
WHERE
p.points > 0 AND
d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
GROUP BY
p.userid
ORDER BY
WHERE
r.counter > 0 AND
d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
GROUP BY
r.userid
ORDER BY
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Add description as navigation point
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Special file
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isExtensionInstalled('sql_patches')) {
// Redirect to admin area
redirectToUrl('admin.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Is an URL specified?
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
// Redirect to login form with displayed error code
redirectToUrl('modules.php?module=index&what=login&code=' . getCode('MODULE_MEMBER_ONLY') . '&mod=' . getModule());
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (isBlockModeEnabled()) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
} elseif (!isBlockModeEnabled()) {
$num_themes = countSumTotalData('', 'themes', 'id', '', true);
}
+// Default is no box
+$OUT = '';
+
+// Choose from it
if ($num_themes > 1) {
// If more than 1 is installed output selection box
$OUT = generateThemeSelectionBox();
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
WHERE
`beg_points` > 0 AND
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
" . $lastOnline . "
ORDER BY
`beg_points` DESC,
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Add more bonus points here
$add = runFilterChain('add_bonus_points_user_columns', '');
-$USE = '`turbo_bunus`';
+$pointsColumns = '`turbo_bunus`';
if (!empty($add)) {
- $USE = '(0' . $add . ')';
+ $pointsColumns = '(0' . $add . ')';
} // END - if
// Init variables
// Let's check if there are some points left we can 'pay'...
$result = SQL_QUERY_ESC("SELECT
`userid`,
- ".$USE." AS `points`,
+ ".$pointsColumns." AS `points`,
`last_online`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- " . $USE . " > 0 AND
+ " . $pointsColumns . " > 0 AND
`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . "
" . $lastOnline . "
ORDER BY
`points` DESC,
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
// Redirect
redirectToIndexMemberOnlyModule();
} // END - if
// Still allowed to book more URLs?
-if (!SURFBAR_IF_USER_BOOK_MORE_URLS()) {
+if (!ifSurfbarMemberAllowedMoreUrls()) {
// No more URLs allowed to book!
displayMessage('{--MEMBER_SURFBAR_NO_MORE_ALLOWED--}');
} elseif ((isFormSent()) && (isPostRequestElementSet('limited'))) {
$message = '{--MEMBER_SURFBAR_URL_NOT_ADDED--}';
// Register the new URL
- $insertId = SURFBAR_MEMBER_ADD_URL(postRequestElement('url'), postRequestElement('limit'));
+ $insertId = doSurfbarMemberAddUrl(postRequestElement('url'), postRequestElement('limit'));
// Was this fine?
if ($insertId > 0) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Does it work?
if (SQL_HASZEROAFFECTED()) {
// Abort it here, it always must work
- debug_report_bug(__FILE__, __LINE__, 'User coupon cannot be updated! coupon_id=' . $content['coupon_id']);
+ reportBug(__FILE__, __LINE__, 'User coupon cannot be updated! coupon_id=' . $content['coupon_id']);
} // END - if
// Update count as well
// Does it work?
if (SQL_HASZEROAFFECTED()) {
// Abort it here, it always must work
- debug_report_bug(__FILE__, __LINE__, 'Coupon data cannot be updated! coupon_id=' . $content['coupon_id']);
+ reportBug(__FILE__, __LINE__, 'Coupon data cannot be updated! coupon_id=' . $content['coupon_id']);
} // END - if
// Run post filter chain
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Start counting all
$count = '0';
+ // Ini SQLs here
+ initSqls();
+
// Go through all entries
foreach (postRequestElement('cat') as $categoryId => $joined) {
- // Ini sql here
- $sql = '';
-
// Has the user joined on this category?
switch ($joined) {
case 'Y':
- $result_user = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `userid`=%s AND `cat_id`=%s LIMIT 1",
- array(getMemberId(), bigintval($categoryId)), __FILE__, __LINE__);
-
- // Debug message
- //* DEBUG: */ logDebugMessage(__FILE__, __LINE__, 'categoryId='.$categoryId.',joined='.$joined.',getMemberId()='.getMemberId().',SQL_HASZERONUMS()='.intval(SQL_HASZERONUMS($result_user)));
-
- if (SQL_HASZERONUMS($result_user)) {
- $sql = "INSERT INTO `{?_MYSQL_PREFIX?}_user_cats` (`userid`,`cat_id`) VALUES (%s,%s)";
+ // Check if this category has an entry
+ if (countSumTotalData(getMemberId(), 'user_cats', 'id', 'userid', true, sprintf(" AND `cat_id`=%s", bigintval($categoryId))) == 0) {
+ // No, so add it
+ addSql(sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_user_cats` (`userid`,`cat_id`) VALUES (%s,%s)", getMemberId(), bigintval($categoryId)));
} // END - if
-
- // Free memory
- SQL_FREERESULT($result_user);
break;
case 'N':
- $sql = "DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `userid`=%s AND `cat_id`=%s LIMIT 1";
+ addSql(sprintf("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `userid`=%s AND `cat_id`=%s LIMIT 1", getMemberId(), bigintval($categoryId)));
break;
} // END - switch
-
- if (!empty($sql)) {
- // Run SQL command
- SQL_QUERY_ESC(trim($sql), array(getMemberId(), bigintval($categoryId)), __FILE__, __LINE__);
-
- // Count this row
- $count += SQL_AFFECTEDROWS();
- } // END - if
} // END - foreach
+ // Do we have entries?
+ if (countSqls() > 0) {
+ // Run SQL commands
+ $count = runFilterChain('run_sqls');
+ } // END - if
+
// Categories saved?
if ($count > 0) {
// Output message
displayMessage('{--CHOOSE_MORE_CATEGORIES--}');
} // END - if
- // Put some data into constants for the template
- $content['rows'] = (SQL_NUMROWS($result) * 2 + 4);
-
- // Load header template
- loadTemplate('member_cats_header', false, $content);
-
- // Start switching colors and load all visible categories
- // @TODO Rewrite this to use $OUT .= ...
+ // Load all categories of this member
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
- // Default he has not joined
+ // Default he has not joined, add color switch
$content['jn'] = ' checked="checked"';
$content['jy'] = '';
} // END - if
}
- // Load row template and switch colors
- loadTemplate('member_cat_row', false, $content);
+ // Load row template
+ $OUT .= loadTemplate('member_cats_row', true, $content);
} // END - while
+ // Free result
+ SQL_FREERESULT($result);
+
// Load footer template
- loadTemplate('member_cats_footer');
+ loadTemplate('member_cats', false, $OUT);
}
} else {
// No cateogries are defined yet
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
d.`earning_sorting` ASC', __FILE__, __LINE__);
// Do we have entries?
-if (SQL_NUMROWS($result) > 0) {
+if (!SQL_HASZERONUMS($result)) {
// Init output
$OUT = '';
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
u.`cashed_on` DESC", array(getMemberId()), __FILE__, __LINE__);
// Do we have entries?
-if (SQL_NUMROWS($result) > 0) {
+if (!SQL_HASZERONUMS($result)) {
// Init variable
$OUT = '';
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
} // END - if
// Load user URLs
-$urlArray = SURFBAR_GET_USER_URLS();
+$urlArray = getSurfbarUserUrls();
// Are there entries or form is submitted?
-if ((isFormSent()) && (isPostRequestElementSet('action')) && (isPostRequestElementSet('id'))) {
+if ((isFormSent()) && (isPostRequestElementSet('action')) && (isPostRequestElementSet('url_id'))) {
// Process the form
- if (SURFBAR_MEMBER_DO_FORM(postRequestArray(), $urlArray)) {
+ if (doSurfbarMemberByFormData(postRequestArray(), $urlArray)) {
// Action performed but shall we display it?
if (((postRequestElement('action') != 'edit') && (postRequestElement('action') != 'delete')) || (isPostRequestElementSet('execute'))) {
- // Display "action done" message if action is wether 'edit' nor 'delete' or has been executed
+ // Display "action done" message if action is whether 'edit' nor 'delete' or has been executed
displayMessage('{--MEMBER_SURFBAR_ACTION_DONE--}');
} // END - if
} else {
} // END - if
$content['url_registered'] = generateDateTime($content['url_registered'], '2');
$content['url_last_locked'] = generateDateTime($content['url_last_locked'], '2');
- $content['actions'] = SURFBAR_MEMBER_ACTIONS($content['url_id'], $content['url_status']);
+ $content['actions'] = generateSurfbarMemberActions($content['url_id'], $content['url_status']);
// Load row template
$OUT .= loadTemplate('member_list_surfbar_row', true, $content);
* @TODO Rewrite the code to a filter *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
if (destroyMemberSession()) {
// Remove theme cookie as well
if (isExtensionActive('theme')) {
- setTheme('');
+ setMailerTheme('');
} // END - if
// Logout completed
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
case 'edit': // Edit data
if (isExtensionActive('country', true)) {
- // New way 0 1 2 3 4 5 6 7 8 9 10 11 12 13
- $result = SQL_QUERY_ESC("SELECT `surname`,`family`,`street_nr`,`country_code`,`zip`,`city`,`email`,`birth_day`,`birth_month`,`birth_year`,`gender`,`max_mails`,`receive_mails`,`last_update`
+ // New way
+ $result = SQL_QUERY_ESC("SELECT
+ `surname`,
+ `family`,
+ `street_nr`,
+ `country_code`,
+ `zip`,
+ `city`,
+ `email`,
+ `birth_day`,
+ `birth_month`,
+ `birth_year`,
+ `gender`,
+ `max_mails`,
+ `receive_mails`,
+ `last_update`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
LIMIT 1",
array(getMemberId()), __FILE__, __LINE__);
} else {
- // Old way 0 1 2 3 4 5 6 7 8 9 10 11 12 13
- $result = SQL_QUERY_ESC("SELECT `surname`,`family`,`street_nr`,`country`,`zip`,`city`,`email`,`birth_day`,`birth_month`,`birth_year`,`gender`,`max_mails`,`receive_mails`,`last_update`
+ // Old way
+ $result = SQL_QUERY_ESC("SELECT
+ `surname`,
+ `family`,
+ `street_nr`,
+ `country`,
+ `zip`,
+ `city`,
+ `email`,
+ `birth_day`,
+ `birth_month`,
+ `birth_year`,
+ `gender`,
+ `max_mails`,
+ `receive_mails`,
+ `last_update`
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
}
// Get line
- $content = merge_array($content, SQL_FETCHARRAY($result, 0, false));
+ $content = merge_array($content, SQL_FETCHARRAY($result));
// Free result
SQL_FREERESULT($result);
// How far is last change on his profile away from now?
if (($content['update_check'] > time()) && (!isAdmin()) && (getProfileLock() > 0)) {
+ // Profile is locked, so output propper message
$content['update_check'] = '{%message,MEMBER_PROFILE_LOCKED=' . generateDateTime($content['update_check'] + getProfileLock(), '0') . '%}';
// You cannot change your account
// Generate selection box
$OUT = '<select name="country_code" class="form_select" size="1">';
- $OUT .= generateOptionList('countries', 'id', 'descr', $content['country_code'], 'code', $whereStatement);
+ $OUT .= generateOptions('countries', 'id', 'descr', $content['country_code'], 'code', $whereStatement);
$OUT .= '</select>';
$content['country'] = $OUT;
} else {
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_data`
SET
- `gender`='%s',`surname`='%s',`family`='%s',
+ `gender`='%s',
+ `surname`='%s',
+ `family`='%s',
`street_nr`='%s',
- `country_code`=%s,`zip`=%s,`city`='%s',
+ `country_code`=%s,
+ `zip`=%s,
+ `city`='%s',
`email`='%s',
- `birth_day`=%s,`birth_month`=%s,`birth_year`=%s,
+ `birth_day`=%s,
+ `birth_month`=%s,
+ `birth_year`=%s,
`max_mails`='%s',
`last_update`=UNIX_TIMESTAMP()".$AND.",
`notified`='N',
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_data`
SET
- `gender`='%s',`surname`='%s',`family`='%s',
+ `gender`='%s',
+ `surname`='%s',
+ `family`='%s',
`street_nr`='%s',
- `country`='%s',`zip`=%s,`city`='%s',
+ `country`='%s',
+ `zip`=%s,
+ `city`='%s',
`email`='%s',
- `birth_day`=%s,`birth_month`=%s,`birth_year`=%s,
+ `birth_day`=%s,
+ `birth_month`=%s,
+ `birth_year`=%s,
`max_mails`='%s',
`last_update`=UNIX_TIMESTAMP()".$AND.",
`notified`='N',
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Look for nickname in database (we only need just one entry so don't worry about the "LIMIT 1" !)
$result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `nickname`='%s' AND `userid` != %s LIMIT 1",
- array(postRequestElement('nickname'), getMemberId()), __FILE__, __LINE__);
+ array(
+ postRequestElement('nickname'),
+ getMemberId()
+ ), __FILE__, __LINE__);
// Is it not in use?
if (SQL_HASZERONUMS($result)) {
- // Nickname not in use, so set it now
- SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `nickname`='%s' WHERE `userid`=%s LIMIT 1",
- array(postRequestElement('nickname'), getMemberId()), __FILE__, __LINE__);
-
// Prepare array
$filterData = array(
'history_subject' => 'NICKNAME_CHANGED',
// Run filter chain
runFilterChain('add_history_entry', $filterData);
+ // Nickname not in use, so set it now
+ SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `nickname`='%s' WHERE `userid`=%s LIMIT 1",
+ array(
+ postRequestElement('nickname'),
+ getMemberId()
+ ), __FILE__, __LINE__);
+
// Change message
$content = '{--MEMBER_NICKNAME_SAVED--}';
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
if (getConfig('order_max_full') == 'MAX') $ALLOWED = getUserData('receive_mails');
// Now check his points amount
-$total = getTotalPoints(getMemberId());
+$totalPoints = getTotalPoints(getMemberId());
if ((isExtensionInstalledAndNewer('holiday', '0.1.3')) && (isUserDataEnabled('holiday_active'))) {
// Holiday is active!
// Continue with the frametester, we first need to store the data temporary in the pool
//
// First we would like to store the data and get it's pool position back...
- $result = SQL_QUERY_ESC("SELECT `id`,`data_type`
+ $result = SQL_QUERY_ESC("SELECT
+ `id`,
+ `data_type`
FROM
`{?_MYSQL_PREFIX?}_pool`
WHERE
} // END - if
// Remove new-line and carriage-return characters
- $TEST = str_replace("\n", '', str_replace("\r", '', postRequestElement('text')));
+ $TEST = str_replace(array(chr(10), chr(13)), array('', ''), postRequestElement('text'));
// Text length within allowed length?
if (strlen($TEST) > getConfig('max_tlength')) {
// Shall I test the subject line against URLs?
if (getConfig('allow_url_in_subject') == 'Y') {
// Check the subject line for issues
- setPostRequestElement('subject', str_replace("\\", '[nl]', substr(postRequestElement('subject'), 0, 200)));
+ setPostRequestElement('subject', str_replace(chr(92), '[nl]', substr(postRequestElement('subject'), 0, 200)));
if ((isInStringIgnoreCase('https://', postRequestElement('subject'))) || (isInStringIgnoreCase('http://', postRequestElement('subject'))) || (isInStringIgnoreCase('www', postRequestElement('subject')))) {
// URL in subject found
$url = 'modules.php?module=login&what=order&code=' . getCode('SUBJECT_URL');
if (!isPostRequestElementSet('text')) $url = 'modules.php?module=login&what=order&code=' . getCode('INVALID_TAGS')."&id=".$id;
} else {
// Remove any HTML code
- setPostRequestElement('text', str_replace('<', '{OPEN_HTML}', str_replace('>', '{CLOSE_HTML}', postRequestElement('text'))));
+ setPostRequestElement('text', str_replace(array('<', '>'), array('{OPEN_HTML}', '{CLOSE_HTML}'), postRequestElement('text')));
}
} // END - if
// Still no error?
if (empty($url)) {
- // Check if category and number of receivers is okay
- $add = '';
- if ((isOrderMultiPageEnabled()) && (isPostRequestElementSet('zip')) && (postRequestElement('zip') != '')) {
- // Choose recipients by ZIP code
- $add = sprintf(" AND d.zip LIKE '%s%%'",
- bigintval(postRequestElement('zip'))
- );
- } // END - if
-
// Check for userids
$result = SQL_QUERY_ESC("SELECT
- c.userid
+ c.`userid`
FROM
`{?_MYSQL_PREFIX?}_user_cats` AS c
-LEFT JOIN
+INNER JOIN
`{?_MYSQL_PREFIX?}_user_data` AS d
ON
- c.userid=d.userid
+ c.`userid`=d.`userid`
WHERE
- c.cat_id=%s AND
- c.userid != '%s' AND
- d.`status`='CONFIRMED' AND
- d.receive_mails > 0
- ".$add."
+ c.`cat_id`=%s AND
+ c.`userid` != %s AND
+ d.`status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
+ d.`receive_mails` > 0
ORDER BY
- d.{?order_select?} {?order_mode?}",
+ d.`{?order_select?}` {?order_mode?}",
array(
bigintval(postRequestElement('cat')),
getMemberId()
if ($holidayContent['userid'] > 0) {
// Add receiver
- $TEST[] = $holidayContent['userid'];
+ array_push($TEST, $holidayContent['userid']);
$count++;
} // END - if
} // END - while
} // END - if
// Calculate used points
- $USED = $content['target_send'] * getPaymentPoints(bigintval(postRequestElement('mail_type')));
+ $usedPoints = $content['target_send'] * getPaymentPoints(bigintval(postRequestElement('mail_type')));
// Fix empty zip code
if (!isPostRequestElementSet('zip')) {
} // END - if
// Check if he has enougth points for this order and selected more than 0 receivers
- if (($USED > 0) && ($USED <= $total) && ($content['target_send'] > 0)) {
- // Gettings points is okay, so we can add $USED later from
+ if (($usedPoints > 0) && ($usedPoints <= $totalPoints) && ($content['target_send'] > 0)) {
+ // Gettings points is okay, so we can add $usedPoints later from
if (($id == '0') || ($type != 'TEMP')) {
// New order
$id = '0';
// Display order form
$result_cats = SQL_QUERY("SELECT
- `id`,`cat`
+ `id`,
+ `cat`
FROM
`{?_MYSQL_PREFIX?}_cats`
".$whereStatement."
ORDER BY
`sort` ASC", __FILE__, __LINE__);
+
+ // Some categories found?
if (!SQL_HASZERONUMS($result_cats)) {
- if ($total > 0) {
+ // Enought points left?
+ if ($totalPoints > 0) {
// Initialize array...
$categories = array(
'id' => array(),
// ... and begin loading stuff
while ($categoriesContent = SQL_FETCHARRAY($result_cats)) {
$categories['id'][] = bigintval($categoriesContent['id']);
- $categories['name'][] = $categoriesContent['cat'];
+ array_push($categories['name'], $categoriesContent['cat']);
// Select users in current category
$result_userids = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `cat_id`=%s AND `userid` != '%s' ORDER BY `userid` ASC",
if (isExtensionInstalledAndNewer('holiday', '0.1.3')) {
// Check user's holiday status
$result_holiday = SQL_QUERY_ESC("SELECT
- COUNT(d.userid) AS `cnt`
+ COUNT(d.`userid`) AS `cnt`
FROM
`{?_MYSQL_PREFIX?}_user_data` AS d
LEFT JOIN
`{?_MYSQL_PREFIX?}_user_holidays` AS h
ON
- d.userid=h.userid
+ d.`userid`=h.`userid`
WHERE
- d.userid=%s AND
- d.receive_mails > 0 AND
+ d.`userid`=%s AND
+ d.`receive_mails` > 0 AND
d.`status`='CONFIRMED' AND
d.`holiday_active`='Y' AND
- h.holiday_start < UNIX_TIMESTAMP() AND
- h.holiday_end > UNIX_TIMESTAMP()
+ h.`holiday_start` < UNIX_TIMESTAMP() AND
+ h.`holiday_end` > UNIX_TIMESTAMP()
LIMIT 1",
array(bigintval($userid)), __FILE__, __LINE__);
// Free memory
SQL_FREERESULT($result_userids);
- $categories['userids'][] = $userid_cnt;
+ array_push($categories['userids'], $userid_cnt);
} // END - while
// Free memory
$types = array();
if (!SQL_HASZERONUMS($result)) {
- // Check for message id in URL
- $message = getMessageFromErrorCode(getRequestElement('code'));
-
- if (!empty($message)) {
- // We got system message so we drop it out to the user
- displayMessage($message);
+ // Is the error code set?
+ if (isGetRequestElementSet('code')) {
+ // Display error message
+ displayMessage(getMessageFromErrorCode(getRequestElement('code')));
} // END - if
// Load all email types...
- while ($types[] = SQL_FETCHROW($result)) {
- // Nothing to do here... ;-)
+ while ($type = SQL_FETCHARRAY($result)) {
+ array_push($types, $type);
} // END - while
// Free memory
SQL_FREERESULT($result);
// Output user's points
- $content['total_points'] = $total;
+ $content['total_points'] = $totalPoints;
// Check how many mail orders he has placed today and how many he's allowed to send
switch (getConfig('order_max_full')) {
// Check if we already have an order placed and make it editable
$result = SQL_QUERY_ESC("SELECT
- `subject`,`text`,`payment_id`,`timestamp`,`url`,`target_send`,`cat_id`,`zip`
+ `subject`,
+ `text`,
+ `payment_id`,
+ `timestamp`,
+ `url`,
+ `target_send`,
+ `cat_id`,
+ `zip`
FROM
`{?_MYSQL_PREFIX?}_pool`
WHERE
// Default output for that your members don't forget it...
$content['url'] = 'http://';
$content['target_send'] = '{?order_min?}';
- $content['subject'] = '{--ORDER_DEFAULT_SUBJECT--}';
- $content['text'] = '{--ORDER_DEFAULT_TEXT--}';
+ $content['subject'] = '';
+ $content['text'] = '';
}
// Free result
if ((isPostRequestElementSet('data')) || ((getOrderMultiPage() != 'Y') && ((!isAdmin()) && (!isExtensionActive('html_mail'))))) {
// Pre-output categories
- $content['category_selection'] = '';
- foreach ($categories['id'] as $key => $value) {
- $content['category_selection'] .= ' <option value="' . $value . '"';
- if (($OLD_ORDER) && ($content['cat_id'] == $value)) $content['category_selection'] .= ' selected="selected"';
- $content['category_selection'] .= '>' . $categories['name'][$key] . ' (' . $categories['userids'][$key] . ' {--USER_IN_CAT--})</option>';
- } // END - foreach
+ $content['category_selection'] = generateCategoryOptionsList(((isExtensionActive('html_mail')) && (isPostRequestElementSet('html'))) ? postRequestElement('html') : 'N', getMemberId());
// Mail type
$content['type_selection'] = '';
foreach ($types as $key => $value) {
if (is_array($value)) {
// Output option line
- $content['type_selection'] .= ' <option value="' . $types[$key][0] . '"';
- if (($OLD_ORDER) && ($content['payment_id'] == $types[$key][0])) $content['type_selection'] .= ' selected="selected"';
- $content['type_selection'] .= '>{%pipe,translateComma=' . $types[$key][1] . '%} {--PER_MAIL--} - ' . $types[$key][3] . ' - ' . round($types[$key][2]) . ' {--PAYMENT--}</option>';
+ $content['type_selection'] .= ' <option value="' . $types[$key]['id'] . '"';
+ if (($OLD_ORDER) && ($content['payment_id'] == $types[$key]['id'])) $content['type_selection'] .= ' selected="selected"';
+ $content['type_selection'] .= '>{%pipe,translateComma=' . $types[$key]['price'] . '%} {--PER_MAIL--} - ' . $types[$key]['mail_title'] . ' - ' . round($types[$key]['payment']) . ' {--PAYMENT--}</option>';
} // END - if
} // END - foreach
if (isPostRequestElementSet('zip')) {
// Output entered ZIP code
- $content['zip_content'] = loadTemplate('member_order-zip2', true, postRequestElement('zip'));
+ $content['zip_content'] = loadTemplate('member_order_zip2', true, postRequestElement('zip'));
} // END - if
+ // No HTML extension installed by default
+ $content['html_extension'] = '<input type="hidden" name="html" value="N" />';
+
// HTML extension
if ((isExtensionActive('html_mail')) && (postRequestElement('html') == 'Y')) {
// Extension is active so output valid HTML tags
- $content['html_extension'] = loadTemplate('member_order-html_ext', true, addValidHtmlTags());
- } else {
- // Extension not active and/or class not uploaded
- $content['html_extension'] = '<tr><td colspan="3"><input type="hidden" name="html" value="N" /></td></tr>';
- }
+ $content['html_extension'] = loadTemplate('member_order_html_ext', true);
+ } // END - if
// Output form for page 2
loadTemplate('member_order_page2', false, $content);
} else {
+ // No HTML extension installed by default
+ $content['html_extension'] = '<input type="hidden" name="html" value="N" />';
+
// Remember maybe entered ZIP code in constant
if (isExtensionActive('html_mail')) {
// Add some content when html extension is active
- $content['html_extension'] = loadTemplate('member_order-html_intro', true);
- } else {
- // No HTML extension installed
- $content['html_extension'] = '<tr><td colspan="3"><input type="hidden" name="html" value="N" /></td></tr>';
- }
+ $content['html_extension'] = loadTemplate('member_order_html_intro', true);
+ } // END - if
// Default is no ZIP code
$content['zip_content'] = '';
'zip' => ''
);
}
- $content['zip_content'] = loadTemplate('member_order-zip1', true, $data);
+ $content['zip_content'] = loadTemplate('member_order_zip1', true, $data);
} // END - if
// Output form for page 1 (ZIP code or HTML)
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
// Don't call this directly!
- die();
+ exit();
} elseif (!isMember()) {
// Not logged in
redirectToIndexMemberOnlyModule();
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Add description as navigation point
addYouAreHereLink('member', __FILE__);
+// Extension ext-user is highly required
+if ((!isExtensionActive('user')) && (!isAdmin())) {
+ displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=user%}');
+ return;
+} // END - if
+
// Query for referral levels and percents
$result_depths = SQL_QUERY('SELECT `level`,`percents` FROM `{?_MYSQL_PREFIX?}_refdepths` ORDER BY `level` ASC', __FILE__, __LINE__);
// Add many more rows for the login/turbo/ref/order bonus
// @TODO Should we rewrite this to a filter?
-if (!isExtensionActive('bonus')) $numDepths += 1;
-if (isExtensionInstalledAndNewer('bonus', '0.2.2')) $numDepths += 6;
-if (isExtensionInstalledAndNewer('bonus', '0.4.4')) $numDepths += 4;
+if (isExtensionActive('bonus')) {
+ // Extension ext-bonus is there, okay
+ if (isExtensionInstalledAndNewer('bonus', '0.2.2')) $numDepths += 6;
+ if (isExtensionInstalledAndNewer('bonus', '0.4.4')) $numDepths += 4;
+} else {
+ // Not installed ext-bonus
+ $numDepths += 1;
+}
// Remember row count in constant
$content['rowspan'] = ($numDepths * 2 + 15);
} // END - if
// Load referral points
- $result_points = SQL_QUERY_ESC("SELECT
- p.`points`,
- p.`order_points`,
- p.`locked_points`,
- p.`locked_order_points`,
+ $result_points = SQL_QUERY_ESC('SELECT
+ ' . getAllPointColumns('p.', ',') . '
r.`counter`
FROM
`{?_MYSQL_PREFIX?}_user_points` AS p
p.`ref_depth`=r.`level`
WHERE
p.`userid`=%s AND
- ".$depth."
-LIMIT 1",
+ ' . $depth . '
+LIMIT 1',
array(
getMemberId(),
convertZeroToNull($content['level'])
// Load data
$content = merge_array($content, SQL_FETCHARRAY($result_points));
- // Add all entries
+ // Add locked-/points
$content['part_points'] += $content['points'];
- $content['part_order'] += $content['order_points'];
$content['part_locked'] += $content['locked_points'];
- $content['part_locked_order'] += $content['locked_order_points'];
+
+ // For these columns, ext-order must be installed as well
+ if (isExtensionInstalled('order')) {
+ $content['part_order'] += $content['order_points'];
+ $content['part_locked_order'] += $content['locked_order_points'];
+ } // END - if
+
+ // Add referral counter
$content['part_referrals'] += $content['counter'];
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
} // END - if
// Check for possible running rallyes
-$ADD = " AND d.is_active='Y'";
+$ADD = " AND d.`is_active`='Y'";
if (isAdmin()) $ADD = '';
$result = SQL_QUERY("SELECT
- d.id, d.admin_id, a.login, d.title, d.descr, d.template, d.start_time, d.end_time, d.min_users, d.min_prices
+ d.`id`,
+ d.`admin_id`,
+ a.`login`,
+ d.`title`,
+ d.`descr`,
+ d.`template`,
+ d.`start_time`,
+ d.`end_time`,
+ d.`min_users`,
+ d.`min_prices`
FROM
`{?_MYSQL_PREFIX?}_rallye_data` AS d
INNER JOIN
`{?_MYSQL_PREFIX?}_admins` AS a
ON
- d.admin_id=a.id
+ d.`admin_id`=a.`id`
WHERE
- d.notified='Y'" . $ADD . "
+ d.`notified`='Y'
+ " . $ADD . "
ORDER BY
- d.end_time ASC
+ d.`end_time` ASC
LIMIT 1", __FILE__, __LINE__);
if (SQL_NUMROWS($result) == 1) {
$content = SQL_FETCHARRAY($result);
$expired = false;
- if ($content['end_time'] < time()) {
+ if (($content['end_time'] < time()) && (getTotalConfirmedUser() >= $content['min_users']) && (getTotalRallyeWinners($content['id']) >= $content['min_prices'])) {
// Rallye is expired
$content['extras'] = '{--RALLYE_HAS_EXPIRED--}';
$expired = true;
$content['min_prices'] = determineReferralRallyeMinimumPrices($content['min_prices']);
// Set start and end time
- $content['start'] = generateDateTime($content['start_time'], 1);
- $content['end'] = generateDateTime($content['end_time'] , 1);
+ $content['start_time'] = generateDateTime($content['start_time'], 1);
+ $content['end_time'] = generateDateTime($content['end_time'] , 1);
if ($expired === true) {
$content['prices'] = addReferralRallyeWinners('member', $content['id']);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
// User is not logged in
redirectToIndexMemberOnlyModule();
// Validate percents
if ((($percents >= getConfig('refback_min_perc')) || (round($percents) == 0)) && ($percents <= getConfig('refback_max_perc'))) {
// Change ref-back for this direct id
- $status = updateMemberRefbackPercents(postRequestElement('id'), postRequestElement('refback_percents'), postRequestElement('refback_note'));
+ $status = updateMemberRefbackPercents(postRequestElement('id'), postRequestElement('refback_percents'), postRequestElement('refback_notice'));
// Check status
if (isset($status['ok'])) {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
// User is not logged in
redirectToIndexMemberOnlyModule();
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Prepare content for output
$content = array(
- 'surfbar_total_urls' => SURFBAR_GET_TOTAL_URLS('ACTIVE', 0)
+ 'surfbar_total_urls' => getSurfbarTotalUrls('ACTIVE', 0)
);
// In dynamic mode we need some more data
if (getSurfbarPaymentModel() == 'DYNAMIC') {
// Prepare content for dynamic surfbar
$content = array(
- 'surfbar_total_urls' => SURFBAR_GET_TOTAL_URLS('ACTIVE', 0),
+ 'surfbar_total_urls' => getSurfbarTotalUrls('ACTIVE', 0),
);
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
$newTheme = SQL_ESCAPE(postRequestElement('member_theme'));
// Change to new theme
- setTheme($newTheme);
+ setMailerTheme($newTheme);
// Theme saved!
displayMessage('{--MEMBER_THEME_SAVED--}');
loadInclude($inc);
// Add found theme to array
- $themes['theme_unix'][] = $dir;
- $themes['theme_name'][] = $GLOBALS['theme_data']['name'];
- $themes['theme_author'][] = $GLOBALS['theme_data']['author'];
- $themes['theme_email'][] = $GLOBALS['theme_data']['email'];
- $themes['theme_url'][] = $GLOBALS['theme_data']['url'];
- $themes['theme_version'][] = $GLOBALS['theme_data']['version'];
+ array_push($themes['theme_unix'] , $dir);
+ array_push($themes['theme_name'] , $GLOBALS['theme_data']['name']);
+ array_push($themes['theme_author'] , $GLOBALS['theme_data']['author']);
+ array_push($themes['theme_email'] , $GLOBALS['theme_data']['email']);
+ array_push($themes['theme_url'] , $GLOBALS['theme_data']['url']);
+ array_push($themes['theme_version'], $GLOBALS['theme_data']['version']);
} // END - if
} // END - while
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
$valid_recipient = isValidUserId(postRequestElement('to_userid'));
// Re-check receivers and own personal data
- $result = SQL_QUERY_ESC("SELECT `userid`,`gender`,`surname`,`family`,`email` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid` IN ('%s','%s') AND `status`='CONFIRMED' LIMIT 2",
+ $result = SQL_QUERY_ESC("SELECT `userid`,`gender`,`surname`,`family`,`email` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid` IN ('%s','%s') AND `status`='CONFIRMED'" . runFilterChain('user_exclusion_sql', ' ') . " LIMIT 2",
array(
getMemberId(),
bigintval(postRequestElement('to_userid'))
$content['reason'] = postRequestElement('reason');
// Generate tranafer id
- $content['trans_id'] = bigintval(generateRandomCode('10', mt_rand(0, 99999), getMemberId(), postRequestElement('reason')));
+ $content['trans_id'] = bigintval(generateRandomCode('10', getRandomTan(), getMemberId(), postRequestElement('reason')));
// Add entries to both tables
SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_transfers_in` (`userid`,`from_userid`,`points`,`reason`,`time_trans`,`trans_id`) VALUES (%s,%s,%s,'%s', UNIX_TIMESTAMP(),%s)",
sendEmail($content['sender']['userid'], '{--TRANSFER_MEMBER_SENDER_SUBJECT--}' . ': ' . $RECIPIENT, $message);
// At last send admin mail(s)
- $adminSubject = sprintf("%s (%s->%s)", '{--TRANSFER_ADMIN_SUBJECT--}', $SENDER, $RECIPIENT);
+ $adminSubject = sprintf("%s (%s->%s)", '{--ADMIN_TRANSFER_SUBJECT--}', $SENDER, $RECIPIENT);
sendAdminNotification($adminSubject, 'admin_transfer_points', $content);
// Transfer is completed
- displayMessage('<div>{--TRANSFER_COMPLETED--}' . '</div><div><a href="{%url=modules.php?module=login&what=transfer%}">{--TRANSFER_CONTINUE_OVERVIEW--}</a></div>');
+ displayMessage('<div>{--MEMBER_TRANSFER_COMPLETED--}' . '</div><div><a href="{%url=modules.php?module=login&what=transfer%}">{--MEMBER_TRANSFER_CONTINUE_OVERVIEW--}</a></div>');
} elseif ($valid_code === false) {
// Invalid Touring code!
- loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_CODE--}');
+ loadTemplate('admin_settings_unsaved', false, '{--MEMBER_TRANSFER_INVALID_CODE--}');
unsetPostRequestElement('ok');
} elseif ($valid_pass === false) {
// Wrong password entered
- loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_PASSWORD--}');
+ loadTemplate('admin_settings_unsaved', false, '{--MEMBER_TRANSFER_INVALID_PASSWORD--}');
unsetPostRequestElement('ok');
} elseif ($valid_amount === false) {
// Too much points entered
- loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_POINTS--}');
+ loadTemplate('admin_settings_unsaved', false, '{--MEMBER_TRANSFER_INVALID_POINTS--}');
unsetPostRequestElement('ok');
} elseif ($valid_reason === false) {
// No transfer reason entered
- loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_REASON--}');
+ loadTemplate('admin_settings_unsaved', false, '{--MEMBER_TRANSFER_INVALID_REASON--}');
unsetPostRequestElement('ok');
} elseif ($valid_recipient === false) {
// No recipient selected
- loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_RECIPIENT--}');
+ loadTemplate('admin_settings_unsaved', false, '{--MEMBER_TRANSFER_INVALID_RECIPIENT--}');
unsetPostRequestElement('ok');
} elseif ($valid_data === false) {
// No recipient/sender selected
- loadTemplate('admin_settings_unsaved', false, '{--TRANSFER_INVALID_DATA--}');
+ loadTemplate('admin_settings_unsaved', false, '{--MEMBER_TRANSFER_INVALID_DATA--}');
unsetPostRequestElement('ok');
}
if (!isFormSent()) {
// Load member list
- $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED' AND `opt_in`='Y' AND `userid` != '%s' ORDER BY `userid` ASC",
+ $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status`='CONFIRMED'" . runFilterChain('user_exclusion_sql', ' ') . " AND `opt_in`='Y' AND `userid` != '%s' ORDER BY `userid` ASC",
array(getMemberId()), __FILE__, __LINE__);
if (!SQL_HASZERONUMS($result)) {
SQL_FREERESULT($result);
} else {
// No one else is opt-in
- $OUT = displayMessage('{--TRANSFER_NO_ONE_ELSE_OPT_IN--}', true);
+ $OUT = displayMessage('{--MEMBER_TRANSFER_NO_ONE_ELSE_OPT_IN--}', true);
$content['to_disabled'] = ' disabled="disabled"';
}
// Generate Code
if (getTransferCode() > 0) {
// Generate random number
- $rand = mt_rand(0, 99999);
+ $rand = getRandomTan();
// Generate CAPTCHA code
$code = generateRandomCode(getTransferCode(), $rand, getMemberId(), $content['max_transferable']);
$content['captcha_code'] = '<input type="hidden" name="code_chk" value="' . $rand . '" /><input type="text" name="code" class="form_field" size="5" maxlength="7"' . $content['to_disabled'] . ' /> ' . $img;
} else {
$code = '00000';
- $content['captcha_code'] = displayMessage('{--TRANSFER_NO_CODE--}', true);
+ $content['captcha_code'] = displayMessage('{--MEMBER_TRANSFER_NO_CODE--}', true);
}
// Init points/reason
switch ($mode) {
case 'list_in':
$sql = 'SELECT `trans_id`,`from_userid` AS party_userid,`points`,`reason`,`time_trans` FROM `{?_MYSQL_PREFIX?}_user_transfers_in` WHERE `userid`=%s ORDER BY `time_trans` DESC LIMIT {?transfer_max?}';
- $nothingMessage = '{--TRANSFER_NO_INCOMING_TRANSFERS--}';
- $content['balance'] = '{--TRANSFER_TOTAL_INCOMING--}';
- $content['title'] = '{--TRANSFER_LIST_INCOMING--}';
+ $nothingMessage = '{--MEMBER_TRANSFER_NO_INCOMING_TRANSFERS--}';
+ $content['balance'] = '{--MEMBER_TRANSFER_TOTAL_INCOMING--}';
+ $content['title'] = '{--MEMBER_LIST_INCOMING_TRANSFER_TITLE--}';
break;
case 'list_out':
$sql = 'SELECT `trans_id`,`to_userid` AS party_userid,`points`,`reason`,`time_trans` FROM `{?_MYSQL_PREFIX?}_user_transfers_out` WHERE `userid`=%s ORDER BY `time_trans` DESC LIMIT {?transfer_max?}';
- $nothingMessage = '{--TRANSFER_NO_OUTGOING_TRANSFERS--}';
+ $nothingMessage = '{--MEMBER_TRANSFER_NO_OUTGOING_TRANSFERS--}';
$content['balance'] = '{--TRANSFER_TOTAL_OUTGOING--}';
- $content['title'] = '{--TRANSFER_LIST_OUTGOING--}';
+ $content['title'] = '{--MEMBER_LIST_OUTGOING_TRANSFER_TITLE--}';
break;
} // END - switch
$result = SQL_QUERY_ESC("SELECT `trans_id`,`from_userid`,`points`,`reason`,`time_trans` FROM `{?_MYSQL_PREFIX?}_user_transfers_in` WHERE `userid`=%s ORDER BY `id` ASC LIMIT {?transfer_max?}",
array(getMemberId()), __FILE__, __LINE__);
while ($content = SQL_FETCHROW($result)) {
- $content[] = 'IN';
+ array_push($content, 'IN');
$content = implode("','", $content);
$res_temp = SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_%s_transfers_tmp` (`trans_id`,`party_userid`,`points`,`reason`,`time_trans`,`trans_type`) VALUES ('" . $content . "')", array(getMemberId()), __FILE__, __LINE__);
} // END - while
$result = SQL_QUERY_ESC("SELECT `trans_id`,`to_userid`,`points`,`reason`,`time_trans` FROM `{?_MYSQL_PREFIX?}_user_transfers_out` WHERE `userid`=%s ORDER BY `id` LIMIT {?transfer_max?}",
array(getMemberId()), __FILE__, __LINE__);
while ($content = SQL_FETCHROW($result)) {
- $content[] = 'OUT';
+ array_push($content, 'OUT');
$content = implode("','", $content);
$res_temp = SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_%s_transfers_tmp` (`trans_id`,`party_userid`,`points`,`reason`,`time_trans`,`trans_type`) VALUES ('" . $content . "')", array(getMemberId()), __FILE__, __LINE__);
} // END - while
// Set 'new transfer' link according to above option
switch (getUserData('opt_in')) {
case 'Y':
- $content['new_link'] = '<a href="{%url=modules.php?module=login&what=transfer&do=new%}" title="{--TRANSFER_NOW_TITLE--}">{--TRANSFER_NOW_LINK--}</a>';
+ $content['new_link'] = '<a href="{%url=modules.php?module=login&what=transfer&do=new%}" title="{--MEMBER_TRANSFER_NOW_LINK_TITLE--}">{--MEMBER_TRANSFER_NOW_LINK--}</a>';
break;
case 'N':
- $content['new_link'] = '{--TRANSFER_PLEASE_ALLOW_OPT_IN--}';
+ $content['new_link'] = '{--MEMBER_PLEASE_ALLOW_TRANSFER_RECEIVE--}';
break;
} // END - switch
if (SQL_NUMROWS($result) == 1) {
// Load newest transaction
list($newest) = SQL_FETCHROW($result);
- $content['settings'] = '{%message,TRANSFER_LATEST_IS=' . generateDateTime($newest, '3') . '%}';
+ $content['settings'] = '{%message,MEMBER_TRANSFER_LATEST_IS=' . generateDateTime($newest, '3') . '%}';
} else {
// Load template
$content['settings'] = loadTemplate('member_transfer_settings', true, $content);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
break;
default: // Unknown type detected!
- debug_report_bug(__FILE__, __LINE__, sprintf("Unknown mail type %s detected.", $row['link_type']));
+ reportBug(__FILE__, __LINE__, sprintf("Unknown mail type %s detected.", $row['link_type']));
break;
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
redirectToIndexMemberOnlyModule();
}
// Export data for template
$content = array(
'last_online' => generateDateTime($GLOBALS['last_online']['online']),
- 'last_module' => getTitleFromMenu('member', $GLOBALS['last_online']['module'])
+ 'last_what' => getTitleFromMenu('member', $GLOBALS['last_online']['module'])
);
// Load header template
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isMember()) {
// User is not logged in
redirectToIndexMemberOnlyModule();
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
$url = '';
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif ((!isExtensionActive('order')) && (!isAdmin())) {
displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=order%}');
return;
);
// Output back bottom
- loadTemplate('member_order-back');
+ loadTemplate('member_order_thanks');
} else {
// Matching line not found or already 'placed' in send queue
redirectToUrl('modules.php?module=login');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software. You can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif ((!isExtensionActive('sponsor'))) {
displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=sponsor%}');
return;
return;
} elseif ((!isWhatSet()) || (getWhat() == '')) {
// Empty what value detected!
- debug_report_bug(__FUNCTION__, __LINE__, 'what is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'what is empty.');
}
// A valid sponsor login and we are allowed to enter this module so let's
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isExtensionActive('sponsor')) {
displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=sponsor%}');
return;
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif ((!isExtensionActive('sponsor'))) {
addFatalMessage(__FILE__, __LINE__, '{%pipe,generateExtensionInactiveNotInstalledMessage=sponsor%}');
return;
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif ((!isExtensionActive('sponsor'))) {
addFatalMessage(__FILE__, __LINE__, '{%pipe,generateExtensionInactiveNotInstalledMessage=sponsor%}');
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isExtensionActive('sponsor')) {
displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=sponsor%}');
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} elseif (!isExtensionActive('sponsor')) {
displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=sponsor%}');
return;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Shall we exclude webmaster's own userid?
if ((!isBegIncludeOwnEnabled()) && (isValidUserId(getBegUserid()))) {
// Exclude it
- $whereStatement = " AND `userid` != {?beg_userid?}";
+ $whereStatement .= ' AND `userid` != {?beg_userid?}';
} // END - if
// Let's check if there are some points left we can pay...
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `status`='CONFIRMED'" . $whereStatement . " AND
+ `status`='CONFIRMED'" . $whereStatement . "
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
`beg_points` > 0
ORDER BY
`beg_points` DESC,
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
if ((getBonusRanks() > 0) && (!isCssOutputMode())) {
// Extension 'autopurge' is inactive or purging of inactive accounts is deactivated
- $whereStatement = "WHERE `status`='CONFIRMED'";
+ $whereStatement = runFilterChain('user_exclusion_sql', "WHERE `status`='CONFIRMED'");
// Shall I keep inactive members away from here? (mostly wanted in an "active-rallye" ...)
if ((isExtensionActive('autopurge')) && ((getApInactiveSince() > 0))) {
// Run SQL string to check for accounts
$result_main = SQL_QUERY('SELECT
- `userid`,`email`,`gender`,`surname`,`family`, (0' . $add . ') AS `points`
+ `userid`,
+ (0' . $add . ') AS `points`
FROM
`{?_MYSQL_PREFIX?}_user_data`
' . $whereStatement . '
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - if
// Load more function libraries or includes
-foreach (array('request-functions', 'session-functions', 'code-functions', 'language-functions', 'sql-functions', 'expression-functions', 'filter-functions', 'revision-functions', 'filters', 'mysql-manager', 'extensions-functions', 'handler') as $lib) {
+foreach (array('request-functions', 'session-functions', 'code-functions', 'language-functions', 'sql-functions', 'expression-functions', 'filter-functions', 'revision-functions', 'filters', 'mysql-manager', 'extensions-functions', 'email-functions', 'handler') as $lib) {
// Load special functions
loadIncludeOnce('inc/' . $lib . '.php');
} // END - foreach
initMemberId();
// Set important header_sent
-if (!isset($GLOBALS['header_sent'])) {
- $GLOBALS['header_sent'] = '0';
+if (!isset($GLOBALS['__header_sent'])) {
+ $GLOBALS['__header_sent'] = '0';
} // END - if
// Init fatal messages
loadIncludeOnce('inc/load_cache.php');
} else {
// Wrong database?
- debug_report_bug(__FILE__, __LINE__, 'Wrong database selected.');
+ reportBug(__FILE__, __LINE__, 'Wrong database selected.');
}
} else {
// No link to database!
- debug_report_bug(__FILE__, __LINE__, 'Database link is not yet up.');
+ reportBug(__FILE__, __LINE__, 'Database link is not yet up.');
}
} else {
// Maybe you forgot to enter your database login?
- debug_report_bug(__FILE__, __LINE__, 'Database login is missing.');
+ reportBug(__FILE__, __LINE__, 'Database login is missing.');
}
} else {
// Default output is 'direct' for HTML output
loadIncludeOnce('inc/' . $inc . '.php');
} // END - foreach
- // Check wether we are in installation routine
+ // Init installer
+ initInstaller();
+
+ // Check whether we are in installation routine
if ((!isInstalling()) && (!isCssOutputMode()) && (!isRawOutputMode())) {
// Redirect to the URL
redirectToUrl('install.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// "Getter" for module description
// @TODO Can we cache this?
-function getTitleFromMenu ($mode, $what, $column = 'what', $ADD='') {
+function getTitleFromMenu ($mode, $what, $column = 'what', $ADD = '') {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'mode=' . $mode . ',what=' . $what . ',column=' . $column . ',add=' . $ADD);
+
// Fix empty 'what'
if (empty($what)) {
$what = getIndexHome();
} elseif ((isGetRequestElementSet('action')) && ($column == 'what')) {
// Get it from action
return getTitleFromMenu($mode, getAction(), 'action', $ADD);
- } elseif ($what == 'overview') {
+ } elseif ($what == 'welcome') {
// Overview page
- return '{--WHAT_IS_OVERVIEW--}';
+ return '{--WHAT_IS_WELCOME--}';
}
// Default is not found
// Can we close the you-are-here navigation?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'type=' . $type . 'getWhat()=' . getWhat());
- if (($type == 'what') || (($type == 'action') && ((!isWhatSet()) || (getWhat() == 'overview')))) {
+ if (($type == 'what') || (($type == 'action') && ((!isWhatSet()) || (getWhat() == 'welcome')))) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'type=' . $type);
// Add closing div and br-tag
$GLOBALS['nav_depth'] = '0';
} // END - if
}
-// Checks wether the current user is a member
+// Checks whether the current user is a member
function isMember () {
// By default no member
$ret = false;
// So did we now have valid data and an unlocked user?
if ((getUserData('status') == 'CONFIRMED') && ($valPass == getSession('u_hash'))) {
// Transfer last module and online time
- $GLOBALS['last_online']['module'] = getUserData('last_module');
+ $GLOBALS['last_online']['module'] = getUserData(getUserLastWhatName());
$GLOBALS['last_online']['online'] = getUserData('last_online');
// Account is confirmed and all cookie data is valid so he is definely logged in! :-)
return false;
} elseif (is_null($value)) {
// This shall never happen, so please report it
- debug_report_bug(__FUNCTION__, __LINE__, 'value=NULL,column=' . $column . ' - value can never be NULL');
+ reportBug(__FUNCTION__, __LINE__, 'value=NULL,column=' . $column . ' - value can never be NULL');
}
// If we should look for userid secure&set it here
// Don't look for invalid userids...
if (!isValidUserId($value)) {
// Invalid, so abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $value . ' is invalid.');
+ reportBug(__FUNCTION__, __LINE__, 'User id ' . $value . ' is invalid.');
} elseif (isUserDataValid()) {
// Use cache, so it is fine
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' is valid, using cache #1');
// By default none was found
$found = false;
- // Extra statements
- $ADD = '';
- if (isExtensionInstalledAndNewer('user', '0.3.5')) {
- $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`';
- } // END - if
+ // Extra SQL statements
+ $ADD = runFilterChain('convert_user_data_columns', '');
// Query for the user
- $result = SQL_QUERY_ESC("SELECT *".$ADD." FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `%s`='%s' LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT *" . $ADD . " FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `%s`='%s' LIMIT 1",
array($column, $value), __FUNCTION__, __LINE__);
// Do we have a record?
return $found;
}
-// This patched function will reduce many SELECT queries for the specified or current admin login
+/*
+ * Checks whether the current session bears a valid admin id and password hash.
+ *
+ * This patched function will reduce many SELECT queries for the current admin
+ * login.
+ */
function isAdmin () {
// No admin in installation phase!
if ((isInstallationPhase()) || (!isAdminRegistered())) {
// Init variables
$ret = false;
$adminId = '0';
- $passCookie = '';
+ $passwordFromCookie = '';
$valPass = '';
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $adminId);
if ((isSessionVariableSet('admin_id')) && (isSessionVariableSet('admin_md5'))) {
// Get admin login and password from session/cookies
$adminId = getCurrentAdminId();
- $passCookie = getAdminMd5();
+ $passwordFromCookie = getAdminMd5();
} // END - if
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'mainId=' . $adminId . 'passCookie=' . $passCookie);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'adminId=' . $adminId . 'passwordFromCookie=' . $passwordFromCookie);
// Abort if admin id is zero
if ($adminId == '0') {
+ // A very noisy debug message ...
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Current adminId is zero. isSessionVariableSet(admin_id)=' . intval(isSessionVariableSet('admin_id')) . ',isSessionVariableSet(admin_md5)=' . intval(isSessionVariableSet('admin_md5')));
+
+ // Abort here now
return false;
} // END - if
if (isset($GLOBALS['admin_hash'])) {
// Use cached string
$valPass = $GLOBALS['admin_hash'];
- } elseif ((!empty($passCookie)) && (isAdminHashSet($adminId) === true) && (!empty($adminId))) {
+ } elseif ((!empty($passwordFromCookie)) && (isAdminHashSet($adminId) === true) && (!empty($adminId))) {
// Login data is valid or not?
$valPass = encodeHashForCookie(getAdminHash($adminId));
if (!empty($valPass)) {
// Check if password is valid
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '(' . $valPass . '==' . $passCookie . ')='.intval($valPass == $passCookie));
- $GLOBALS[__FUNCTION__][$adminId] = (($GLOBALS['admin_hash'] == $passCookie) || ((strlen($GLOBALS['admin_hash']) == 32) && ($GLOBALS['admin_hash'] == md5($passCookie))) || (($GLOBALS['admin_hash'] == '*FAILED*') && (!isExtensionActive('cache'))));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '(' . $valPass . '==' . $passwordFromCookie . ')='.intval($valPass == $passwordFromCookie));
+ $GLOBALS[__FUNCTION__][$adminId] = ($GLOBALS['admin_hash'] == $passwordFromCookie);
} // END - if
} // END - if
__FUNCTION__, __LINE__);
break;
+ case 'admin':
case 'member':
// Members are allowed to set to zero mails per day (we will change this soon!)
$result = SQL_QUERY('SELECT `value`,`comment` FROM `{?_MYSQL_PREFIX?}_max_receive` ORDER BY `value` ASC',
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
$OUT .= ' <option value="' . $content['value'] . '"';
- if (postRequestElement('max_mails') == $content['value']) $OUT .= ' selected="selected"';
+
+ if (postRequestElement('max_mails') == $content['value']) {
+ $OUT .= ' selected="selected"';
+ } // END - if
+
$OUT .= '>' . $content['value'] . ' {--PER_DAY--}';
if (!empty($content['comment'])) $OUT .= '(' . $content['comment'] . ')';
$OUT .= '</option>';
$OUT = loadTemplate(($mode . '_receive_table'), true, $OUT);
} else {
// Maybe the admin has to setup some maximum values?
- debug_report_bug(__FUNCTION__, __LINE__, 'Nothing is being done here?');
+ reportBug(__FUNCTION__, __LINE__, 'Nothing is being done here?');
}
// Free result
}
}
-// Checks wether the given email address is used.
+// Checks whether the given email address is used.
function isEmailTaken ($email) {
// Default is no userid
$useridSql = ' IS NOT NULL';
$action,
$what
), __FUNCTION__, __LINE__, false);
- } elseif (($what != 'overview') && (!empty($what))) {
+ } elseif (($what != 'welcome') && (!empty($what))) {
// Other actions
$sql = SQL_QUERY_ESC("SELECT `id`,`what` FROM `{?_MYSQL_PREFIX?}_%s_menu` WHERE `action`='%s' AND `what`='%s'".$add." ORDER BY `action` DESC LIMIT 1",
array(
if (!isExtensionInstalledAndNewer('sql_patches', '0.0.5')) {
// sql_patches is missing so choose depending on mode
- if (isWhatSet()) {
- // Use setted what
- $what = getWhat();
- } elseif ($module == 'admin') {
- // Admin area
- $what = 'overview';
- } else {
- // Everywhere else
- $what = 'welcome';
- }
+ $what = determineWhat($module);
} elseif ((empty($what)) && ($module != 'admin')) {
// Use configured 'home'
$what = getIndexHome();
} elseif (isActionSet()) {
// Get it directly from URL
return getAction();
- } elseif (($what == 'overview') || (!isWhatSet())) {
+ } elseif (($what == 'welcome') || (!isWhatSet())) {
// Default value for admin area
$data['action'] = 'login';
}
}
// Get a string of "mail title" and price back
-function getPaymentTitlePrice ($pid, $full=false) {
+function getPaymentTitlePrice ($pid, $full = false) {
// Default is not found
$ret = '{--_PAYMENT_404--}';
// Load payment data
$result = SQL_QUERY_ESC("SELECT `mail_title`,`price` FROM `{?_MYSQL_PREFIX?}_payments` WHERE `id`=%s LIMIT 1",
- array(bigintval($pid)), __FUNCTION__, __LINE__);
+ array(
+ bigintval($pid)
+ ), __FUNCTION__, __LINE__);
// Do we have an entry?
if (SQL_NUMROWS($result) == 1) {
// Search for it in database
$result = SQL_QUERY_ESC("SELECT `%s` FROM `{?_MYSQL_PREFIX?}_payments` WHERE `id`=%s LIMIT 1",
- array($lookFor, $pid), __FUNCTION__, __LINE__);
+ array(
+ $lookFor,
+ bigintval($pid)
+ ), __FUNCTION__, __LINE__);
// Is the entry there?
if (SQL_NUMROWS($result) == 1) {
} // END - if
// Try to look the entry up
- $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `%s`=%s AND `userid`=%s AND link_type='%s' LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `%s`=%s AND `userid`=%s AND `link_type`='%s' LIMIT 1",
array(
$rowName,
bigintval($statsId),
// Was it *not* found?
if (SQL_HASZERONUMS($result)) {
// So we add one!
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_links` (`%s`,`userid`,`link_type`) VALUES ('%s','%s','%s')",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_links` (`%s`,`userid`,`link_type`) VALUES (%s,%s,'%s')",
array(
$rowName,
bigintval($statsId),
SQL_FREERESULT($result);
// Fix empty values
- if ((empty($data['res'])) && ($lookFor != 'counter') && ($lookFor != 'id') && ($lookFor != 'userid')) {
+ if ((empty($data['res'])) && ($lookFor != 'counter') && ($lookFor != 'id') && ($lookFor != 'userid') && ($lookFor != 'rallye_id')) {
// Float number
$data['res'] = '0.00000';
} elseif (''.$data['res'].'' == '') {
return $data['res'];
}
-// Sends out mail to all administrators. This function is no longer obsolete
-// because we need it when there is no ext-admins installed
-function sendAdminEmails ($subj, $message) {
+/**
+ * Sends out mail to all administrators. This function is no longer obsolete
+ * because we need it when there is no ext-admins installed
+ */
+function sendAdminEmails ($subject, $message, $isBugReport = false) {
+ // Default is no special header
+ $mailHeader = '';
+
+ // Is it a bug report?
+ if ($isBugReport === true) {
+ // Then add a reply-to line back to the author (me)
+ $mailHeader = 'Reply-To: webmaster@mxchange.org' . chr(10);
+ } // END - if
+
// Load all admin email addresses
$result = SQL_QUERY('SELECT `email` FROM `{?_MYSQL_PREFIX?}_admins` ORDER BY `id` ASC', __FUNCTION__, __LINE__);
+
+ // And send the notification to all of them
while ($content = SQL_FETCHARRAY($result)) {
// Send the email out
- sendEmail($content['email'], $subj, $message);
+ sendEmail($content['email'], $subject, $message, 'N', $mailHeader);
} // END - if
// Free result
}
// Generates an option list from various parameters
-function generateOptionList ($table, $id, $name, $default = '', $special = '', $whereStatement = '', $disabled = array(), $callback = '') {
+function generateOptions ($table, $id, $name, $default = '', $special = '', $whereStatement = '', $disabled = array(), $callback = '') {
$ret = '';
if ($table == '/ARRAY/') {
// Selection from array
} // END - foreach
} else {
// Problem in request
- debug_report_bug(__FUNCTION__, __LINE__, 'Not all are arrays: id[' . count($id) . ']=' . gettype($id) . ',name[' . count($name) . ']=' . gettype($name) . ',callback=' . $callback);
+ reportBug(__FUNCTION__, __LINE__, 'Not all are arrays: id[' . count($id) . ']=' . gettype($id) . ',name[' . count($name) . ']=' . gettype($name) . ',callback=' . $callback);
}
} else {
// Data from database
// Default is empty
$what = '';
+ // Check on given module
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'modCheck=' . $modCheck);
switch ($modCheck) {
- case 'admin':
- $what = 'overview';
- break;
-
- case 'login':
- case 'index':
+ case 'index': // Guest area
// Is ext-sql_patches installed and newer than 0.0.5?
if (isExtensionInstalledAndNewer('sql_patches', '0.0.5')) {
// Use it from config
}
break;
- default:
- $what = '';
+ default: // Default for all other menus (getIndexHome() is for index module only)
+ $what = 'welcome';
break;
} // END - switch
}
// Returns HTML code with an option list of all categories
-function generateCategoryOptionsList ($mode) {
+function generateCategoryOptionsList ($mode, $userid = NULL) {
// Prepare WHERE statement
$whereStatement = " WHERE `visible`='Y'";
if (isAdmin()) $whereStatement = '';
// Initialize array...
- $CATS = array(
+ $categories = array(
'id' => array(),
'name' => array(),
'userids' => array()
// ... and begin loading stuff
while ($content = SQL_FETCHARRAY($result)) {
// Transfer some data
- $CATS['id'][] = $content['id'];
- $CATS['name'][] = $content['cat'];
+ $categories['id'][] = $content['id'];
+ array_push($categories['name'], $content['cat']);
// Check which users are in this category
- $result_userids = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `cat_id`=%s ORDER BY `userid` ASC",
- array(bigintval($content['id'])), __FUNCTION__, __LINE__);
+ $result_userids = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `cat_id`=%s AND `userid` != %s ORDER BY `userid` ASC",
+ array(
+ bigintval($content['id']),
+ convertNullToZero($userid)
+ ), __FUNCTION__, __LINE__);
// Init count
$userid_cnt = '0';
// Start adding all
while ($data = SQL_FETCHARRAY($result_userids)) {
// Add user count
- $userid_cnt += countSumTotalData($data['userid'], 'user_data', 'userid', 'userid', true, " AND `status`='CONFIRMED' AND `receive_mails` > 0");
+ $userid_cnt += countSumTotalData($data['userid'], 'user_data', 'userid', 'userid', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED' AND `receive_mails` > 0"));
} // END - while
// Free memory
SQL_FREERESULT($result_userids);
// Add counter
- $CATS['userids'][] = $userid_cnt;
+ array_push($categories['userids'], $userid_cnt);
} // END - while
// Free memory
// Generate options
$OUT = '';
- foreach ($CATS['id'] as $key => $value) {
- if (strlen($CATS['name'][$key]) > 20) $CATS['name'][$key] = substr($CATS['name'][$key], 0, 17)."...";
- $OUT .= ' <option value="' . $value . '">' . $CATS['name'][$key] . ' (' . $CATS['userids'][$key] . ' {--USER_IN_CAT--})</option>';
+ foreach ($categories['id'] as $key => $value) {
+ $OUT .= ' <option value="' . $value . '">' . $categories['name'][$key] . ' (' . $categories['userids'][$key] . ' {--USERS_IN_CATEGORY--})</option>';
} // END - foreach
} else {
// No cateogries are defined yet
// Generate a receiver list for given category and maximum receivers
function generateReceiverList ($categoryId, $receiver, $mode = '') {
// Init variables
- $CAT_TABS = '';
- $CAT_WHERE = '';
+ $extraColumns = '';
$receiverList = '';
$result = false;
$receiver = getTotalReceivers($mode);
} // END - if
+ // Exclude (maybe exclude) testers
+ $addWhere = runFilterChain('user_exclusion_sql', ' ');
+
// Category given?
if ($categoryId > 0) {
// Select category
- $CAT_TABS = "LEFT JOIN `{?_MYSQL_PREFIX?}_user_cats` AS c ON d.`userid`=c.`userid`";
- $CAT_WHERE = sprintf(" AND c.`cat_id`=%s", $categoryId);
+ $extraColumns = "LEFT JOIN `{?_MYSQL_PREFIX?}_user_cats` AS c ON d.`userid`=c.`userid`";
+ $addWhere = sprintf(" AND c.`cat_id`=%s", $categoryId);
} // END - if
// Exclude users in holiday?
if (isExtensionInstalledAndNewer('holiday', '0.1.3')) {
// Add something for the holiday extension
- $CAT_WHERE .= " AND d.`holiday_active`='N'";
+ $addWhere .= " AND d.`holiday_active`='N'";
} // END - if
+ // Include only HTML recipients?
if ((isExtensionActive('html_mail')) && ($mode == 'html')) {
- // Only include HTML receivers
- $result = SQL_QUERY_ESC("SELECT d.`userid` FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$CAT_TABS." WHERE d.`status`='CONFIRMED' AND d.`html`='Y'".$CAT_WHERE." ORDER BY d.`{?order_select?}` {?order_mode?} LIMIT %s",
- array(
- $receiver
- ), __FUNCTION__, __LINE__);
- } else {
- // Include all
- $result = SQL_QUERY_ESC("SELECT d.`userid` FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$CAT_TABS." WHERE d.`status`='CONFIRMED'".$CAT_WHERE." ORDER BY d.`{?order_select?}` {?order_mode?} LIMIT %s",
- array(
- $receiver
- ), __FUNCTION__, __LINE__);
- }
+ $addWhere .= " AND d.`html`='Y'";
+ } // END - if
+
+ // Run query
+ $result = SQL_QUERY_ESC("SELECT d.`userid` FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$extraColumns." WHERE d.`status`='CONFIRMED' ".$addWhere." ORDER BY d.`{?order_select?}` {?order_mode?} LIMIT %s",
+ array(
+ $receiver
+ ), __FUNCTION__, __LINE__);
// Entries found?
if ((SQL_NUMROWS($result) >= $receiver) && ($receiver > 0)) {
}
// Updates last module / online time
-// @TODO Fix inconsistency between last_module and getWhat()
function updateLastActivity($userid) {
// Is 'what' set?
if (isWhatSet()) {
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_data`
SET
- `last_module`='%s',
+ `%s`='%s',
`last_online`=UNIX_TIMESTAMP(),
`REMOTE_ADDR`='%s'
WHERE
`userid`=%s
LIMIT 1",
array(
+ getUserLastWhatName(),
getWhat(),
detectRemoteAddr(),
bigintval($userid)
), __FUNCTION__, __LINE__);
} else {
// No what set, needs to be ignored (last_module is last_what)
- // @TODO Rename last_module to last_what to make it more clear
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_data`
SET
+ `%s`=NULL,
`last_online`=UNIX_TIMESTAMP(),
`REMOTE_ADDR`='%s'
WHERE
`userid`=%s
LIMIT 1",
array(
+ getUserLastWhatName(),
detectRemoteAddr(),
bigintval($userid)
), __FUNCTION__, __LINE__);
}
}
+/**
+ * Checks if given subject is found and if not, adds an SQL query to the
+ * extension registration queue.
+ */
+function registerExtensionPointsData ($subject, $columnName, $lockedMode, $paymentMethod) {
+ // Default is old extension version
+ $add = '';
+
+ // Is the extension equal or newer 0.8.9?
+ if (isExtensionInstalledAndNewer('sql_patches', '0.8.9')) {
+ // Then add provider
+ $add = " AND `account_provider`='EXTENSION'";
+ } // END - if
+
+ // Is the 'subject' there?
+ if (countSumTotalData($subject, 'points_data', 'id', 'subject', true, $add) == 0) {
+ // Not found so add an SQL query
+ addExtensionSql(sprintf("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('%s','%s','%s','%s')",
+ $subject,
+ $columnName,
+ $lockedMode,
+ $paymentMethod
+ ));
+ } // END - if
+}
+
+/**
+ * Checks if given subject is found and if so, adds an SQL query to the
+ * extension unregistration queue.
+ */
+function unregisterExtensionPointsData ($subject) {
+ // Default is old extension version
+ $add = '';
+
+ // Is the extension equal or newer 0.8.9?
+ if (isExtensionInstalledAndNewer('sql_patches', '0.8.9')) {
+ // Then add provider
+ $add = " AND `account_provider`='EXTENSION'";
+ } // END - if
+
+ // Is the 'subject' there?
+ if (countSumTotalData($subject, 'points_data', 'id', 'subject', true, $add) == 1) {
+ // Found one or more, so add an SQL query
+ addExtensionSql(sprintf("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_points_data` WHERE `subject`='%s'" . $add . " LIMIT 1",
+ $subject
+ ));
+ } // END - if
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
return false;
}
-// Need this here
// Only send bonus mail when bonus extension is active and maximum send-mails is not reached
if ($GLOBALS['pool_cnt'] < getMaxSend()) {
+ // Default is ext-html_mail is gone
+ $add = '';
+
// Do we need to send out bonus mails?
if (isExtensionActive('html_mail')) {
- // 0 1 2 3 4 5 6 7 8 9 10 11
- $result_bonus = SQL_QUERY("SELECT `id`,`subject`,`text`,`receivers`,`points`,`time`,`data_type`,`timestamp`,`url`,`cat_id`,`target_send`,`html_msg` FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `data_type`='NEW' ORDER BY `timestamp` DESC", __FILE__, __LINE__);
- } else {
- // 0 1 2 3 4 5 6 7 8 9 10
- $result_bonus = SQL_QUERY("SELECT `id`,`subject`,`text`,`receivers`,`points`,`time`,`data_type`,`timestamp`,`url`,`cat_id`,`target_send` FROM `{?_MYSQL_PREFIX?}_bonus` WHERE `data_type`='NEW' ORDER BY `timestamp` DESC", __FILE__, __LINE__);
- }
-
- if (!SQL_HASZERONUMS($result_bonus)) {
+ // With HTML support
+ $add = ', `html_msg`';
+ } // END - if
+
+ // Run query
+ $result_main = SQL_QUERY("SELECT
+ `id`,
+ `subject`,
+ `text`,
+ `receivers`,
+ `points`,
+ `time`,
+ `data_type`,
+ `timestamp`,
+ `url`,
+ `cat_id`,
+ `target_send`
+ " . $add . "
+FROM
+ `{?_MYSQL_PREFIX?}_bonus`
+WHERE
+ `data_type`='NEW'
+ORDER BY
+ `timestamp` DESC", __FILE__, __LINE__);
+
+ // Some mails left?
+ if (!SQL_HASZERONUMS($result_main)) {
+ // Init SQLs here
+ initSqls();
+
// Send these mails away...
$count2 = '';
- while ($mailData = SQL_FETCHARRAY($result_bonus)) {
+ while ($mailData = SQL_FETCHARRAY($result_main)) {
// Message is active in queue
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='QUEUE' WHERE `id`=%s LIMIT 1",
array(bigintval($mailData['id'])), __FILE__, __LINE__);
+ // Default is no users left
+ $receivers = array();
+
// "Explode" all receivers into an array
if (isInString(';', $mailData['receivers'])) {
// There's more than one receiver in the list...
} elseif (!empty($mailData['points'])) {
// Only one user left
$receivers = array($mailData['receivers']);
- } else {
- // No users left
- $receivers = array(0);
}
$temporaryReceivers = $receivers;
- // Now, if we are good little boys and girls Santa Claus left us some user-ids.
- // We can now send mails to them...
+ /*
+ * Now, if we are good little boys and girls Santa Claus left us
+ * some user-ids and send out mails to them.
+ */
foreach ($receivers as $key => $userid) {
// Load personal data
if (fetchUserData($userid)) {
// Count one up and remove entry from dummy array
$GLOBALS['pool_cnt']++; unset($temporaryReceivers[$key]);
+ // Is ext-user installed?
if (isExtensionInstalledAndNewer('user', '0.1.4')) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',mailData[id]=' . $mailData['id']);
// Update mails received for receiver
- SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `emails_received`=`emails_received`+1 WHERE `userid`=%s LIMIT 1",
- array(bigintval($userid)), __FILE__, __LINE__);
+ addSql(sprintf("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `emails_received`=`emails_received`+1 WHERE `userid`=%s LIMIT 1", bigintval($userid)));
} // END - if
- // Do we have send maximum mails?
+ // Is the size of pool reached or nothing to sent left?
if (($GLOBALS['pool_cnt'] >= getMaxSend()) || (countSelection($temporaryReceivers) == 0)) {
- // Yes, we have
- //* DEBUG: */ debugOutput('*EXIT/L:'.__LINE__);
+ // Yes, it is. So abort here
break;
} // END - if
break;
} // END - if
} // END - foreach
+ // Run all SQLs
+ runFilterChain('run_sqls');
+
// Update mediadata if version is 0.0.4 or higher
if (isExtensionInstalledAndNewer('mediadata', '0.0.4')) {
// Update entry (or add missing
bigintval($mailData['id'])
), __FILE__, __LINE__);
//* DEBUG: */ debugOutput('*L:'.__LINE__.'<pre>'.print_r($temporaryReceivers, true).'</pre>!!!');
+
+ // Run any SQLs
+ runFilterChain('run_sqls');
break;
}
} // END - while
} // END - if
// Free memory
- SQL_FREERESULT($result_bonus);
+ SQL_FREERESULT($result_main);
// Remove variable
unset($mailText);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Main query
$result_main = SQL_QUERY("SELECT
- `id`,`sender` AS `sender_userid`,`subject`,`text`,`receivers`,
- `payment_id`,`timestamp`,`url`,`target_send`,`cat_id`
+ `id`,
+ `sender` AS `sender_userid`,
+ `subject`,
+ `text`,
+ `receivers`,
+ `payment_id`,
+ `timestamp`,
+ `url`,
+ `target_send`,
+ `cat_id`
".$HTML."
FROM
`{?_MYSQL_PREFIX?}_pool`
if (!SQL_HASZERONUMS($result_main)) {
// Parse all mails
- while ($mailData = SQL_FETCHARRAY($result_main, 0, false)) {
+ while ($mailData = SQL_FETCHARRAY($result_main)) {
// Set mail order as 'active'. That means it will be sent out
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_pool` SET `data_type`='ACTIVE' WHERE `id`=%s AND `data_type`='NEW' LIMIT 1",
array($mailData['id']), __FILE__, __LINE__);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Start purging all
while ($content = SQL_FETCHARRAY($result)) {
// Add id
- $ids[] = $content['id'];
+ array_push($ids, $content['id']);
// Translate some data
$content['coupon_created'] = generateDateTime($content['coupon_created'], '2');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `status`='CONFIRMED' AND
+ `status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
(UNIX_TIMESTAMP() - `joined`) >= {?ap_inactive_since?} AND
(UNIX_TIMESTAMP() - `last_online`) >= {?ap_inactive_since?} AND
(UNIX_TIMESTAMP() - `ap_notified`) >= {?ap_inactive_since?}
$content = merge_array($content, $row);
// Remember userids for the admin
- $userids[] = $content['userid'];
+ array_push($userids, $content['userid']);
// Get date/time from timestamp
$content['last_online'] = generateDateTime($content['last_online'], 0);
} // END - while
// Remove last comma
- $useridsContent = implode("\n", $userids);
+ $useridsContent = implode(chr(10), $userids);
// Send mail notification to admin
sendAdminNotification('{--ADMIN_AUTOPURGE_INACTIVE_SUBJECT--}', 'admin_autopurge_inactive', $useridsContent);
FROM
`{?_MYSQL_PREFIX?}_user_data`
WHERE
- `status`='CONFIRMED' AND
+ `status`='CONFIRMED'
+ " . runFilterChain('user_exclusion_sql', ' ') . " AND
(UNIX_TIMESTAMP() - `joined`) >= {?ap_inactive_since?} AND
(UNIX_TIMESTAMP() - `last_online`) >= {?ap_inactive_since?} AND
(UNIX_TIMESTAMP() - `ap_notified`) >= {?ap_inactive_time?} AND
// Delete inactive accounts
while ($content = SQL_FETCHARRAY($result_inactive)) {
// Remember userids for the admin
- $userids[] = $content['userid'];
+ array_push($userids, $content['userid']);
// Get date/time from timestamp
$content['last_online'] = generateDateTime($content['last_online'], 0);
} // END - while
// Display all userids
- $useridsContent = implode("\n", $userids);
+ $useridsContent = implode(chr(10), $userids);
// Send mail notification to admin
if (getConfig('ap_in_notify') == 'Y') {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
ORDER BY
`sender` ASC", __FILE__, __LINE__);
-// Reset counter...
+// Init counter...
$deletedStats = '0';
// Do we have "purged" mails?
// Get all affected (deleted) rows
$deletedStats += SQL_AFFECTEDROWS();
-
- // Reset query (to prevent possible errors) ...;
- $result_mails = SQL_QUERY("SELECT
- `sender`
-FROM
- `{?_MYSQL_PREFIX?}_pool`
-WHERE
- `data_type`='DELETED' AND
- (UNIX_TIMESTAMP() - `timestamp`) >= {?ap_dm_timeout?}
-ORDER BY
- `sender` ASC", __FILE__, __LINE__);
} // END - if
} // END - while
} // END - if
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
} // END - while
// Remove last comma
- $userids = str_replace(', ', "\n", substr($userids, 0, -2));
+ $userids = str_replace(', ', chr(10), substr($userids, 0, -2));
// Send mail notification to admin
if (getConfig('ap_un_notify') == 'Y') {
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
setCurrentUserId($userid);
// Check user account
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',points=' . $points . ',paymentMethod=' . $paymentMethod . ',sendNotify=' . intval($sendNotify));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',points=' . $points . ',paymentMethod=' . $paymentMethod . ',sendNotify=' . intval($sendNotify));
if (fetchUserData($userid)) {
- // Determine wether the user has some mails to click before he/she gets the points
- $locked = ifUserPointsLocked($userid);
+ // Determine whether the user has some mails to click before he/she gets the points
+ $isLocked = ifUserPointsLocked($userid);
// Detect database column
- $pointsColumn = determinePointsColumnFromSubjectLocked($subject, $locked);
+ $pointsColumn = determinePointsColumnFromSubjectLocked($subject, $isLocked);
// Get percents
- $per = getReferralLevelPercents($GLOBALS['ref_level']);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',points=' . $points . ',depth=' . convertNullToZero($GLOBALS['ref_level']) . ',per=' . $per . ',mode=' . $paymentMethod . ',pointsColumn=' . $pointsColumn . ',locked=' . intval($locked) . ',refid=' . getUserData('refid'));
+ $percents = getReferralLevelPercents($GLOBALS['ref_level']);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',points=' . $points . ',depth=' . convertNullToZero($GLOBALS['ref_level']) . ',percents=' . $percents . ',mode=' . $paymentMethod . ',pointsColumn=' . $pointsColumn . ',isLocked=' . intval($isLocked) . ',refid=' . getUserData('refid'));
// Some percents found?
- if ($per > 0) {
+ if ($percents > 0) {
// Calculate new points
- $ref_points = $points * $per / 100;
+ $ref_points = $points * $percents / 100;
// Pay refback here if level > 0 and in ref-mode
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',points=' . $points . ',paymentMethod=' . $paymentMethod);
- if (($userid != $refid) && ($paymentMethod == 'REFERRAL') && (isValidUserId(getUserData('refid'))) && (isExtensionActive('refback'))) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',ref_points=' . $ref_points . ',depth=' . convertNullToZero($GLOBALS['ref_level']) . ' - BEFORE!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',points=' . $points . ',paymentMethod=' . $paymentMethod);
+ if (($userid != $refid) && (substr($subject, 0, 8) != 'refback:') &&($paymentMethod == 'REFERRAL') && (isValidUserId(getUserData('refid'))) && (isExtensionActive('refback'))) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',ref_points=' . $ref_points . ',depth=' . convertNullToZero($GLOBALS['ref_level']) . ' - BEFORE!');
$ref_points = addRefbackPoints($userid, getUserData('refid'), $points, $ref_points);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',ref_points=' . $ref_points . ',depth=' . convertNullToZero($GLOBALS['ref_level']) . ' - AFTER!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',ref_points=' . $ref_points . ',depth=' . convertNullToZero($GLOBALS['ref_level']) . ' - AFTER!');
} // END - if
// Update points...
'column' => $pointsColumn,
'notify' => $sendNotify,
'refid' => $refid,
- 'locked' => $locked,
+ 'locked' => $isLocked,
'points_mode' => 'add',
'add_mode' => $paymentMethod,
'added' => $added
$added = $filterData['added'];
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added=' . intval($added) . ' - AFTER FILTER');
- // Points updated, maybe I shall send him an email?
- if (($sendNotify === true) && (isValidUserId(getUserData('refid'))) && ($locked === false)) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',refid=' . $refid . ',paymentMethod=' . $paymentMethod . ',sendNotify=' . intval($sendNotify) . ',isLocked=' . intval($isLocked));
+
+ // Send "referral confirmed" mails out?
+ if ((isValidUserid($refid)) && ($refid != $userid) && ($sendNotify === true)) {
+ // Calculate the referral's points and percents
+ $percentsReferral = getReferralLevelPercents($GLOBALS['ref_level'] + 1);
+
+ // Calculate new points
+ $ref_points = $ref_points * $percentsReferral / 100;
+
// Prepare content
$content = array(
- 'percents' => $per,
- 'level' => bigintval($GLOBALS['ref_level']),
- 'points' => $ref_points,
+ 'userid' => bigintval($userid),
+ 'refid' => $refid,
+ 'level' => bigintval($GLOBALS['ref_level'] + 1),
+ 'percents' => $percentsReferral,
+ 'points' => ($paymentMethod == 'REFERRAL' ? $ref_points : '0'),
+ 'payment_method' => $paymentMethod,
+ 'subject' => $subject,
);
// Load email template
// Send email
sendEmail($userid, '{--THANX_REFERRAL_ONE_SUBJECT--}', $message);
- } elseif (($sendNotify === true) && (!isValidUserId(getUserData('refid'))) && ($locked === false) && ($paymentMethod == 'DIRECT')) {
- // Prepare content
+ } // END - if
+
+ // Points updated, maybe I shall send him an email?
+ if (($sendNotify === true) && ($isLocked === false)) {
+ // "Explode" subject
+ $subjectArray = explode(':', $subject);
+ $subjectUserid = (isset($subjectArray[1])) ? $subjectArray[1] : '0';
+
+ // Generic delivery of mails, so prepare data
$content = array(
- 'reason' => '{--REASON_DIRECT_PAYMENT--}',
- 'subject' => $subject,
- 'points' => $ref_points
+ 'userid' => $userid,
+ 'percents' => $percents,
+ 'level' => bigintval($GLOBALS['ref_level']),
+ 'points' => $ref_points,
+ 'column' => $pointsColumn,
+ 'subject' => $subjectArray[0],
+ 'subject_userid' => $subjectUserid,
+ 'payment_method' => $paymentMethod,
);
- // Load message
- $message = loadEmailTemplate('member_add_points', $content, $userid);
+ // Load email template
+ $message = loadEmailTemplate('member_' . $subjectArray[0] . '_' . strtolower($paymentMethod), $content, $userid);
- // And sent it away
- sendEmail($userid, '{--DIRECT_PAYMENT_SUBJECT--}', $message);
- if (!isGetRequestElementSet('mid')) {
- // Output message to admin
- displayMessage('{--ADMIN_POINTS_ADDED--}');
- } // END - if
- }
+ // Send email
+ sendEmail($userid, '{%message,MEMBER_' . $paymentMethod . '_' . strtoupper($subjectArray[0]) . '_SUBJECT=' . $subjectUserid . '%}', $message);
+
+ // Also send admin notification
+ sendAdminNotification(
+ // Subject
+ '{%message,ADMIN_' . $paymentMethod . '_' . strtoupper($subjectArray[0]) . '_SUBJECT=' . $subjectUserid . '%}',
+ // Template name
+ 'admin_' . $subjectArray[0] . '_' . strtolower($paymentMethod),
+ // Template content (data array)
+ $content,
+ // User id
+ $userid
+ );
+ } // END - if
// Increase referral level, if payment method is REFERRAL
if ($paymentMethod == 'REFERRAL') {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Referral level *NOT* increased, ref_level=' . convertNullToZero($GLOBALS['ref_level']) . ',points=' . $points . ',refid=' . convertNullToZero(getUserData('refid')) . ',userid=' . $userid . ',paymentMethod=' . $paymentMethod);
}
+ // Remove any :x
+ $subject = removeDoubleDotFromSubject($subject);
+
// Maybe there's another ref?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',refid(var|data)=' . convertNullToZero($refid) . '|' . convertNullToZero(getUserData('refid')) . ',userid=' . $userid . ',paymentMethod=' . $paymentMethod);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',refid(var|data)=' . convertNullToZero($refid) . '|' . convertNullToZero(getUserData('refid')) . ',userid=' . $userid . ',paymentMethod=' . $paymentMethod . ',subject=' . $subject . ',ref_level=' . $GLOBALS['ref_level']);
if ((isValidUserId(getUserData('refid'))) && ($points > 0) && (getUserData('refid') != $userid) && ($paymentMethod == 'REFERRAL')) {
+ // Is _ref there?
+ if (substr($subject, -4, 4) == '_ref') {
+ // Then remove it, no double _ref suffix!
+ $subject = substr($subject, 0, -4);
+ } // END - if
+
// Then let's credit him here...
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',points=' . $points . ',ref_points=' . $ref_points . ',added[' . gettype($added) . ']=' . intval($added) . ' - ADVANCE!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'subject=' . $subject . ',userid=' . $userid . ',refid=' . convertNullToZero(getUserData('refid')) . ',points=' . $points . ',ref_points=' . $ref_points . ',added[' . gettype($added) . ']=' . intval($added) . ',ref_level=' . $GLOBALS['ref_level'] . ' - ADVANCE!');
$added = ($added && addPointsThroughReferralSystem(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), getUserData('refid'), $points, getFetchedUserData('userid', getUserData('refid'), 'refid')));
} // END - if
} // END - if
// Extension ext-sql_patches must be up-to-date
if (isExtensionInstalledAndOlder('sql_patches', '0.8.2')) {
// Please update ext-sql_patches
- debug_report_bug(__FUNCTION__, __LINE__, 'sql_patches is out-dated. Please update to at least 0.8.2 to continue. subject=' . $subject);
- } // END - if
+ reportBug(__FUNCTION__, __LINE__, 'sql_patches is out-dated. Please update to at least 0.8.2 to continue. subject=' . $subject);
+ } elseif (substr($subject, -8, 8) == '_ref_ref') {
+ // Please report ALL finiding
+ reportBug(__FUNCTION__, __LINE__, 'subject=' . $subject . ' contains invalid double-suffix _ref.');
+ }
// Remove any double-dot from it
- $subjectArray = explode(':', $subject);
- $subject = $subjectArray[0];
- unset($subjectArray);
+ $subject = removeDoubleDotFromSubject($subject);
// If we have cache, shortcut it here
if (isset($GLOBALS['cache_array']['points_data'][$subject])) {
+ // Count cache hit
+ incrementStatsEntry('cache_hits');
+
// Return it
return $GLOBALS['cache_array']['points_data'][$subject];
} // END - if
return $paymentMethod;
}
-// Checks wether notification of points recipient is enabled
+// Checks whether notification of points recipient is enabled
function isPaymentRecipientNotificationEnabled ($subject) {
// Get the points_data entry
$pointsData = getPointsDataArrayFromSubject($subject);
$GLOBALS['referral_refid'][$userid] = array();
// Get all level entries from the refsystem table
- $result = SQL_QUERY_ESC('SELECT `level` FROM `{?_MYSQL_PREFIX?}_refsystem` WHERE `userid`=%s ORDER BY `level` ASC',
+ $GLOBALS['referral_result'][$userid] = SQL_QUERY_ESC('SELECT `level` FROM `{?_MYSQL_PREFIX?}_refsystem` WHERE `userid`=%s ORDER BY `level` ASC',
array($userid), __FUNCTION__, __LINE__);
// Do we have entries?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',SQL_NUMROWS()=' . SQL_NUMROWS($result));
- if (SQL_NUMROWS($result) > 0) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',SQL_NUMROWS()=' . SQL_NUMROWS($GLOBALS['referral_result'][$userid]));
+ if (SQL_NUMROWS($GLOBALS['referral_result'][$userid]) > 0) {
// Then walk through all levels
- while (list($level) = SQL_FETCHROW($result)) {
+ while (list($level) = SQL_FETCHROW($GLOBALS['referral_result'][$userid])) {
// Init array
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level);
$GLOBALS['referral_refid'][$userid][$level] = array();
// Level is = 1?
if ($level == 1) {
// Load all referrals of this user
- $result_refs = SQL_QUERY_ESC('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=%s ORDER BY `userid` ASC',
+ $GLOBALS['referral_result_refs'][$userid] = SQL_QUERY_ESC('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=%s ORDER BY `userid` ASC',
array($userid), __FUNCTION__, __LINE__);
// Do we have entries?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',SQL_NUMROWS()=' . SQL_NUMROWS($result_refs));
- if (SQL_NUMROWS($result_refs) > 0) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',SQL_NUMROWS()=' . SQL_NUMROWS($GLOBALS['referral_result_refs'][$userid]));
+ if (SQL_NUMROWS($GLOBALS['referral_result_refs'][$userid]) > 0) {
// Then again walk through all
- while (list($refid) = SQL_FETCHROW($result_refs)) {
+ while (list($refid) = SQL_FETCHROW($GLOBALS['referral_result_refs'][$userid])) {
// Add this refid
- $GLOBALS['referral_refid'][$userid][$level][] = $refid;
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
+ array_push($GLOBALS['referral_refid'][$userid][$level], $refid);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ' - ADDED!');
+
// Load the refid's array as well
loadReferralTable($refid);
} // END - while
} // END - if
// Free result
- SQL_FREERESULT($result_refs);
+ SQL_FREERESULT($GLOBALS['referral_result_refs'][$userid]);
} // END - if
} // END - while
} // END - if
// Free result
- SQL_FREERESULT($result);
+ SQL_FREERESULT($GLOBALS['referral_result'][$userid]);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
}
// If the array is gone, you have called this function without calling loadReferralTable()
if (!isset($GLOBALS['referral_refid'][$userid])) {
// Please fix your code
- debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadReferralTable() before! userid=' . $userid);
+ reportBug(__FUNCTION__, __LINE__, 'Called without calling loadReferralTable() before! userid=' . $userid);
} // END - if
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['referral_refid'][$userid]));
if ((!isset($GLOBALS['referral_refid'][$userid][$newLevel])) || (!in_array($refRefid, $GLOBALS['referral_refid'][$userid][$newLevel]))) {
// Then we must add this ref's refid to the userid's next level
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',newLevel=' . $newLevel . ',refRefid=' . $refRefid . ' - ADDED!');
- $GLOBALS['referral_refid'][$userid][$newLevel][] = $refRefid;
+ array_push($GLOBALS['referral_refid'][$userid][$newLevel], $refRefid);
// Add also this user's (maybe) missing levels
addMissingReferralLevels($refRefid);
} // END - foreach
} // END - foreach
} // END - foreach
+ //die('<pre>'.print_r($GLOBALS['referral_refid'][$userid],true).'</pre>');
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
}
// If the array is gone, you have called this function without calling loadReferralTable()
if (!isset($GLOBALS['referral_refid'][$userid])) {
// Please fix your code
- debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadReferralTable() before! userid=' . $userid);
+ reportBug(__FUNCTION__, __LINE__, 'Called without calling loadReferralTable() before! userid=' . $userid);
} // END - if
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['referral_refid'][$userid]));
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
}
+// Generator (somewhat getter) for points_data, locked_mode
+function generatePointsLockedModeOptions ($lockedMode = NULL) {
+ // Is this cached?
+ if (!isset($GLOBALS[__FUNCTION__][$lockedMode])) {
+ // Generate output and cache it
+ $GLOBALS[__FUNCTION__][$lockedMode] = generateOptions(
+ '/ARRAY/',
+ array(
+ 'LOCKED',
+ 'UNLOCKED'
+ ),
+ array(),
+ $lockedMode,
+ '', '',
+ array(),
+ 'translatePointsLockedMode'
+ );
+ } // END - if
+
+ // Return content
+ return $GLOBALS[__FUNCTION__][$lockedMode];
+}
+
+// Generator (somewhat getter) for points_data, payment_method
+function generatePointsPaymentMethodOptions ($paymentMethod = NULL) {
+ // Is this cached?
+ if (!isset($GLOBALS[__FUNCTION__][$paymentMethod])) {
+ // Generate output and cache it
+ $GLOBALS[__FUNCTION__][$paymentMethod] = generateOptions(
+ '/ARRAY/',
+ array(
+ 'DIRECT',
+ 'REFERRAL'
+ ),
+ array(),
+ $paymentMethod,
+ '', '',
+ array(),
+ 'translatePointsPaymentMethod'
+ );
+ } // END - if
+
+ // Return content
+ return $GLOBALS[__FUNCTION__][$paymentMethod];
+}
+
+// Generator (somewhat getter) for points_data, notify_recipient
+function generatePointsNotifyRecipientOptions ($notifyRecipient = NULL) {
+ // Is this cached?
+ if (!isset($GLOBALS[__FUNCTION__][$notifyRecipient])) {
+ // Generate output and cache it
+ $GLOBALS[__FUNCTION__][$notifyRecipient] = generateOptions(
+ '/ARRAY/',
+ array(
+ 'Y',
+ 'N'
+ ),
+ array(),
+ $notifyRecipient,
+ '', '',
+ array(),
+ 'translatePointsNotifyRecipient'
+ );
+ } // END - if
+
+ // Return content
+ return $GLOBALS[__FUNCTION__][$notifyRecipient];
+}
+
+// Setter for referral id (no bigintval, or nicknames will fail!)
+function setReferralId ($refid) {
+ $GLOBALS['__refid'] = $refid;
+}
+
+// Checks if 'refid' is valid
+function isReferralIdValid () {
+ return ((isset($GLOBALS['__refid'])) && (getReferralId() !== NULL) && (getReferralId() > 0));
+}
+
+// Getter for referral id
+function getReferralId () {
+ return $GLOBALS['__refid'];
+}
+
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Checks if an element in $_POST exists
function isPostRequestElementSet ($element, $subElement = NULL) {
if (is_null($subElement)) {
- return ((isset($GLOBALS['raw_request']['post'][$element])) && (('' . $GLOBALS['raw_request']['post'][$element] . '') != ''));
+ if (!is_string($element)) die(gettype($element));
+ return ((isset($GLOBALS['raw_request']['post'][$element])) && ((is_array($GLOBALS['raw_request']['post'][$element])) || (('' . $GLOBALS['raw_request']['post'][$element] . '') != '')));
} else {
return ((isset($GLOBALS['raw_request']['post'][$element][$subElement])) && (('' . $GLOBALS['raw_request']['post'][$element][$subElement] . '') != ''));
}
$GLOBALS['cache_request']['post'][$element][null] = $value;
}
-// Checks wether a form was sent. If so, the $_POST['ok'] element must be set
+// Checks whether a form was sent. If so, the $_POST['ok'] element must be set
function isFormSent ($requestParameter = 'ok') {
// Simply wrap it!
return isPostRequestElementSet($requestParameter);
}
-// Checks if 'content_type' is set
-function isContentTypeSet () {
- return isset($GLOBALS['content_type']);
-}
-
-// Setter for content type
-function setContentType ($contentType) {
- $GLOBALS['content_type'] = (string) $contentType;
-}
-
-// Getter for content type
-function getContentType () {
- return $GLOBALS['content_type'];
-}
-
// Getter for request URI
function getRequestUri () {
+ // Is it not set?
+ if (!isset($_SERVER['REQUEST_URI'])) {
+ // Return empty string
+ return '';
+ } // END - if
+
+ // Return it
return $_SERVER['REQUEST_URI'];
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Default branch
'Tag' => 8
);
+
+ // Add Revision, Date, Tag and Author
+ $GLOBALS['repository_search_for'] = array(
+ 'File',
+ 'Revision',
+ 'Date',
+ 'Tag',
+ 'Author'
+ );
}
// "Getter" for revision/version data
function getRepositoryData ($type = 'Revision') {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . '] - ENTRY!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . '] - ENTERED!');
// Default is an invalid value to find bugs... :-)
$ret = 'INVALID';
$new = true;
} else {
// Revision file found
- $ins_vers = explode("\n", readFromFile($FQFN));
+ $ins_vers = explode(chr(10), readFromFile($FQFN));
// Get array for mapping information
- $mapper = array_flip(getSearchFor());
+ $mapper = array_flip($GLOBALS['repository_search_for']);
//* DEBUG: */ debugOutput('<pre>mapper='.print_r($mapper, true).'</pre>ins_vers=<pre>'.print_r($ins_vers, true).'</pre>');
// Is the content valid?
// Has it been updated?
if ($new === true) {
// Write it
- writeToFile($FQFN, implode("\n", getArrayFromRepositoryData()));
+ writeToFile($FQFN, implode(chr(10), getArrayFromRepositoryData()));
// ... and call recursive
$ret = getRepositoryData($type);
}
// Return the value
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . ']=' . $ret);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . ']=' . $ret . ' - EXIT!');
return $ret;
}
-// Repares an array we are looking for
-// The returned Array is needed twice (in getArrayFromRepositoryData() and in getRepositoryData() in the old .revision-fallback) so I puted it in an extra function to not polute the global namespace
-function getSearchFor () {
- // Add Revision, Date, Tag and Author
- $searchFor = array('File', 'Revision', 'Date', 'Tag', 'Author');
-
- // Return the created array
- return $searchFor;
-}
-
// Extracts requested revision info from given file data
function extractRevisionInfoFromData ($fileData, $search) {
// Default is to return empty string
$GLOBALS['cache_array']['revision']['File'][0] = $last_changed['path_name'];
// This foreach loops the $searchFor-Tags (array('Revision', 'Date', 'Tag', 'Author') --> could easaly extended in the future)
- foreach (getSearchFor() as $search) {
+ foreach ($GLOBALS['repository_search_for'] as $search) {
// This extracts the requested data $search from file data $last_file
if ($search != 'File') {
// Skip 'File' because we have set it some lines above
// Invalid request reply?
if (!isset($version[11])) {
// Cannot continue here
- debug_report_bug(__FUNCTION__, __LINE__, 'Invalid response from check-updates3.php, count should be at least 11, is ' . count($version));
+ reportBug(__FUNCTION__, __LINE__, 'Invalid response from check-updates3.php, count should be at least 11, is ' . count($version));
} // END - if
// Prepare content
// Only sets not setted or not proper values to the Online-Server-Fallback-Solution
- foreach (getSearchFor() as $entry) {
+ foreach ($GLOBALS['repository_search_for'] as $entry) {
// Is it not set or empty?
if ((!isset($GLOBALS['cache_array']['revision'][$entry][0])) || (empty($GLOBALS['cache_array']['revision']['File'][0]))) {
// Is default data entry nummerical?
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
die();
-}
+} // END - if
// Unset/set session variables
function setSession ($var, $value) {
// Abort in CSS mode here
- if (isCssOutputMode()) return true;
+ if (isCssOutputMode()) {
+ return true;
+ } // END - if
// Trim value and session variable
$var = trim(secureString($var));
// Remove the session
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UNSET:' . $var . '=' . getSession($var));
unset($GLOBALS['_SESSION'][$var]);
- if (phpversion() >= '5.3.1') {
- // session_unregister() is deprecated as of 5.3.1
+ if (isPhpVersionEqualNewer('5.3.0')) {
+ // session_unregister() is deprecated as of 5.3.0
return true;
} else {
- // PHP version < 5.3.1
+ // PHP version < 5.3.0
return session_unregister($var);
}
} elseif (('' . $value . '' != '') && (!isSessionVariableSet($var))) {
// Set session
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SET:' . $var . '=' . $value);
$GLOBALS['_SESSION'][$var] = $value;
- if (phpversion() >= '5.3.1') {
- // session_unregister() is deprecated as of 5.3.1
+ if (isPhpVersionEqualNewer('5.3.0')) {
+ // session_unregister() is deprecated as of 5.3.0
return true;
} else {
- // PHP version < 5.3.1
+ // PHP version < 5.3.0
return session_register($var);
}
} elseif (!empty($value)) {
return true;
}
-// Check wether a session variable is set
+// Check whether a session variable is set
function isSessionVariableSet ($var) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'var=' . $var . ' set in session');
+ // Warning: DO NOT call logDebugMessage() from here, this will cause an endless loop
return (isset($GLOBALS['_SESSION'][$var]));
}
-// Returns wether the value of the session variable or NULL if not set
+// Returns whether the value of the session variable or NULL if not set
function getSession ($var) {
// Default is not found ;-)
$value = NULL;
return $value;
}
+// Get whole session array
+function getSessionArray () {
+ // Simply return it
+ return $GLOBALS['_SESSION'];
+}
+
// Destroy user session
function destroyMemberSession () {
// Reset userid
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Is ext-sql_patches there and newer?
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Init SQLs array
function initSqls () {
- setSqlsArray(array());
+ // Init generic array
+ setSqlsArray(array('generic' => array()));
}
-// Checks wether the sqls array is initialized
+// Checks whether the sqls array is initialized
function isSqlsInitialized () {
return ((isset($GLOBALS['sqls'])) && (is_array($GLOBALS['sqls'])));
}
// Add an SQL to the list
function addSql ($sql) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("sql=%s, count=%d", $sql, countSqls()));
- $GLOBALS['sqls']['generic'][] = (string) $sql;
+ array_push($GLOBALS['sqls']['generic'], $sql);
}
// Merge SQLs together
return $count;
}
-// Checks wether the SQLs array is filled
+// Checks whether the SQLs array is filled
function isSqlsValid () {
//* DEBUG: */ debugOutput(__FUNCTION__ . ':' . intval(isSqlsInitialized()) . '/' . countSqls() . '/' . getCurrentExtensionName());
return (
$SQL .= sprintf('%01.5f', $value);
} else {
// Everything else might be a string, so add ticks around it
- $SQL .= "'" . SQL_ESCAPE($value) . "',";
+ $SQL .= chr(39) . SQL_ESCAPE($value) . chr(39) . ',';
}
} // END - foreach
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Increments a statistics entry
function incrementStatsEntry ($entry, $amount=1) {
// Do we have stats enabled?
- if (!ifInternalStatsEnabled()) {
+ if ((!ifInternalStatsEnabled()) && ($entry != 'db_hits')) {
+ // Abort here
return;
} // END - if
$GLOBALS['stats'][$entry] += $amount;
} else {
// Write it
- $GLOBALS['stats'][$entry] = $amount;
+ setStatsEntry($entry, $amount);
}
}
if ((isset($GLOBALS['stats'])) && (!isInstallationPhase()) && (ifInternalStatsEnabled())) {
// Write statistics to temporary table
writeStatsTable();
+
+ // Count db/cache hits in database
+ updateConfiguration(
+ array(
+ 'db_hits',
+ 'cache_hits'
+ ), array(
+ getStatsEntry('db_hits'),
+ getStatsEntry('cache_hits')
+ ),
+ '+'
+ );
} // END - if
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Default styles
$stylesList = array(
'general.css',
+ 'ajax.css',
);
// Add stylesheet for installation
-if ((isInstallationPhase())) $stylesList[] = 'install.css';
+if ((isInstallationPhase())) {
+ array_push($stylesList, 'install.css');
+} // END - if
// When no CSS output-mode is set, set it to file-output
-if (!isConfigEntrySet('css_php')) setConfigEntry('css_php', 'FILE');
+if (!isConfigEntrySet('css_php')) {
+ setConfigEntry('css_php', 'FILE');
+} // END - if
+
+// Get current theme
+$currentTheme = getCurrentTheme();
+
+// Has the theme changed?
+if ($currentTheme != getSession('mailer_theme')) {
+ // Then set it
+ setMailerTheme($currentTheme);
+} // END - if
// Output CSS files or content or link to css.php ?
if ((isCssOutputMode()) || (getConfig('css_php') == 'DIRECT')) {
$stylesList = merge_array($stylesList, getExtensionCssFiles());
// Generate base path
- $basePath = sprintf("%stheme/%s/css/", getPath(), getCurrentTheme());
+ $basePath = sprintf("%stheme/%s/css/", getPath(), $currentTheme);
// Output inclusion lines
foreach ($stylesList as $value) {
if ((isFileReadable($FQFN)) && (filesize($FQFN) > 0)) {
switch (getConfig('css_php')) {
case 'DIRECT': // Just link them (unsupported)
- $GLOBALS['page_header'] .= '<link rel="stylesheet" type="text/css" href="{%url=theme/' . getCurrentTheme() . '/' . $value . '%}" />';
+ $GLOBALS['__page_header'] .= '<link rel="stylesheet" type="text/css" href="{%url=theme/' . getCurrentTheme() . '/' . $value . '%}" />';
break;
case 'FILE': // Output contents
- $GLOBALS['page_header'] .= readFromFile($FQFN);
+ $GLOBALS['__page_header'] .= readFromFile($FQFN);
break;
default: // Invalid mode!
- debug_report_bug(__FILE__, __LINE__, sprintf("Invalid css_php value %s detected.", getConfig('css_php')));
+ reportBug(__FILE__, __LINE__, sprintf("Invalid css_php value %s detected.", getConfig('css_php')));
break;
} // END - switch
} // END - if
} // END - foreach
// Load template
- $GLOBALS['page_header'] .= loadTemplate('css_inline', true, $OUT);
+ $GLOBALS['__page_header'] .= loadTemplate('css_inline', true, $OUT);
} else {
// Now we load all CSS files from css.php!
$OUT = '<link rel="stylesheet" type="text/css" href="{%url=css.php';
}
// Close tag
- $GLOBALS['page_header'] .= $OUT . '%}{%ext,version=sql_patches%}" />';
+ $GLOBALS['__page_header'] .= $OUT . '%}{%ext,version=sql_patches%}" />';
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
$GLOBALS['is_template_html'] = (bool) $enable;
}
-// Checks wether the template is HTML or not by previously set flag
+// Checks whether the template is HTML or not by previously set flag
// Default: true
function isTemplateHtml () {
// Is the output_mode other than 0 (HTML), then no comments are enabled
// Output HTML code directly or 'render' it. You addionally switch the new-line character off
function outputHtml ($htmlCode, $newLine = true) {
// Init output
- if (!isset($GLOBALS['output'])) {
- $GLOBALS['output'] = '';
+ if (!isset($GLOBALS['__output'])) {
+ $GLOBALS['__output'] = '';
} // END - if
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getOutputMode()=' . getOutputMode() . ',htmlCode(length)=' . strlen($htmlCode) . ',output(length)=' . strlen($GLOBALS['__output']));
// Do we have HTML-Code here?
if (!empty($htmlCode)) {
// Yes, so we handle it as you have configured
switch (getOutputMode()) {
case 'render':
- // That's why you don't need any \n at the end of your HTML code... :-)
+ // But if PHP is caching, then we don't need to do that
if (getPhpCaching() == 'on') {
// Output into PHP's internal buffer
outputRawCode($htmlCode);
// That's why you don't need any \n at the end of your HTML code... :-)
if ($newLine === true) {
- print("\n");
+ outputRawCode(chr(10));
} // END - if
} else {
// Render mode for old or lame servers...
- $GLOBALS['output'] .= $htmlCode;
+ $GLOBALS['__output'] .= $htmlCode;
// That's why you don't need any \n at the end of your HTML code... :-)
if ($newLine === true) {
- $GLOBALS['output'] .= "\n";
+ $GLOBALS['__output'] .= chr(10);
} // END - if
}
break;
case 'direct':
- // If we are switching from render to direct output rendered code
- if ((!empty($GLOBALS['output'])) && (getPhpCaching() != 'on')) {
- outputRawCode($GLOBALS['output']);
- $GLOBALS['output'] = '';
+ // If we are switching from 'render' to 'direct' mode, all data in '__output' must be flushed and cleared
+ if ((!empty($GLOBALS['__output'])) && (getPhpCaching() != 'on')) {
+ outputRawCode($GLOBALS['__output']);
+ $GLOBALS['__output'] = '';
} // END - if
// The same as above... ^
outputRawCode($htmlCode);
if ($newLine === true) {
- print("\n");
+ outputRawCode(chr(10));
} // END - if
break;
default:
// Huh, something goes wrong or maybe you have edited config.php ???
- debug_report_bug(__FUNCTION__, __LINE__, '<strong>{--FATAL_ERROR--}:</strong> {--NO_RENDER_DIRECT--}');
+ reportBug(__FUNCTION__, __LINE__, '<strong>{--FATAL_ERROR--}:</strong> {--NO_RENDER_DIRECT--}');
break;
} // END - switch
- } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['header'])) || (count($GLOBALS['header']) == 0)) && (!isRawOutputMode())) {
+ } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['http_header'])) || (count($GLOBALS['http_header']) == 0)) && (!isRawOutputMode())) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getPhpCaching()=' . getPhpCaching() . ',isset(http_header)=' . intval(isset($GLOBALS['http_header'])) . ',getScriptOutputMode()=' . getScriptOutputMode() . '');
// Output cached HTML code
- $GLOBALS['output'] = ob_get_contents();
+ $GLOBALS['__output'] = ob_get_contents();
// Clear output buffer for later output if output is found
- if (!empty($GLOBALS['output'])) {
+ if (!empty($GLOBALS['__output'])) {
clearOutputBuffer();
} // END - if
compileFinalOutput();
// Output code here, DO NOT REMOVE! ;-)
- outputRawCode($GLOBALS['output']);
- } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['output'])) && (!isRawOutputMode())) {
+ outputRawCode($GLOBALS['__output']);
+ } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['__output'])) && (!isRawOutputMode())) {
// Send all HTTP headers
sendHttpHeaders();
compileFinalOutput();
// Output code here, DO NOT REMOVE! ;-)
- outputRawCode($GLOBALS['output']);
+ outputRawCode($GLOBALS['__output']);
} else {
// And flush all headers
flushHttpHeaders();
// Compiles the final output
function compileFinalOutput () {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '__output(length)=' . strlen($GLOBALS['__output']) . ',getScriptOutputMode()=' . getScriptOutputMode() . ' - ENTERED!');
// Add page header and footer
addPageHeaderFooter();
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '__output(length)=' . strlen($GLOBALS['__output']) . ' - After addPageHeaderFooter() call.');
// Do the final compilation
- $GLOBALS['output'] = doFinalCompilation($GLOBALS['output']);
+ $GLOBALS['__output'] = compileUriCode(doFinalCompilation($GLOBALS['__output']));
// Extension 'rewrite' installed?
if ((isExtensionActive('rewrite')) && (!isCssOutputMode())) {
- $GLOBALS['output'] = rewriteLinksInCode($GLOBALS['output']);
+ $GLOBALS['__output'] = rewriteLinksInCode($GLOBALS['__output']);
} // END - if
// Compress it?
* @TODO On some pages this is buggy
if (!empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (isInStringIgnoreCase('gzip', $_SERVER['HTTP_ACCEPT_ENCODING']))) {
// Compress it for HTTP gzip
- $GLOBALS['output'] = gzencode($GLOBALS['output'], 9);
+ $GLOBALS['__output'] = gzencode($GLOBALS['__output'], 9);
// Add header
addHttpHeader('Content-Encoding: gzip');
} elseif (!empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (isInStringIgnoreCase('deflate', $_SERVER['HTTP_ACCEPT_ENCODING']))) {
// Compress it for HTTP deflate
- $GLOBALS['output'] = gzcompress($GLOBALS['output'], 9);
+ $GLOBALS['__output'] = gzcompress($GLOBALS['__output'], 9);
// Add header
addHttpHeader('Content-Encoding: deflate');
*/
// Add final length
- addHttpHeader('Content-Length: ' . strlen($GLOBALS['output']));
+ addHttpHeader('Content-Length: ' . strlen($GLOBALS['__output']));
// Flush all headers
flushHttpHeaders();
// Was that eval okay?
if (empty($newContent)) {
// Something went wrong!
- debug_report_bug(__FUNCTION__, __LINE__, 'Evaluation error:<pre>' . linenumberCode($eval) . '</pre>', false);
+ reportBug(__FUNCTION__, __LINE__, 'Evaluation error:<pre>' . linenumberCode($eval) . '</pre>', false);
} // END - if
// Use it again
} // END - while
// Add debugging data in HTML code, if mode is enabled
- if ((isDebugModeEnabled()) && ($insertComments === true)) {
+ if ((isDebugModeEnabled()) && ($insertComments === true) && ((isHtmlOutputMode()) || (isCssOutputMode()))) {
// Add loop count
$code .= '<!-- Total compilation loop=' . $count . ' //-->';
} // END - if
// Output the raw HTML code
function outputRawCode ($htmlCode) {
// Output stripped HTML code to avoid broken JavaScript code, etc.
- print(str_replace('{BACK}', "\\", $htmlCode));
+ print(str_replace('{BACK}', chr(92), $htmlCode));
// Flush the output if only getPhpCaching() is not 'on'
if (getPhpCaching() != 'on') {
// @TODO Remove these sanity checks if all is fine
if (!is_bool($return)) {
// $return has to be boolean
- debug_report_bug(__FUNCTION__, __LINE__, 'return[] is not bool (' . gettype($return) . ')');
+ reportBug(__FUNCTION__, __LINE__, 'return[] is not bool (' . gettype($return) . ')');
} elseif (!is_string($template)) {
// $template has to be string
- debug_report_bug(__FUNCTION__, __LINE__, 'template[] is not string (' . gettype($template) . ')');
+ reportBug(__FUNCTION__, __LINE__, 'template[] is not string (' . gettype($template) . ')');
}
// Init returned content
// Normal HTML output?
if ((isHtmlOutputMode()) && (substr($template, 0, 3) != 'js_')) {
// Add surrounding HTML comments to help finding bugs faster
- $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'][$template] . '<!-- Template ' . $template . ' - End //-->';
+ $code = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'][$template] . '<!-- Template ' . $template . ' - End //-->';
// Prepare eval() command
- $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($ret), false, true, true, $compileCode) . '";';
+ $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($code), false, true, true, $compileCode) . '";';
} elseif (substr($template, 0, 3) == 'js_') {
// JavaScripts don't like entities, dollar signs and timings
$GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'][$template]), false, true, true, $compileCode) . '");';
} elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) {
// Only admins shall see this warning or when installation mode is active
$ret = '<div class="para">
- <span class="bad">{--TEMPLATE_404--}</span>
+ {--TEMPLATE_404--}
</div>
<div class="para">
(' . $template . ')
// Code set?
if ((isset($GLOBALS['template_eval'][$template])) && ($GLOBALS['template_eval'][$template] != '404')) {
// Eval the code
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template=' . $template . ' - BEFORE EVAL');
+ ///* DEBUG: */ print('<pre>'.htmlentities($GLOBALS['template_eval'][$template]).'</pre>');
eval($GLOBALS['template_eval'][$template]);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template=' . $template . ' - AFTER EVAL');
} // END - if
// Do we have some content to output or return?
// Make sure all template names are lowercase!
$template = strtolower($template);
+ // Set current template
+ $GLOBALS['current_template'] = $template;
+
// Is content an array?
if (is_array($content)) {
// Add expiration to array
}
} // END - if
- // Load user's data
- // @DEPRECATED Loading the user data by given userid is deprecated because it is not related to template loading
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UID=' . $userid . ',template=' . $template . ',content[]=' . gettype($content));
- if ((isValidUserId($userid)) && (is_array($content))) {
- // If nickname extension is installed, fetch nickname as well
- if ((isExtensionActive('nickname')) && (isNicknameUsed($userid))) {
- // Load by nickname
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - NICKNAME!');
- fetchUserData($userid, 'nickname');
- } elseif (isNicknameUsed($userid)) {
- // Non-number characters entered but no ext-nickname found
- debug_report_bug(__FUNCTION__, __LINE__, 'userid=' . $userid . ': is no id number and ext-nickname is gone.');
- } else {
- // Load by userid
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - USERID!');
- fetchUserData($userid);
- }
-
- // Merge data if valid
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . count($content) . ' - BEFORE!');
- if ((isUserDataValid()) && ($loadUserData === true)) {
- // It is valid
- $content = merge_array($content, getUserDataArray());
-
- // But we don't like hashed passwords be mailed
- unset($content['password']);
- } // END - if
-
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . count($content) . ' - AFTER!');
- } // END - if
-
// Base directory
$basePath = sprintf("%stemplates/%s/emails/", getPath(), getLanguage());
// "Getter" for menu CSS classes, mainly used in templates
function getMenuCssClasses ($data) {
- // $data needs to be converted into an array
- $content = explode('|', $data);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'data=' . $data);
- // Non-existent index 2 will happen in menu blocks
- if (!isset($content[2])) {
- $content[2] = '';
- } // END - if
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$data])) {
+ // $data needs to be converted into an array
+ $content = explode('|', $data);
+
+ // Non-existent index 2 will happen in menu blocks
+ if (!isset($content[2])) {
+ $content[2] = '';
+ } // END - if
+
+ // Re-construct the array: 0=visible,1=locked,2=prefix
+ $content['visible'] = $content[0];
+ $content['locked'] = $content[1];
- // Re-construct the array: 0=visible,1=locked,2=prefix
- $content['visible'] = $content[0];
- $content['locked'] = $content[1];
+ // Call our "translator" function
+ $content = translateMenuVisibleLocked($content, $content[2]);
- // Call our "translator" function
- $content = translateMenuVisibleLocked($content, $content[2]);
+ // Set it in cache
+ $GLOBALS[__FUNCTION__][$data] = ($content['visible_css'] . ' ' . $content['locked_css']);
+ } // END - if
- // Return CSS classes
- return ($content['visible_css'] . ' ' . $content['locked_css']);
+ // Return cache
+ return $GLOBALS[__FUNCTION__][$data];
}
// Generate XHTML code for the CAPTCHA
-function generateCaptchaCode ($code, $type, $type, $userid) {
- return '<img border="0" alt="Code ' . $code . '" src="{%url=mailid_top.php?userid=' . $userid . '&' . $type . '=' . $type . '&do=img&code=' . $code . '%}" />';
+function generateCaptchaCode ($code, $type, $urlId, $userid) {
+ return '<img border="0" alt="Code ' . $code . '" src="{%url=mailid_top.php?userid=' . $userid . '&' . $type . '=' . $urlId . '&do=img&code=' . $code . '%}" />';
}
// Compiles the given HTML/mail code
$code = compileRawCode($code, $simple, $constants, $full);
// Get timing
- $compiled = microtime(true);
+ $compilationTime = $startCompile - microtime(true);
// Add timing if enabled
if (isTemplateHtml()) {
// Add timing, this should be disabled in
- $code .= '<!-- Compilation time: ' . (($compiled - $startCompile) * 1000). 'ms //-->';
+ $code .= '<!-- Compilation time: ' . ($compilationTime * 1000). 'ms //-->';
} // END - if
// Return compiled code
// Compile more through a filter
$code = runFilterChain('compile_code', $code);
- // Compile message strings
- $code = str_replace('{--', '{%message,', str_replace('--}', '%}', $code));
+ // First compile these chars
+ array_unshift($secChars['to'] , '{--' , '--}');
+ array_unshift($secChars['from'], '{%message,', '%}' );
// Compile QUOT and other non-HTML codes
$code = str_replace($secChars['to'], $secChars['from'], $code);
// Find $content[bla][blub] entries
preg_match_all('/\$content((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Second regex gave ' . count($matches[0]) . ' matches.');
// Are some matches found?
if ((count($matches) > 0) && (count($matches[0]) > 0)) {
$test = substr($found, 0, strlen($match));
// Does this entry exist?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'found=' . $found . ',match=' . $match . ',set=' . $set);
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'found=' . $found . ',match=' . $match . ',set=' . $set);
if ($test == $match) {
// Match found
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'fuzzyFound!');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'fuzzyFound!');
$fuzzyFound = true;
break;
} // END - if
// Take all string elements
if ((is_string($matches[3][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key.'_' . $matches[3][$key]]))) {
- // Replace it in the code
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',match=' . $match);
- $newMatch = str_replace('[', "['", str_replace(']', "']", str_replace('$', '{COMPILE_DOLLAR}', $match)));
+ // Replace it in the code, replace dollar sign so it won't be detected by next regex (see there)
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',match=' . $match);
+ $newMatch = str_replace(array('[', ']', '$'), array("['", "']", '{COMPILE_DOLLAR}'), $match);
$code = str_replace($match, '".' . $newMatch . '."', $code);
$matchesFound[$key . '_' . $matches[3][$key]] = 1;
$matchesFound[$match] = true;
} elseif (!isset($matchesFound[$match])) {
// Not yet replaced!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match);
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match);
$code = str_replace($match, '".' . $match . '."', $code);
$matchesFound[$match] = 1;
} else {
} // END - foreach
} // END - if
- // Find $fooBar entries
+ /*
+ * Find $foobar, $foo_bar and $fooBar entries. This regex would also find
+ * $content[foo_bar] which would result in {DOLLAR}content[foo_bar] and
+ * therefore the variable's value won't be inserted. This is why
+ * {COMPILE_DOLLAR} is being used in above loop and at the end of this
+ * function being replace with the original dollar sign again.
+ */
preg_match_all('/\$([a-z_A-Z\[\]]){0,}/', $code, $matches);
// Are some matches found?
// Trim match
$match = trim($match);
- // Is the first part not $content and not empty?
+ // Debug message
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match);
+
+ // Is the first part not $content/$userid and not empty?
+ // @TODO $userid is deprecated and should be removed from loadEmailTemplate() and replaced with $content[userid] in all templates
if ((!empty($match)) && (substr($match, 0, 8) != '$content') && ($match != '$userid')) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match);
- // Then replace $ with $
- $matchSecured = str_replace('$', '$', $match);
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match . ' - SECURED!');
+ // Then replace $ with {DOLLAR}
+ $matchSecured = str_replace('$', '{DOLLAR}', $match);
// And in $code as well
$code = str_replace($match, $matchSecured, $code);
case 'sec':
case 'min':
for ($idx = 0; $idx < 60; $idx+=5) {
- if (strlen($idx) == 1) $idx = '0' . $idx;
+ if (strlen($idx) == 1) $idx = 0 . $idx;
$OUT .= '<option value="' . $idx . '"';
if ($default == $idx) $OUT .= ' selected="selected"';
$OUT .= '>' . $idx . '</option>';
case 'hour':
for ($idx = 0; $idx < 24; $idx++) {
- if (strlen($idx) == 1) $idx = '0' . $idx;
+ if (strlen($idx) == 1) $idx = 0 . $idx;
$OUT .= '<option value="' . $idx . '"';
if ($default == $idx) $OUT .= ' selected="selected"';
$OUT .= '>' . $idx . '</option>';
// Is the code size oversized or shouldn't we display it?
if ((strlen($img_code) > 6) || (empty($img_code)) || (getCodeLength() == '0')) {
// Stop execution of function here because of over-sized code length
- debug_report_bug(__FUNCTION__, __LINE__, 'img_code ' . $img_code .' has invalid length. img_code()=' . strlen($img_code) . ' code_length=' . getCodeLength());
+ reportBug(__FUNCTION__, __LINE__, 'img_code ' . $img_code .' has invalid length. img_code(length)=' . strlen($img_code) . ' code_length=' . getCodeLength());
} elseif ($headerSent === false) {
// Return an HTML code here
return '<img src="{%url=img.php?code=' . $img_code . '%}" alt="Image" />';
// Do not continue if ONE_DAY is absend
if (!isConfigEntrySet('ONE_DAY')) {
// Abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Configuration entry ONE_DAY is absend. timestamp=' . $timestamp . ',prefix=' . $prefix . ',align=' . $align . ',asArray=' . intval($asArray));
+ reportBug(__FUNCTION__, __LINE__, 'Configuration entry ONE_DAY is absend. timestamp=' . $timestamp . ',prefix=' . $prefix . ',align=' . $align . ',asArray=' . intval($asArray));
} // END - if
// Calculate 2-seconds timestamp
function generateMemberAdminActionLinks ($userid) {
// Make sure userid is a number
if ($userid != bigintval($userid)) {
- debug_report_bug(__FUNCTION__, __LINE__, 'userid is not a number!');
+ reportBug(__FUNCTION__, __LINE__, 'userid is not a number!');
} // END - if
// Define all main targets
return $EMAIL;
}
-// Output error messages in a fasioned way and die...
-function app_die ($F, $L, $message) {
+/**
+ * Outputs an error message in a "fashioned way" to the user, by putting it into
+ * a nice looking web page, if one of HTML or CSS output mode is active.
+ *
+ * Please use reportBug() instead of this function. reportBug() has more helpful
+ * functionality like logging and admin notification (which you can configure
+ * through your admin area).
+ *
+ * @param $F Function or file basename where the error came from
+ * @param $L Line number where the error came from
+ * @param $message Message which shall be output to web
+ * @return void
+ */
+function app_exit ($F, $L, $message) {
// Check if Script is already dieing and not let it kill itself another 1000 times
if (isset($GLOBALS['app_died'])) {
// Script tried to kill itself twice
loadIncludeOnce('inc/header.php');
// Rewrite message for output
- $message = sprintf(getMessage('MAILER_HAS_DIED'), basename($F), $L, $message);
+ $message = sprintf(
+ getMessage('MAILER_HAS_DIED'),
+ basename($F),
+ $L,
+ $message
+ );
// Load the message template
loadTemplate('app_die_message', false, $message);
// Display parsing time and number of SQL queries in footer
function displayParsingTime () {
// Is the timer started?
- if (!isset($GLOBALS['startTime'])) {
+ if (!isset($GLOBALS['__start_time'])) {
// Abort here
return false;
} // END - if
$endTime = microtime(true);
// "Explode" both times
- $start = explode(' ', $GLOBALS['startTime']);
+ $start = explode(' ', $GLOBALS['__start_time']);
$end = explode(' ', $endTime);
$runTime = $end[0] - $start[0];
if ($runTime < 0) {
);
// Load the template
- $GLOBALS['page_footer'] .= loadTemplate('show_timings', true, $content);
+ $GLOBALS['__page_footer'] .= loadTemplate('show_timings', true, $content);
}
-// Output a debug backtrace to the user
-function debug_report_bug ($F, $L, $message = '', $sendEmail = true) {
+/**
+ * Outputs an error message and backtrace to the user, by default a mail with
+ * all relevant data is being mailed to the configured administrators.
+ *
+ * This function shall be used "publicly" because of logging, admin notification
+ * and double-call prevention (see first if() block) instead of app_exit().
+ * app_exit() is more a "private" function and will only output a bug message to
+ * the user, no email and no logging.
+ *
+ * @param $F Function or file basename where the error came from
+ * @param $L Line number where the error came from
+ * @param $sendEmail Wether to send an email to all configured administrators
+ * @return void
+ */
+function reportBug ($F, $L, $message = '', $sendEmail = true) {
// Is this already called?
if (isset($GLOBALS[__FUNCTION__])) {
// Other backtrace
- print 'Message:' . $message . '<br />Backtrace:<pre>';
+ print '[' . $F . ':' . $L . ':] ' . __FUNCTION__ . ' has already died! Message:' . $message . '<br />Backtrace:<pre>';
debug_print_backtrace();
die('</pre>');
} // END - if
// Set HTTP status to 500 (e.g. for AJAX requests)
setHttpStatus('500 Internal Server Error');
- // Set this function as called
+ // Mark this function as called
$GLOBALS[__FUNCTION__] = true;
// Init message
);
// Send email to webmaster
- sendAdminNotification('{--DEBUG_REPORT_BUG_SUBJECT--}', 'admin_report_bug', $content);
+ sendAdminNotification('{--REPORT_BUG_SUBJECT--}', 'admin_report_bug', $content);
} // END - if
- // And abort here
- app_die($F, $L, $debug);
+ // Do we have HTML/CSS/AJAX mode?
+ if ((isHtmlOutputMode()) || (isCssOutputMode()) || (isAjaxOutputMode())) {
+ // And abort here
+ app_exit($F, $L, $debug);
+ } else {
+ // Raw/image output mode and all other modes doesn't work well with text ...
+ die();
+ }
}
// Compile characters which are allowed in URLs
function compileUriCode ($code, $simple = true) {
+ // Trim code
+ $test = trim($code);
+
+ // Is it empty?
+ if (empty($test)) {
+ // Then abort here and return the original code
+ return $code;
+ } // END - if
+
+ // Compile these by default
+ $charsCompile = array(
+ 'from' => array(
+ '{DOT}',
+ '{SLASH}',
+ '{QUOT}',
+ '{DOLLAR}',
+ '{OPEN_ANCHOR}',
+ '{CLOSE_ANCHOR}',
+ '{OPEN_SQR}',
+ '{CLOSE_SQR}',
+ '{PER}'
+ ),
+ 'to' => array(
+ '.',
+ '/',
+ chr(39),
+ '$',
+ '(',
+ ')',
+ '[',
+ ']',
+ '%'
+ )
+ );
+
// Compile constants
if ($simple === false) {
- $code = str_replace('{--', '".', str_replace('--}', '."', $code));
+ // Add more 'from'
+ array_push($charsCompile['from'], '{--', '--}');
+
+ // Add more 'to'
+ array_push($charsCompile['to'], '".', '."');
} // END - if
// Compile QUOT and other non-HTML codes
- $code = str_replace('{DOT}', '.',
- str_replace('{SLASH}', '/',
- str_replace('{QUOT}', "'",
- str_replace('{DOLLAR}', '$',
- str_replace('{OPEN_ANCHOR}', '(',
- str_replace('{CLOSE_ANCHOR}', ')',
- str_replace('{OPEN_SQR}', '[',
- str_replace('{CLOSE_SQR}', ']',
- str_replace('{PER}', '%',
- $code
- )))))))));
+ $code = str_replace($charsCompile['from'], $charsCompile['to'], $code);
// Return compiled code
return $code;
// Is the extension empty?
if (empty($ext_name)) {
// This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.');
+ reportBug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.');
} // END - if
// Default message
// Is the extension empty?
if (empty($ext_name)) {
// This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.');
+ reportBug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.');
} // END - if
// Default message
// Is the extension empty?
if (empty($ext_name)) {
// This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.');
+ reportBug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.');
} // END - if
// Default message
// Print code with line numbers
function linenumberCode ($code) {
- if (!is_array($code)) $codeE = explode("\n", $code); else $codeE = $code;
+ // By default copy the code
+ $codeE = $code;
+
+ if (!is_array($code)) {
+ // We need an array, so try it with the new-line character
+ $codeE = explode(chr(10), $code);
+ } // END - if
+
$count_lines = count($codeE);
$r = 'Line | Code:<br />';
// Config and database connection valid?
if ((isConfigLocalLoaded()) && (isConfigurationLoaded()) && (SQL_IS_LINK_UP()) && (isExtensionInstalledAndNewer('sql_patches', '0.1.6'))) {
// Title decoration enabled?
- if ((isTitleDecorationEnabled()) && (getConfig('title_left') != '')) {
+ if ((isTitleDecorationEnabled()) && (getTitleLeft() != '')) {
$pageTitle .= '{%config,trim=title_left%} ';
} // END - if
} // END - if
// Add title decorations? (right)
- if ((isTitleDecorationEnabled()) && (getConfig('title_right') != '')) {
+ if ((isTitleDecorationEnabled()) && (getTitleRight() != '')) {
$pageTitle .= ' {%config,trim=title_right%}';
} // END - if
} elseif ((isInstalled()) && (isAdminRegistered())) {
// Do not add the fatal message in installation mode
if ((!isInstalling()) && (!isConfigurationLoaded())) {
// Please report this
- debug_report_bug(__FUNCTION__, __LINE__, 'No configuration data found!');
+ reportBug(__FUNCTION__, __LINE__, 'No configuration data found!');
} // END - if
}
return decodeEntities($pageTitle);
}
-// Checks wethere there is a cache file there. This function is cached.
+// Checks whethere there is a cache file there. This function is cached.
function isTemplateCached ($template) {
// Do we have cached this result?
if (!isset($GLOBALS['template_cache'][$template])) {
// Check it again
if ((isDebuggingTemplateCache()) || (!isTemplateCached($template))) {
// This should not happen
- debug_report_bug('Wether debugging of template cache is enabled or template ' . $template . ' is not cached while expected.');
+ reportBug('Wether debugging of template cache is enabled or template ' . $template . ' is not cached while expected.');
} // END - if
// Is it cached?
// Escape all (including null)
$str = addslashes($str);
} else {
- // Remove escaping of single quotes
- $str = str_replace("\\'", "'", $str);
-
- // Escape only double-quotes but prevent double-quoting
- $str = str_replace("\\\\", "\\", str_replace('"', "\\\"", $str));
+ // Replace all chars at once
+ $str = str_replace(array("\\'", '"', "\\\\"), array(chr(39), "\\\"", chr(92)), $str);
}
// Return the escaped string
// Escapes the JavaScript code, prevents \r and \n becoming char 10/13
function escapeJavaScriptQuotes ($str) {
// Replace all double-quotes and secure back-ticks
- $str = str_replace('"', '\"', str_replace("\\", '{BACK}', $str));
+ $str = str_replace(array(chr(92), '"'), array('{BACK}', '\"'), $str);
// Return it
return $str;
switch ($mode) {
case 'normal': break; // Do not add any special lines
case 'email': // Email was changed!
- $content['message'] = '{--MEMBER_CHANGED_EMAIL--}' . ': ' . postRequestElement('old_email') . "\n";
+ $content['message'] = '{--MEMBER_CHANGED_EMAIL--}' . ': ' . postRequestElement('old_email') . chr(10);
break;
case 'password': // Password was changed
- $content['message'] = '{--MEMBER_CHANGED_PASS--}' . "\n";
+ $content['message'] = '{--MEMBER_CHANGED_PASS--}' . chr(10);
break;
default:
}
// Generates a 'selection box' from given array
-function generateSelectionBoxFromArray ($options, $name, $optionValue, $optionContent = '', $extraName = '', $templateName = '') {
+function generateSelectionBoxFromArray ($options, $name, $optionKey, $optionContent = '', $extraName = '', $templateName = '', $default = NULL, $nameElement = '', $allowNone = false, $useDefaultAsArray = false) {
+ // Default is empty
+ $addKey = '';
+
+ // Use default value as array key?
+ if ($useDefaultAsArray === true) {
+ // Then set it
+ $addKey = '[' . convertNullToZero($default) . ']';
+ } // END - if
+
// Start the output
- $OUT = '<select name="' . $name . '" size="1" class="form_select">
+ $OUT = '<select name="' . $name . $addKey . '" size="1" class="form_select">
<option value="X" disabled="disabled">{--PLEASE_SELECT--}</option>';
+ // Allow none?
+ if ($allowNone === true) {
+ // Then add it
+ $OUT .= '<option value="0">{--SELECT_NONE--}</option>';
+ } // END - if
+
// Walk through all options
foreach ($options as $option) {
+ // Default 'default' is not set
+ $option['default'] = '';
+
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'name=' . $name . ',default[' . gettype($default) . ']=' . $default . ',optionKey[' . gettype($optionKey) . ']=' . $optionKey);
+ // Is default value same as given value?
+ if ((!is_null($default)) && (isset($option[$optionKey])) && ($default == $option[$optionKey])) {
+ // Then set default
+ $option['default'] = ' selected="selected"';
+ } // END - if
+
+ // Is 'nameElement' set?
+ if ((!empty($nameElement)) && (isset($option[$nameElement]))) {
+ // Then set this as extraName, but lower-case
+ $extraName = '_' . strtolower($option[$nameElement]);
+ } // END - if
+
// Add the <option> entry from ...
if (empty($optionContent)) {
// Is a template name given?
}
} else {
// ... direct HTML code
- $OUT .= '<option value="' . $option[$optionValue] . '">' . $option[$optionContent] . '</option>';
+ $OUT .= '<option value="' . $option[$optionKey] . '">' . $option[$optionContent] . '</option>';
}
} // END - foreach
// Prepares the header for HTML output
function loadHtmlHeader () {
- // Run two filters:
- // 1.) pre_page_header (mainly loads the page_header template and includes
- // meta description)
+ /*
+ * Run two filters:
+ * 1.) pre_page_header (mainly loads the page_header template and includes
+ * meta description)
+ */
runFilterChain('pre_page_header');
- // Here can be something be added, but normally one of the two filters
- // around this line should do the job for you.
+ /*
+ * Here can be something be added, but normally one of the two filters
+ * around this line should do the job for you.
+ */
- // 2.) post_page_header (mainly to load stylesheet, extra JavaScripts and
- // to close the head-tag)
- // Include more header data here
+ /*
+ * 2.) post_page_header (mainly to load stylesheet, extra JavaScripts and
+ * to close the head-tag)
+ * Include more header data here
+ */
runFilterChain('post_page_header');
}
$OUT = '';
// Add them all together. This is maybe to simple
- foreach (array('page_header', 'output', 'page_footer') as $pagePart) {
+ foreach (array('__page_header', '__output', '__page_footer') as $pagePart) {
// Add page part if set
- if (isset($GLOBALS[$pagePart])) $OUT .= $GLOBALS[$pagePart];
+ if (isset($GLOBALS[$pagePart])) {
+ $OUT .= $GLOBALS[$pagePart];
+ } // END - if
} // END - foreach
- // Transfer $OUT to 'output'
- $GLOBALS['output'] = $OUT;
+ // Transfer $OUT to '__output'
+ $GLOBALS['__output'] = $OUT;
}
// Generates meta description for current module and 'what' value
function generateMetaDescriptionCode () {
// Only include from guest area and if sql_patches has correct version
if ((getModule() == 'index') && (isExtensionInstalledAndNewer('sql_patches', '0.1.6'))) {
- // Construct dynamic description
- $DESCR = '{?MAIN_TITLE?} ' . trim(getConfig('title_middle')) . ' ' . getTitleFromMenu('guest', getWhat());
-
// Output it directly
- $GLOBALS['page_header'] .= '<meta name="description" content="' . $DESCR . '" />';
+ $GLOBALS['__page_header'] .= '<meta name="description" content="' . '{?MAIN_TITLE?} ' . trim(getConfig('title_middle')) . ' ' . getTitleFromMenu('guest', getWhat()) . '" />';
} // END - if
// Initialize referral system
$message = '{%message,TIME_UNIT_UNKNOWN=' . $unit . '%}';
// "Detect" it
- switch ($unit) {
- case 'Y': // Years
- $message = '{--TIME_UNIT_YEAR--}';
- break;
-
- case 'M': // Months
- $message = '{--TIME_UNIT_MONTH--}';
- break;
-
- case 'W': // Weeks
- $message = '{--TIME_UNIT_WEEK--}';
- break;
-
- case 'D': // Days
- $message = '{--TIME_UNIT_DAY--}';
- break;
-
- case 'h': // Hours
- $message = '{--TIME_UNIT_HOUR--}';
- break;
-
- case 'm': // Minute
- $message = '{--TIME_UNIT_MINUTE--}';
- break;
-
- case 's': // Seconds
- $message = '{--TIME_UNIT_SECOND--}';
- break;
-
- default: // Unknown value detected
- logDebugMessage(__FUNCTION__, __LINE__, 'Unknown time unit ' . $unit . ' detected.');
- break;
- } // END - switch
+ if (!isset($GLOBALS['time_units'][$unit])) {
+ // Not found
+ logDebugMessage(__FUNCTION__, __LINE__, 'Unknown time unit ' . $unit . ' detected.');
+ } else {
+ // Translate it with generic function
+ $message = translateGeneric('TIME_UNIT' , $GLOBALS['time_units'][$unit]);
+ }
// Return message
return $message;
}
// Generates a selection box for (maybe) given gender
-function generateGenderSelectionBox ($selectedGender = '') {
+function generateGenderSelectionBox ($selectedGender = '', $fieldName = 'gender') {
// Start the HTML code
- $out = '<select name="gender" size="1" class="form_select">';
+ $out = '<select name="' . $fieldName . '" size="1" class="form_select">';
// Add options
- $out .= generateOptionList('/ARRAY/', array('M', 'F', 'C'), array('{--GENDER_M--}', '{--GENDER_F--}', '{--GENDER_C--}'), $selectedGender);
+ $out .= generateOptions(
+ '/ARRAY/',
+ array(
+ 'M',
+ 'F',
+ 'C'
+ ), array(
+ '{--GENDER_M--}',
+ '{--GENDER_F--}',
+ '{--GENDER_C--}'
+ ),
+ $selectedGender
+ );
// Finish HTML code
$out .= '</select>';
// Generate message id array
foreach ($unitArray as $unit) {
// "Translate" it
- $messageIds[] = translateTimeUnit($unit);
+ array_push($messageIds, '{%pipe,translateTimeUnit=' . $unit . '%}');
} // END - foreach
// Start the HTML code
$out = '<select name="' . $fieldName . '" size="1" class="form_select">';
// Add options
- $out .= generateOptionList('/ARRAY/', $unitArray, $messageIds, $defaultUnit);
+ $out .= generateOptions('/ARRAY/', $unitArray, $messageIds, $defaultUnit);
// Finish HTML code
$out .= '</select>';
return $out;
}
-// Function to add style tag (wether display:none/block)
+// Function to add style tag (whether display:none/block)
function addStyleMenuContent ($menuMode, $mainAction, $action) {
// Do we have foo_menu_javascript enabled?
if ((!isConfigEntrySet($menuMode . '_menu_javascript')) || (getConfig($menuMode . '_menu_javascript') == 'N')) {
//-----------------------------------------------------------------------------
// Color-switch helper function
-function doTemplateColorSwitch ($template, $clear = false, $return = true) {
+function doTemplateColorSwitch ($templateName, $clear = false, $return = true) {
// Is it there?
- if (!isset($GLOBALS['color_switch'][$template])) {
+ if (!isset($GLOBALS['color_switch'][$templateName])) {
// Initialize it
- initTemplateColorSwitch($template);
+ initTemplateColorSwitch($templateName);
} elseif ($clear === false) {
// Switch color if called from loadTemplate()
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SWITCH:' . $template);
- $GLOBALS['color_switch'][$template] = 3 - $GLOBALS['color_switch'][$template];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SWITCH:' . $templateName);
+ $GLOBALS['color_switch'][$templateName] = 3 - $GLOBALS['color_switch'][$templateName];
}
// Return CSS class name
if ($return === true) {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'RETURN:' . $template . '=' . $GLOBALS['color_switch'][$template]);
- return 'switch_sw' . $GLOBALS['color_switch'][$template];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'RETURN:' . $templateName . '=' . $GLOBALS['color_switch'][$templateName]);
+ return 'switch_sw' . $GLOBALS['color_switch'][$templateName];
} // END - if
}
// Helper function for extension registration link
-function doTemplateExtensionRegistrationLink ($template, $clear, $ext_name) {
+function doTemplateExtensionRegistrationLink ($templateName, $clear, $ext_name) {
// Default is all non-productive
$OUT = '<div style="cursor:help" title="{%message,ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK_TITLE=' . $ext_name . '%}">{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}</div>';
// Is the given extension non-productive?
- if (isExtensionProductive($ext_name)) {
+ if (isExtensionDeprecated($ext_name)) {
+ // Is deprecated
+ $OUT = '<span title="{--ADMIN_EXTENSION_IS_DEPRECATED_TITLE--}">---</span>';
+ } elseif (isExtensionProductive($ext_name)) {
// Productive code
$OUT = '<a title="{--ADMIN_REGISTER_EXTENSION_TITLE--}" href="{%url=modules.php?module=admin&what=extensions&reg_ext=' . $ext_name . '%}">{--ADMIN_REGISTER_EXTENSION--}</a>';
- } // END - if
+ }
// Return code
return $OUT;
}
// Helper function to create bonus mail admin links
-function doTemplateAdminBonusMailLinks ($template, $clear, $bonusId) {
+function doTemplateAdminBonusMailLinks ($templateName, $clear, $bonusId) {
// Call the inner function
return generateAdminMailLinks('bid', $bonusId);
}
// Helper function to create member mail admin links
-function doTemplateAdminMemberMailLinks ($template, $clear, $mailId) {
+function doTemplateAdminMemberMailLinks ($templateName, $clear, $mailId) {
// Call the inner function
return generateAdminMailLinks('mid', $mailId);
}
// Helper function to create a selection box for YES/NO configuration entries
-function doTemplateConfigurationYesNoSelectionBox ($template, $clear, $configEntry) {
+function doTemplateConfigurationYesNoSelectionBox ($templateName, $clear, $configEntry) {
// Default is a "missing entry" warning
$OUT = '<div class="bad" style="cursor:help" title="{%message,ADMIN_CONFIG_ENTRY_MISSING=' . $configEntry . '%}">!' . $configEntry . '!</div>';
if (isConfigEntrySet($configEntry)) {
// Configuration entry is found
$OUT = '<select name="' . $configEntry . '" class="form_select" size="1">
-{%config,generateYesNoOptionList=' . $configEntry . '%}
+{%config,generateYesNoOptions=' . $configEntry . '%}
</select>';
} // END - if
}
// Helper function to create a selection box for YES/NO form fields
-function doTemplateYesNoSelectionBox ($template, $clear, $formField) {
+function doTemplateYesNoSelectionBox ($templateName, $clear, $formField) {
// Generate the HTML code
$OUT = '<select name="' . $formField . '" class="form_select" size="1">
-{%pipe,generateYesNoOptionList%}
+{%pipe,generateYesNoOptions%}
</select>';
// Return it
}
// Helper function to create a selection box for YES/NO form fields, by NO is default
-function doTemplateNoYesSelectionBox ($template, $clear, $formField) {
+function doTemplateNoYesSelectionBox ($templateName, $clear, $formField) {
// Generate the HTML code
$OUT = '<select name="' . $formField . '" class="form_select" size="1">
-{%pipe,generateYesNoOptionList=N%}
+{%pipe,generateYesNoOptions=N%}
</select>';
// Return it
}
// Helper function to add extra content for member area (module=login)
-function doTemplateMemberFooterExtras ($template, $clear) {
+function doTemplateMemberFooterExtras ($templateName, $clear) {
// Is a member logged in?
if (!isMember()) {
// This shall not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'Please use this template helper only for logged-in members.');
+ reportBug(__FUNCTION__, __LINE__, 'Please use this template helper only for logged-in members.');
} // END - if
// Init filter data
$filterData = array(
+ // Current user's id number
'userid' => getMemberId(),
- 'template' => $template,
- 'output' => '',
+ // Name of used template
+ 'template' => $templateName,
+ // Target array for gathered data
+ '__data' => array(),
+ // Where the HTML output will go
+ '__output' => '',
);
// Run the filter chain
$filterData = runFilterChain('member_footer_extras', $filterData);
// Return output
- return $filterData['output'];
+ return $filterData['__output'];
+}
+
+/**
+ * Helper function to determine whether current userid is set, if none is set,
+ * return a zero, else an EL code is being returned as of this function is used
+ * only in templates.
+ *
+ * @param $templateName Name of template (unused)
+ * @param $clear Wether to clear something (unused)
+ * @return $userId Wether zero or EL code snippet
+ */
+function doTemplateUserId ($templateName, $clear) {
+ // By default no userid is set
+ $userId = '0';
+
+ // Is there a user id currently set?
+ if (isCurrentUserIdSet()) {
+ // Then get the current user id
+ $userId = getCurrentUserId();
+ } // END - if
+
+ // Return it
+ return $userId;
+}
+
+// Template helper function to generate "Terms&Conditions" link (EL code again)
+function doTemplateGetTermsConditionsLink ($templateName, $clear) {
+ /*
+ * Use default link by default ;-) This link, however, will become
+ * deprecated once ext-terms is rolled out.
+ */
+ $linkCode = '{%url=modules.php?module=index&what=agb%}';
+
+ // Is ext-terms installed?
+ if (isExtensionInstalled('terms')) {
+ // Then use that link (only 'what' has changed)
+ $linkCode = '{%url=modules.php?module=index&what=terms%}';
+ } // END - if
+
+ // Return link (EL) code
+ return $linkCode;
+}
+
+// Template helper function to create selection box for "locked points mode"
+function doTemplatePointsLockedModeSelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Init array
+ $lockedModes = array(
+ 0 => array('mode' => 'LOCKED'),
+ 1 => array('mode' => 'UNLOCKED'),
+ );
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($lockedModes, 'points_locked_mode', 'mode', '', '', '', $default);
+
+ // Return prepared content
+ return $content;
+}
+
+// Template helper function to create selection box for payment method
+function doTemplatePointsPaymentMethodSelectionBox ($templateName, $clear = false, $default = NULL) {
+ // Init array
+ $paymentMethods = array(
+ 0 => array('method' => 'DIRECT'),
+ 1 => array('method' => 'REFERRAL'),
+ );
+
+ // Handle it over to generateSelectionBoxFromArray()
+ $content = generateSelectionBoxFromArray($paymentMethods, 'points_payment_method', 'method', '', '', '', $default);
+
+ // Return prepared content
+ return $content;
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
// Read a given file
// Sanity-check if file is there (should be there, but just to make it sure)
if (!isFileReadable($FQFN)) {
// This should not happen
- debug_report_bug(__FUNCTION__, __LINE__, 'File ' . basename($FQFN) . ' is not readable!');
+ reportBug(__FUNCTION__, __LINE__, 'File ' . basename($FQFN) . ' is not readable!');
} elseif (!isset($GLOBALS['file_content'][$FQFN])) {
// Load the file
if (function_exists('file_get_contents')) {
}
} else {
// Write it with fopen
- $fp = fopen($FQFN, 'w') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write to file ' . basename($FQFN) . '!');
+ $fp = fopen($FQFN, 'w') or reportBug(__FUNCTION__, __LINE__, 'Cannot write to file ' . basename($FQFN) . '!');
// Do we need to aquire a lock?
if ($aquireLock === true) {
// Clears the output buffer. This function does *NOT* backup sent content.
function clearOutputBuffer () {
+ // Make sure this function is not called twice (no double-cleaning!)
+ if (isset($GLOBALS[__FUNCTION__])) {
+ // This function is called twice
+ reportBug(__FUNCTION__, __LINE__, 'Double call of ' . __FUNCTION__ . ' may cause more trouble.');
+ } // END - if
+
// Trigger an error on failure
if ((ob_get_length() > 0) && (!ob_end_clean())) {
// Failed!
- debug_report_bug(__FUNCTION__, __LINE__, 'Failed to clean output buffer.');
+ reportBug(__FUNCTION__, __LINE__, 'Failed to clean output buffer.');
} // END - if
+
+ // Mark this function as called
+ $GLOBALS[__FUNCTION__] = true;
}
// Encode strings
// Are both an array?
if ((!is_array($array1)) && (!is_array($array2))) {
// Both are not arrays
- debug_report_bug(__FUNCTION__, __LINE__, 'No arrays provided!');
+ reportBug(__FUNCTION__, __LINE__, 'No arrays provided!');
} elseif (!is_array($array1)) {
// Left one is not an array
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("array1 is not an array. array != %s", gettype($array1)));
+ reportBug(__FUNCTION__, __LINE__, sprintf("array1 is not an array. array != %s", gettype($array1)));
} elseif (!is_array($array2)) {
// Right one is not an array
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("array2 is not an array. array != %s", gettype($array2)));
+ reportBug(__FUNCTION__, __LINE__, sprintf("array2 is not an array. array != %s", gettype($array2)));
}
- // Merge all together
+ // Merge both together
return array_merge($array1, $array2);
}
return $GLOBALS['file_readable'][$FQFN];
}
-// Checks wether the given FQFN is a directory and not ., .. or .svn
+// Checks whether the given FQFN is a directory and not ., .. or .svn
function isDirectory ($FQFN) {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$FQFN])) {
return $GLOBALS[__FUNCTION__];
}
-// Check wether we are installing
+// Check whether we are installing
function isInstalling () {
- // Determine wether we are installing
- if (!isset($GLOBALS['mailer_installing'])) {
+ // Determine whether we are installing
+ if (!isset($GLOBALS['__mailer_installing'])) {
// Check URL (css.php/js.php need this)
- $GLOBALS['mailer_installing'] = isGetRequestElementSet('installing');
+ $GLOBALS['__mailer_installing'] = isGetRequestElementSet('installing');
} // END - if
// Return result
- return $GLOBALS['mailer_installing'];
+ return $GLOBALS['__mailer_installing'];
}
-// Check wether this script is installed
+// Check whether this script is installed
function isInstalled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
- // Determine wether this script is installed
+ // Determine whether this script is installed
$GLOBALS[__FUNCTION__] = (
(
// First is config
return $GLOBALS[__FUNCTION__];
}
-// Check wether an admin is registered
+// Check whether an admin is registered
function isAdminRegistered () {
// Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether the hourly reset mode is active
+// Checks whether the hourly reset mode is active
function isHourlyResetEnabled () {
// Now simply check it
return ((isset($GLOBALS['hourly_enabled'])) && ($GLOBALS['hourly_enabled'] === true));
}
-// Checks wether the reset mode is active
+// Checks whether the reset mode is active
function isResetModeEnabled () {
// Now simply check it
return ((isset($GLOBALS['reset_enabled'])) && ($GLOBALS['reset_enabled'] === true));
}
-// Checks wether the debug mode is enabled
+// Checks whether the debug mode is enabled
function isDebugModeEnabled () {
// Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether the debug reset is enabled
+// Checks whether the debug reset is enabled
function isDebugResetEnabled () {
// Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether SQL debugging is enabled
+// Checks whether SQL debugging is enabled
function isSqlDebuggingEnabled () {
// Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether we shall debug regular expressions
+// Checks whether we shall debug regular expressions
function isDebugRegularExpressionEnabled () {
// Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether the cache instance is valid
+// Checks whether the cache instance is valid
function isCacheInstanceValid () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
// Is the source file there?
if (!isFileReadable($source)) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read from source file ' . basename($source) . '.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot read from source file ' . basename($source) . '.');
} // END - if
// Is the target directory there?
if (!isDirectory(dirname($dest))) {
// Then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot find directory ' . str_replace(getPath(), '', dirname($dest)) . '.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot find directory ' . str_replace(getPath(), '', dirname($dest)) . '.');
} // END - if
// Now try to copy it
if (!copy($source, $dest)) {
// Something went wrong
- debug_report_bug(__FUNCTION__, __LINE__, 'copy() has failed to copy the file.');
+ reportBug(__FUNCTION__, __LINE__, 'copy() has failed to copy the file.');
} else {
// Reset cache
$GLOBALS['file_readable'][$dest] = true;
// Is the file/directory there?
if ((!isFileReadable($FQFN)) && (!isDirectory($FQFN))) {
// Neither, so abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'Cannot chmod() on ' . basename($FQFN) . '.');
+ reportBug(__FUNCTION__, __LINE__, 'Cannot chmod() on ' . basename($FQFN) . '.');
} // END - if
// Try to set them
return countSelection(postRequestElement($element));
} else {
// Return zero if not found
- return 0;
+ return '0';
}
}
-// Checks wether the config-local.php is loaded
+// Checks whether the config-local.php is loaded
function isConfigLocalLoaded () {
return ((isset($GLOBALS['config_local_loaded'])) && ($GLOBALS['config_local_loaded'] === true));
}
-// Checks wether a nickname or userid was entered and caches the result
+// Checks whether a nickname or userid was entered and caches the result
function isNicknameUsed ($userid) {
// Is the cache there
if (!isset($GLOBALS[__FUNCTION__][$userid])) {
// Determine it
- $GLOBALS[__FUNCTION__][$userid] = ((!empty($userid)) && (('' . round($userid) . '') != $userid) && ($userid != 'NULL'));
+ $GLOBALS[__FUNCTION__][$userid] = ((!empty($userid)) && (('' . bigintval($userid, true, false) . '') != $userid) && ($userid != 'NULL'));
} // END - if
// Return the result
// Setter for 'what' value
function setWhat ($newWhat) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'newWhat=' . $newWhat);
$GLOBALS['__what'] = $newWhat;
}
setWhat($what);
}
-// Checks wether what is set and optionally aborts on miss
+// Checks whether what is set and optionally aborts on miss
function isWhatSet ($strict = false) {
// Check for it
$isset = (isset($GLOBALS['__what']) && (!empty($GLOBALS['__what'])));
$GLOBALS['__action'] = $newAction;
}
-// Checks wether action is set and optionally aborts on miss
+// Checks whether action is set and optionally aborts on miss
function isActionSet ($strict = false) {
// Check for it
$isset = ((isset($GLOBALS['__action'])) && (!empty($GLOBALS['__action'])));
// Should we abort here?
if (($strict === true) && ($isset === false)) {
// Output backtrace
- debug_report_bug(__FUNCTION__, __LINE__, 'action is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'action is empty.');
} // END - if
// Return it
$GLOBALS['__module'] = strtolower($newModule);
}
-// Checks wether module is set and optionally aborts on miss
+// Checks whether module is set and optionally aborts on miss
function isModuleSet ($strict = false) {
// Check for it
$isset = ((isset($GLOBALS['__module'])) && (!empty($GLOBALS['__module'])));
// Should we abort here?
if (($strict === true) && ($isset === false)) {
// Output backtrace
- debug_report_bug(__FUNCTION__, __LINE__, 'Module is empty.');
+ reportBug(__FUNCTION__, __LINE__, 'Module is empty.');
} // END - if
// Return it
// Getter for 'output_mode' value
function getScriptOutputMode () {
- // Do we have cache?
+ // Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
- // Default is null
- $output_mode = NULL;
-
- // Is the value set?
- if (isOutputModeSet(true)) {
- // Then use it
- $output_mode = $GLOBALS['output_mode'];
+ // Is the output mode set?
+ if (!isOutputModeSet()) {
+ // No, then abort here
+ reportBug(__FUNCTION__, __LINE__, 'Output mode not set.');
} // END - if
- // Store it in cache
- $GLOBALS[__FUNCTION__] = $output_mode;
+ // Set it in cache
+ $GLOBALS[__FUNCTION__] = $GLOBALS['__output_mode'];
} // END - if
// Return cache
// Setter for 'output_mode' value
function setOutputMode ($newOutputMode) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'output_mode=' . $newOutputMode);
- $GLOBALS['output_mode'] = (int) $newOutputMode;
- $GLOBALS['getScriptOutputMode'] = (int) $newOutputMode;
+ $GLOBALS['__output_mode'] = (int) $newOutputMode;
}
-// Checks wether output_mode is set and optionally aborts on miss
+// Checks whether output_mode is set and optionally aborts on miss
function isOutputModeSet ($strict = false) {
// Check for it
- $isset = (isset($GLOBALS['output_mode']));
+ $isset = (isset($GLOBALS['__output_mode']));
// Should we abort here?
if (($strict === true) && ($isset === false)) {
// Output backtrace
- debug_report_bug(__FUNCTION__, __LINE__, 'Output mode is not set.');
+ reportBug(__FUNCTION__, __LINE__, 'Output mode is not set.');
} // END - if
// Return it
// Enables block-mode
function enableBlockMode ($enabled = true) {
- $GLOBALS['block_mode'] = $enabled;
+ $GLOBALS['__block_mode'] = $enabled;
}
-// Checks wether block-mode is enabled
+// Checks whether block-mode is enabled
function isBlockModeEnabled () {
// Abort if not set
- if (!isset($GLOBALS['block_mode'])) {
+ if (!isset($GLOBALS['__block_mode'])) {
// Needs to be fixed
- debug_report_bug(__FUNCTION__, __LINE__, 'Block_mode is not set.');
+ reportBug(__FUNCTION__, __LINE__, 'Block_mode is not set.');
} // END - if
// Return it
- return $GLOBALS['block_mode'];
-}
-
-/**
- * Wrapper function for addPointsThroughReferralSystem(), you should generally
- * avoid this function and use addPointsThroughReferralSystem() directly and add
- * your special payment method entry to points_data instead.
- *
- * @param $subject A string-encoded subject for this add
- * @param $userid The recipient (member) for given points
- * @param $points Points to be added to member's account
- * @return $added Wether the points has been added to the user's account
- */
-function addPointsDirectly ($subject, $userid, $points) {
- // Reset level here
- initReferralSystem();
-
- // Call more complicated method (due to more parameters)
- return addPointsThroughReferralSystem($subject, $userid, $points, false, 0, 'DIRECT');
+ return $GLOBALS['__block_mode'];
}
// Wrapper for redirectToUrl but URL comes from a configuration entry
return $GLOBALS[__FUNCTION__];
}
-// Checks wether the extension demo is actuve and the admin login is demo (password needs to be demo, too!)
+// Checks whether the extension demo is actuve and the admin login is demo (password needs to be demo, too!)
function isDemoModeActive () {
// Is cache set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS['php_caching'];
}
-// Checks wether the admin hash is set
+// Checks whether the admin hash is set
function isAdminHashSet ($adminId) {
// Is the array there?
if (!isset($GLOBALS['cache_array']['admin'])) {
// Missing array should be reported
- debug_report_bug(__FUNCTION__, __LINE__, 'Cache not set.');
+ reportBug(__FUNCTION__, __LINE__, 'Cache not set.');
} // END - if
// Check for admin hash
// User id should not be zero
if (!isValidUserId(getCurrentUserId())) {
// Should be always valid
- debug_report_bug(__FUNCTION__, __LINE__, 'Current user id is invalid: ' . getCurrentUserId());
+ reportBug(__FUNCTION__, __LINE__, 'Current user id is invalid: ' . getCurrentUserId());
} // END - if
// Init the user
// User id should not be zero
if (!isValidUserId(getCurrentUserId())) {
// Should be always valid
- debug_report_bug(__FUNCTION__, __LINE__, 'Current user id is invalid: ' . getCurrentUserId());
+ reportBug(__FUNCTION__, __LINE__, 'Current user id is invalid: ' . getCurrentUserId());
} // END - if
// Default is empty
return $data;
}
-// Checks wether given user data is set to 'Y'
+// Checks whether given user data is set to 'Y'
function isUserDataEnabled ($column) {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][getCurrentUserId()][$column])) {
// Is the current userid valid?
if (!isValidUserId($userid)) {
// Should be always valid
- debug_report_bug(__FUNCTION__, __LINE__, 'Current user id is invalid: ' . $userid);
+ reportBug(__FUNCTION__, __LINE__, 'Current user id is invalid: ' . $userid);
} // END - if
// Get the whole array if found
// Unset it to re-determine the actual state
unset($GLOBALS['is_userdata_valid'][$userid]);
+
+ // Is the cache from below functions different?
+ if ((isset($GLOBALS['getCurrentUserId'])) && ($GLOBALS['getCurrentUserId'] != $userid)) {
+ // Then unset both
+ unset($GLOBALS['getCurrentUserId']);
+ unset($GLOBALS['isCurrentUserIdSet']);
+ } // END - if
}
// Getter for current userid
function getCurrentUserId () {
- // Userid must be set before it can be used
- if (!isCurrentUserIdSet()) {
- // Not set
- debug_report_bug(__FUNCTION__, __LINE__, 'User id is not set.');
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Userid must be set before it can be used
+ if (!isCurrentUserIdSet()) {
+ // Not set
+ reportBug(__FUNCTION__, __LINE__, 'User id is not set.');
+ } // END - if
+
+ // Set userid in cache
+ $GLOBALS[__FUNCTION__] = $GLOBALS['current_userid'];
} // END - if
- // Return the userid
- return $GLOBALS['current_userid'];
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// Checks if current userid is set
function isCurrentUserIdSet () {
- return ((isset($GLOBALS['current_userid'])) && (isValidUserId($GLOBALS['current_userid'])));
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = ((isset($GLOBALS['current_userid'])) && (isValidUserId($GLOBALS['current_userid'])));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
-// Checks wether we are debugging template cache
+// Checks whether we are debugging template cache
function isDebuggingTemplateCache () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return (getTotalFatalErrors() > 0);
}
+// Checks whether a HTTP status has been set
+function isHttpStatusSet () {
+ // Is it set and not empty?
+ return ((isset($GLOBALS['http_status'])) && (!empty($GLOBALS['http_status'])));
+}
+
// Setter for HTTP status
function setHttpStatus ($status) {
$GLOBALS['http_status'] = (string) $status;
// Getter for HTTP status
function getHttpStatus () {
// Is the status set?
- if (!isset($GLOBALS['http_status'])) {
+ if (!isHttpStatusSet()) {
// Abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'No HTTP status set!');
+ reportBug(__FUNCTION__, __LINE__, 'No HTTP status set!');
} // END - if
// Return it
clearOutputBuffer();
// Clear own output buffer
- $GLOBALS['output'] = '';
+ $GLOBALS['__output'] = '';
// To make redirects working (no content type), output mode must be raw
setOutputMode(-1);
}
// Shutdown here
- shutdown();
+ doShutdown();
}
// Determines the country of the given user id
if (!isset($GLOBALS[__FUNCTION__])) {
// Then do it
if (isExtensionActive('user')) {
- $GLOBALS[__FUNCTION__] = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true);
+ $GLOBALS[__FUNCTION__] = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, runFilterChain('user_exclusion_sql', ' '));
} else {
$GLOBALS[__FUNCTION__] = 0;
}
if (!isset($GLOBALS[__FUNCTION__])) {
// Then do it
if (isExtensionActive('user')) {
- $GLOBALS[__FUNCTION__] = countSumTotalData('UNCONFIRMED', 'user_data', 'userid', 'status', true);
+ $GLOBALS[__FUNCTION__] = countSumTotalData('UNCONFIRMED', 'user_data', 'userid', 'status', true, runFilterChain('user_exclusion_sql', ' '));
} else {
$GLOBALS[__FUNCTION__] = 0;
}
if (!isset($GLOBALS[__FUNCTION__])) {
// Then do it
if (isExtensionActive('user')) {
- $GLOBALS[__FUNCTION__] = countSumTotalData('LOCKED', 'user_data', 'userid', 'status', true);
+ $GLOBALS[__FUNCTION__] = countSumTotalData('LOCKED', 'user_data', 'userid', 'status', true, runFilterChain('user_exclusion_sql', ' '));
} else {
$GLOBALS[__FUNCTION__] = 0;
}
if (!isset($GLOBALS[__FUNCTION__])) {
// Then do it
if (isExtensionInstalledAndNewer('user', '0.3.4')) {
- $GLOBALS[__FUNCTION__] = countSumTotalData('{?user_min_confirmed?}', 'user_data', 'userid', 'rand_confirmed', true, '', '>=');
+ $GLOBALS[__FUNCTION__] = countSumTotalData('{?user_min_confirmed?}', 'user_data', 'userid', 'rand_confirmed', true, runFilterChain('user_exclusion_sql', ' '), '>=');
} else {
$GLOBALS[__FUNCTION__] = 0;
}
// Is given userid valid?
function isValidUserId ($userid) {
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid[' . gettype($userid) . ']=' . $userid);
+
// Handle NULL
if (is_null($userid)) {
// Do not handle this as of below isset() will always return false
return $GLOBALS[__FUNCTION__][$timestamp];
}
-// Checks wether the title decoration is enabled
+// Checks whether the title decoration is enabled
function isTitleDecorationEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether filter usage updates are enabled (expensive queries!)
+// Checks whether filter usage updates are enabled (expensive queries!)
function isFilterUsageUpdateEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether debugging of weekly resets is enabled
+// Checks whether debugging of weekly resets is enabled
function isWeeklyResetDebugEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether debugging of monthly resets is enabled
+// Checks whether debugging of monthly resets is enabled
function isMonthlyResetDebugEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether displaying of debug SQLs are enabled
+// Checks whether displaying of debug SQLs are enabled
function isDisplayDebugSqlEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether module title is enabled
+// Checks whether module title is enabled
function isModuleTitleEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether what title is enabled
+// Checks whether what title is enabled
function isWhatTitleEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether stats are enabled
+// Checks whether stats are enabled
function ifInternalStatsEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether admin-notification of certain user actions is enabled
+// Checks whether admin-notification of certain user actions is enabled
function isAdminNotificationEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether random referral id selection is enabled
+// Checks whether random referral id selection is enabled
function isRandomReferralIdEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether 'check_double_email' is 'Y'
+// Checks whether 'check_double_email' is 'Y'
function isCheckDoubleEmailEnabled () {
// Is the cache entry set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether 'display_home_in_index' is 'Y'
+// Checks whether 'display_home_in_index' is 'Y'
function isDisplayHomeInIndexEnabled () {
// Is the cache entry set?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether proxy configuration is used
+// Getter for 'points_remove_account'
+function getPointsRemoveAccount () {
+ // Is the cache entry set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // No, so determine it
+ $GLOBALS[__FUNCTION__] = getConfig('points_remove_account');
+ } // END - if
+
+ // Return cached entry
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Checks whether proxy configuration is used
function isProxyUsed () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether POST data contains selections
+// Checks whether POST data contains selections
function ifPostContainsSelections ($element = 'sel') {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$element])) {
// Determine it
- $GLOBALS[__FUNCTION__][$element] = ((isPostRequestElementSet($element)) && (countPostSelection($element) > 0));
+ $GLOBALS[__FUNCTION__][$element] = ((isPostRequestElementSet($element)) && (is_array(postRequestElement($element))) && (countPostSelection($element) > 0));
} // END - if
// Return cache
return $GLOBALS[__FUNCTION__][$element];
}
-// Checks wether verbose_sql is Y and returns true/false if so
+// Checks whether verbose_sql is Y and returns true/false if so
function isVerboseSqlEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
$data = runFilterChain('get_total_points', $data);
// Determine it
- $GLOBALS[__FUNCTION__][$userid] = $data['points'] - countSumTotalData($userid, 'user_data', 'used_points');
+ $GLOBALS[__FUNCTION__][$userid] = $data['points'] - getUserUsedPoints($userid);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__][$userid];
+}
+
+// Wrapper to get used points for given userid
+function getUserUsedPoints ($userid) {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$userid])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__][$userid] = countSumTotalData($userid, 'user_data', 'used_points');
} // END - if
// Return cache
return $GLOBALS[__FUNCTION__];
}
-// Checks wether direct payment is allowed in configuration
+// Checks whether direct payment is allowed in configuration
function isDirectPaymentEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
return $GLOBALS[__FUNCTION__];
}
-// Checks wether JavaScript-based admin menu is enabled
+// Checks whether JavaScript-based admin menu is enabled
function isAdminMenuJavascriptEnabled () {
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__])) {
// Determine it
- $GLOBALS[__FUNCTION__] = ((isExtensionInstalledAndNewer('sql_patches', '0.8.7')) && (getConfig('admin_menu_javascript') == 'Y'));
+ $GLOBALS[__FUNCTION__] = ((isExtensionInstalledAndNewer('sql_patches', '0.8.7')) && (getAdminMenuJavaScript() == 'Y'));
} // END - if
// Return cache
// Do we have cache?
if (!isset($GLOBALS[__FUNCTION__][$content['task_type'] . '_' . $content['infos']])) {
// Determine it
- $GLOBALS[__FUNCTION__][$content['task_type'] . '_' . $content['infos']] = (($content['task_type'] == 'EXTENSION') && (isExtensionNameValid($content['infos'])) && (!isExtensionInstalled($content['infos'])));
+ $GLOBALS[__FUNCTION__][$content['task_type'] . '_' . $content['infos']] = (($content['task_type'] == 'EXTENSION') && ((isExtensionNameValid($content['infos'])) || (isExtensionDeprecated($content['infos']))) && (!isExtensionInstalled($content['infos'])));
} // END - if
// Return cache
return $GLOBALS[__FUNCTION__][$content['task_type'] . '_' . $content['infos']];
}
+// Getter for 'mt_start'
+function getMtStart () {
+ // Is the cache entry set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // No, so determine it
+ $GLOBALS[__FUNCTION__] = getConfig('mt_start');
+ } // END - if
+
+ // Return cached entry
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Checks whether ALLOW_TESTER_ACCOUNTS is set
+function ifTesterAccountsAllowed () {
+ // Is the cache entry set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // No, so determine it
+ $GLOBALS[__FUNCTION__] = ((isConfigEntrySet('ALLOW_TESTER_ACCOUNTS')) && (getConfig('ALLOW_TESTER_ACCOUNTS') == 'Y'));
+ } // END - if
+
+ // Return cached entry
+ return $GLOBALS[__FUNCTION__];
+}
+
// Wrapper to check if output mode is CSS
function isCssOutputMode () {
- // Determine it
- return (getScriptOutputMode() == 1);
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getScriptOutputMode()=' . getScriptOutputMode());
+ $GLOBALS[__FUNCTION__] = (getScriptOutputMode() == 1);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// Wrapper to check if output mode is HTML
function isHtmlOutputMode () {
- // Determine it
- return (getScriptOutputMode() == 0);
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getScriptOutputMode()=' . getScriptOutputMode());
+ $GLOBALS[__FUNCTION__] = (getScriptOutputMode() == 0);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// Wrapper to check if output mode is RAW
function isRawOutputMode () {
- // Determine it
- return (getScriptOutputMode() == -1);
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getScriptOutputMode()=' . getScriptOutputMode());
+ $GLOBALS[__FUNCTION__] = (getScriptOutputMode() == -1);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// Wrapper to check if output mode is AJAX
function isAjaxOutputMode () {
- // Determine it
- return (getScriptOutputMode() == -2);
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getScriptOutputMode()=' . getScriptOutputMode());
+ $GLOBALS[__FUNCTION__] = (getScriptOutputMode() == -2);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// Wrapper to check if output mode is image
function isImageOutputMode () {
- // Determine it
- return (getScriptOutputMode() == -3);
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getScriptOutputMode()=' . getScriptOutputMode());
+ $GLOBALS[__FUNCTION__] = (getScriptOutputMode() == -3);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// Wrapper to generate a user email link
// Appends a line to an existing file or creates it instantly with given content.
// This function does always add a new-line character to every line.
function appendLineToFile ($file, $line) {
- $fp = fopen($file, 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write to file ' . basename($file) . '!');
- fwrite($fp, $line . "\n");
+ $fp = fopen($file, 'a') or reportBug(__FUNCTION__, __LINE__, 'Cannot write to file ' . basename($file) . '!');
+ fwrite($fp, $line . chr(10));
fclose($fp);
}
}
// Generates a YES/NO option list from given default
-function generateYesNoOptionList ($defaultValue = '') {
+function generateYesNoOptions ($defaultValue = '') {
// Generate it
- return generateOptionList('/ARRAY/', array('Y', 'N'), array('{--YES--}', '{--NO--}'), $defaultValue);
+ return generateOptions('/ARRAY/', array('Y', 'N'), array('{--YES--}', '{--NO--}'), $defaultValue);
}
// "Getter" for total available receivers
function getTotalReceivers ($mode = 'normal') {
// Get num rows
- $numRows = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, ' AND `receive_mails` > 0' . runFilterChain('exclude_users', $mode));
+ $numRows = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, runFilterChain('user_exclusion_sql', ' AND `receive_mails` > 0' . runFilterChain('exclude_users', $mode)));
// Return value
return $numRows;
return $GLOBALS[__FUNCTION__][$userid];
}
-// Checks wether 'mailer_theme' was found in session
+// Checks whether 'mailer_theme' was found in session
function isMailerThemeSet () {
- // Check session
- return isSessionVariableSet('mailer_theme');
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = isSessionVariableSet('mailer_theme');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
/**
* session data or throws an error if not possible
*/
function getMailerTheme () {
- // Is 'mailer_theme' set?
- if (!isMailerThemeSet()) {
- // No, then abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'mailer_theme not set in session. Please fix your code.');
+ // Is cache set?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Is 'mailer_theme' set?
+ if (!isMailerThemeSet()) {
+ // No, then abort here
+ reportBug(__FUNCTION__, __LINE__, 'mailer_theme not set in session. Please fix your code.');
+ } // END - if
+
+ // Get it and store it in cache
+ $GLOBALS[__FUNCTION__] = getSession('mailer_theme');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// "Getter" for last_module/last_what depending on ext-user version
+function getUserLastWhatName () {
+ // Default is old one: last_module
+ $columnName = 'last_module';
+
+ // Is ext-user up-to-date?
+ if (isExtensionInstalledAndNewer('user', '0.4.9')) {
+ // Yes, then use new one
+ $columnName = 'last_what';
+ } // END - if
+
+ // Return it
+ return $columnName;
+}
+
+// "Getter" for all columns for given alias and separator
+function getAllPointColumns ($alias = NULL, $separator = ',') {
+ // Prepare the filter array
+ $filterData = array(
+ 'columns' => '',
+ 'alias' => $alias,
+ 'separator' => $separator
+ );
+
+ // Run the filter
+ $filterData = runFilterChain('get_all_point_columns', $filterData);
+
+ // Return the columns
+ return $filterData['columns'];
+}
+
+// Checks whether the copyright footer (which breaks framesets) is enabled
+function ifCopyrightFooterEnabled () {
+ // Is not unset and not 'N'?
+ return ((!isset($GLOBALS['__copyright_enabled'])) || ($GLOBALS['__copyright_enabled'] == 'Y'));
+}
+
+/**
+ * Wrapper to check whether we have a "full page". This means that the actual
+ * content is not delivered in any frame of a frameset.
+ */
+function isFullPage () {
+ /*
+ * The parameter 'frame' is generic and always indicates that this content
+ * will be output into a frame. Furthermore, if a frameset is reported or
+ * the copyright line is explicitly deactivated, this cannot be a "full
+ * page" again.
+ */
+ // @TODO Find a way to not use direct module comparison
+ $isFullPage = ((!isGetRequestElementSet('frame')) && (getModule() != 'frametester') && (!isFramesetModeEnabled()) && (ifCopyrightFooterEnabled()));
+
+ // Return it
+ return $isFullPage;
+}
+
+// Checks whether frameset_mode is set to true
+function isFramesetModeEnabled () {
+ // Check it
+ return ((isset($GLOBALS['frameset_mode'])) && ($GLOBALS['frameset_mode'] === true));
+}
+
+// Function to determine correct 'what' value
+function determineWhat ($module = NULL) {
+ // Init default 'what'
+ $what = 'welcome';
+
+ // Is module NULL?
+ if (is_null($module)) {
+ // Then use default
+ $module = getModule();
+ } // END - if
+
+ // Is what set?
+ if (isWhatSet()) {
+ // Then use it
+ $what = getWhat();
+ } else {
+ // Else try to get it from current module
+ $what = getWhatFromModule($module);
+ }
+ //* DEBUG: */ debugOutput(__LINE__.'*'.$what.'/'.$module.'/'.getAction().'/'.getWhat().'*');
+
+ // Remove any spaces from variable
+ $what = trim($what);
+
+ // Is it empty?
+ if (empty($what)) {
+ // Default action for non-admin menus
+ $what = 'welcome';
+ } else {
+ // Secure it
+ $what = secureString($what);
+ }
+
+ // Return what
+ return $what;
+}
+
+// Fills (prepend) a string with zeros. This function has been taken from user comments at de.php.net/str_pad
+function prependZeros ($mStretch, $length = 2) {
+ // Return prepended string
+ return sprintf('%0' . (int) $length . 's', $mStretch);
+}
+
+// Wraps convertSelectionsToEpocheTime()
+function convertSelectionsToEpocheTimeInPostData ($id) {
+ // Init variables
+ $content = array();
+ $skip = false;
+
+ // Get all POST data
+ $postData = postRequestArray();
+
+ // Convert given selection id
+ convertSelectionsToEpocheTime($postData, $content, $id, $skip);
+
+ // Set the POST array back
+ setPostRequestArray($postData);
+}
+
+// Wraps checking if given points account type matches with given in POST data
+function ifPointsAccountTypeMatchesPost ($type) {
+ // Check condition
+ exit(__FUNCTION__.':type='.$type.',post=<pre>'.print_r(postRequestArray(), true).'</pre>');
+}
+
+// Gets given user's total referral
+function getUsersTotalReferrals ($userid, $level = NULL) {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$userid][$level])) {
+ // Is the level NULL?
+ if (is_null($level)) {
+ // Get total amount (all levels)
+ $GLOBALS[__FUNCTION__][$userid][$level] = countSumTotalData($userid, 'user_refs', 'refid', 'userid', true);
+ } else {
+ // Get it from user refs
+ $GLOBALS[__FUNCTION__][$userid][$level] = countSumTotalData($userid, 'user_refs', 'refid', 'userid', true, ' AND `level`=' . bigintval($level));
+ }
} // END - if
- // Return the theme from session
- return getSession('mailer_theme');
+ // Return it
+ return $GLOBALS[__FUNCTION__][$userid][$level];
+}
+
+// Gets given user's total referral
+function getUsersTotalLockedReferrals ($userid, $level = NULL) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level[' . gettype($level) . ']=' . $level . ' - ENTERED!');
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$userid][$level])) {
+ // Default is all refs
+ $add = '';
+
+ // Is the not level NULL?
+ if (!is_null($level)) {
+ // Then add referral level
+ $add = ' AND r.`level`=' . bigintval($level);
+ } // END - if
+
+ // Check for all referrals
+ $result = SQL_QUERY_ESC("SELECT
+ COUNT(d.`userid`) AS `cnt`
+FROM
+ `{?_MYSQL_PREFIX?}_user_data` AS d
+INNER JOIN
+ `{?_MYSQL_PREFIX?}_user_refs` AS r
+ON
+ d.`userid`=r.`refid`
+WHERE
+ d.`status` != 'CONFIRMED' AND
+ r.`userid`=%s
+ " . $add . "
+ORDER BY
+ d.`userid` ASC
+LIMIT 1",
+ array(
+ $userid
+ ), __FUNCTION__, __LINE__);
+
+ // Load count
+ list($GLOBALS[__FUNCTION__][$userid][$level]) = SQL_FETCHROW($result);
+
+ // Free result
+ SQL_FREERESULT($result);
+ } // END - if
+
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level[' . gettype($level) . ']=' . $level . ':' . $GLOBALS[__FUNCTION__][$userid][$level] . ' - EXIT!');
+ return $GLOBALS[__FUNCTION__][$userid][$level];
+}
+
+// Converts, if found, dollar data to get element
+function convertDollarDataToGetElement ($data) {
+ // Is first char a dollar?
+ if (substr($data, 0, 1) == chr(36)) {
+ // Use last part for getRequestElement()
+ $data = getRequestElement(substr($data, 1));
+ } // END - if
+
+ // Return it
+ return $data;
+}
+
+// Wrapper function for SQL layer to speed-up things
+function SQL_DEBUG_ENABLED () {
+ // Is there cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Determine it
+ $GLOBALS[__FUNCTION__] = ((!isCssOutputMode()) && (isDebugModeEnabled()) && (isSqlDebuggingEnabled()));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
}
// [EOF]
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
'functions' => array()
);
$GLOBALS['__XML_ARGUMENTS'] = array();
+ $GLOBALS['__COLUMN_INDEX'] = array();
// Handle it over to the parser
parseXmlData($templateContent);
+ // Add special elements, e.g. column index
+ addXmlSpecialElements($template);
+
// Call the call-back function
doCallXmlCallbackFunction();
} else {
}
}
+// Adds special elements by calling back another template-depending function
+function addXmlSpecialElements ($template) {
+ // Generate the FQCN (Full-Qualified CallbackName)
+ $FQCN = 'addXmlSpecial' . capitalizeUnderscoreString($template);
+
+ // Is it there?
+ if (function_exists($FQCN)) {
+ // Call it
+ call_user_func($FQCN);
+ } else {
+ // This callback function is only optional
+ logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $FQCN . ' for template ' . $template . ' does not exist.');
+ }
+}
+
// Parses the XML content
function parseXmlData ($content) {
// Do we have recode?
- if (function_exists('recode')) {
- // Convert 'HTML' to UTF-8
- $content = recode('html..utf8', $content);
- } else {
+ if (!function_exists('recode')) {
// No fallback ATM
- debug_report_bug('PHP extension recode is missing. Please install it.');
- }
+ reportBug('PHP extension recode is missing. Please install it.');
+ } // END - if
+
+ // Convert HTML entities to UTF-8
+ $content = recode('html..utf8', $content);
// Create a new XML parser
$xmlParser = xml_parser_create();
if (!xml_parse($xmlParser, $content)) {
// Error found in XML!
//* DEBUG: */ die('<pre>'.htmlentities($content).'</pre>');
- debug_report_bug(__FUNCTION__, __LINE__, 'Error found in XML. errorMessage=' . xml_error_string(xml_get_error_code($xmlParser)) . ', line=' . xml_get_current_line_number($xmlParser));
+ reportBug(__FUNCTION__, __LINE__, 'Error found in XML. errorMessage=' . xml_error_string(xml_get_error_code($xmlParser)) . ', line=' . xml_get_current_line_number($xmlParser));
} // END - if
// Free the parser
// Is it there?
if (!function_exists($callbackName)) {
- debug_report_bug(__FUNCTION__, __LINE__, 'callback=' . $callback . ',function=' . $function . 'arguments()=' . count($GLOBALS['__XML_ARGUMENTS'][$callback]) . ' - execute call-back not found.');
+ reportBug(__FUNCTION__, __LINE__, 'callback=' . $callback . ',function=' . $function . 'arguments()=' . count($GLOBALS['__XML_ARGUMENTS'][$callback]) . ' - execute call-back does not exist.');
} // END - if
// Call it
- call_user_func_array($callbackName, array($function, $GLOBALS['__XML_ARGUMENTS'][$callback]));
+ call_user_func_array($callbackName, array($function, $GLOBALS['__XML_ARGUMENTS'][$callback], $GLOBALS['__COLUMN_INDEX'][$callback]));
} // END - foreach
} else {
// Not found
- debug_report_bug(__FUNCTION__, __LINE__, 'Entry in callbacks does exist, but not in functions, callback= ' . $callback);
+ reportBug(__FUNCTION__, __LINE__, 'Entry in callbacks does exist, but not in functions, callback= ' . $callback);
}
} // END - foreach
}
// Is the call-back function there?
if (!function_exists($elementCallback)) {
// Not there
- debug_report_bug(__FUNCTION__, __LINE__, 'Missing call-back function ' . $elementCallback . ', please add it.');
+ reportBug(__FUNCTION__, __LINE__, 'Missing call-back function ' . $elementCallback . ', please add it.');
} // END - if
// Call the call-back function
// Checks if given value is valid/verifyable
function isXmlValueValid ($type, $value) {
// Depends on type, so build a call-back
- $callbackFunction = 'isXmlType' . trim(capitalizeUnderscoreString($type));
+ $callbackName = 'isXmlType' . trim(capitalizeUnderscoreString($type));
// Is the call-back function there?
- if (!function_exists($callbackFunction)) {
+ if (!function_exists($callbackName)) {
// Not there
- debug_report_bug(__FUNCTION__, __LINE__, 'Missing call-back function ' . $callbackFunction . ', please add it.');
+ reportBug(__FUNCTION__, __LINE__, 'Missing call-back function ' . $callbackName . ', please add it.');
} // END - if
// Call and return it
- return call_user_func_array($callbackFunction, array($value));
+ return call_user_func_array($callbackName, array($value));
}
// Converts given condition into a symbol
break;
default: // Unknown condition
- debug_report_bug(__FUNCTION__, __LINE__, 'Condition ' . $condition . ' is unknown/unsupported.');
+ reportBug(__FUNCTION__, __LINE__, 'Condition ' . $condition . ' is unknown/unsupported.');
break;
} // END - switch
// And abort any further searches
break;
- } // END - foreach
+ } // END - if
} // END - foreach
// Return key/false
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
************************************************************************/
// XDEBUG call
-//* DEBUG: */ xdebug_start_trace();
+/* DEBUG: */ xdebug_start_trace();
// Load security stuff here
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module/what
-$GLOBALS['__module'] = 'index';
-$GLOBALS['__what'] = 'welcome';
-
-// Set CSS mode
-$GLOBALS['output_mode'] = '0';
+// Set module/what and output mode
+$GLOBALS['__module'] = 'index';
+$GLOBALS['__what'] = 'welcome';
+$GLOBALS['__output_mode'] = '0';
// Load config.php
require('inc/config-global.php');
loadTemplate('index_forward', false, $content);
} // END - if
- // Footer (which will call shutdown() for us)
+ // Footer (which will call doShutdown() for us)
loadIncludeOnce('inc/footer.php');
} else {
// Redirect to main page
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Tell every module / require file we are installing
-$GLOBALS['mailer_installing'] = true;
+$GLOBALS['__mailer_installing'] = true;
-// Set CSS variable for "normal mode"
-$GLOBALS['output_mode'] = '0';
-
-// Set module
-$GLOBALS['__module'] = 'install';
+// Set module and output mode
+$GLOBALS['__module'] = 'install';
+$GLOBALS['__output_mode'] = '0';
// Load config file
require('inc/config-global.php');
// Set content type
setContentType('text/html');
-// Reload page to page=welcome when it is not specified
-if (!isGetRequestElementSet('page')) {
- redirectToUrl('install.php?page=welcome');
+// Is 'install_page' set?
+if (!isGetRequestElementSet('install_page')) {
+ // No, so set it to 'welcome'
+ setGetRequestElement('install_page', 'welcome');
} // END - if
// Set username
setUsername('{--USERNAME_INSTALLER--}');
// Already installed?
-if ((isInstalled()) && (getRequestElement('page') != 'finished')) {
+if ((isInstalled()) && (getRequestElement('install_page') != 'finished')) {
// Add fatal message
addFatalMessage(__FILE__, __LINE__, '{--ALREADY_INSTALLED--}');
} // END - if
// Handle fatal errors
runFilterChain('handle_fatal_errors');
-// Here start's our installtion stuff
-loadIncludeOnce('inc/install-inc.php');
-
-// Load main installation table
-loadTemplate('install_main');
+// Do we have plain or AJAX-enabled installation?
+if (isGetRequestElementSet('installer')) {
+ // Set installer type
+ setSession('installer', getRequestElement('installer'));
+
+ // Redirect to install.php again
+ redirectToUrl('install.php');
+} elseif (isAjaxInstaller()) {
+ // AJAX-enabled installer:
+ // Load 'init' page
+ addTemplateToInstallContent('install_page_init');
+
+ // Prepare content
+ $content = array(
+ 'install_page' => getRequestElement('install_page')
+ );
+
+ // Load main installation table
+ loadTemplate('install_main_ajax', false, $content);
+} elseif (isPlainInstaller()) {
+ // Plain installer:
+ // Load include file
+ loadIncludeOnce('inc/install-inc.php');
+
+ // Load main template
+ loadTemplate('install_main_plain');
+} else {
+ // What do you want, red or blue pill? AJAX or plain installer? ;-)
+ loadTemplate('install_selector');
+}
// Footer
loadIncludeOnce('inc/footer.php');
`sort` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
`descr` TEXT NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Admin menu';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_admins`;
CREATE TABLE `{?_MYSQL_PREFIX?}_admins` (
`email` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE (`login`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Administrator accounts';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_cats`;
CREATE TABLE `{?_MYSQL_PREFIX?}_cats` (
`visible` ENUM('Y','N') NOT NULL DEFAULT 'Y',
`sort` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'General categories';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_config`;
CREATE TABLE `{?_MYSQL_PREFIX?}_config` (
`least_cats` TINYINT(3) UNSIGNED NOT NULL DEFAULT 5,
`check_double_email` ENUM('Y','N') NOT NULL DEFAULT 'Y',
`admin_notify` ENUM('Y','N') NOT NULL DEFAULT 'Y',
- `url_tlock` BIGINT(20) UNSIGNED NOT NULL DEFAULT '86400',
- `max_tlength` BIGINT(20) UNSIGNED NOT NULL DEFAULT '1000',
+ `url_tlock` BIGINT(20) UNSIGNED NOT NULL DEFAULT 86400,
+ `max_tlength` BIGINT(20) UNSIGNED NOT NULL DEFAULT 1000,
`autosend_active` ENUM('Y','N') NOT NULL DEFAULT 'N',
- `max_send` TINYINT(3) UNSIGNED NOT NULL DEFAULT '100',
+ `max_send` TINYINT(3) UNSIGNED NOT NULL DEFAULT 100,
`url_blacklist` ENUM('Y','N') NOT NULL DEFAULT 'Y',
- `auto_purge` TINYINT(3) UNSIGNED NOT NULL DEFAULT '14',
+ `auto_purge` TINYINT(3) UNSIGNED NOT NULL DEFAULT 14,
`auto_purge_active` ENUM('Y','N') NOT NULL DEFAULT 'Y',
`last_update` VARCHAR(10) NOT NULL DEFAULT 0,
- `unconfirmed` BIGINT(20) UNSIGNED NOT NULL DEFAULT '100',
- `profile_lock` BIGINT(20) UNSIGNED NOT NULL DEFAULT '86400',
- `online_timeout` BIGINT(20) UNSIGNED NOT NULL DEFAULT '1800',
+ `unconfirmed` BIGINT(20) UNSIGNED NOT NULL DEFAULT 100,
+ `profile_lock` BIGINT(20) UNSIGNED NOT NULL DEFAULT 86400,
+ `online_timeout` BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800,
`mad_timestamp` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
`mad_count` BIGINT(20) UNSIGNED NOT NULL,
- `profile_update` BIGINT(20) UNSIGNED NOT NULL DEFAULT '15768000',
+ `profile_update` BIGINT(20) UNSIGNED NOT NULL DEFAULT 15768000,
`send_prof_update` ENUM('Y','N') NOT NULL DEFAULT 'Y',
- `resend_profile_update` BIGINT(20) UNSIGNED NOT NULL DEFAULT '172800',
+ `resend_profile_update` BIGINT(20) UNSIGNED NOT NULL DEFAULT 172800,
`patch_level` VARCHAR(100) NOT NULL DEFAULT '0',
`patch_ctime` VARCHAR(10) NOT NULL DEFAULT 0,
`guest_stats` ENUM('MEMBERS','MODULES','INACTIVE') NOT NULL DEFAULT 'MEMBERS',
`ip_timeout` BIGINT(20) UNSIGNED NOT NULL DEFAULT 86400,
`allow_direct_pay` ENUM('Y','N') NOT NULL DEFAULT 'N',
PRIMARY KEY (`config`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Configuration';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_guest_menu`;
CREATE TABLE `{?_MYSQL_PREFIX?}_guest_menu` (
`locked` ENUM('Y','N') NOT NULL DEFAULT 'Y',
`counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Guest menu';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_max_receive`;
CREATE TABLE `{?_MYSQL_PREFIX?}_max_receive` (
`value` MEDIUMINT(9) NOT NULL DEFAULT 0,
`comment` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Mails per day setup';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_member_menu`;
CREATE TABLE `{?_MYSQL_PREFIX?}_member_menu` (
`locked` ENUM('Y','N') NOT NULL DEFAULT 'Y',
`counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Member menu';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_mod_reg`;
CREATE TABLE `{?_MYSQL_PREFIX?}_mod_reg` (
`mem_only` ENUM('Y','N') NOT NULL DEFAULT 'N',
`clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Module registry';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_payments`;
CREATE TABLE `{?_MYSQL_PREFIX?}_payments` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`time` INT(7) NOT NULL DEFAULT 0,
- `payment` FLOAT(5,3) UNSIGNED NOT NULL DEFAULT '0.000',
+ `payment` FLOAT(5,3) UNSIGNED NOT NULL DEFAULT 0.000,
`mail_title` VARCHAR(255) NOT NULL DEFAULT '',
- `price` FLOAT(5,5) UNSIGNED NOT NULL DEFAULT '0.00000',
+ `price` FLOAT(5,5) UNSIGNED NOT NULL DEFAULT 0.00000,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Payment types';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_pool`;
CREATE TABLE `{?_MYSQL_PREFIX?}_pool` (
INDEX (`sender`),
INDEX (`payment_id`),
INDEX (`cat_id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Sending pool';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_refbanner`;
CREATE TABLE `{?_MYSQL_PREFIX?}_refbanner` (
`counter` BIGINT(20) NOT NULL DEFAULT 0,
`clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Referral banner';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_refdepths`;
CREATE TABLE `{?_MYSQL_PREFIX?}_refdepths` (
`level` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
`percents` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Referral levels';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_refsystem`;
CREATE TABLE `{?_MYSQL_PREFIX?}_refsystem` (
`counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
INDEX (`userid`),
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Referral system (not points)';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_task_system`;
CREATE TABLE `{?_MYSQL_PREFIX?}_task_system` (
INDEX (`userid`),
INDEX (`assigned_admin`),
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Task system';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_extensions`;
CREATE TABLE `{?_MYSQL_PREFIX?}_extensions` (
`ext_active` ENUM('Y','N') NOT NULL DEFAULT 'N',
`ext_version` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
PRIMARY KEY (`id`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Extension registry';
DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_jackpot`;
CREATE TABLE `{?_MYSQL_PREFIX?}_jackpot` (
`ok` CHAR(2) NOT NULL DEFAULT 'ok',
- `points` FLOAT(20,3) NOT NULL DEFAULT '0.000',
+ `points` FLOAT(20,3) NOT NULL DEFAULT 0.000,
PRIMARY KEY (`ok`)
-) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci;
+) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT 'Jackpot';
INSERT INTO `{?_MYSQL_PREFIX?}_config` (`config`) VALUES (0);
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// This is a fake-CSS file loader, more a JavaScript loader...
// This is in one way good and in one not. The whole reset part will be
// JS calls on this script to CSS calls. So no real "request" like in MVC
// pattern is given...
//
-// But mxchange 0.3.0 will show that in better way! :D :D :D
-$GLOBALS['__module'] = 'js';
-$GLOBALS['output_mode'] = 1;
+// But Mailer-Project 0.3.0 will show that in better way! :D :D :D
+$GLOBALS['__module'] = 'js';
+$GLOBALS['__output_mode'] = 1;
// Load the required file(s)
require('inc/config-global.php');
// Set header and HTTP status
setContentType('text/javascript');
-setHttpStatus('404 NOT FOUND');
+setHttpStatus('404 Not Found');
// Is 'js' is provied?
if (isGetRequestElementSet('js')) {
} // END - if
// Shutdown
-shutdown();
+doShutdown();
// [EOF]
?>
--- /dev/null
+/*
+ * JavaScript for
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2011 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
--- /dev/null
+/*
+ * JavaScript for common admin functions
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2011 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
--- /dev/null
+/**
+ * JavaScript for admin menu data
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+// Init index->page translation array
+var indexTranslation = new Array();
+
+// Add all index->page translations:
+indexTranslation[0] = 'welcome';
--- /dev/null
+/**
+ * Common JavaScript functions for AJAX requests (they are general purpose).
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+// Init variables
+var currentTabId = null;
+var errorDisplayed = false;
+var warningDisplayed = false;
+var defaultTabId = null;
+var footerElements = new Array();
+var changedElements = new Array();
+var formChanged = false;
+var saveChangesId = null;
+var lastErrorMessage = null;
+var saveChangesPending = false;
+
+// Add all footer navigation elements
+footerElements[0] = 'next';
+footerElements[1] = 'previous';
+
+// Setter for current tab id
+function setCurrentTabId (tabId) {
+ // Set it
+ //* DEBUG: */ alert('currentTabId=' + currentTabId + ',tabId=' + tabId);
+ currentTabId = tabId;
+}
+
+// Marks a tab navigation entry
+function markTabNavigation (prefix, tab) {
+ // Get all li-tags
+ var li = document.getElementsByTagName('li');
+
+ // Set current tab name
+ var currentTabName = 'tab_enabled';
+
+ // Set tab name
+ var tabName = prefix + '_' + tab;
+
+ // Search for all menus
+ for (var i = 0; i < li.length; i++) {
+ // Debug message
+ //* DEBUG: */ document.write('className=' + li[i].className + ',prefix=' + prefix + ',tab=' + tab + '<br />');
+
+ // Check for valid tab
+ if (li[i].className.substr(0, currentTabName.length) == currentTabName) {
+ // Okay does match (don't change any others)
+ if (li[i].id == tabName) {
+ // Mark this menu
+ $('li#' + tabName).addClass('tab_active');
+ //li[i].className += ' tab_active';
+ } else {
+ // Unmark this menu
+ $('li#' + li[i].id).removeClass('tab_active');
+ //li[i].className = currentTabName;
+ }
+ } // END - if
+ } // END - for
+}
+
+// Enables a given element
+function enableElement (element) {
+ // Remove class and attribute
+ $(element).removeClass('disabled');
+ $(element).removeAttr('disabled');
+}
+
+// Disables a given element
+function disableElement (element) {
+ // Add class and attribute
+ $(element).addClass('disabled');
+ $(element).attr('disabled', 'disabled');
+
+ // Blur the element
+ $(element).blur();
+}
+
+// Enables a given footer navigation element
+function enableFooterNavigationPage (element) {
+ // Remove the 'disabled' class and attribute
+ enableElement('input#' + element + '_page');
+}
+
+// Resets footer navigation by adding CSS class 'disabled'
+function resetFooterNavigation () {
+ // Remove the 'disabled' class and attribute
+ for (var i = 0; i < footerElements.length; i++) {
+ $('input#' + footerElements[i] + '_page').addClass('disabled');
+ $('input#' + footerElements[i] + '_page').attr('disabled', 'disabled');
+ $('input#' + footerElements[i] + '_page').blur();
+ } // END - for
+}
+
+// Getter for AJAX content
+function getAjaxContent () {
+ // Is it defined?
+ if ($('body').data('ajax_content') == undefined) {
+ // Not set
+ throw new 'ajax_content requested but not set.';
+ } // END - if
+
+ // Return it
+ return $('body').data('ajax_content');
+}
+
+// "Setter" for AJAX content but does decode the content
+function setAjaxDecodedContent (ajax_content) {
+ // Decode URL-encoded data ...
+ var decoded = decodeUrlEncoding(ajax_content);
+
+ // ... and set it
+ setAjaxContent(decoded);
+}
+
+// Setter for AJAX content
+function setAjaxContent (ajax_content) {
+ $('body').data('ajax_content', ajax_content);
+}
+
+// Getter for AJAX success
+function getAjaxSuccess () {
+ return $('body').data('ajax_success');
+}
+
+// Setter for AJAX success
+function setAjaxSuccess (success) {
+ $('body').data('ajax_success', success);
+}
+
+// Set AJAX reply and decode JSON if requested
+function setAjaxReply (reply, isJson) {
+ // Copy reply to local variable
+ var localReply = reply;
+
+ // Is it JSON URL-encoded content?
+ if ((isJson != undefined) && (isJson == true)) {
+ // Then decode it, replace '%20' with space before because '%20' breakes JSON content
+ var obj = jQuery.parseJSON(reply.replace('%20', ' '));
+
+ // Is reply_content there
+ if (obj.reply_content == undefined) {
+ // Not defined
+ throw new 'obj.reply_content not returned from ajax.php, please fix your scripts.';
+ } // END - if
+
+ // ... and set it
+ setAjaxDecodedContent(obj.reply_content);
+ } else {
+ // Handle the content over to decode it
+ setAjaxDecodedContent(localReply);
+ }
+}
+
+// Sends out an AJAX request
+function sendAjaxRequest (level, doValue, extra, isJson) {
+ // By default all requests failed
+ setAjaxSuccess(false);
+
+ // Reset AJAX content
+ setAjaxContent('');
+
+ // Send out the raw request
+ $.ajax({
+ url: 'ajax.php',
+ type: 'POST',
+ data: 'level=' + level + '&do=' + doValue + extra,
+ dataType: 'json',
+ async: false,
+
+ // Called on success
+ success: function (ajax_content) {
+ // Is ajax_content set?
+ if (ajax_content.responseText == undefined) {
+ // This shall not happen
+ throw new 'ajax_content.responseText not returned from ajax.php, please fix your scripts.';
+ } else if (ajax_content.responseText == null) {
+ // This shall not happen, too
+ throw new 'ajax_content.responseText=null from ajax.php, please fix your scripts.';
+ }
+
+ // Set AJAX reply
+ setAjaxReply(ajax_content.responseText, isJson);
+
+ // Mark it as success
+ setAjaxSuccess(true);
+ },
+
+ // Called in case of an error (e.g. HTTP response status not '200 OK')
+ error: function (ajax_content) {
+ // Is ajax_content set?
+ if (ajax_content.responseText == undefined) {
+ // This shall not happen
+ throw new 'ajax_content.responseText not returned from ajax.php, please fix your scripts.';
+ } else if (ajax_content.responseText == null) {
+ // This shall not happen, too
+ throw new 'ajax_content.responseText=null from ajax.php, please fix your scripts.';
+ }
+
+ // Set AJAX reply
+ setAjaxReply(ajax_content.responseText, isJson);
+ }
+ });
+
+ // Return status
+ return getAjaxSuccess();
+}
+
+// Enables footer navigation buttons
+function enableFooterNavigation (prefix, tabId) {
+ // Reset both footer navigation first
+ resetFooterNavigation();
+
+ // Do the AJAX request (JSON as content is enabled)
+ if (sendAjaxRequest(prefix, 'footer_navigation', '&tab=' + tabId, true) == true) {
+ // Parse the content
+ $.each(getAjaxContent(), function (i, value) {
+ // Enable current element
+ enableFooterNavigationPage(value);
+ });
+ } else {
+ // Display error window
+ displayErrorWindow(prefix, getAjaxContent());
+ }
+}
+
+// Requests an AJAX content
+function requestAjaxContent (prefix, htmlId, tabId, footerNavigation) {
+ // Check if this request is disabled
+ if ($('#' + prefix + '_' + tabId).hasClass('tab_disabled')) {
+ // Clicked on a disabled tabId so blur it
+ //* DEBUG: */ alert('requestAjaxContent(): prefix=' + prefix + ',htmlId=' + htmlId + ',tabId=' + tabId + ' - DISABLED!');
+ return;
+ } else if (formChanged == true) {
+ // Has changed form , so output message to browser
+ //* DEBUG: */ alert('requestAjaxContent(): prefix=' + prefix + ',htmlId=' + htmlId + ',tabId=' + tabId + ' - FORM CHANGED!');
+ displayChangedWarningWindow(prefix, tabId);
+
+ // Abort here
+ return;
+ }
+
+ // Only request if content is different
+ //* DEBUG: */ alert('requestAjaxContent(): prefix=' + prefix + ',htmlId=' + htmlId + ',tabId=' + tabId + ',currentTabId=' + currentTabId);
+ if (tabId != currentTabId) {
+ // Set tabId as current
+ //* DEBUG: */ alert('requestAjaxContent(): prefix=' + prefix + ',htmlId=' + htmlId + ',tabId=' + tabId + ' - Calling setCurrentTabId()');
+ setCurrentTabId(tabId);
+
+ // Fade the old content out
+ $('#' + htmlId).fadeOut('fast', function() {
+ // Send AJAX request
+ if (sendAjaxRequest(prefix, 'request_content', '&tab=' + tabId, true) == true) {
+ // Add the HTML content
+ $('#' + htmlId).html(getAjaxContent());
+
+ // Fade the content in
+ $('#' + htmlId).fadeIn('fast', function() {
+ // This differs, so mark the menu and request content
+ markTabNavigation(prefix, tabId);
+
+ // Is the footer navigation enabled?
+ if (footerNavigation == true) {
+ // Change footer navigation as well
+ enableFooterNavigation(prefix, tabId);
+ } // END - if
+ });
+ } else {
+ // Display error window
+ displayErrorWindow(prefix, getAjaxContent());
+ }
+ });
+ } else {
+ // Same id
+ //* DEBUG: */ alert('SAME!');
+ }
+}
+
+// Displays a test window
+function displayTestWindow (prefix, element) {
+ // Register click-event for error window
+ $('#' + prefix + '_error_close').click(function () {
+ // Close the window
+ closeErrorWindow(prefix);
+ });
+
+ // Register click-event for warning window
+ $('#' + prefix + '_warning_close').click(function () {
+ // Close the window
+ //* DEBUG: */ alert('displayTestWindow(): prefix=' + prefix + ' - calling closeWarningWindow()');
+ closeWarningWindow(prefix);
+ });
+
+ // Request it from the AJAX backend
+ if (sendAjaxRequest(prefix, 'test', '') == true) {
+ // Transfer the returned content to the prefix_warning_content id
+ $('#' + prefix + '_warning_content').html(getAjaxContent());
+
+ // Fade the warning in
+ $('#' + prefix + '_warning').fadeIn('slow', function() {
+ // Enable element
+ enableElement(element);
+ });
+
+ // Mark 'warning' as displayed
+ warningDisplayed = true;
+ } else {
+ // Display error message
+ displayErrorWindow(prefix, getAjaxContent());
+ }
+}
+
+// Displays a warning window above the form to warn about changed&unsafed fields
+function displayChangedWarningWindow (prefix, button) {
+ // Fade out warning window, if open
+ //* DEBUG: */ alert('displayChangedWarningWindow(): prefix=' + prefix + ',button=' + button + ' - calling closeWarningWindow()');
+ closeWarningWindow(prefix);
+
+ // Fade error out for eye-candy, if open
+ closeErrorWindow(prefix);
+
+ // Abort here if warningDisplayed is still true
+ if (warningDisplayed == true) {
+ // Make sure this doesn't happen
+ return;
+ } // END - if
+
+ // Request it from the AJAX backend
+ if (sendAjaxRequest(prefix, 'change_warning', '&button=' + button + '&elements=' + changedElements.join(':')) == true) {
+ // Transfer the returned content to the prefix_warning_content id
+ $('#' + prefix + '_warning_content').html(getAjaxContent());
+
+ // Fade the warning in
+ $('#' + prefix + '_warning').fadeIn('slow', function() {
+ // Mark warning as displayed
+ warningDisplayed = true;
+ });
+ } else {
+ // Display error message
+ displayErrorWindow(prefix, getAjaxContent());
+ }
+}
+
+// Displays the error window for given prefix and content
+function displayErrorWindow (prefix, ajax_content) {
+ // Fade out warning window, if open
+ //* DEBUG: */ alert('displayErrorWindow(): prefix=' + prefix + ' - calling closeWarningWindow()');
+ closeWarningWindow(prefix);
+
+ // Fade it out for eye-candy
+ closeErrorWindow(prefix);
+
+ // Abort here if errorDisplayed is still true
+ if (errorDisplayed == true) {
+ // Make sure this doesn't happen
+ return;
+ } // END - if
+
+ // Copy the response text to the error variable
+ if (ajax_content.responseText != undefined) {
+ $('#' + prefix + '_error_content').html(ajax_content.responseText);
+ } else {
+ $('#' + prefix + '_error_content').html(ajax_content);
+ }
+
+ // Fade the error in
+ $('#' + prefix + '_error').fadeIn('slow', function() {
+ // Mark error as displayed
+ errorDisplayed = true;
+ });
+}
+
+// Waits until the window has been closed
+function closeErrorLocked () {
+ // Has all been loaded?
+ if (errorDisplayed == false) {
+ // Then release ready()
+ $.holdReady(false);
+ } else {
+ // Recursive call again
+ window.setTimeout('closeErrorLocked()', 10);
+ }
+}
+
+// Closes an error window
+function closeErrorWindow (prefix, waitClose, resetCurrentTabId) {
+ // Is the error displayed?
+ if (errorDisplayed == true) {
+ // Shall we wait ("sync") until the animation has completed?
+ if (waitClose == true) {
+ // Hold the ready status
+ $.holdReady(true);
+ } // END - if
+
+ // Yes, then fade it out
+ $('#' + prefix + '_error').fadeOut('fast', function() {
+ // Set current tab id to default
+ if (resetCurrentTabId == true) {
+ setCurrentTabId(defaultTabId);
+ } // END - if
+
+ // Mark it as closed
+ errorDisplayed = false;
+ });
+
+ // Shall this animation be "synchronized"?
+ if (waitClose == true) {
+ // Wait for the window has been closed
+ closeErrorLocked();
+ } // END - if
+ } // END - if
+}
+
+// Waits until the window has been closed
+function closeWarningLocked () {
+ // Has all been loaded?
+ if (warningDisplayed == false) {
+ // Then release ready()
+ $.holdReady(false);
+ } else {
+ // Recursive call again
+ window.setTimeout('closeWarningLocked()', 10);
+ }
+}
+
+// Closes an warning window
+function closeWarningWindow (prefix, waitClose, resetCurrentTabId) {
+ //* DEBUG: */ alert('prefix=' + prefix + ',waitClose=' + waitClose + ' - ENTERED!');
+ // Is the warning displayed?
+ if (warningDisplayed == true) {
+ // Shall we wait ("sync") until the animation has completed?
+ //* DEBUG: */ alert('prefix=' + prefix + ',waitClose=' + waitClose + ',warningDisplayed=true');
+ if (waitClose == true) {
+ // Hold the ready status
+ $.holdReady(true);
+ } // END - if
+
+ // Yes, then fade it out
+ $('#' + prefix + '_warning').fadeOut('fast', function() {
+ // Set current tab id to default
+ //* DEBUG: */ alert('closeWarningWindow(): prefix=' + prefix + ',waitClose=' + waitClose + ',defaultTab=' + defaultTabId + ' - Calling setCurrentTabId()');
+ if (resetCurrentTabId == true) {
+ setCurrentTabId(defaultTabId);
+ } // END - if
+
+ // Mark it as closed
+ warningDisplayed = false;
+ //* DEBUG: */ alert('closeWarningWindow(): waitClose=' + waitClose + ',resetCurrentTabId=' + resetCurrentTabId + ',warningDisplayed=false');
+ });
+
+ // Shall this animation be "synchronized"?
+ if (waitClose == true) {
+ // Wait for the window has been closed
+ //* DEBUG: */ alert('prefix=' + prefix + ',waitClose=' + waitClose + ' - LOCKED!');
+ closeWarningLocked();
+ } // END - if
+ } // END - if
+}
+
+// A footer navigation button has been clicked
+function doFooterPage (prefix, htmlId, button) {
+ //* DEBUG: */ alert('doFooterPage(): prefix=' + prefix + ',htmlId=' + htmlId + ',button=' + button + ' - ENTERED!');
+ // Has something being changed?
+ if (formChanged == true) {
+ // Output message to browser
+ displayChangedWarningWindow(prefix, button);
+
+ // Abort here
+ return;
+ } // END - if
+
+ // Do we have a 'next' entry?
+ //* DEBUG: */ alert('doFooterPage(): button=' + button + ',currentTabId=' + currentTabId + ',nextPage[currentTabId]=' + nextPage[currentTabId]);
+ if ((button == 'next') && (nextPage[currentTabId] != null)) {
+ // Then call the AJAX requester
+ requestAjaxContent(prefix, htmlId, nextPage[currentTabId]);
+ } else if ((button == 'previous') && (previousPage[currentTabId] != null)) {
+ // Then call the AJAX requester
+ requestAjaxContent(prefix, htmlId, previousPage[currentTabId]);
+ }
+}
+
+// Allows to save made changes (this will be called if the onchange event has been triggered)
+function allowSaveChanges (element) {
+ // Mark element as changed, unmark as failed
+ $('#' + element).addClass('field_changed');
+ $('#' + element).removeClass('field_failed');
+
+ // Is the element not there?
+ if (!in_array(element, changedElements)) {
+ // Mark the form as changed
+ formChanged = true;
+
+ // Make the 'Save changes' button clickable
+ enableElement('#' + saveChangesId);
+
+ // Remember this for later AJAX call
+ changedElements.push(element);
+ } // END - if
+}
+
+// Marks all elements as unchanged/not failed
+function markAllElementsAsUnchanged () {
+ // Remove status from all fields
+ for (var i = 0; i < changedElements.length; i++) {
+ // Mark the element as changed
+ $('#' + changedElements[i]).removeClass('field_changed');
+ $('#' + changedElements[i]).removeClass('field_failed');
+ } // END - for
+}
+
+// Function to reset the form
+function resetMailerAjaxForm () {
+ // Debug message
+ //* DEBUG: */ alert('resetMailerAjaxForm(): changedElements()=' + changedElements.length + ',saveChangesId=' + saveChangesId + ' - ENTERED!');
+
+ // Mark all elements as unchanged
+ markAllElementsAsUnchanged();
+
+ // Clear all changed elements
+ disableElement('input#' + saveChangesId);
+
+ // Reset changed elements and mark form as not changed
+ changedElements = new Array();
+ formChanged = false;
+}
+
+// Mark given fields as failed
+function markFormFieldsFailed (failedFields) {
+ // Mark all elements as failed
+ $.each(failedFields, function (i, field) {
+ // Mark the element as 'failed'
+ $('#' + field).removeClass('field_changed');
+ $('#' + field).addClass('field_failed');
+
+ // Also register it as 'changed', if not found
+ if (!in_array(field, changedElements)) {
+ // Okay, not yet added, so push it on the array
+ changedElements.push(field);
+ } // END - if
+ });
+}
+
+// Processes the content from AJAX call
+function processAjaxResponseContent (prefix, ajax_content) {
+ // By default all is failed
+ var isResponseDone = false;
+
+ // Is 'status' and 'message' set?
+ if ((ajax_content.status == undefined) || (ajax_content.message == undefined)) {
+ // No status/message set
+ lastErrorMessage = 'Returned content does not provide $status$ or $message$ which is required.';
+ } else if ((ajax_content.status != 'done') && (ajax_content.status != 'failed')) {
+ // This is also not good, only 'failed' or 'done' is supported
+ lastErrorMessage = ajax_content.message + '<br />\nAdditionally an unknown status ' + ajax_content.status + ' was detected.';
+ } else if (ajax_content.status == 'failed') {
+ // Something bad went wrong so copy the message
+ lastErrorMessage = ajax_content.message;
+ } else {
+ // All fine
+ isResponseDone = true;
+ }
+
+ // Return status
+ return isResponseDone;
+}
+
+// Saves changes by sending the data to the AJAX backend script
+function saveChanges (prefix) {
+ // Mark all elements as unchanged
+ markAllElementsAsUnchanged();
+
+ // Do we have changed elements
+ if (changedElements.length == 0) {
+ // This should not happen
+ displayErrorWindow(prefix, '<div class="ajax_error_message">saveChanges() called with no changed elements.</div>');
+ } else if (saveChangesId == null) {
+ // saveChangesId is not det
+ displayErrorWindow(prefix, '<div class="ajax_error_message">saveChangesId is not set. Please add <em>saveChanges = \'foo_bar\';</em> to your code.</div>');
+ }
+
+ // Serialize the whole form
+ var serializedData = $('form').serialize();
+
+ // Hold the ready status
+ $.holdReady(true);
+ saveChangesPending = true;
+
+ /*
+ * Send the request to the AJAX backend, it doesn't matter from which page
+ * this was requested.
+ */
+ if (sendAjaxRequest(prefix, 'save_changes', '&tab=' + currentTabId + '&' + serializedData, true) == true) {
+ // Get the content
+ var ajax_content = getAjaxContent();
+
+ // Process the returned content
+ if (processAjaxResponseContent(prefix, ajax_content) == true) {
+ // Mark all elements as unchanged
+ markAllElementsAsUnchanged();
+
+ // Reset form
+ resetMailerAjaxForm();
+ } else {
+ // Do we have 'failed_fields' set?
+ if ((ajax_content.failed_fields != undefined) && (ajax_content.message != undefined)) {
+ // Mark all fields as 'failed'
+ markFormFieldsFailed(ajax_content.failed_fields);
+
+ // Display the error message
+ displayErrorWindow(prefix, '<div class="ajax_error_message">' + ajax_content.message + '</div>');
+ } else {
+ // This didn't work, why?
+ displayErrorWindow(prefix, '<div class="ajax_error_message">processAjaxResponseContent() failed, please fix this.<br />\n' + lastErrorMessage + '</div>');
+ }
+ }
+
+ // Saving changes may have worked
+ saveChangesPending = false;
+ } else {
+ // Mark all elements as unchanged
+ markAllElementsAsUnchanged();
+
+ // Display error message
+ displayErrorWindow(prefix, getAjaxContent());
+
+ // Saving changes didn't work
+ saveChangesPending = false;
+ }
+
+ // Wait for all has finished
+ saveChangesLocked();
+}
+
+// Waiting for resources being loaded
+function saveChangesLocked () {
+ // Has all been loaded?
+ if (saveChangesPending == false) {
+ // Then release ready()
+ $.holdReady(false);
+ } else {
+ // Recursive call again
+ window.setTimeout('saveChangesLocked()', 10);
+ }
+}
+
+// Saves changed settings and continues with given page (next/previous)
+function doSaveChangesPage (prefix, htmlId, page) {
+ // Save the changes
+ saveChanges(prefix);
+
+ // Close the window
+ //* DEBUG: */ alert('doSaveChangesPage(): prefix=' + prefix + ',htmlId=' + htmlId + ',page=' + page + ' - calling closeWarningWindow()');
+ closeWarningWindow(prefix, true, false);
+
+ // Load requested page
+ doFooterPage(prefix, htmlId, page);
+}
+
+// Saves changed settings and continues with given tab
+function doSaveChangesContinue (prefix, htmlId, tab) {
+ // Save the changes
+ saveChanges(prefix);
+
+ // Close the window
+ //* DEBUG: */ alert('doSaveChangesPage(): prefix=' + prefix + ',htmlId=' + htmlId + ',tab=' + tab + ' - calling closeWarningWindow()');
+ closeWarningWindow(prefix, true, false);
+
+ // Load requested content
+ requestAjaxContent(prefix, htmlId, tab);
+}
--- /dev/null
+/*
+ * JavaScript for loading more JavaScripts with AJAX
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+// Loaded scripts counter
+var resourceCounter = 0;
+
+// This array holds a copy of resources which shall be loaded
+var loadResources = new Array();
+
+// Waiting for resources being loaded
+function loadScriptsLocked () {
+ // Has all been loaded?
+ if (resourceCounter == loadResources.length) {
+ // Then release ready()
+ $.holdReady(false);
+ } else {
+ // Recursive call again
+ window.setTimeout('loadScriptsLocked()', 10);
+ }
+}
+
+// Loads more JavaScript resources
+function loadScripts (resources) {
+ // Abort here if resources is not defined
+ if (resources == undefined) {
+ // This is really bad ...
+ throw new 'loadScripts() called with no resources (JavaScript files) to load!';
+ } // END - if
+
+ // Make ready() as holded
+ $.holdReady(true);
+
+ // Transfer all resources to global array
+ loadResources = resources;
+
+ // Begin the loop for all JavaScript files
+ for (var i = 0; i < resources.length; i++) {
+ // Is the script set?
+ if (resources[i] == undefined) {
+ // Array element is missing, which means someone mades a boo boo ...
+ throw new ('resources[' + i + '] not set. Please fix your array.');
+ } // END - if
+
+ // Load next script
+ $.getScript(resources[i], function (data, textStatus) {
+ // Did something bad happen?
+ if (textStatus != 'success') {
+ // Throw an exception here
+ throw new 'Cannot load script ' + resources[i] + ' with status ' + textStatus + '!';
+ } // END - if
+
+ // Count it as loaded
+ resourceCounter++;
+ });
+ } // END - for
+
+ // Wait until all scripts are loaded (asynchronously)
+ loadScriptsLocked();
+
+ // All loaded
+ return true;
+}
--- /dev/null
+/*
+ * JavaScript for testing the browser of AJAX-compatiblity
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+// Everthing starts with 3 seconds by default
+var counter = 3;
+
+// Get the element
+var element = document.getElementById('counter');
+
+// Holding the interval
+var ajaxTest = null;
+
+// Countdown function
+function ajaxTestCounter () {
+ // Do we have element set?
+ if (element != null) {
+ // Yes, then set the new counter value
+ element.innerHTML = counter;
+ } // END - if
+
+ // Do we have reached zero?
+ if (counter < 1) {
+ // Clear the interval
+ clearInterval(ajaxTest);
+
+ // Try to open AJAX window
+ try {
+ // Is the test passed?
+ displayTestWindow('install', '#ajax_installer');
+ } catch (e) {
+ // Exception caught (very bad, AJAX is not working)
+ alert(e);
+ }
+ } else {
+ // Count one down
+ counter--;
+ }
+}
+
+// Init counter test
+function initAjaxTest () {
+ // Start the test
+ ajaxTest = window.setInterval('ajaxTestCounter()', 1000);
+}
+
+// Start the test
+initAjaxTest();
--- /dev/null
+/**
+ * JavaScript for core functions
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+// Function similar to PHP's function, except it checks only numeric indexes
+function in_array (needle, heystack) {
+ // By default it is not found
+ var isInArray = false;
+
+ // Check all elements
+ for (var i = 0; i < heystack.length; i++) {
+ // Is the element found?
+ if (heystack[i] == needle) {
+ // Found it and abort
+ isInArray = true;
+ break;
+ } // END - if
+ } // END - if
+
+ // Return status
+ return isInArray;
+}
+
+// Function similar to PHP's urldecode() function
+function decodeUrlEncoding (content) {
+ // Replace plus signs with spaces
+ var removedPlus = (content + '').replace(/\+/g, '%20');
+
+ // Decode it
+ var decoded = decodeURIComponent(removedPlus);
+
+ // Return it
+ return decoded;
+}
--- /dev/null
+/*
+ * JavaScript for common installer functions
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+// Switches instaler by redirecting
+function switchInstaller (installer) {
+ // Switch installer
+ document.location.href='install.php?installer=' + installer;
+}
--- /dev/null
+/**
+ * JavaScript for installation menu data
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+// Init index->page translation array
+var indexTranslation = new Array();
+
+// Add all index->page translations:
+indexTranslation[0] = 'welcome';
+indexTranslation[1] = 'base_data';
+indexTranslation[2] = 'database_config';
+indexTranslation[3] = 'smtp_config';
+indexTranslation[4] = 'other_config';
+indexTranslation[5] = 'overview';
+indexTranslation[6] = 'finish';
+
+// 'next page' linking, key is current page, value is the next page
+var nextPage = new Array();
+
+// Add all 'next page' entries
+nextPage['welcome'] = 'base_data';
+nextPage['base_data'] = 'database_config';
+nextPage['database_config'] = 'smtp_config';
+nextPage['smtp_config'] = 'other_config';
+nextPage['other_config'] = 'overview';
+nextPage['overview'] = 'finish';
+
+// 'previous page' linking, key is current page, value is the previous page
+var previousPage = new Array();
+
+// Add all 'previous page' entries
+previousPage['base_data'] = 'welcome';
+previousPage['database_config'] = 'base_data';
+previousPage['smtp_config'] = 'database_config';
+previousPage['other_config'] = 'smtp_config';
+previousPage['overview'] = 'other_config';
+previousPage['finish'] = 'overview';
--- /dev/null
+/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.core.js
+* Copyright (c) 2012 JQUERY-AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.23",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a("<a>").outerWidth(1).jquery||a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.curCSS||(a.curCSS=a.css),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.widget.js
+* Copyright (c) 2012 JQUERY-AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.mouse.js
+* Copyright (c) 2012 JQUERY-AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent"))return a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(b){if(c)return;this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted)return b.preventDefault(),!0}return!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0,!0},_mouseMove:function(b){return!a.browser.msie||document.documentMode>=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.draggable.js
+* Copyright (c) 2012 JQUERY-AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!this.element.data("draggable"))return;return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options;return this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(b),this.handle?(c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!0)},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1)return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);var d=this.element[0],e=!1;while(d&&(d=d.parentNode))d==document&&(e=!0);if(!e&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",b)!==!1&&f._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){return this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;return a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)}),c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute"),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){return d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.23"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!e.length)return;var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);;/*! jQuery UI - v1.8.23 - 2012-08-15
+* https://github.com/jquery/jquery-ui
+* Includes: jquery.ui.droppable.js
+* Copyright (c) 2012 JQUERY-AUTHORS.txt; Licensed MIT, GPL */
+(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);return this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable"),this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return;this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance))return e=!0,!1}),e?!1:this.accept.call(this.element[0],d.currentItem||d.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d)),this.element):!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.23"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();g:for(var h=0;h<d.length;h++){if(d[h].options.disabled||b&&!d[h].accept.call(d[h].element[0],b.currentItem||b.element))continue;for(var i=0;i<f.length;i++)if(f[i]==d[h].element[0]){d[h].proportions.height=0;continue g}d[h].visible=d[h].element.css("display")!="none";if(!d[h].visible)continue;e=="mousedown"&&d[h]._activate.call(d[h],c),d[h].offset=d[h].element.offset(),d[h].proportions={width:d[h].element[0].offsetWidth,height:d[h].element[0].offsetHeight}}},drop:function(b,c){var d=!1;return a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c))}),d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);;
\ No newline at end of file
-/*!
- * jQuery JavaScript Library v1.6.2
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Thu Jun 30 14:16:56 2011 -0400
- */
-(function( window, undefined ) {
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
- navigator = window.navigator,
- location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // A simple way to check for HTML strings or ID strings
- // (both of which we optimize for)
- quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
-
- // Used for trimming whitespace
- trimLeft = /^\s+/,
- trimRight = /\s+$/,
-
- // Check for digits
- rdigit = /\d/,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
- // Useragent RegExp
- rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
- // Matches dashed string for camelizing
- rdashAlpha = /-([a-z])/ig,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
- },
-
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
-
- // For matching the engine and version of the browser
- browserMatch,
-
- // The deferred used on DOM ready
- readyList,
-
- // The ready event handler
- DOMContentLoaded,
-
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- trim = String.prototype.trim,
- indexOf = Array.prototype.indexOf,
-
- // [[Class]] -> type pairs
- class2type = {};
-
-jQuery.fn = jQuery.prototype = {
- constructor: jQuery,
- init: function( selector, context, rootjQuery ) {
- var match, elem, ret, doc;
-
- // Handle $(""), $(null), or $(undefined)
- if ( !selector ) {
- return this;
- }
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context && document.body ) {
- this.context = document;
- this[0] = document.body;
- this.selector = selector;
- this.length = 1;
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = quickExpr.exec( selector );
- }
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- context = context instanceof jQuery ? context[0] : context;
- doc = (context ? context.ownerDocument || context : document);
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
-
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
-
- } else {
- selector = [ doc.createElement( ret[1] ) ];
- }
-
- } else {
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
- selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $("#id")
- } else {
- elem = document.getElementById( match[2] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return (context || rootjQuery).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if (selector.selector !== undefined) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.6.2",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return slice.call( this, 0 );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = this.constructor();
-
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" ) {
- ret.selector = this.selector + (this.selector ? " " : "") + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Attach the listeners
- jQuery.bindReady();
-
- // Add the callback
- readyList.done( fn );
-
- return this;
- },
-
- eq: function( i ) {
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, +i + 1 );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || this.constructor(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
- // Either a released hold or an DOMready/load event and not yet ready
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.resolveWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger( "ready" ).unbind( "ready" );
- }
- }
- },
-
- bindReady: function() {
- if ( readyList ) {
- return;
- }
-
- readyList = jQuery._Deferred();
-
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
-
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
-
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return jQuery.type(obj) === "function";
- },
-
- isArray: Array.isArray || function( obj ) {
- return jQuery.type(obj) === "array";
- },
-
- // A crude way of determining if an object is a window
- isWindow: function( obj ) {
- return obj && typeof obj === "object" && "setInterval" in obj;
- },
-
- isNaN: function( obj ) {
- return obj == null || !rdigit.test( obj ) || isNaN( obj );
- },
-
- type: function( obj ) {
- return obj == null ?
- String( obj ) :
- class2type[ toString.call(obj) ] || "object";
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !hasOwn.call(obj, "constructor") &&
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || hasOwn.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- for ( var name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw msg;
- },
-
- parseJSON: function( data ) {
- if ( typeof data !== "string" || !data ) {
- return null;
- }
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Attempt to parse using the native JSON parser first
- if ( window.JSON && window.JSON.parse ) {
- return window.JSON.parse( data );
- }
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
-
- return (new Function( "return " + data ))();
-
- }
- jQuery.error( "Invalid JSON: " + data );
- },
-
- // Cross-browser xml parsing
- // (xml & tmp used internally)
- parseXML: function( data , xml , tmp ) {
-
- if ( window.DOMParser ) { // Standard
- tmp = new DOMParser();
- xml = tmp.parseFromString( data , "text/xml" );
- } else { // IE
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
- xml.async = "false";
- xml.loadXML( data );
- }
-
- tmp = xml.documentElement;
-
- if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
- jQuery.error( "Invalid XML: " + data );
- }
-
- return xml;
- },
-
- noop: function() {},
-
- // Evaluates a script in a global context
- // Workarounds based on findings by Jim Driscoll
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
- globalEval: function( data ) {
- if ( data && rnotwhite.test( data ) ) {
- // We use execScript on Internet Explorer
- // We use an anonymous function so that context is window
- // rather than jQuery in Firefox
- ( window.execScript || function( data ) {
- window[ "eval" ].call( window, data );
- } )( data );
- }
- },
-
- // Converts a dashed string to camelCased string;
- // Used by both the css and data modules
- camelCase: function( string ) {
- return string.replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction( object );
-
- if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
- break;
- }
- }
- }
- }
-
- return object;
- },
-
- // Use native String.trim function wherever possible
- trim: trim ?
- function( text ) {
- return text == null ?
- "" :
- trim.call( text );
- } :
-
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
- },
-
- // results is for internal usage only
- makeArray: function( array, results ) {
- var ret = results || [];
-
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // The extra typeof function check is to prevent crashes
- // in Safari 2 (See: #3039)
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- var type = jQuery.type( array );
-
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
- push.call( ret, array );
- } else {
- jQuery.merge( ret, array );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, array ) {
-
- if ( indexOf ) {
- return indexOf.call( array, elem );
- }
-
- for ( var i = 0, length = array.length; i < length; i++ ) {
- if ( array[ i ] === elem ) {
- return i;
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var i = first.length,
- j = 0;
-
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [], retVal;
- inv = !!inv;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var value, key, ret = [],
- i = 0,
- length = elems.length,
- // jquery objects are treated as arrays
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
- // Go through the array, translating each of the items to their
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( key in elems ) {
- value = callback( elems[ key ], key, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- }
-
- // Flatten any nested arrays
- return ret.concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- if ( typeof context === "string" ) {
- var tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- var args = slice.call( arguments, 2 ),
- proxy = function() {
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
- return proxy;
- },
-
- // Mutifunctional method to get and set values to a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- jQuery.access( elems, k, key[k], exec, fn, value );
- }
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
-
- return elems;
- }
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
- },
-
- now: function() {
- return (new Date()).getTime();
- },
-
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
-
- var match = rwebkit.exec( ua ) ||
- ropera.exec( ua ) ||
- rmsie.exec( ua ) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
- [];
-
- return { browser: match[1] || "", version: match[2] || "0" };
- },
-
- sub: function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
-
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- return jQuerySub;
- },
-
- browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
- trimLeft = /^[\s\xA0]+/;
- trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
-
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
-
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch(e) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
-
- // and execute any waiting functions
- jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-var // Promise methods
- promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ),
- // Static reference to slice
- sliceDeferred = [].slice;
-
-jQuery.extend({
- // Create a simple deferred (one callbacks list)
- _Deferred: function() {
- var // callbacks list
- callbacks = [],
- // stored [ context , args ]
- fired,
- // to avoid firing when already doing so
- firing,
- // flag to know if the deferred has been cancelled
- cancelled,
- // the deferred itself
- deferred = {
-
- // done( f1, f2, ...)
- done: function() {
- if ( !cancelled ) {
- var args = arguments,
- i,
- length,
- elem,
- type,
- _fired;
- if ( fired ) {
- _fired = fired;
- fired = 0;
- }
- for ( i = 0, length = args.length; i < length; i++ ) {
- elem = args[ i ];
- type = jQuery.type( elem );
- if ( type === "array" ) {
- deferred.done.apply( deferred, elem );
- } else if ( type === "function" ) {
- callbacks.push( elem );
- }
- }
- if ( _fired ) {
- deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
- }
- }
- return this;
- },
-
- // resolve with given context and args
- resolveWith: function( context, args ) {
- if ( !cancelled && !fired && !firing ) {
- // make sure args are available (#8421)
- args = args || [];
- firing = 1;
- try {
- while( callbacks[ 0 ] ) {
- callbacks.shift().apply( context, args );
- }
- }
- finally {
- fired = [ context, args ];
- firing = 0;
- }
- }
- return this;
- },
-
- // resolve with this as context and given arguments
- resolve: function() {
- deferred.resolveWith( this, arguments );
- return this;
- },
-
- // Has this deferred been resolved?
- isResolved: function() {
- return !!( firing || fired );
- },
-
- // Cancel
- cancel: function() {
- cancelled = 1;
- callbacks = [];
- return this;
- }
- };
-
- return deferred;
- },
-
- // Full fledged deferred (two callbacks list)
- Deferred: function( func ) {
- var deferred = jQuery._Deferred(),
- failDeferred = jQuery._Deferred(),
- promise;
- // Add errorDeferred methods, then and promise
- jQuery.extend( deferred, {
- then: function( doneCallbacks, failCallbacks ) {
- deferred.done( doneCallbacks ).fail( failCallbacks );
- return this;
- },
- always: function() {
- return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );
- },
- fail: failDeferred.done,
- rejectWith: failDeferred.resolveWith,
- reject: failDeferred.resolve,
- isRejected: failDeferred.isResolved,
- pipe: function( fnDone, fnFail ) {
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( {
- done: [ fnDone, "resolve" ],
- fail: [ fnFail, "reject" ]
- }, function( handler, data ) {
- var fn = data[ 0 ],
- action = data[ 1 ],
- returned;
- if ( jQuery.isFunction( fn ) ) {
- deferred[ handler ](function() {
- returned = fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise().then( newDefer.resolve, newDefer.reject );
- } else {
- newDefer[ action ]( returned );
- }
- });
- } else {
- deferred[ handler ]( newDefer[ action ] );
- }
- });
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- if ( obj == null ) {
- if ( promise ) {
- return promise;
- }
- promise = obj = {};
- }
- var i = promiseMethods.length;
- while( i-- ) {
- obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
- }
- return obj;
- }
- });
- // Make sure only one callback list will be used
- deferred.done( failDeferred.cancel ).fail( deferred.cancel );
- // Unexpose cancel
- delete deferred.cancel;
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
- return deferred;
- },
-
- // Deferred helper
- when: function( firstParam ) {
- var args = arguments,
- i = 0,
- length = args.length,
- count = length,
- deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
- firstParam :
- jQuery.Deferred();
- function resolveFunc( i ) {
- return function( value ) {
- args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- if ( !( --count ) ) {
- // Strange bug in FF4:
- // Values changed onto the arguments object sometimes end up as undefined values
- // outside the $.when method. Cloning the object into a fresh array solves the issue
- deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
- }
- };
- }
- if ( length > 1 ) {
- for( ; i < length; i++ ) {
- if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
- args[ i ].promise().then( resolveFunc(i), deferred.reject );
- } else {
- --count;
- }
- }
- if ( !count ) {
- deferred.resolveWith( deferred, args );
- }
- } else if ( deferred !== firstParam ) {
- deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
- }
- return deferred.promise();
- }
-});
-
-
-
-jQuery.support = (function() {
-
- var div = document.createElement( "div" ),
- documentElement = document.documentElement,
- all,
- a,
- select,
- opt,
- input,
- marginDiv,
- support,
- fragment,
- body,
- testElementParent,
- testElement,
- testElementStyle,
- tds,
- events,
- eventName,
- i,
- isSupported;
-
- // Preliminary tests
- div.setAttribute("className", "t");
- div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
- all = div.getElementsByTagName( "*" );
- a = div.getElementsByTagName( "a" )[ 0 ];
-
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return {};
- }
-
- // First batch of supports tests
- select = document.createElement( "select" );
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName( "input" )[ 0 ];
-
- support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName( "tbody" ).length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName( "link" ).length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55$/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: ( input.value === "on" ),
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // Will be defined later
- submitBubbles: true,
- changeBubbles: true,
- focusinBubbles: false,
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true
- };
-
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
-
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
- }
-
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
- div.attachEvent( "onclick", function() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- support.noCloneEvent = false;
- });
- div.cloneNode( true ).fireEvent( "onclick" );
- }
-
- // Check if a radio maintains it's value
- // after being appended to the DOM
- input = document.createElement("input");
- input.value = "t";
- input.setAttribute("type", "radio");
- support.radioValue = input.value === "t";
-
- input.setAttribute("checked", "checked");
- div.appendChild( input );
- fragment = document.createDocumentFragment();
- fragment.appendChild( div.firstChild );
-
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- div.innerHTML = "";
-
- // Figure out if the W3C box model works as expected
- div.style.width = div.style.paddingLeft = "1px";
-
- body = document.getElementsByTagName( "body" )[ 0 ];
- // We use our own, invisible, body unless the body is already present
- // in which case we use a div (#9239)
- testElement = document.createElement( body ? "div" : "body" );
- testElementStyle = {
- visibility: "hidden",
- width: 0,
- height: 0,
- border: 0,
- margin: 0
- };
- if ( body ) {
- jQuery.extend( testElementStyle, {
- position: "absolute",
- left: -1000,
- top: -1000
- });
- }
- for ( i in testElementStyle ) {
- testElement.style[ i ] = testElementStyle[ i ];
- }
- testElement.appendChild( div );
- testElementParent = body || documentElement;
- testElementParent.insertBefore( testElement, testElementParent.firstChild );
-
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
-
- support.boxModel = div.offsetWidth === 2;
-
- if ( "zoom" in div.style ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.style.display = "inline";
- div.style.zoom = 1;
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
-
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "";
- div.innerHTML = "<div style='width:4px;'></div>";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
- }
-
- div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
- tds = div.getElementsByTagName( "td" );
-
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Check if empty table cells still have offsetWidth/Height
- // (IE < 8 fail this test)
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
- div.innerHTML = "";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- if ( document.defaultView && document.defaultView.getComputedStyle ) {
- marginDiv = document.createElement( "div" );
- marginDiv.style.width = "0";
- marginDiv.style.marginRight = "0";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
- }
-
- // Remove the body element we added
- testElement.innerHTML = "";
- testElementParent.removeChild( testElement );
-
- // Technique from Juriy Zaytsev
- // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
- // We only care about the case where non-standard event systems
- // are used, namely in IE. Short-circuiting here helps us to
- // avoid an eval call (in setAttribute) which can cause CSP
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
- if ( div.attachEvent ) {
- for( i in {
- submit: 1,
- change: 1,
- focusin: 1
- } ) {
- eventName = "on" + i;
- isSupported = ( eventName in div );
- if ( !isSupported ) {
- div.setAttribute( eventName, "return;" );
- isSupported = ( typeof div[ eventName ] === "function" );
- }
- support[ i + "Bubbles" ] = isSupported;
- }
- }
-
- // Null connected elements to avoid leaks in IE
- testElement = fragment = select = opt = body = marginDiv = div = input = null;
-
- return support;
-})();
-
-// Keep track of boxModel
-jQuery.boxModel = jQuery.support.boxModel;
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
- rmultiDash = /([a-z])([A-Z])/g;
-
-jQuery.extend({
- cache: {},
-
- // Please use with caution
- uuid: 0,
-
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
-
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
-
- return !!elem && !isEmptyDataObject( elem );
- },
-
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
-
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
-
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
-
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
-
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
- return;
- }
-
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ jQuery.expando ] = id = ++jQuery.uuid;
- } else {
- id = jQuery.expando;
- }
- }
-
- if ( !cache[ id ] ) {
- cache[ id ] = {};
-
- // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
- // metadata on plain JS objects when the object is serialized using
- // JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
-
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
- } else {
- cache[ id ] = jQuery.extend(cache[ id ], name);
- }
- }
-
- thisCache = cache[ id ];
-
- // Internal jQuery data is stored in a separate object inside the object's data
- // cache in order to avoid key collisions between internal data and user-defined
- // data
- if ( pvt ) {
- if ( !thisCache[ internalKey ] ) {
- thisCache[ internalKey ] = {};
- }
-
- thisCache = thisCache[ internalKey ];
- }
-
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
-
- // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
- // not attempt to inspect the internal events object using jQuery.data, as this
- // internal data object is undocumented and subject to change.
- if ( name === "events" && !thisCache[name] ) {
- return thisCache[ internalKey ] && thisCache[ internalKey ].events;
- }
-
- return getByName ?
- // Check for both converted-to-camel and non-converted data property names
- thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] :
- thisCache;
- },
-
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var internalKey = jQuery.expando, isNode = elem.nodeType,
-
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
-
- // See jQuery.data for more information
- id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
-
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
-
- if ( name ) {
- var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
-
- if ( thisCache ) {
- delete thisCache[ name ];
-
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !isEmptyDataObject(thisCache) ) {
- return;
- }
- }
- }
-
- // See jQuery.data for more information
- if ( pvt ) {
- delete cache[ id ][ internalKey ];
-
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject(cache[ id ]) ) {
- return;
- }
- }
-
- var internalCache = cache[ id ][ internalKey ];
-
- // Browsers that fail expando deletion also refuse to delete expandos on
- // the window, but it will allow it on all other JS objects; other browsers
- // don't care
- if ( jQuery.support.deleteExpando || cache != window ) {
- delete cache[ id ];
- } else {
- cache[ id ] = null;
- }
-
- // We destroyed the entire user cache at once because it's faster than
- // iterating through each key, but we need to continue to persist internal
- // data if it existed
- if ( internalCache ) {
- cache[ id ] = {};
- // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
- // metadata on plain JS objects when the object is serialized using
- // JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
-
- cache[ id ][ internalKey ] = internalCache;
-
- // Otherwise, we need to eliminate the expando on the node to avoid
- // false lookups in the cache for entries that no longer exist
- } else if ( isNode ) {
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( jQuery.support.deleteExpando ) {
- delete elem[ jQuery.expando ];
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( jQuery.expando );
- } else {
- elem[ jQuery.expando ] = null;
- }
- }
- },
-
- // For internal use only.
- _data: function( elem, name, data ) {
- return jQuery.data( elem, name, data, true );
- },
-
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- if ( elem.nodeName ) {
- var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
- if ( match ) {
- return !(match === true || elem.getAttribute("classid") !== match);
- }
- }
-
- return true;
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- var data = null;
-
- if ( typeof key === "undefined" ) {
- if ( this.length ) {
- data = jQuery.data( this[0] );
-
- if ( this[0].nodeType === 1 ) {
- var attr = this[0].attributes, name;
- for ( var i = 0, l = attr.length; i < l; i++ ) {
- name = attr[i].name;
-
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.substring(5) );
-
- dataAttr( this[0], name, data[ name ] );
- }
- }
- }
- }
-
- return data;
-
- } else if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- var parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- // Try to fetch any internally stored data first
- if ( data === undefined && this.length ) {
- data = jQuery.data( this[0], key );
- data = dataAttr( this[0], key, data );
- }
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
-
- } else {
- return this.each(function() {
- var $this = jQuery( this ),
- args = [ parts[0], value ];
-
- $this.triggerHandler( "setData" + parts[1] + "!", args );
- jQuery.data( this, key, value );
- $this.triggerHandler( "changeData" + parts[1] + "!", args );
- });
- }
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
- var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
-
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- !jQuery.isNaN( data ) ? parseFloat( data ) :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
-
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
-
- } else {
- data = undefined;
- }
- }
-
- return data;
-}
-
-// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
-// property to be considered empty objects; this property always exists in
-// order to make sure JSON.stringify does not expose internal metadata
-function isEmptyDataObject( obj ) {
- for ( var name in obj ) {
- if ( name !== "toJSON" ) {
- return false;
- }
- }
-
- return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
- var deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- defer = jQuery.data( elem, deferDataKey, undefined, true );
- if ( defer &&
- ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&
- ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {
- // Give room for hard-coded callbacks to fire first
- // and eventually mark/queue something else on the element
- setTimeout( function() {
- if ( !jQuery.data( elem, queueDataKey, undefined, true ) &&
- !jQuery.data( elem, markDataKey, undefined, true ) ) {
- jQuery.removeData( elem, deferDataKey, true );
- defer.resolve();
- }
- }, 0 );
- }
-}
-
-jQuery.extend({
-
- _mark: function( elem, type ) {
- if ( elem ) {
- type = (type || "fx") + "mark";
- jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
- }
- },
-
- _unmark: function( force, elem, type ) {
- if ( force !== true ) {
- type = elem;
- elem = force;
- force = false;
- }
- if ( elem ) {
- type = type || "fx";
- var key = type + "mark",
- count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
- if ( count ) {
- jQuery.data( elem, key, count, true );
- } else {
- jQuery.removeData( elem, key, true );
- handleQueueMarkDefer( elem, type, "mark" );
- }
- }
- },
-
- queue: function( elem, type, data ) {
- if ( elem ) {
- type = (type || "fx") + "queue";
- var q = jQuery.data( elem, type, undefined, true );
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery.data( elem, type, jQuery.makeArray(data), true );
- } else {
- q.push( data );
- }
- }
- return q || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift(),
- defer;
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- }
-
- if ( fn ) {
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift("inprogress");
- }
-
- fn.call(elem, function() {
- jQuery.dequeue(elem, type);
- });
- }
-
- if ( !queue.length ) {
- jQuery.removeData( elem, type + "queue", true );
- handleQueueMarkDefer( elem, type, "queue" );
- }
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined ) {
- return jQuery.queue( this[0], type );
- }
- return this.each(function() {
- var queue = jQuery.queue( this, type, data );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
- type = type || "fx";
-
- return this.queue( type, function() {
- var elem = this;
- setTimeout(function() {
- jQuery.dequeue( elem, type );
- }, time );
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, object ) {
- if ( typeof type !== "string" ) {
- object = type;
- type = undefined;
- }
- type = type || "fx";
- var defer = jQuery.Deferred(),
- elements = this,
- i = elements.length,
- count = 1,
- deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- tmp;
- function resolve() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- }
- while( i-- ) {
- if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
- ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
- jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
- jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
- count++;
- tmp.done( resolve );
- }
- }
- resolve();
- return defer.promise();
- }
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
- rspace = /\s+/,
- rreturn = /\r/g,
- rtype = /^(?:button|input)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea)?$/i,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- rinvalidChar = /\:|^on/,
- formHook, boolHook;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.attr );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
-
- prop: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.prop );
- },
-
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
-
- addClass: function( value ) {
- var classNames, i, l, elem,
- setClass, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call(this, j, this.className) );
- });
- }
-
- if ( value && typeof value === "string" ) {
- classNames = value.split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 ) {
- if ( !elem.className && classNames.length === 1 ) {
- elem.className = value;
-
- } else {
- setClass = " " + elem.className + " ";
-
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
- setClass += classNames[ c ] + " ";
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var classNames, i, l, elem, className, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call(this, j, this.className) );
- });
- }
-
- if ( (value && typeof value === "string") || value === undefined ) {
- classNames = (value || "").split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 && elem.className ) {
- if ( value ) {
- className = (" " + elem.className + " ").replace( rclass, " " );
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[ c ] + " ", " ");
- }
- elem.className = jQuery.trim( className );
-
- } else {
- elem.className = "";
- }
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.split( rspace );
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space seperated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
- }
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ";
- for ( var i = 0, l = this.length; i < l; i++ ) {
- if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- var hooks, ret,
- elem = this[0];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
-
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return undefined;
- }
-
- var isFunction = jQuery.isFunction( value );
-
- return this.each(function( i ) {
- var self = jQuery(this), val;
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
-
- hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
- get: function( elem ) {
- var value,
- index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
- var option = options[ i ];
-
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
-
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- },
-
- attrFn: {
- val: true,
- css: true,
- html: true,
- text: true,
- data: true,
- width: true,
- height: true,
- offset: true
- },
-
- attrFix: {
- // Always normalize to ensure hook usage
- tabindex: "tabIndex"
- },
-
- attr: function( elem, name, value, pass ) {
- var nType = elem.nodeType;
-
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return undefined;
- }
-
- if ( pass && name in jQuery.attrFn ) {
- return jQuery( elem )[ name ]( value );
- }
-
- // Fallback to prop when attributes are not supported
- if ( !("getAttribute" in elem) ) {
- return jQuery.prop( elem, name, value );
- }
-
- var ret, hooks,
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // Normalize the name if needed
- if ( notxml ) {
- name = jQuery.attrFix[ name ] || name;
-
- hooks = jQuery.attrHooks[ name ];
-
- if ( !hooks ) {
- // Use boolHook for boolean attributes
- if ( rboolean.test( name ) ) {
-
- hooks = boolHook;
-
- // Use formHook for forms and if the name contains certain characters
- } else if ( formHook && name !== "className" &&
- (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
-
- hooks = formHook;
- }
- }
- }
-
- if ( value !== undefined ) {
-
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return undefined;
-
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- elem.setAttribute( name, "" + value );
- return value;
- }
-
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
-
- ret = elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return ret === null ?
- undefined :
- ret;
- }
- },
-
- removeAttr: function( elem, name ) {
- var propName;
- if ( elem.nodeType === 1 ) {
- name = jQuery.attrFix[ name ] || name;
-
- if ( jQuery.support.getSetAttribute ) {
- // Use removeAttribute in browsers that support it
- elem.removeAttribute( name );
- } else {
- jQuery.attr( elem, name, "" );
- elem.removeAttributeNode( elem.getAttributeNode( name ) );
- }
-
- // Set corresponding property to false for boolean attributes
- if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
- elem[ propName ] = false;
- }
- }
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to it's default in case type is set after value
- // This is for element creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- },
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabIndex");
-
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- },
- // Use the value property for back compat
- // Use the formHook for button elements in IE6/7 (#1954)
- value: {
- get: function( elem, name ) {
- if ( formHook && jQuery.nodeName( elem, "button" ) ) {
- return formHook.get( elem, name );
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value, name ) {
- if ( formHook && jQuery.nodeName( elem, "button" ) ) {
- return formHook.set( elem, value, name );
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
- }
- },
-
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
-
- prop: function( elem, name, value ) {
- var nType = elem.nodeType;
-
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return undefined;
- }
-
- var ret, hooks,
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- return (elem[ name ] = value);
- }
-
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
- return ret;
-
- } else {
- return elem[ name ];
- }
- }
- },
-
- propHooks: {}
-});
-
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- return jQuery.prop( elem, name ) ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
-
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
- }
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !jQuery.support.getSetAttribute ) {
-
- // propFix is more comprehensive and contains all fixes
- jQuery.attrFix = jQuery.propFix;
-
- // Use this for any attribute on a form in IE6/7
- formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret;
- ret = elem.getAttributeNode( name );
- // Return undefined if nodeValue is empty string
- return ret && ret.nodeValue !== "" ?
- ret.nodeValue :
- undefined;
- },
- set: function( elem, value, name ) {
- // Check form objects in IE (multiple bugs related)
- // Only use nodeValue if the attribute node exists on the form
- var ret = elem.getAttributeNode( name );
- if ( ret ) {
- ret.nodeValue = value;
- return value;
- }
- }
- };
-
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret === null ? undefined : ret;
- }
- });
- });
-}
-
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Normalize to lowercase since IE uppercases css property names
- return elem.style.cssText.toLowerCase() || undefined;
- },
- set: function( elem, value ) {
- return (elem.style.cssText = "" + value);
- }
- };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
-
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- }
- });
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
- }
- }
- });
-});
-
-
-
-
-var rnamespaces = /\.(.*)$/,
- rformElems = /^(?:textarea|input|select)$/i,
- rperiod = /\./g,
- rspaces = / /g,
- rescape = /[^\w\s.|`]/g,
- fcleanup = function( nm ) {
- return nm.replace(rescape, "\\$&");
- };
-
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
-
- // Bind an event to an element
- // Original by Dean Edwards
- add: function( elem, types, handler, data ) {
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- if ( handler === false ) {
- handler = returnFalse;
- } else if ( !handler ) {
- // Fixes bug #7229. Fix recommended by jdalton
- return;
- }
-
- var handleObjIn, handleObj;
-
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- }
-
- // Make sure that the function being executed has a unique ID
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure
- var elemData = jQuery._data( elem );
-
- // If no elemData is found then we must be trying to bind to one of the
- // banned noData elements
- if ( !elemData ) {
- return;
- }
-
- var events = elemData.events,
- eventHandle = elemData.handle;
-
- if ( !events ) {
- elemData.events = events = {};
- }
-
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.handle.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- }
-
- // Add elem as a property of the handle function
- // This is to prevent a memory leak with non-native events in IE.
- eventHandle.elem = elem;
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = types.split(" ");
-
- var type, i = 0, namespaces;
-
- while ( (type = types[ i++ ]) ) {
- handleObj = handleObjIn ?
- jQuery.extend({}, handleObjIn) :
- { handler: handler, data: data };
-
- // Namespaced event handlers
- if ( type.indexOf(".") > -1 ) {
- namespaces = type.split(".");
- type = namespaces.shift();
- handleObj.namespace = namespaces.slice(0).sort().join(".");
-
- } else {
- namespaces = [];
- handleObj.namespace = "";
- }
-
- handleObj.type = type;
- if ( !handleObj.guid ) {
- handleObj.guid = handler.guid;
- }
-
- // Get the current list of functions bound to this event
- var handlers = events[ type ],
- special = jQuery.event.special[ type ] || {};
-
- // Init the event handler queue
- if ( !handlers ) {
- handlers = events[ type ] = [];
-
- // Check for a special event handler
- // Only use addEventListener/attachEvent if the special
- // events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add the function to the element's handler list
- handlers.push( handleObj );
-
- // Keep track of which events have been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- global: {},
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, pos ) {
- // don't do events on text and comment nodes
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- if ( handler === false ) {
- handler = returnFalse;
- }
-
- var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
- elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
- events = elemData && elemData.events;
-
- if ( !elemData || !events ) {
- return;
- }
-
- // types is actually an event object here
- if ( types && types.type ) {
- handler = types.handler;
- types = types.type;
- }
-
- // Unbind all events for the element
- if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
- types = types || "";
-
- for ( type in events ) {
- jQuery.event.remove( elem, type + types );
- }
-
- return;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).unbind("mouseover mouseout", fn);
- types = types.split(" ");
-
- while ( (type = types[ i++ ]) ) {
- origType = type;
- handleObj = null;
- all = type.indexOf(".") < 0;
- namespaces = [];
-
- if ( !all ) {
- // Namespaced event handlers
- namespaces = type.split(".");
- type = namespaces.shift();
-
- namespace = new RegExp("(^|\\.)" +
- jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
- }
-
- eventType = events[ type ];
-
- if ( !eventType ) {
- continue;
- }
-
- if ( !handler ) {
- for ( j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( all || namespace.test( handleObj.namespace ) ) {
- jQuery.event.remove( elem, origType, handleObj.handler, j );
- eventType.splice( j--, 1 );
- }
- }
-
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
-
- for ( j = pos || 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( handler.guid === handleObj.guid ) {
- // remove the given handler for the given type
- if ( all || namespace.test( handleObj.namespace ) ) {
- if ( pos == null ) {
- eventType.splice( j--, 1 );
- }
-
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
-
- if ( pos != null ) {
- break;
- }
- }
- }
-
- // remove generic event handler if no more handlers exist
- if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- ret = null;
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- var handle = elemData.handle;
- if ( handle ) {
- handle.elem = null;
- }
-
- delete elemData.events;
- delete elemData.handle;
-
- if ( jQuery.isEmptyObject( elemData ) ) {
- jQuery.removeData( elem, undefined, true );
- }
- }
- },
-
- // Events that are safe to short-circuit if no handlers are attached.
- // Native DOM events should not be added, they may have inline handlers.
- customEvent: {
- "getData": true,
- "setData": true,
- "changeData": true
- },
-
- trigger: function( event, data, elem, onlyHandlers ) {
- // Event object or event type
- var type = event.type || event,
- namespaces = [],
- exclusive;
-
- if ( type.indexOf("!") >= 0 ) {
- // Exclusive events trigger only for the exact event (no namespaces)
- type = type.slice(0, -1);
- exclusive = true;
- }
-
- if ( type.indexOf(".") >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
- }
-
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
- // No jQuery handlers for this event type, and it can't have inline handlers
- return;
- }
-
- // Caller can pass in an Event, Object, or just an event type string
- event = typeof event === "object" ?
- // jQuery.Event object
- event[ jQuery.expando ] ? event :
- // Object literal
- new jQuery.Event( type, event ) :
- // Just the event type (string)
- new jQuery.Event( type );
-
- event.type = type;
- event.exclusive = exclusive;
- event.namespace = namespaces.join(".");
- event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
-
- // triggerHandler() and global events don't bubble or run the default action
- if ( onlyHandlers || !elem ) {
- event.preventDefault();
- event.stopPropagation();
- }
-
- // Handle a global trigger
- if ( !elem ) {
- // TODO: Stop taunting the data cache; remove global events and always attach to document
- jQuery.each( jQuery.cache, function() {
- // internalKey variable is just used to make it easier to find
- // and potentially change this stuff later; currently it just
- // points to jQuery.expando
- var internalKey = jQuery.expando,
- internalCache = this[ internalKey ];
- if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
- jQuery.event.trigger( event, data, internalCache.handle.elem );
- }
- });
- return;
- }
-
- // Don't do events on text and comment nodes
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- event.target = elem;
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data != null ? jQuery.makeArray( data ) : [];
- data.unshift( event );
-
- var cur = elem,
- // IE doesn't like method names with a colon (#3533, #8272)
- ontype = type.indexOf(":") < 0 ? "on" + type : "";
-
- // Fire event on the current element, then bubble up the DOM tree
- do {
- var handle = jQuery._data( cur, "handle" );
-
- event.currentTarget = cur;
- if ( handle ) {
- handle.apply( cur, data );
- }
-
- // Trigger an inline bound script
- if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
- event.result = false;
- event.preventDefault();
- }
-
- // Bubble up to document, then to window
- cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
- } while ( cur && !event.isPropagationStopped() );
-
- // If nobody prevented the default action, do it now
- if ( !event.isDefaultPrevented() ) {
- var old,
- special = jQuery.event.special[ type ] || {};
-
- if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction)() check here because IE6/7 fails that test.
- // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
- try {
- if ( ontype && elem[ type ] ) {
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
-
- if ( old ) {
- elem[ ontype ] = null;
- }
-
- jQuery.event.triggered = type;
- elem[ type ]();
- }
- } catch ( ieError ) {}
-
- if ( old ) {
- elem[ ontype ] = old;
- }
-
- jQuery.event.triggered = undefined;
- }
- }
-
- return event.result;
- },
-
- handle: function( event ) {
- event = jQuery.event.fix( event || window.event );
- // Snapshot the handlers list since a called handler may add/remove events.
- var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0),
- run_all = !event.exclusive && !event.namespace,
- args = Array.prototype.slice.call( arguments, 0 );
-
- // Use the fix-ed Event rather than the (read-only) native event
- args[0] = event;
- event.currentTarget = this;
-
- for ( var j = 0, l = handlers.length; j < l; j++ ) {
- var handleObj = handlers[ j ];
-
- // Triggered event must 1) be non-exclusive and have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event.
- if ( run_all || event.namespace_re.test( handleObj.namespace ) ) {
- // Pass in a reference to the handler function itself
- // So that we can later remove it
- event.handler = handleObj.handler;
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- var ret = handleObj.handler.apply( this, args );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
-
- if ( event.isImmediatePropagationStopped() ) {
- break;
- }
- }
- }
- return event.result;
- },
-
- props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // store a copy of the original event object
- // and "clone" to set read-only properties
- var originalEvent = event;
- event = jQuery.Event( originalEvent );
-
- for ( var i = this.props.length, prop; i; ) {
- prop = this.props[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary
- if ( !event.target ) {
- // Fixes #1925 where srcElement might not be defined either
- event.target = event.srcElement || document;
- }
-
- // check if target is a textnode (safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && event.fromElement ) {
- event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
- }
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && event.clientX != null ) {
- var eventDocument = event.target.ownerDocument || document,
- doc = eventDocument.documentElement,
- body = eventDocument.body;
-
- event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
- event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
- }
-
- // Add which for key events
- if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
- event.which = event.charCode != null ? event.charCode : event.keyCode;
- }
-
- // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
- if ( !event.metaKey && event.ctrlKey ) {
- event.metaKey = event.ctrlKey;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && event.button !== undefined ) {
- event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
- }
-
- return event;
- },
-
- // Deprecated, use jQuery.guid instead
- guid: 1E8,
-
- // Deprecated, use jQuery.proxy instead
- proxy: jQuery.proxy,
-
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: jQuery.bindReady,
- teardown: jQuery.noop
- },
-
- live: {
- add: function( handleObj ) {
- jQuery.event.add( this,
- liveConvert( handleObj.origType, handleObj.selector ),
- jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
- },
-
- remove: function( handleObj ) {
- jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
- }
- },
-
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( jQuery.isWindow( this ) ) {
- this.onbeforeunload = eventHandle;
- }
- },
-
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
- }
- }
- }
- }
-};
-
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- if ( elem.detachEvent ) {
- elem.detachEvent( "on" + type, handle );
- }
- };
-
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !this.preventDefault ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // timeStamp is buggy for some events on Firefox(#3843)
- // So we won't rely on the native value
- this.timeStamp = jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
-
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
-
- // otherwise set the returnValue property of the original event to false (IE)
- } else {
- e.returnValue = false;
- }
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function( event ) {
-
- // Check if mouse(over|out) are still within the same parent element
- var related = event.relatedTarget,
- inside = false,
- eventType = event.type;
-
- event.type = event.data;
-
- if ( related !== this ) {
-
- if ( related ) {
- inside = jQuery.contains( this, related );
- }
-
- if ( !inside ) {
-
- jQuery.event.handle.apply( this, arguments );
-
- event.type = eventType;
- }
- }
-},
-
-// In case of event delegation, we only need to rename the event.type,
-// liveHandler will take care of the rest.
-delegate = function( event ) {
- event.type = event.data;
- jQuery.event.handle.apply( this, arguments );
-};
-
-// Create mouseenter and mouseleave events
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- setup: function( data ) {
- jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
- },
- teardown: function( data ) {
- jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
- }
- };
-});
-
-// submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function( data, namespaces ) {
- if ( !jQuery.nodeName( this, "form" ) ) {
- jQuery.event.add(this, "click.specialSubmit", function( e ) {
- var elem = e.target,
- type = elem.type;
-
- if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
- trigger( "submit", this, arguments );
- }
- });
-
- jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
- var elem = e.target,
- type = elem.type;
-
- if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
- trigger( "submit", this, arguments );
- }
- });
-
- } else {
- return false;
- }
- },
-
- teardown: function( namespaces ) {
- jQuery.event.remove( this, ".specialSubmit" );
- }
- };
-
-}
-
-// change delegation, happens here so we have bind.
-if ( !jQuery.support.changeBubbles ) {
-
- var changeFilters,
-
- getVal = function( elem ) {
- var type = elem.type, val = elem.value;
-
- if ( type === "radio" || type === "checkbox" ) {
- val = elem.checked;
-
- } else if ( type === "select-multiple" ) {
- val = elem.selectedIndex > -1 ?
- jQuery.map( elem.options, function( elem ) {
- return elem.selected;
- }).join("-") :
- "";
-
- } else if ( jQuery.nodeName( elem, "select" ) ) {
- val = elem.selectedIndex;
- }
-
- return val;
- },
-
- testChange = function testChange( e ) {
- var elem = e.target, data, val;
-
- if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
- return;
- }
-
- data = jQuery._data( elem, "_change_data" );
- val = getVal(elem);
-
- // the current data will be also retrieved by beforeactivate
- if ( e.type !== "focusout" || elem.type !== "radio" ) {
- jQuery._data( elem, "_change_data", val );
- }
-
- if ( data === undefined || val === data ) {
- return;
- }
-
- if ( data != null || val ) {
- e.type = "change";
- e.liveFired = undefined;
- jQuery.event.trigger( e, arguments[1], elem );
- }
- };
-
- jQuery.event.special.change = {
- filters: {
- focusout: testChange,
-
- beforedeactivate: testChange,
-
- click: function( e ) {
- var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
-
- if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) {
- testChange.call( this, e );
- }
- },
-
- // Change has to be called before submit
- // Keydown will be called before keypress, which is used in submit-event delegation
- keydown: function( e ) {
- var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
-
- if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) ||
- (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
- type === "select-multiple" ) {
- testChange.call( this, e );
- }
- },
-
- // Beforeactivate happens also before the previous element is blurred
- // with this event you can't trigger a change event, but you can store
- // information
- beforeactivate: function( e ) {
- var elem = e.target;
- jQuery._data( elem, "_change_data", getVal(elem) );
- }
- },
-
- setup: function( data, namespaces ) {
- if ( this.type === "file" ) {
- return false;
- }
-
- for ( var type in changeFilters ) {
- jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
- }
-
- return rformElems.test( this.nodeName );
- },
-
- teardown: function( namespaces ) {
- jQuery.event.remove( this, ".specialChange" );
-
- return rformElems.test( this.nodeName );
- }
- };
-
- changeFilters = jQuery.event.special.change.filters;
-
- // Handle when the input is .focus()'d
- changeFilters.focus = changeFilters.beforeactivate;
-}
-
-function trigger( type, elem, args ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- // Don't pass args or remember liveFired; they apply to the donor event.
- var event = jQuery.extend( {}, args[ 0 ] );
- event.type = type;
- event.originalEvent = {};
- event.liveFired = undefined;
- jQuery.event.handle.call( elem, event );
- if ( event.isDefaultPrevented() ) {
- args[ 0 ].preventDefault();
- }
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0;
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
- }
- }
- };
-
- function handler( donor ) {
- // Donor event is always a native one; fix it and switch its type.
- // Let focusin/out handler cancel the donor focus/blur event.
- var e = jQuery.event.fix( donor );
- e.type = fix;
- e.originalEvent = {};
- jQuery.event.trigger( e, null, e.target );
- if ( e.isDefaultPrevented() ) {
- donor.preventDefault();
- }
- }
- });
-}
-
-jQuery.each(["bind", "one"], function( i, name ) {
- jQuery.fn[ name ] = function( type, data, fn ) {
- var handler;
-
- // Handle object literals
- if ( typeof type === "object" ) {
- for ( var key in type ) {
- this[ name ](key, data, type[key], fn);
- }
- return this;
- }
-
- if ( arguments.length === 2 || data === false ) {
- fn = data;
- data = undefined;
- }
-
- if ( name === "one" ) {
- handler = function( event ) {
- jQuery( this ).unbind( event, handler );
- return fn.apply( this, arguments );
- };
- handler.guid = fn.guid || jQuery.guid++;
- } else {
- handler = fn;
- }
-
- if ( type === "unload" && name !== "one" ) {
- this.one( type, data, fn );
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- jQuery.event.add( this[i], type, handler, data );
- }
- }
-
- return this;
- };
-});
-
-jQuery.fn.extend({
- unbind: function( type, fn ) {
- // Handle object literals
- if ( typeof type === "object" && !type.preventDefault ) {
- for ( var key in type ) {
- this.unbind(key, type[key]);
- }
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- jQuery.event.remove( this[i], type, fn );
- }
- }
-
- return this;
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.live( types, data, fn, selector );
- },
-
- undelegate: function( selector, types, fn ) {
- if ( arguments.length === 0 ) {
- return this.unbind( "live" );
-
- } else {
- return this.die( types, null, fn, selector );
- }
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
-
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- return jQuery.event.trigger( type, data, this[0], true );
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-});
-
-var liveMap = {
- focus: "focusin",
- blur: "focusout",
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-};
-
-jQuery.each(["live", "die"], function( i, name ) {
- jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
- var type, i = 0, match, namespaces, preType,
- selector = origSelector || this.selector,
- context = origSelector ? this : jQuery( this.context );
-
- if ( typeof types === "object" && !types.preventDefault ) {
- for ( var key in types ) {
- context[ name ]( key, data, types[key], selector );
- }
-
- return this;
- }
-
- if ( name === "die" && !types &&
- origSelector && origSelector.charAt(0) === "." ) {
-
- context.unbind( origSelector );
-
- return this;
- }
-
- if ( data === false || jQuery.isFunction( data ) ) {
- fn = data || returnFalse;
- data = undefined;
- }
-
- types = (types || "").split(" ");
-
- while ( (type = types[ i++ ]) != null ) {
- match = rnamespaces.exec( type );
- namespaces = "";
-
- if ( match ) {
- namespaces = match[0];
- type = type.replace( rnamespaces, "" );
- }
-
- if ( type === "hover" ) {
- types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
- continue;
- }
-
- preType = type;
-
- if ( liveMap[ type ] ) {
- types.push( liveMap[ type ] + namespaces );
- type = type + namespaces;
-
- } else {
- type = (liveMap[ type ] || type) + namespaces;
- }
-
- if ( name === "live" ) {
- // bind live handler
- for ( var j = 0, l = context.length; j < l; j++ ) {
- jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
- { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
- }
-
- } else {
- // unbind live handler
- context.unbind( "live." + liveConvert( type, selector ), fn );
- }
- }
-
- return this;
- };
-});
-
-function liveHandler( event ) {
- var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
- elems = [],
- selectors = [],
- events = jQuery._data( this, "events" );
-
- // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
- if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
- return;
- }
-
- if ( event.namespace ) {
- namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
- }
-
- event.liveFired = this;
-
- var live = events.live.slice(0);
-
- for ( j = 0; j < live.length; j++ ) {
- handleObj = live[j];
-
- if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
- selectors.push( handleObj.selector );
-
- } else {
- live.splice( j--, 1 );
- }
- }
-
- match = jQuery( event.target ).closest( selectors, event.currentTarget );
-
- for ( i = 0, l = match.length; i < l; i++ ) {
- close = match[i];
-
- for ( j = 0; j < live.length; j++ ) {
- handleObj = live[j];
-
- if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
- elem = close.elem;
- related = null;
-
- // Those two events require additional checking
- if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
- event.type = handleObj.preType;
- related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
-
- // Make sure not to accidentally match a child element with the same selector
- if ( related && jQuery.contains( elem, related ) ) {
- related = elem;
- }
- }
-
- if ( !related || related !== elem ) {
- elems.push({ elem: elem, handleObj: handleObj, level: close.level });
- }
- }
- }
- }
-
- for ( i = 0, l = elems.length; i < l; i++ ) {
- match = elems[i];
-
- if ( maxLevel && match.level > maxLevel ) {
- break;
- }
-
- event.currentTarget = match.elem;
- event.data = match.handleObj.data;
- event.handleObj = match.handleObj;
-
- ret = match.handleObj.origHandler.apply( match.elem, arguments );
-
- if ( ret === false || event.isPropagationStopped() ) {
- maxLevel = match.level;
-
- if ( ret === false ) {
- stop = false;
- }
- if ( event.isImmediatePropagationStopped() ) {
- break;
- }
- }
- }
-
- return stop;
-}
-
-function liveConvert( type, selector ) {
- return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&");
-}
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- if ( fn == null ) {
- fn = data;
- data = null;
- }
-
- return arguments.length > 0 ?
- this.bind( name, data, fn ) :
- this.trigger( name );
- };
-
- if ( jQuery.attrFn ) {
- jQuery.attrFn[ name ] = true;
- }
-});
-
-
-
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
-
- var origContext = context;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
-
- if ( m ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
-
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context );
-
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set );
- }
- }
-
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
-
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
- }
-
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
-
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
-
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
-
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
-
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
-
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
-
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
-
-Sizzle.find = function( expr, context, isXML ) {
- var set;
-
- if ( !expr ) {
- return [];
- }
-
- for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
- var match,
- type = Expr.order[i];
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- var left = match[1];
- match.splice( 1, 1 );
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
-
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
-
- return { set: set, expr: expr };
-};
-
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
-
- while ( expr && set.length ) {
- for ( var type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- var found, item,
- filter = Expr.filter[ type ],
- left = match[1];
-
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- var pass = not ^ !!found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
-
- } else {
- curLoop[i] = false;
- }
-
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
-
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw "Syntax error, unrecognized expression: " + msg;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
-
- leftMatch: {},
-
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
-
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
-
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
-
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
-
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
-
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
-
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
-
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
-
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
- }
- },
-
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
-
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
-
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
-
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
-
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
-
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
-
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- match[2] = match[2].replace(/^\+|\s*/g, '');
-
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
-
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
-
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
-
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
-
- return false;
- }
-
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
-
- POS: function( match ) {
- match.unshift( true );
-
- return match;
- }
- },
-
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
- },
-
- disabled: function( elem ) {
- return elem.disabled === true;
- },
-
- checked: function( elem ) {
- return elem.checked === true;
- },
-
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
- },
-
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
-
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- }
- },
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
-
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
-
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
-
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
-
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
-
- return true;
-
- } else {
- Sizzle.error( name );
- }
- },
-
- CHILD: function( elem, match ) {
- var type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
-
- case "nth":
- var first = match[2],
- last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- var doneName = match[0],
- parent = elem.parentNode;
-
- if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
- var count = 0;
-
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
-
- parent.sizcache = doneName;
- }
-
- var diff = elem.nodeIndex - last;
-
- if ( first === 0 ) {
- return diff === 0;
-
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
-
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
-
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
- },
-
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
-
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
-
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
- };
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
-}
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
-
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder, siblingCheck;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
-
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
- };
-}
-
-// Utility function for retreiving the text value of an array of DOM nodes
-Sizzle.getText = function( elems ) {
- var ret = "", elem;
-
- for ( var i = 0; elems[i]; i++ ) {
- elem = elems[i];
-
- // Get the text from text nodes and CDATA nodes
- if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
- ret += elem.nodeValue;
-
- // Traverse everything else, except comment nodes
- } else if ( elem.nodeType !== 8 ) {
- ret += Sizzle.getText( elem.childNodes );
- }
- }
-
- return ret;
-};
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = "<a name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
-
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
-
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
-
- // release memory in IE
- div = null;
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
-
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
-
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem.sizcache === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem.sizcache = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem.sizcache === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem.sizcache = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})();
-
-
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
- // Note: This RegExp should be improved, or likely pulled from Sizzle
- rmultiselector = /,/,
- isSimple = /^.[^:#\[\.,]*$/,
- slice = Array.prototype.slice,
- POS = jQuery.expr.match.POS,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var self = this,
- i, l;
-
- if ( typeof selector !== "string" ) {
- return jQuery( selector ).filter(function() {
- for ( i = 0, l = self.length; i < l; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- });
- }
-
- var ret = this.pushStack( "", "find", selector ),
- length, n, r;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( n = length; n < ret.length; n++ ) {
- for ( r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var targets = jQuery( target );
- return this.filter(function() {
- for ( var i = 0, l = targets.length; i < l; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && ( typeof selector === "string" ?
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var ret = [], i, l, cur = this[0];
-
- // Array
- if ( jQuery.isArray( selectors ) ) {
- var match, selector,
- matches = {},
- level = 1;
-
- if ( cur && selectors.length ) {
- for ( i = 0, l = selectors.length; i < l; i++ ) {
- selector = selectors[i];
-
- if ( !matches[ selector ] ) {
- matches[ selector ] = POS.test( selector ) ?
- jQuery( selector, context || this.context ) :
- selector;
- }
- }
-
- while ( cur && cur.ownerDocument && cur !== context ) {
- for ( selector in matches ) {
- match = matches[ selector ];
-
- if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {
- ret.push({ selector: selector, elem: cur, level: level });
- }
- }
-
- cur = cur.parentNode;
- level++;
- }
- }
-
- return ret;
- }
-
- // String
- var pos = POS.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- cur = this[i];
-
- while ( cur ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
-
- } else {
- cur = cur.parentNode;
- if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
- break;
- }
- }
- }
- }
-
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
-
- return this.pushStack( ret, "closest", selectors );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
- if ( !elem || typeof elem === "string" ) {
- return jQuery.inArray( this[0],
- // If it receives a string, the selector is used
- // If it receives nothing, the siblings are used
- elem ? jQuery( elem ) : this.parent().children() );
- }
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context ) :
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- }
-});
-
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return jQuery.nth( elem, 2, "nextSibling" );
- },
- prev: function( elem ) {
- return jQuery.nth( elem, 2, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( elem.parentNode.firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until ),
- // The variable 'args' was introduced in
- // https://github.com/jquery/jquery/commit/52a0238
- // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
- // http://code.google.com/p/v8/issues/detail?id=1050
- args = slice.call(arguments);
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
-
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret, name, args.join(",") );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [],
- cur = elem[ dir ];
-
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- nth: function( cur, result, dir, elem ) {
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType === 1 && ++num === result ) {
- break;
- }
- }
-
- return cur;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return (elem === qualifier) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
- });
-}
-
-
-
-
-var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
- rtagName = /<([\w:]+)/,
- rtbody = /<tbody/i,
- rhtml = /<|&#?\w+;/,
- rnocache = /<(?:script|object|embed|option|style)/i,
- // checked="checked" or checked
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptType = /\/(java|ecma)script/i,
- rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
- wrapMap = {
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
- legend: [ 1, "<fieldset>", "</fieldset>" ],
- thead: [ 1, "<table>", "</table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
- area: [ 1, "<map>", "</map>" ],
- _default: [ 0, "", "" ]
- };
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// IE can't serialize <link> and <script> tags normally
-if ( !jQuery.support.htmlSerialize ) {
- wrapMap._default = [ 1, "div<div>", "</div>" ];
-}
-
-jQuery.fn.extend({
- text: function( text ) {
- if ( jQuery.isFunction(text) ) {
- return this.each(function(i) {
- var self = jQuery( this );
-
- self.text( text.call(this, i, self.text()) );
- });
- }
-
- if ( typeof text !== "object" && text !== undefined ) {
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
- }
-
- return jQuery.text( this );
- },
-
- wrapAll: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapAll( html.call(this, i) );
- });
- }
-
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
- if ( this[0].parentNode ) {
- wrap.insertBefore( this[0] );
- }
-
- wrap.map(function() {
- var elem = this;
-
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
- elem = elem.firstChild;
- }
-
- return elem;
- }).append( this );
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapInner( html.call(this, i) );
- });
- }
-
- return this.each(function() {
- var self = jQuery( this ),
- contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- });
- },
-
- wrap: function( html ) {
- return this.each(function() {
- jQuery( this ).wrapAll( html );
- });
- },
-
- unwrap: function() {
- return this.parent().each(function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- }).end();
- },
-
- append: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.appendChild( elem );
- }
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.insertBefore( elem, this.firstChild );
- }
- });
- },
-
- before: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this );
- });
- } else if ( arguments.length ) {
- var set = jQuery(arguments[0]);
- set.push.apply( set, this.toArray() );
- return this.pushStack( set, "before", arguments );
- }
- },
-
- after: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- } else if ( arguments.length ) {
- var set = this.pushStack( this, "after", arguments );
- set.push.apply( set, jQuery(arguments[0]).toArray() );
- return set;
- }
- },
-
- // keepData is for internal use only--do not document
- remove: function( selector, keepData ) {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
- if ( !keepData && elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- jQuery.cleanData( [ elem ] );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- }
- }
-
- return this;
- },
-
- empty: function() {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- }
-
- // Remove any remaining nodes
- while ( elem.firstChild ) {
- elem.removeChild( elem.firstChild );
- }
- }
-
- return this;
- },
-
- clone: function( dataAndEvents, deepDataAndEvents ) {
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
- return this.map( function () {
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
- });
- },
-
- html: function( value ) {
- if ( value === undefined ) {
- return this[0] && this[0].nodeType === 1 ?
- this[0].innerHTML.replace(rinlinejQuery, "") :
- null;
-
- // See if we can take a shortcut and just use innerHTML
- } else if ( typeof value === "string" && !rnocache.test( value ) &&
- (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
- !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
-
- value = value.replace(rxhtmlTag, "<$1></$2>");
-
- try {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( this[i].nodeType === 1 ) {
- jQuery.cleanData( this[i].getElementsByTagName("*") );
- this[i].innerHTML = value;
- }
- }
-
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {
- this.empty().append( value );
- }
-
- } else if ( jQuery.isFunction( value ) ) {
- this.each(function(i){
- var self = jQuery( this );
-
- self.html( value.call(this, i, self.html()) );
- });
-
- } else {
- this.empty().append( value );
- }
-
- return this;
- },
-
- replaceWith: function( value ) {
- if ( this[0] && this[0].parentNode ) {
- // Make sure that the elements are removed from the DOM before they are inserted
- // this can help fix replacing a parent with child elements
- if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this), old = self.html();
- self.replaceWith( value.call( this, i, old ) );
- });
- }
-
- if ( typeof value !== "string" ) {
- value = jQuery( value ).detach();
- }
-
- return this.each(function() {
- var next = this.nextSibling,
- parent = this.parentNode;
-
- jQuery( this ).remove();
-
- if ( next ) {
- jQuery(next).before( value );
- } else {
- jQuery(parent).append( value );
- }
- });
- } else {
- return this.length ?
- this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
- this;
- }
- },
-
- detach: function( selector ) {
- return this.remove( selector, true );
- },
-
- domManip: function( args, table, callback ) {
- var results, first, fragment, parent,
- value = args[0],
- scripts = [];
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
- return this.each(function() {
- jQuery(this).domManip( args, table, callback, true );
- });
- }
-
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- args[0] = value.call(this, i, table ? self.html() : undefined);
- self.domManip( args, table, callback );
- });
- }
-
- if ( this[0] ) {
- parent = value && value.parentNode;
-
- // If we're in a fragment, just use that instead of building a new one
- if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
- results = { fragment: parent };
-
- } else {
- results = jQuery.buildFragment( args, this, scripts );
- }
-
- fragment = results.fragment;
-
- if ( fragment.childNodes.length === 1 ) {
- first = fragment = fragment.firstChild;
- } else {
- first = fragment.firstChild;
- }
-
- if ( first ) {
- table = table && jQuery.nodeName( first, "tr" );
-
- for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
- callback.call(
- table ?
- root(this[i], first) :
- this[i],
- // Make sure that we do not leak memory by inadvertently discarding
- // the original fragment (which might have attached data) instead of
- // using it; in addition, use the original fragment object for the last
- // item instead of first because it can end up being emptied incorrectly
- // in certain situations (Bug #8070).
- // Fragments from the fragment cache must always be cloned and never used
- // in place.
- results.cacheable || (l > 1 && i < lastIndex) ?
- jQuery.clone( fragment, true, true ) :
- fragment
- );
- }
- }
-
- if ( scripts.length ) {
- jQuery.each( scripts, evalScript );
- }
- }
-
- return this;
- }
-});
-
-function root( elem, cur ) {
- return jQuery.nodeName(elem, "table") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
-}
-
-function cloneCopyEvent( src, dest ) {
-
- if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
- return;
- }
-
- var internalKey = jQuery.expando,
- oldData = jQuery.data( src ),
- curData = jQuery.data( dest, oldData );
-
- // Switch to use the internal data object, if it exists, for the next
- // stage of data copying
- if ( (oldData = oldData[ internalKey ]) ) {
- var events = oldData.events;
- curData = curData[ internalKey ] = jQuery.extend({}, oldData);
-
- if ( events ) {
- delete curData.handle;
- curData.events = {};
-
- for ( var type in events ) {
- for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
- }
- }
- }
- }
-}
-
-function cloneFixAttributes( src, dest ) {
- var nodeName;
-
- // We do not need to do anything for non-Elements
- if ( dest.nodeType !== 1 ) {
- return;
- }
-
- // clearAttributes removes the attributes, which we don't want,
- // but also removes the attachEvent events, which we *do* want
- if ( dest.clearAttributes ) {
- dest.clearAttributes();
- }
-
- // mergeAttributes, in contrast, only merges back on the
- // original attributes, not the events
- if ( dest.mergeAttributes ) {
- dest.mergeAttributes( src );
- }
-
- nodeName = dest.nodeName.toLowerCase();
-
- // IE6-8 fail to clone children inside object elements that use
- // the proprietary classid attribute value (rather than the type
- // attribute) to identify the type of content to display
- if ( nodeName === "object" ) {
- dest.outerHTML = src.outerHTML;
-
- } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
- // IE6-8 fails to persist the checked state of a cloned checkbox
- // or radio button. Worse, IE6-7 fail to give the cloned element
- // a checked appearance if the defaultChecked value isn't also set
- if ( src.checked ) {
- dest.defaultChecked = dest.checked = src.checked;
- }
-
- // IE6-7 get confused and end up setting the value of a cloned
- // checkbox/radio button to an empty string instead of "on"
- if ( dest.value !== src.value ) {
- dest.value = src.value;
- }
-
- // IE6-8 fails to return the selected option to the default selected
- // state when cloning options
- } else if ( nodeName === "option" ) {
- dest.selected = src.defaultSelected;
-
- // IE6-8 fails to set the defaultValue to the correct value when
- // cloning other types of input fields
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
- dest.defaultValue = src.defaultValue;
- }
-
- // Event data gets referenced instead of copied if the expando
- // gets copied too
- dest.removeAttribute( jQuery.expando );
-}
-
-jQuery.buildFragment = function( args, nodes, scripts ) {
- var fragment, cacheable, cacheresults, doc;
-
- // nodes may contain either an explicit document object,
- // a jQuery collection or context object.
- // If nodes[0] contains a valid object to assign to doc
- if ( nodes && nodes[0] ) {
- doc = nodes[0].ownerDocument || nodes[0];
- }
-
- // Ensure that an attr object doesn't incorrectly stand in as a document object
- // Chrome and Firefox seem to allow this to occur and will throw exception
- // Fixes #8950
- if ( !doc.createDocumentFragment ) {
- doc = document;
- }
-
- // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
- // Cloning options loses the selected state, so don't cache them
- // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
- // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
- if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
- args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
-
- cacheable = true;
-
- cacheresults = jQuery.fragments[ args[0] ];
- if ( cacheresults && cacheresults !== 1 ) {
- fragment = cacheresults;
- }
- }
-
- if ( !fragment ) {
- fragment = doc.createDocumentFragment();
- jQuery.clean( args, doc, fragment, scripts );
- }
-
- if ( cacheable ) {
- jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
- }
-
- return { fragment: fragment, cacheable: cacheable };
-};
-
-jQuery.fragments = {};
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var ret = [],
- insert = jQuery( selector ),
- parent = this.length === 1 && this[0].parentNode;
-
- if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
- insert[ original ]( this[0] );
- return this;
-
- } else {
- for ( var i = 0, l = insert.length; i < l; i++ ) {
- var elems = (i > 0 ? this.clone(true) : this).get();
- jQuery( insert[i] )[ original ]( elems );
- ret = ret.concat( elems );
- }
-
- return this.pushStack( ret, name, insert.selector );
- }
- };
-});
-
-function getAll( elem ) {
- if ( "getElementsByTagName" in elem ) {
- return elem.getElementsByTagName( "*" );
-
- } else if ( "querySelectorAll" in elem ) {
- return elem.querySelectorAll( "*" );
-
- } else {
- return [];
- }
-}
-
-// Used in clean, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
- if ( elem.type === "checkbox" || elem.type === "radio" ) {
- elem.defaultChecked = elem.checked;
- }
-}
-// Finds all inputs and passes them to fixDefaultChecked
-function findInputs( elem ) {
- if ( jQuery.nodeName( elem, "input" ) ) {
- fixDefaultChecked( elem );
- } else if ( "getElementsByTagName" in elem ) {
- jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
- }
-}
-
-jQuery.extend({
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
- var clone = elem.cloneNode(true),
- srcElements,
- destElements,
- i;
-
- if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
- (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
- // IE copies events bound via attachEvent when using cloneNode.
- // Calling detachEvent on the clone will also remove the events
- // from the original. In order to get around this, we use some
- // proprietary methods to clear the events. Thanks to MooTools
- // guys for this hotness.
-
- cloneFixAttributes( elem, clone );
-
- // Using Sizzle here is crazy slow, so we use getElementsByTagName
- // instead
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- // Weird iteration because IE will replace the length property
- // with an element if you are cloning the body and one of the
- // elements on the page has a name or id of "length"
- for ( i = 0; srcElements[i]; ++i ) {
- cloneFixAttributes( srcElements[i], destElements[i] );
- }
- }
-
- // Copy the events from the original to the clone
- if ( dataAndEvents ) {
- cloneCopyEvent( elem, clone );
-
- if ( deepDataAndEvents ) {
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- for ( i = 0; srcElements[i]; ++i ) {
- cloneCopyEvent( srcElements[i], destElements[i] );
- }
- }
- }
-
- srcElements = destElements = null;
-
- // Return the cloned set
- return clone;
- },
-
- clean: function( elems, context, fragment, scripts ) {
- var checkScriptType;
-
- context = context || document;
-
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if ( typeof context.createElement === "undefined" ) {
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
- }
-
- var ret = [], j;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( typeof elem === "number" ) {
- elem += "";
- }
-
- if ( !elem ) {
- continue;
- }
-
- // Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
- if ( !rhtml.test( elem ) ) {
- elem = context.createTextNode( elem );
- } else {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(rxhtmlTag, "<$1></$2>");
-
- // Trim whitespace, otherwise indexOf won't work as expected
- var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
- wrap = wrapMap[ tag ] || wrapMap._default,
- depth = wrap[0],
- div = context.createElement("div");
-
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( depth-- ) {
- div = div.lastChild;
- }
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- var hasBody = rtbody.test(elem),
- tbody = tag === "table" && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !hasBody ?
- div.childNodes :
- [];
-
- for ( j = tbody.length - 1; j >= 0 ; --j ) {
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
- }
- }
- }
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
- }
-
- elem = div.childNodes;
- }
- }
-
- // Resets defaultChecked for any radios and checkboxes
- // about to be appended to the DOM in IE 6/7 (#8060)
- var len;
- if ( !jQuery.support.appendChecked ) {
- if ( elem[0] && typeof (len = elem.length) === "number" ) {
- for ( j = 0; j < len; j++ ) {
- findInputs( elem[j] );
- }
- } else {
- findInputs( elem );
- }
- }
-
- if ( elem.nodeType ) {
- ret.push( elem );
- } else {
- ret = jQuery.merge( ret, elem );
- }
- }
-
- if ( fragment ) {
- checkScriptType = function( elem ) {
- return !elem.type || rscriptType.test( elem.type );
- };
- for ( i = 0; ret[i]; i++ ) {
- if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-
- } else {
- if ( ret[i].nodeType === 1 ) {
- var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
-
- ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
- }
- fragment.appendChild( ret[i] );
- }
- }
- }
-
- return ret;
- },
-
- cleanData: function( elems ) {
- var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
- deleteExpando = jQuery.support.deleteExpando;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
- continue;
- }
-
- id = elem[ jQuery.expando ];
-
- if ( id ) {
- data = cache[ id ] && cache[ id ][ internalKey ];
-
- if ( data && data.events ) {
- for ( var type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- // This is a shortcut to avoid jQuery.event.remove's overhead
- } else {
- jQuery.removeEvent( elem, type, data.handle );
- }
- }
-
- // Null the DOM reference to avoid IE6/7/8 leak (#7054)
- if ( data.handle ) {
- data.handle.elem = null;
- }
- }
-
- if ( deleteExpando ) {
- delete elem[ jQuery.expando ];
-
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( jQuery.expando );
- }
-
- delete cache[ id ];
- }
- }
- }
-});
-
-function evalScript( i, elem ) {
- if ( elem.src ) {
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
-}
-
-
-
-var ralpha = /alpha\([^)]*\)/i,
- ropacity = /opacity=([^)]*)/,
- // fixed for IE9, see #8346
- rupper = /([A-Z]|^ms)/g,
- rnumpx = /^-?\d+(?:px)?$/i,
- rnum = /^-?\d/,
- rrelNum = /^[+\-]=/,
- rrelNumFilter = /[^+\-\.\de]+/g,
-
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssWidth = [ "Left", "Right" ],
- cssHeight = [ "Top", "Bottom" ],
- curCSS,
-
- getComputedStyle,
- currentStyle;
-
-jQuery.fn.css = function( name, value ) {
- // Setting 'undefined' is a no-op
- if ( arguments.length === 2 && value === undefined ) {
- return this;
- }
-
- return jQuery.access( this, name, value, true, function( elem, name, value ) {
- return value !== undefined ?
- jQuery.style( elem, name, value ) :
- jQuery.css( elem, name );
- });
-};
-
-jQuery.extend({
- // Add in style property hooks for overriding the default
- // behavior of getting and setting a style property
- cssHooks: {
- opacity: {
- get: function( elem, computed ) {
- if ( computed ) {
- // We should always get a number back from opacity
- var ret = curCSS( elem, "opacity", "opacity" );
- return ret === "" ? "1" : ret;
-
- } else {
- return elem.style.opacity;
- }
- }
- }
- },
-
- // Exclude the following css properties to add px
- cssNumber: {
- "fillOpacity": true,
- "fontWeight": true,
- "lineHeight": true,
- "opacity": true,
- "orphans": true,
- "widows": true,
- "zIndex": true,
- "zoom": true
- },
-
- // Add in properties whose names you wish to fix before
- // setting or getting the value
- cssProps: {
- // normalize float css property
- "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
- },
-
- // Get and set the style property on a DOM Node
- style: function( elem, name, value, extra ) {
- // Don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
- return;
- }
-
- // Make sure that we're working with the right name
- var ret, type, origName = jQuery.camelCase( name ),
- style = elem.style, hooks = jQuery.cssHooks[ origName ];
-
- name = jQuery.cssProps[ origName ] || origName;
-
- // Check if we're setting a value
- if ( value !== undefined ) {
- type = typeof value;
-
- // Make sure that NaN and null values aren't set. See: #7116
- if ( type === "number" && isNaN( value ) || value == null ) {
- return;
- }
-
- // convert relative number strings (+= or -=) to relative numbers. #7345
- if ( type === "string" && rrelNum.test( value ) ) {
- value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
- // Fixes bug #9237
- type = "number";
- }
-
- // If a number was passed in, add 'px' to the (except for certain CSS properties)
- if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
- value += "px";
- }
-
- // If a hook was provided, use that value, otherwise just set the specified value
- if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
- // Fixes bug #5509
- try {
- style[ name ] = value;
- } catch(e) {}
- }
-
- } else {
- // If a hook was provided get the non-computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
- return ret;
- }
-
- // Otherwise just get the value from the style object
- return style[ name ];
- }
- },
-
- css: function( elem, name, extra ) {
- var ret, hooks;
-
- // Make sure that we're working with the right name
- name = jQuery.camelCase( name );
- hooks = jQuery.cssHooks[ name ];
- name = jQuery.cssProps[ name ] || name;
-
- // cssFloat needs a special treatment
- if ( name === "cssFloat" ) {
- name = "float";
- }
-
- // If a hook was provided get the computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
- return ret;
-
- // Otherwise, if a way to get the computed value exists, use that
- } else if ( curCSS ) {
- return curCSS( elem, name );
- }
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
-
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- callback.call( elem );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
- }
-});
-
-// DEPRECATED, Use jQuery.css() instead
-jQuery.curCSS = jQuery.css;
-
-jQuery.each(["height", "width"], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- var val;
-
- if ( computed ) {
- if ( elem.offsetWidth !== 0 ) {
- return getWH( elem, name, extra );
- } else {
- jQuery.swap( elem, cssShow, function() {
- val = getWH( elem, name, extra );
- });
- }
-
- return val;
- }
- },
-
- set: function( elem, value ) {
- if ( rnumpx.test( value ) ) {
- // ignore negative width and height values #1599
- value = parseFloat( value );
-
- if ( value >= 0 ) {
- return value + "px";
- }
-
- } else {
- return value;
- }
- }
- };
-});
-
-if ( !jQuery.support.opacity ) {
- jQuery.cssHooks.opacity = {
- get: function( elem, computed ) {
- // IE uses filters for opacity
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
- ( parseFloat( RegExp.$1 ) / 100 ) + "" :
- computed ? "1" : "";
- },
-
- set: function( elem, value ) {
- var style = elem.style,
- currentStyle = elem.currentStyle;
-
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // Set the alpha filter to set the opacity
- var opacity = jQuery.isNaN( value ) ?
- "" :
- "alpha(opacity=" + value * 100 + ")",
- filter = currentStyle && currentStyle.filter || style.filter || "";
-
- style.filter = ralpha.test( filter ) ?
- filter.replace( ralpha, opacity ) :
- filter + " " + opacity;
- }
- };
-}
-
-jQuery(function() {
- // This hook cannot be added until DOM ready because the support test
- // for it is not run until after DOM ready
- if ( !jQuery.support.reliableMarginRight ) {
- jQuery.cssHooks.marginRight = {
- get: function( elem, computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- var ret;
- jQuery.swap( elem, { "display": "inline-block" }, function() {
- if ( computed ) {
- ret = curCSS( elem, "margin-right", "marginRight" );
- } else {
- ret = elem.style.marginRight;
- }
- });
- return ret;
- }
- };
- }
-});
-
-if ( document.defaultView && document.defaultView.getComputedStyle ) {
- getComputedStyle = function( elem, name ) {
- var ret, defaultView, computedStyle;
-
- name = name.replace( rupper, "-$1" ).toLowerCase();
-
- if ( !(defaultView = elem.ownerDocument.defaultView) ) {
- return undefined;
- }
-
- if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
- ret = computedStyle.getPropertyValue( name );
- if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
- ret = jQuery.style( elem, name );
- }
- }
-
- return ret;
- };
-}
-
-if ( document.documentElement.currentStyle ) {
- currentStyle = function( elem, name ) {
- var left,
- ret = elem.currentStyle && elem.currentStyle[ name ],
- rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
- style = elem.style;
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
- // Remember the original values
- left = style.left;
-
- // Put in the new values to get a computed value out
- if ( rsLeft ) {
- elem.runtimeStyle.left = elem.currentStyle.left;
- }
- style.left = name === "fontSize" ? "1em" : (ret || 0);
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- if ( rsLeft ) {
- elem.runtimeStyle.left = rsLeft;
- }
- }
-
- return ret === "" ? "auto" : ret;
- };
-}
-
-curCSS = getComputedStyle || currentStyle;
-
-function getWH( elem, name, extra ) {
-
- // Start with offset property
- var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- which = name === "width" ? cssWidth : cssHeight;
-
- if ( val > 0 ) {
- if ( extra !== "border" ) {
- jQuery.each( which, function() {
- if ( !extra ) {
- val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
- }
- if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
- } else {
- val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
- }
- });
- }
-
- return val + "px";
- }
-
- // Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name, name );
- if ( val < 0 || val == null ) {
- val = elem.style[ name ] || 0;
- }
- // Normalize "", auto, and prepare for extra
- val = parseFloat( val ) || 0;
-
- // Add padding, border, margin
- if ( extra ) {
- jQuery.each( which, function() {
- val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
- if ( extra !== "padding" ) {
- val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
- }
- if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
- }
- });
- }
-
- return val + "px";
-}
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.hidden = function( elem ) {
- var width = elem.offsetWidth,
- height = elem.offsetHeight;
-
- return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
- };
-
- jQuery.expr.filters.visible = function( elem ) {
- return !jQuery.expr.filters.hidden( elem );
- };
-}
-
-
-
-
-var r20 = /%20/g,
- rbracket = /\[\]$/,
- rCRLF = /\r?\n/g,
- rhash = /#.*$/,
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
- rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
- // #7653, #8125, #8152: local protocol detection
- rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
- rnoContent = /^(?:GET|HEAD)$/,
- rprotocol = /^\/\//,
- rquery = /\?/,
- rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
- rselectTextarea = /^(?:select|textarea)/i,
- rspacesAjax = /\s+/,
- rts = /([?&])_=[^&]*/,
- rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
-
- // Keep a copy of the old load method
- _load = jQuery.fn.load,
-
- /* Prefilters
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
- * 2) These are called:
- * - BEFORE asking for a transport
- * - AFTER param serialization (s.data is a string if s.processData is true)
- * 3) key is the dataType
- * 4) the catchall symbol "*" can be used
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
- */
- prefilters = {},
-
- /* Transports bindings
- * 1) key is the dataType
- * 2) the catchall symbol "*" can be used
- * 3) selection will start with transport dataType and THEN go to "*" if needed
- */
- transports = {},
-
- // Document location
- ajaxLocation,
-
- // Document location segments
- ajaxLocParts;
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
- ajaxLocation = location.href;
-} catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement( "a" );
- ajaxLocation.href = "";
- ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
- // dataTypeExpression is optional and defaults to "*"
- return function( dataTypeExpression, func ) {
-
- if ( typeof dataTypeExpression !== "string" ) {
- func = dataTypeExpression;
- dataTypeExpression = "*";
- }
-
- if ( jQuery.isFunction( func ) ) {
- var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
- i = 0,
- length = dataTypes.length,
- dataType,
- list,
- placeBefore;
-
- // For each dataType in the dataTypeExpression
- for(; i < length; i++ ) {
- dataType = dataTypes[ i ];
- // We control if we're asked to add before
- // any existing element
- placeBefore = /^\+/.test( dataType );
- if ( placeBefore ) {
- dataType = dataType.substr( 1 ) || "*";
- }
- list = structure[ dataType ] = structure[ dataType ] || [];
- // then we add to the structure accordingly
- list[ placeBefore ? "unshift" : "push" ]( func );
- }
- }
- };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
- dataType /* internal */, inspected /* internal */ ) {
-
- dataType = dataType || options.dataTypes[ 0 ];
- inspected = inspected || {};
-
- inspected[ dataType ] = true;
-
- var list = structure[ dataType ],
- i = 0,
- length = list ? list.length : 0,
- executeOnly = ( structure === prefilters ),
- selection;
-
- for(; i < length && ( executeOnly || !selection ); i++ ) {
- selection = list[ i ]( options, originalOptions, jqXHR );
- // If we got redirected to another dataType
- // we try there if executing only and not done already
- if ( typeof selection === "string" ) {
- if ( !executeOnly || inspected[ selection ] ) {
- selection = undefined;
- } else {
- options.dataTypes.unshift( selection );
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, selection, inspected );
- }
- }
- }
- // If we're only executing or nothing was selected
- // we try the catchall dataType if not done already
- if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, "*", inspected );
- }
- // unnecessary when only executing (prefilters)
- // but it'll be ignored by the caller in that case
- return selection;
-}
-
-jQuery.fn.extend({
- load: function( url, params, callback ) {
- if ( typeof url !== "string" && _load ) {
- return _load.apply( this, arguments );
-
- // Don't do a request if no elements are being requested
- } else if ( !this.length ) {
- return this;
- }
-
- var off = url.indexOf( " " );
- if ( off >= 0 ) {
- var selector = url.slice( off, url.length );
- url = url.slice( 0, off );
- }
-
- // Default to a GET request
- var type = "GET";
-
- // If the second parameter was provided
- if ( params ) {
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
- // We assume that it's the callback
- callback = params;
- params = undefined;
-
- // Otherwise, build a param string
- } else if ( typeof params === "object" ) {
- params = jQuery.param( params, jQuery.ajaxSettings.traditional );
- type = "POST";
- }
- }
-
- var self = this;
-
- // Request the remote document
- jQuery.ajax({
- url: url,
- type: type,
- dataType: "html",
- data: params,
- // Complete callback (responseText is used internally)
- complete: function( jqXHR, status, responseText ) {
- // Store the response as specified by the jqXHR object
- responseText = jqXHR.responseText;
- // If successful, inject the HTML into all the matched elements
- if ( jqXHR.isResolved() ) {
- // #4825: Get the actual response in case
- // a dataFilter is present in ajaxSettings
- jqXHR.done(function( r ) {
- responseText = r;
- });
- // See if a selector was specified
- self.html( selector ?
- // Create a dummy div to hold the results
- jQuery("<div>")
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append(responseText.replace(rscript, ""))
-
- // Locate the specified elements
- .find(selector) :
-
- // If not, just inject the full result
- responseText );
- }
-
- if ( callback ) {
- self.each( callback, [ responseText, status, jqXHR ] );
- }
- }
- });
-
- return this;
- },
-
- serialize: function() {
- return jQuery.param( this.serializeArray() );
- },
-
- serializeArray: function() {
- return this.map(function(){
- return this.elements ? jQuery.makeArray( this.elements ) : this;
- })
- .filter(function(){
- return this.name && !this.disabled &&
- ( this.checked || rselectTextarea.test( this.nodeName ) ||
- rinput.test( this.type ) );
- })
- .map(function( i, elem ){
- var val = jQuery( this ).val();
-
- return val == null ?
- null :
- jQuery.isArray( val ) ?
- jQuery.map( val, function( val, i ){
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }) :
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }).get();
- }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
- jQuery.fn[ o ] = function( f ){
- return this.bind( o, f );
- };
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
- jQuery[ method ] = function( url, data, callback, type ) {
- // shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
-
- return jQuery.ajax({
- type: method,
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- };
-});
-
-jQuery.extend({
-
- getScript: function( url, callback ) {
- return jQuery.get( url, undefined, callback, "script" );
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get( url, data, callback, "json" );
- },
-
- // Creates a full fledged settings object into target
- // with both ajaxSettings and settings fields.
- // If target is omitted, writes into ajaxSettings.
- ajaxSetup: function ( target, settings ) {
- if ( !settings ) {
- // Only one parameter, we extend ajaxSettings
- settings = target;
- target = jQuery.extend( true, jQuery.ajaxSettings, settings );
- } else {
- // target was provided, we extend into it
- jQuery.extend( true, target, jQuery.ajaxSettings, settings );
- }
- // Flatten fields we don't want deep extended
- for( var field in { context: 1, url: 1 } ) {
- if ( field in settings ) {
- target[ field ] = settings[ field ];
- } else if( field in jQuery.ajaxSettings ) {
- target[ field ] = jQuery.ajaxSettings[ field ];
- }
- }
- return target;
- },
-
- ajaxSettings: {
- url: ajaxLocation,
- isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
- global: true,
- type: "GET",
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- /*
- timeout: 0,
- data: null,
- dataType: null,
- username: null,
- password: null,
- cache: null,
- traditional: false,
- headers: {},
- */
-
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- text: "text/plain",
- json: "application/json, text/javascript",
- "*": "*/*"
- },
-
- contents: {
- xml: /xml/,
- html: /html/,
- json: /json/
- },
-
- responseFields: {
- xml: "responseXML",
- text: "responseText"
- },
-
- // List of data converters
- // 1) key format is "source_type destination_type" (a single space in-between)
- // 2) the catchall symbol "*" can be used for source_type
- converters: {
-
- // Convert anything to text
- "* text": window.String,
-
- // Text to html (true = no transformation)
- "text html": true,
-
- // Evaluate text as a json expression
- "text json": jQuery.parseJSON,
-
- // Parse text as xml
- "text xml": jQuery.parseXML
- }
- },
-
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
- ajaxTransport: addToPrefiltersOrTransports( transports ),
-
- // Main method
- ajax: function( url, options ) {
-
- // If url is an object, simulate pre-1.5 signature
- if ( typeof url === "object" ) {
- options = url;
- url = undefined;
- }
-
- // Force options to be an object
- options = options || {};
-
- var // Create the final options object
- s = jQuery.ajaxSetup( {}, options ),
- // Callbacks context
- callbackContext = s.context || s,
- // Context for global events
- // It's the callbackContext if one was provided in the options
- // and if it's a DOM node or a jQuery collection
- globalEventContext = callbackContext !== s &&
- ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
- jQuery( callbackContext ) : jQuery.event,
- // Deferreds
- deferred = jQuery.Deferred(),
- completeDeferred = jQuery._Deferred(),
- // Status-dependent callbacks
- statusCode = s.statusCode || {},
- // ifModified key
- ifModifiedKey,
- // Headers (they are sent all at once)
- requestHeaders = {},
- requestHeadersNames = {},
- // Response headers
- responseHeadersString,
- responseHeaders,
- // transport
- transport,
- // timeout handle
- timeoutTimer,
- // Cross-domain detection vars
- parts,
- // The jqXHR state
- state = 0,
- // To know if global events are to be dispatched
- fireGlobals,
- // Loop variable
- i,
- // Fake xhr
- jqXHR = {
-
- readyState: 0,
-
- // Caches the header
- setRequestHeader: function( name, value ) {
- if ( !state ) {
- var lname = name.toLowerCase();
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
- requestHeaders[ name ] = value;
- }
- return this;
- },
-
- // Raw string
- getAllResponseHeaders: function() {
- return state === 2 ? responseHeadersString : null;
- },
-
- // Builds headers hashtable if needed
- getResponseHeader: function( key ) {
- var match;
- if ( state === 2 ) {
- if ( !responseHeaders ) {
- responseHeaders = {};
- while( ( match = rheaders.exec( responseHeadersString ) ) ) {
- responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
- }
- }
- match = responseHeaders[ key.toLowerCase() ];
- }
- return match === undefined ? null : match;
- },
-
- // Overrides response content-type header
- overrideMimeType: function( type ) {
- if ( !state ) {
- s.mimeType = type;
- }
- return this;
- },
-
- // Cancel the request
- abort: function( statusText ) {
- statusText = statusText || "abort";
- if ( transport ) {
- transport.abort( statusText );
- }
- done( 0, statusText );
- return this;
- }
- };
-
- // Callback for when everything is done
- // It is defined here because jslint complains if it is declared
- // at the end of the function (which would be more logical and readable)
- function done( status, statusText, responses, headers ) {
-
- // Called once
- if ( state === 2 ) {
- return;
- }
-
- // State is "done" now
- state = 2;
-
- // Clear timeout if it exists
- if ( timeoutTimer ) {
- clearTimeout( timeoutTimer );
- }
-
- // Dereference transport for early garbage collection
- // (no matter how long the jqXHR object will be used)
- transport = undefined;
-
- // Cache response headers
- responseHeadersString = headers || "";
-
- // Set readyState
- jqXHR.readyState = status ? 4 : 0;
-
- var isSuccess,
- success,
- error,
- response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
- lastModified,
- etag;
-
- // If successful, handle type chaining
- if ( status >= 200 && status < 300 || status === 304 ) {
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
-
- if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
- jQuery.lastModified[ ifModifiedKey ] = lastModified;
- }
- if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
- jQuery.etag[ ifModifiedKey ] = etag;
- }
- }
-
- // If not modified
- if ( status === 304 ) {
-
- statusText = "notmodified";
- isSuccess = true;
-
- // If we have data
- } else {
-
- try {
- success = ajaxConvert( s, response );
- statusText = "success";
- isSuccess = true;
- } catch(e) {
- // We have a parsererror
- statusText = "parsererror";
- error = e;
- }
- }
- } else {
- // We extract error from statusText
- // then normalize statusText and status for non-aborts
- error = statusText;
- if( !statusText || status ) {
- statusText = "error";
- if ( status < 0 ) {
- status = 0;
- }
- }
- }
-
- // Set data for the fake xhr object
- jqXHR.status = status;
- jqXHR.statusText = statusText;
-
- // Success/Error
- if ( isSuccess ) {
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
- } else {
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
- }
-
- // Status-dependent callbacks
- jqXHR.statusCode( statusCode );
- statusCode = undefined;
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
- [ jqXHR, s, isSuccess ? success : error ] );
- }
-
- // Complete
- completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
- // Handle the global AJAX counter
- if ( !( --jQuery.active ) ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
- }
-
- // Attach deferreds
- deferred.promise( jqXHR );
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
- jqXHR.complete = completeDeferred.done;
-
- // Status-dependent callbacks
- jqXHR.statusCode = function( map ) {
- if ( map ) {
- var tmp;
- if ( state < 2 ) {
- for( tmp in map ) {
- statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
- }
- } else {
- tmp = map[ jqXHR.status ];
- jqXHR.then( tmp, tmp );
- }
- }
- return this;
- };
-
- // Remove hash character (#7531: and string promotion)
- // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
- // We also use the url parameter if available
- s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
- // Extract dataTypes list
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
-
- // Determine if a cross-domain request is in order
- if ( s.crossDomain == null ) {
- parts = rurl.exec( s.url.toLowerCase() );
- s.crossDomain = !!( parts &&
- ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
- ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
- ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
- );
- }
-
- // Convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Apply prefilters
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
- // If request was aborted inside a prefiler, stop there
- if ( state === 2 ) {
- return false;
- }
-
- // We can fire global events as of now if asked to
- fireGlobals = s.global;
-
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = !rnoContent.test( s.type );
-
- // Watch for a new set of requests
- if ( fireGlobals && jQuery.active++ === 0 ) {
- jQuery.event.trigger( "ajaxStart" );
- }
-
- // More options handling for requests with no content
- if ( !s.hasContent ) {
-
- // If data is available, append data to url
- if ( s.data ) {
- s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
- }
-
- // Get ifModifiedKey before adding the anti-cache parameter
- ifModifiedKey = s.url;
-
- // Add anti-cache in url if needed
- if ( s.cache === false ) {
-
- var ts = jQuery.now(),
- // try replacing _= if it is there
- ret = s.url.replace( rts, "$1_=" + ts );
-
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
- }
- }
-
- // Set the correct header, if data is being sent
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- ifModifiedKey = ifModifiedKey || s.url;
- if ( jQuery.lastModified[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
- }
- if ( jQuery.etag[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
- }
- }
-
- // Set the Accepts header for the server, depending on the dataType
- jqXHR.setRequestHeader(
- "Accept",
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
- s.accepts[ "*" ]
- );
-
- // Check for headers option
- for ( i in s.headers ) {
- jqXHR.setRequestHeader( i, s.headers[ i ] );
- }
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
- // Abort if not done already
- jqXHR.abort();
- return false;
-
- }
-
- // Install callbacks on deferreds
- for ( i in { success: 1, error: 1, complete: 1 } ) {
- jqXHR[ i ]( s[ i ] );
- }
-
- // Get transport
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
- // If no transport, we auto-abort
- if ( !transport ) {
- done( -1, "No Transport" );
- } else {
- jqXHR.readyState = 1;
- // Send global event
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
- }
- // Timeout
- if ( s.async && s.timeout > 0 ) {
- timeoutTimer = setTimeout( function(){
- jqXHR.abort( "timeout" );
- }, s.timeout );
- }
-
- try {
- state = 1;
- transport.send( requestHeaders, done );
- } catch (e) {
- // Propagate exception as error if not done
- if ( status < 2 ) {
- done( -1, e );
- // Simply rethrow otherwise
- } else {
- jQuery.error( e );
- }
- }
- }
-
- return jqXHR;
- },
-
- // Serialize an array of form elements or a set of
- // key/values into a query string
- param: function( a, traditional ) {
- var s = [],
- add = function( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction( value ) ? value() : value;
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
- };
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- });
-
- } else {
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( var prefix in a ) {
- buildParams( prefix, a[ prefix ], traditional, add );
- }
- }
-
- // Return the resulting serialization
- return s.join( "&" ).replace( r20, "+" );
- }
-});
-
-function buildParams( prefix, obj, traditional, add ) {
- if ( jQuery.isArray( obj ) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || rbracket.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
-
- } else {
- // If array item is non-scalar (array or object), encode its
- // numeric index to resolve deserialization ambiguity issues.
- // Note that rack (as of 1.0.0) can't currently deserialize
- // nested arrays properly, and attempting to do so may cause
- // a server error. Possible fixes are to modify rack's
- // deserialization algorithm or to provide an option or flag
- // to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
- }
- });
-
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
- // Serialize object item.
- for ( var name in obj ) {
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
- }
-
- } else {
- // Serialize scalar item.
- add( prefix, obj );
- }
-}
-
-// This is still on the jQuery object... for now
-// Want to move this to jQuery.ajax some day
-jQuery.extend({
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {}
-
-});
-
-/* Handles responses to an ajax request:
- * - sets all responseXXX fields accordingly
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
- var contents = s.contents,
- dataTypes = s.dataTypes,
- responseFields = s.responseFields,
- ct,
- type,
- finalDataType,
- firstDataType;
-
- // Fill responseXXX fields
- for( type in responseFields ) {
- if ( type in responses ) {
- jqXHR[ responseFields[type] ] = responses[ type ];
- }
- }
-
- // Remove auto dataType and get content-type in the process
- while( dataTypes[ 0 ] === "*" ) {
- dataTypes.shift();
- if ( ct === undefined ) {
- ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
- }
- }
-
- // Check if we're dealing with a known content-type
- if ( ct ) {
- for ( type in contents ) {
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
- dataTypes.unshift( type );
- break;
- }
- }
- }
-
- // Check to see if we have a response for the expected dataType
- if ( dataTypes[ 0 ] in responses ) {
- finalDataType = dataTypes[ 0 ];
- } else {
- // Try convertible dataTypes
- for ( type in responses ) {
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
- finalDataType = type;
- break;
- }
- if ( !firstDataType ) {
- firstDataType = type;
- }
- }
- // Or just use first one
- finalDataType = finalDataType || firstDataType;
- }
-
- // If we found a dataType
- // We add the dataType to the list if needed
- // and return the corresponding response
- if ( finalDataType ) {
- if ( finalDataType !== dataTypes[ 0 ] ) {
- dataTypes.unshift( finalDataType );
- }
- return responses[ finalDataType ];
- }
-}
-
-// Chain conversions given the request and the original response
-function ajaxConvert( s, response ) {
-
- // Apply the dataFilter if provided
- if ( s.dataFilter ) {
- response = s.dataFilter( response, s.dataType );
- }
-
- var dataTypes = s.dataTypes,
- converters = {},
- i,
- key,
- length = dataTypes.length,
- tmp,
- // Current and previous dataTypes
- current = dataTypes[ 0 ],
- prev,
- // Conversion expression
- conversion,
- // Conversion function
- conv,
- // Conversion functions (transitive conversion)
- conv1,
- conv2;
-
- // For each dataType in the chain
- for( i = 1; i < length; i++ ) {
-
- // Create converters map
- // with lowercased keys
- if ( i === 1 ) {
- for( key in s.converters ) {
- if( typeof key === "string" ) {
- converters[ key.toLowerCase() ] = s.converters[ key ];
- }
- }
- }
-
- // Get the dataTypes
- prev = current;
- current = dataTypes[ i ];
-
- // If current is auto dataType, update it to prev
- if( current === "*" ) {
- current = prev;
- // If no auto and dataTypes are actually different
- } else if ( prev !== "*" && prev !== current ) {
-
- // Get the converter
- conversion = prev + " " + current;
- conv = converters[ conversion ] || converters[ "* " + current ];
-
- // If there is no direct converter, search transitively
- if ( !conv ) {
- conv2 = undefined;
- for( conv1 in converters ) {
- tmp = conv1.split( " " );
- if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
- conv2 = converters[ tmp[1] + " " + current ];
- if ( conv2 ) {
- conv1 = converters[ conv1 ];
- if ( conv1 === true ) {
- conv = conv2;
- } else if ( conv2 === true ) {
- conv = conv1;
- }
- break;
- }
- }
- }
- }
- // If we found no converter, dispatch an error
- if ( !( conv || conv2 ) ) {
- jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
- }
- // If found converter is not an equivalence
- if ( conv !== true ) {
- // Convert with 1 or 2 converters accordingly
- response = conv ? conv( response ) : conv2( conv1(response) );
- }
- }
- }
- return response;
-}
-
-
-
-
-var jsc = jQuery.now(),
- jsre = /(\=)\?(&|$)|\?\?/i;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
- jsonp: "callback",
- jsonpCallback: function() {
- return jQuery.expando + "_" + ( jsc++ );
- }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
- var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
- ( typeof s.data === "string" );
-
- if ( s.dataTypes[ 0 ] === "jsonp" ||
- s.jsonp !== false && ( jsre.test( s.url ) ||
- inspectData && jsre.test( s.data ) ) ) {
-
- var responseContainer,
- jsonpCallback = s.jsonpCallback =
- jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
- previous = window[ jsonpCallback ],
- url = s.url,
- data = s.data,
- replace = "$1" + jsonpCallback + "$2";
-
- if ( s.jsonp !== false ) {
- url = url.replace( jsre, replace );
- if ( s.url === url ) {
- if ( inspectData ) {
- data = data.replace( jsre, replace );
- }
- if ( s.data === data ) {
- // Add callback manually
- url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
- }
- }
- }
-
- s.url = url;
- s.data = data;
-
- // Install callback
- window[ jsonpCallback ] = function( response ) {
- responseContainer = [ response ];
- };
-
- // Clean-up function
- jqXHR.always(function() {
- // Set callback back to previous value
- window[ jsonpCallback ] = previous;
- // Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( previous ) ) {
- window[ jsonpCallback ]( responseContainer[ 0 ] );
- }
- });
-
- // Use data converter to retrieve json after script execution
- s.converters["script json"] = function() {
- if ( !responseContainer ) {
- jQuery.error( jsonpCallback + " was not called" );
- }
- return responseContainer[ 0 ];
- };
-
- // force json dataType
- s.dataTypes[ 0 ] = "json";
-
- // Delegate to script
- return "script";
- }
-});
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
- accepts: {
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
- },
- contents: {
- script: /javascript|ecmascript/
- },
- converters: {
- "text script": function( text ) {
- jQuery.globalEval( text );
- return text;
- }
- }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
- if ( s.cache === undefined ) {
- s.cache = false;
- }
- if ( s.crossDomain ) {
- s.type = "GET";
- s.global = false;
- }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
-
- var script,
- head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
-
- return {
-
- send: function( _, callback ) {
-
- script = document.createElement( "script" );
-
- script.async = "async";
-
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
- }
-
- script.src = s.url;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function( _, isAbort ) {
-
- if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
-
- // Remove the script
- if ( head && script.parentNode ) {
- head.removeChild( script );
- }
-
- // Dereference the script
- script = undefined;
-
- // Callback if not abort
- if ( !isAbort ) {
- callback( 200, "success" );
- }
- }
- };
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709 and #4378).
- head.insertBefore( script, head.firstChild );
- },
-
- abort: function() {
- if ( script ) {
- script.onload( 0, 1 );
- }
- }
- };
- }
-});
-
-
-
-
-var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
- xhrOnUnloadAbort = window.ActiveXObject ? function() {
- // Abort all pending requests
- for ( var key in xhrCallbacks ) {
- xhrCallbacks[ key ]( 0, 1 );
- }
- } : false,
- xhrId = 0,
- xhrCallbacks;
-
-// Functions to create xhrs
-function createStandardXHR() {
- try {
- return new window.XMLHttpRequest();
- } catch( e ) {}
-}
-
-function createActiveXHR() {
- try {
- return new window.ActiveXObject( "Microsoft.XMLHTTP" );
- } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
- /* Microsoft failed to properly
- * implement the XMLHttpRequest in IE7 (can't request local files),
- * so we use the ActiveXObject when it is available
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
- * we need a fallback.
- */
- function() {
- return !this.isLocal && createStandardXHR() || createActiveXHR();
- } :
- // For all other browsers, use the standard XMLHttpRequest object
- createStandardXHR;
-
-// Determine support properties
-(function( xhr ) {
- jQuery.extend( jQuery.support, {
- ajax: !!xhr,
- cors: !!xhr && ( "withCredentials" in xhr )
- });
-})( jQuery.ajaxSettings.xhr() );
-
-// Create transport if the browser can provide an xhr
-if ( jQuery.support.ajax ) {
-
- jQuery.ajaxTransport(function( s ) {
- // Cross domain only allowed if supported through XMLHttpRequest
- if ( !s.crossDomain || jQuery.support.cors ) {
-
- var callback;
-
- return {
- send: function( headers, complete ) {
-
- // Get a new xhr
- var xhr = s.xhr(),
- handle,
- i;
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open( s.type, s.url, s.async, s.username, s.password );
- } else {
- xhr.open( s.type, s.url, s.async );
- }
-
- // Apply custom fields if provided
- if ( s.xhrFields ) {
- for ( i in s.xhrFields ) {
- xhr[ i ] = s.xhrFields[ i ];
- }
- }
-
- // Override mime type if needed
- if ( s.mimeType && xhr.overrideMimeType ) {
- xhr.overrideMimeType( s.mimeType );
- }
-
- // X-Requested-With header
- // For cross-domain requests, seeing as conditions for a preflight are
- // akin to a jigsaw puzzle, we simply never set it to be sure.
- // (it can always be set on a per-request basis or even using ajaxSetup)
- // For same-domain requests, won't change header if already provided.
- if ( !s.crossDomain && !headers["X-Requested-With"] ) {
- headers[ "X-Requested-With" ] = "XMLHttpRequest";
- }
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- for ( i in headers ) {
- xhr.setRequestHeader( i, headers[ i ] );
- }
- } catch( _ ) {}
-
- // Do send the request
- // This may raise an exception which is actually
- // handled in jQuery.ajax (so no try/catch here)
- xhr.send( ( s.hasContent && s.data ) || null );
-
- // Listener
- callback = function( _, isAbort ) {
-
- var status,
- statusText,
- responseHeaders,
- responses,
- xml;
-
- // Firefox throws exceptions when accessing properties
- // of an xhr when a network error occured
- // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
- try {
-
- // Was never called and is aborted or complete
- if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
- // Only called once
- callback = undefined;
-
- // Do not keep as active anymore
- if ( handle ) {
- xhr.onreadystatechange = jQuery.noop;
- if ( xhrOnUnloadAbort ) {
- delete xhrCallbacks[ handle ];
- }
- }
-
- // If it's an abort
- if ( isAbort ) {
- // Abort it manually if needed
- if ( xhr.readyState !== 4 ) {
- xhr.abort();
- }
- } else {
- status = xhr.status;
- responseHeaders = xhr.getAllResponseHeaders();
- responses = {};
- xml = xhr.responseXML;
-
- // Construct response list
- if ( xml && xml.documentElement /* #4958 */ ) {
- responses.xml = xml;
- }
- responses.text = xhr.responseText;
-
- // Firefox throws an exception when accessing
- // statusText for faulty cross-domain requests
- try {
- statusText = xhr.statusText;
- } catch( e ) {
- // We normalize with Webkit giving an empty statusText
- statusText = "";
- }
-
- // Filter status for non standard behaviors
-
- // If the request is local and we have data: assume a success
- // (success with no data won't get notified, that's the best we
- // can do given current implementations)
- if ( !status && s.isLocal && !s.crossDomain ) {
- status = responses.text ? 200 : 404;
- // IE - #1450: sometimes returns 1223 when it should be 204
- } else if ( status === 1223 ) {
- status = 204;
- }
- }
- }
- } catch( firefoxAccessException ) {
- if ( !isAbort ) {
- complete( -1, firefoxAccessException );
- }
- }
-
- // Call complete if needed
- if ( responses ) {
- complete( status, statusText, responses, responseHeaders );
- }
- };
-
- // if we're in sync mode or it's in cache
- // and has been retrieved directly (IE6 & IE7)
- // we need to manually fire the callback
- if ( !s.async || xhr.readyState === 4 ) {
- callback();
- } else {
- handle = ++xhrId;
- if ( xhrOnUnloadAbort ) {
- // Create the active xhrs callbacks list if needed
- // and attach the unload handler
- if ( !xhrCallbacks ) {
- xhrCallbacks = {};
- jQuery( window ).unload( xhrOnUnloadAbort );
- }
- // Add to list of active xhrs callbacks
- xhrCallbacks[ handle ] = callback;
- }
- xhr.onreadystatechange = callback;
- }
- },
-
- abort: function() {
- if ( callback ) {
- callback(0,1);
- }
- }
- };
- }
- });
-}
-
-
-
-
-var elemdisplay = {},
- iframe, iframeDoc,
- rfxtypes = /^(?:toggle|show|hide)$/,
- rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
- timerId,
- fxAttrs = [
- // height animations
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
- // width animations
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
- // opacity animations
- [ "opacity" ]
- ],
- fxNow,
- requestAnimationFrame = window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame;
-
-jQuery.fn.extend({
- show: function( speed, easing, callback ) {
- var elem, display;
-
- if ( speed || speed === 0 ) {
- return this.animate( genFx("show", 3), speed, easing, callback);
-
- } else {
- for ( var i = 0, j = this.length; i < j; i++ ) {
- elem = this[i];
-
- if ( elem.style ) {
- display = elem.style.display;
-
- // Reset the inline display of this element to learn if it is
- // being hidden by cascaded rules or not
- if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
- display = elem.style.display = "";
- }
-
- // Set elements which have been overridden with display: none
- // in a stylesheet to whatever the default browser style is
- // for such an element
- if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
- jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
- }
- }
- }
-
- // Set the display of most of the elements in a second loop
- // to avoid the constant reflow
- for ( i = 0; i < j; i++ ) {
- elem = this[i];
-
- if ( elem.style ) {
- display = elem.style.display;
-
- if ( display === "" || display === "none" ) {
- elem.style.display = jQuery._data(elem, "olddisplay") || "";
- }
- }
- }
-
- return this;
- }
- },
-
- hide: function( speed, easing, callback ) {
- if ( speed || speed === 0 ) {
- return this.animate( genFx("hide", 3), speed, easing, callback);
-
- } else {
- for ( var i = 0, j = this.length; i < j; i++ ) {
- if ( this[i].style ) {
- var display = jQuery.css( this[i], "display" );
-
- if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
- jQuery._data( this[i], "olddisplay", display );
- }
- }
- }
-
- // Set the display of the elements in a second loop
- // to avoid the constant reflow
- for ( i = 0; i < j; i++ ) {
- if ( this[i].style ) {
- this[i].style.display = "none";
- }
- }
-
- return this;
- }
- },
-
- // Save the old toggle function
- _toggle: jQuery.fn.toggle,
-
- toggle: function( fn, fn2, callback ) {
- var bool = typeof fn === "boolean";
-
- if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
- this._toggle.apply( this, arguments );
-
- } else if ( fn == null || bool ) {
- this.each(function() {
- var state = bool ? fn : jQuery(this).is(":hidden");
- jQuery(this)[ state ? "show" : "hide" ]();
- });
-
- } else {
- this.animate(genFx("toggle", 3), fn, fn2, callback);
- }
-
- return this;
- },
-
- fadeTo: function( speed, to, easing, callback ) {
- return this.filter(":hidden").css("opacity", 0).show().end()
- .animate({opacity: to}, speed, easing, callback);
- },
-
- animate: function( prop, speed, easing, callback ) {
- var optall = jQuery.speed(speed, easing, callback);
-
- if ( jQuery.isEmptyObject( prop ) ) {
- return this.each( optall.complete, [ false ] );
- }
-
- // Do not change referenced properties as per-property easing will be lost
- prop = jQuery.extend( {}, prop );
-
- return this[ optall.queue === false ? "each" : "queue" ](function() {
- // XXX 'this' does not always have a nodeName when running the
- // test suite
-
- if ( optall.queue === false ) {
- jQuery._mark( this );
- }
-
- var opt = jQuery.extend( {}, optall ),
- isElement = this.nodeType === 1,
- hidden = isElement && jQuery(this).is(":hidden"),
- name, val, p,
- display, e,
- parts, start, end, unit;
-
- // will store per property easing and be used to determine when an animation is complete
- opt.animatedProperties = {};
-
- for ( p in prop ) {
-
- // property name normalization
- name = jQuery.camelCase( p );
- if ( p !== name ) {
- prop[ name ] = prop[ p ];
- delete prop[ p ];
- }
-
- val = prop[ name ];
-
- // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
- if ( jQuery.isArray( val ) ) {
- opt.animatedProperties[ name ] = val[ 1 ];
- val = prop[ name ] = val[ 0 ];
- } else {
- opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
- }
-
- if ( val === "hide" && hidden || val === "show" && !hidden ) {
- return opt.complete.call( this );
- }
-
- if ( isElement && ( name === "height" || name === "width" ) ) {
- // Make sure that nothing sneaks out
- // Record all 3 overflow attributes because IE does not
- // change the overflow attribute when overflowX and
- // overflowY are set to the same value
- opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
-
- // Set display property to inline-block for height/width
- // animations on inline elements that are having width/height
- // animated
- if ( jQuery.css( this, "display" ) === "inline" &&
- jQuery.css( this, "float" ) === "none" ) {
- if ( !jQuery.support.inlineBlockNeedsLayout ) {
- this.style.display = "inline-block";
-
- } else {
- display = defaultDisplay( this.nodeName );
-
- // inline-level elements accept inline-block;
- // block-level elements need to be inline with layout
- if ( display === "inline" ) {
- this.style.display = "inline-block";
-
- } else {
- this.style.display = "inline";
- this.style.zoom = 1;
- }
- }
- }
- }
- }
-
- if ( opt.overflow != null ) {
- this.style.overflow = "hidden";
- }
-
- for ( p in prop ) {
- e = new jQuery.fx( this, opt, p );
- val = prop[ p ];
-
- if ( rfxtypes.test(val) ) {
- e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
-
- } else {
- parts = rfxnum.exec( val );
- start = e.cur();
-
- if ( parts ) {
- end = parseFloat( parts[2] );
- unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
-
- // We need to compute starting value
- if ( unit !== "px" ) {
- jQuery.style( this, p, (end || 1) + unit);
- start = ((end || 1) / e.cur()) * start;
- jQuery.style( this, p, start + unit);
- }
-
- // If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] ) {
- end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
- }
-
- e.custom( start, end, unit );
-
- } else {
- e.custom( start, val, "" );
- }
- }
- }
-
- // For JS strict compliance
- return true;
- });
- },
-
- stop: function( clearQueue, gotoEnd ) {
- if ( clearQueue ) {
- this.queue([]);
- }
-
- this.each(function() {
- var timers = jQuery.timers,
- i = timers.length;
- // clear marker counters if we know they won't be
- if ( !gotoEnd ) {
- jQuery._unmark( true, this );
- }
- while ( i-- ) {
- if ( timers[i].elem === this ) {
- if (gotoEnd) {
- // force the next step to be the last
- timers[i](true);
- }
-
- timers.splice(i, 1);
- }
- }
- });
-
- // start the next in the queue if the last step wasn't forced
- if ( !gotoEnd ) {
- this.dequeue();
- }
-
- return this;
- }
-
-});
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
- setTimeout( clearFxNow, 0 );
- return ( fxNow = jQuery.now() );
-}
-
-function clearFxNow() {
- fxNow = undefined;
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, num ) {
- var obj = {};
-
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
- obj[ this ] = type;
- });
-
- return obj;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx("show", 1),
- slideUp: genFx("hide", 1),
- slideToggle: genFx("toggle", 1),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" },
- fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return this.animate( props, speed, easing, callback );
- };
-});
-
-jQuery.extend({
- speed: function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
-
- // Queueing
- opt.old = opt.complete;
- opt.complete = function( noUnmark ) {
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
-
- if ( opt.queue !== false ) {
- jQuery.dequeue( this );
- } else if ( noUnmark !== false ) {
- jQuery._unmark( this );
- }
- };
-
- return opt;
- },
-
- easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
- },
- swing: function( p, n, firstNum, diff ) {
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
- }
- },
-
- timers: [],
-
- fx: function( elem, options, prop ) {
- this.options = options;
- this.elem = elem;
- this.prop = prop;
-
- options.orig = options.orig || {};
- }
-
-});
-
-jQuery.fx.prototype = {
- // Simple function for setting a style value
- update: function() {
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
- },
-
- // Get the current size
- cur: function() {
- if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
- return this.elem[ this.prop ];
- }
-
- var parsed,
- r = jQuery.css( this.elem, this.prop );
- // Empty strings, null, undefined and "auto" are converted to 0,
- // complex values such as "rotate(1rad)" are returned as is,
- // simple values such as "10px" are parsed to Float.
- return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
- },
-
- // Start an animation from one number to another
- custom: function( from, to, unit ) {
- var self = this,
- fx = jQuery.fx,
- raf;
-
- this.startTime = fxNow || createFxNow();
- this.start = from;
- this.end = to;
- this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
- this.now = this.start;
- this.pos = this.state = 0;
-
- function t( gotoEnd ) {
- return self.step(gotoEnd);
- }
-
- t.elem = this.elem;
-
- if ( t() && jQuery.timers.push(t) && !timerId ) {
- // Use requestAnimationFrame instead of setInterval if available
- if ( requestAnimationFrame ) {
- timerId = true;
- raf = function() {
- // When timerId gets set to null at any point, this stops
- if ( timerId ) {
- requestAnimationFrame( raf );
- fx.tick();
- }
- };
- requestAnimationFrame( raf );
- } else {
- timerId = setInterval( fx.tick, fx.interval );
- }
- }
- },
-
- // Simple 'show' function
- show: function() {
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
- this.options.show = true;
-
- // Begin the animation
- // Make sure that we start at a small width/height to avoid any
- // flash of content
- this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
-
- // Start by showing the element
- jQuery( this.elem ).show();
- },
-
- // Simple 'hide' function
- hide: function() {
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
- this.options.hide = true;
-
- // Begin the animation
- this.custom(this.cur(), 0);
- },
-
- // Each step of an animation
- step: function( gotoEnd ) {
- var t = fxNow || createFxNow(),
- done = true,
- elem = this.elem,
- options = this.options,
- i, n;
-
- if ( gotoEnd || t >= options.duration + this.startTime ) {
- this.now = this.end;
- this.pos = this.state = 1;
- this.update();
-
- options.animatedProperties[ this.prop ] = true;
-
- for ( i in options.animatedProperties ) {
- if ( options.animatedProperties[i] !== true ) {
- done = false;
- }
- }
-
- if ( done ) {
- // Reset the overflow
- if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
-
- jQuery.each( [ "", "X", "Y" ], function (index, value) {
- elem.style[ "overflow" + value ] = options.overflow[index];
- });
- }
-
- // Hide the element if the "hide" operation was done
- if ( options.hide ) {
- jQuery(elem).hide();
- }
-
- // Reset the properties, if the item has been hidden or shown
- if ( options.hide || options.show ) {
- for ( var p in options.animatedProperties ) {
- jQuery.style( elem, p, options.orig[p] );
- }
- }
-
- // Execute the complete function
- options.complete.call( elem );
- }
-
- return false;
-
- } else {
- // classical easing cannot be used with an Infinity duration
- if ( options.duration == Infinity ) {
- this.now = t;
- } else {
- n = t - this.startTime;
- this.state = n / options.duration;
-
- // Perform the easing function, defaults to swing
- this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
- this.now = this.start + ((this.end - this.start) * this.pos);
- }
- // Perform the next step of the animation
- this.update();
- }
-
- return true;
- }
-};
-
-jQuery.extend( jQuery.fx, {
- tick: function() {
- for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {
- if ( !timers[i]() ) {
- timers.splice(i--, 1);
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
- },
-
- interval: 13,
-
- stop: function() {
- clearInterval( timerId );
- timerId = null;
- },
-
- speeds: {
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
- },
-
- step: {
- opacity: function( fx ) {
- jQuery.style( fx.elem, "opacity", fx.now );
- },
-
- _default: function( fx ) {
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
- fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
- } else {
- fx.elem[ fx.prop ] = fx.now;
- }
- }
- }
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep(jQuery.timers, function( fn ) {
- return elem === fn.elem;
- }).length;
- };
-}
-
-// Try to restore the default display value of an element
-function defaultDisplay( nodeName ) {
-
- if ( !elemdisplay[ nodeName ] ) {
-
- var body = document.body,
- elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
- display = elem.css( "display" );
-
- elem.remove();
-
- // If the simple way fails,
- // get element's real default display by attaching it to a temp iframe
- if ( display === "none" || display === "" ) {
- // No iframe to use yet, so create it
- if ( !iframe ) {
- iframe = document.createElement( "iframe" );
- iframe.frameBorder = iframe.width = iframe.height = 0;
- }
-
- body.appendChild( iframe );
-
- // Create a cacheable copy of the iframe document on first call.
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
- // document to it; WebKit & Firefox won't allow reusing the iframe document.
- if ( !iframeDoc || !iframe.createElement ) {
- iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
- iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
- iframeDoc.close();
- }
-
- elem = iframeDoc.createElement( nodeName );
-
- iframeDoc.body.appendChild( elem );
-
- display = jQuery.css( elem, "display" );
-
- body.removeChild( iframe );
- }
-
- // Store the correct default display
- elemdisplay[ nodeName ] = display;
- }
-
- return elemdisplay[ nodeName ];
-}
-
-
-
-
-var rtable = /^t(?:able|d|h)$/i,
- rroot = /^(?:body|html)$/i;
-
-if ( "getBoundingClientRect" in document.documentElement ) {
- jQuery.fn.offset = function( options ) {
- var elem = this[0], box;
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- try {
- box = elem.getBoundingClientRect();
- } catch(e) {}
-
- var doc = elem.ownerDocument,
- docElem = doc.documentElement;
-
- // Make sure we're not dealing with a disconnected DOM node
- if ( !box || !jQuery.contains( docElem, elem ) ) {
- return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
- }
-
- var body = doc.body,
- win = getWindow(doc),
- clientTop = docElem.clientTop || body.clientTop || 0,
- clientLeft = docElem.clientLeft || body.clientLeft || 0,
- scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
- scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
- top = box.top + scrollTop - clientTop,
- left = box.left + scrollLeft - clientLeft;
-
- return { top: top, left: left };
- };
-
-} else {
- jQuery.fn.offset = function( options ) {
- var elem = this[0];
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- jQuery.offset.initialize();
-
- var computedStyle,
- offsetParent = elem.offsetParent,
- prevOffsetParent = elem,
- doc = elem.ownerDocument,
- docElem = doc.documentElement,
- body = doc.body,
- defaultView = doc.defaultView,
- prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
- top = elem.offsetTop,
- left = elem.offsetLeft;
-
- while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
- if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
- break;
- }
-
- computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
- top -= elem.scrollTop;
- left -= elem.scrollLeft;
-
- if ( elem === offsetParent ) {
- top += elem.offsetTop;
- left += elem.offsetLeft;
-
- if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevOffsetParent = offsetParent;
- offsetParent = elem.offsetParent;
- }
-
- if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevComputedStyle = computedStyle;
- }
-
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
- top += body.offsetTop;
- left += body.offsetLeft;
- }
-
- if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
- top += Math.max( docElem.scrollTop, body.scrollTop );
- left += Math.max( docElem.scrollLeft, body.scrollLeft );
- }
-
- return { top: top, left: left };
- };
-}
-
-jQuery.offset = {
- initialize: function() {
- var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
- html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-
- jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
-
- container.innerHTML = html;
- body.insertBefore( container, body.firstChild );
- innerDiv = container.firstChild;
- checkDiv = innerDiv.firstChild;
- td = innerDiv.nextSibling.firstChild.firstChild;
-
- this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
- this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
-
- checkDiv.style.position = "fixed";
- checkDiv.style.top = "20px";
-
- // safari subtracts parent border width here which is 5px
- this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
- checkDiv.style.position = checkDiv.style.top = "";
-
- innerDiv.style.overflow = "hidden";
- innerDiv.style.position = "relative";
-
- this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
-
- this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
-
- body.removeChild( container );
- jQuery.offset.initialize = jQuery.noop;
- },
-
- bodyOffset: function( body ) {
- var top = body.offsetTop,
- left = body.offsetLeft;
-
- jQuery.offset.initialize();
-
- if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
- top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
- left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
- }
-
- return { top: top, left: left };
- },
-
- setOffset: function( elem, options, i ) {
- var position = jQuery.css( elem, "position" );
-
- // set position first, in-case top/left are set even on static elem
- if ( position === "static" ) {
- elem.style.position = "relative";
- }
-
- var curElem = jQuery( elem ),
- curOffset = curElem.offset(),
- curCSSTop = jQuery.css( elem, "top" ),
- curCSSLeft = jQuery.css( elem, "left" ),
- calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
- props = {}, curPosition = {}, curTop, curLeft;
-
- // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
- if ( calculatePosition ) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
- } else {
- curTop = parseFloat( curCSSTop ) || 0;
- curLeft = parseFloat( curCSSLeft ) || 0;
- }
-
- if ( jQuery.isFunction( options ) ) {
- options = options.call( elem, i, curOffset );
- }
-
- if (options.top != null) {
- props.top = (options.top - curOffset.top) + curTop;
- }
- if (options.left != null) {
- props.left = (options.left - curOffset.left) + curLeft;
- }
-
- if ( "using" in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- }
-};
-
-
-jQuery.fn.extend({
- position: function() {
- if ( !this[0] ) {
- return null;
- }
-
- var elem = this[0],
-
- // Get *real* offsetParent
- offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
- offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
-
- // Add offsetParent borders
- parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
- parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
-
- // Subtract the two offsets
- return {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
- },
-
- offsetParent: function() {
- return this.map(function() {
- var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent;
- });
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ["Left", "Top"], function( i, name ) {
- var method = "scroll" + name;
-
- jQuery.fn[ method ] = function( val ) {
- var elem, win;
-
- if ( val === undefined ) {
- elem = this[ 0 ];
-
- if ( !elem ) {
- return null;
- }
-
- win = getWindow( elem );
-
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
- win.document.body[ method ] :
- elem[ method ];
- }
-
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
-
- if ( win ) {
- win.scrollTo(
- !i ? val : jQuery( win ).scrollLeft(),
- i ? val : jQuery( win ).scrollTop()
- );
-
- } else {
- this[ method ] = val;
- }
- });
- };
-});
-
-function getWindow( elem ) {
- return jQuery.isWindow( elem ) ?
- elem :
- elem.nodeType === 9 ?
- elem.defaultView || elem.parentWindow :
- false;
-}
-
-
-
-
-// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function( i, name ) {
-
- var type = name.toLowerCase();
-
- // innerHeight and innerWidth
- jQuery.fn[ "inner" + name ] = function() {
- var elem = this[0];
- return elem && elem.style ?
- parseFloat( jQuery.css( elem, type, "padding" ) ) :
- null;
- };
-
- // outerHeight and outerWidth
- jQuery.fn[ "outer" + name ] = function( margin ) {
- var elem = this[0];
- return elem && elem.style ?
- parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
- null;
- };
-
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- var elem = this[0];
- if ( !elem ) {
- return size == null ? null : this;
- }
-
- if ( jQuery.isFunction( size ) ) {
- return this.each(function( i ) {
- var self = jQuery( this );
- self[ type ]( size.call( this, i, self[ type ]() ) );
- });
- }
-
- if ( jQuery.isWindow( elem ) ) {
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
- var docElemProp = elem.document.documentElement[ "client" + name ];
- return elem.document.compatMode === "CSS1Compat" && docElemProp ||
- elem.document.body[ "client" + name ] || docElemProp;
-
- // Get document width or height
- } else if ( elem.nodeType === 9 ) {
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- return Math.max(
- elem.documentElement["client" + name],
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
- elem.body["offset" + name], elem.documentElement["offset" + name]
- );
-
- // Get or set width or height on the element
- } else if ( size === undefined ) {
- var orig = jQuery.css( elem, type ),
- ret = parseFloat( orig );
-
- return jQuery.isNaN( ret ) ? orig : ret;
-
- // Set the width or height on the element (default to pixels if value is unitless)
- } else {
- return this.css( type, typeof size === "string" ? size : size + "px" );
- }
- };
-
-});
-
-
-// Expose jQuery to the global object
-window.jQuery = window.$ = jQuery;
-})(window);
+/*! jQuery v1.8.2 jquery.com | jquery.org/license */
+(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bZ(c)&&(e[f]=p._data(c,"olddisplay",cc(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function ca(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bV[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bV[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bV[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bV[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bV[e]+"Width"))||0));return f}function cb(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?"border":"content"),e)+"px"}function cc(a){if(bS[a])return bS[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cA(a,c,d,e,"*",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(" ")?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":(a+"").replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e==="function"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!=="string"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)d=p._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)f.indexOf(" "+b[g]+" ")<0&&(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+""}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||"*",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[" "],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(""))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="<a name='"+o+"'></a><div name='"+o+"'></div>",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[":focus"],f=[":active",":focus"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'/>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$("show"),slideUp:c$("hide"),slideToggle:c$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!="undefined"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
\ No newline at end of file
-/*
+/**
* JavaScript for folding/unfolding menus
* --------------------------------------------------------------------
* $Revision:: $
* $Author:: $
* --------------------------------------------------------------------
* Copyright (c) 2003 - 2009 by Roland Haeder
- * Copyright (c) 2009 - 2011 by Mailer Developer Team
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
* For more information visit: http://mxchange.org
*
* This program is free software; you can redistribute it and/or modify
*/
// Init variables
-var menuStates = [];
-var id = null;
+var menuStates = new Array();
+var id = null;
/**
* Function to fold all menus and unfold current (mainAction) one
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module
-$GLOBALS['__module'] = 'lead-confirm';
-
-// Set "CSS-Mode"
-$GLOBALS['output_mode'] = '0';
+// Set module and output mode
+$GLOBALS['__module'] = 'lead-confirm';
+$GLOBALS['__output_mode'] = '0';
// Load config.php
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module / output mode
-$GLOBALS['__module'] = 'login';
-$GLOBALS['output_mode'] = -2;
+$GLOBALS['__module'] = 'login';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Tell everyone we are in this module
-$GLOBALS['__module'] = 'mailid';
-$GLOBALS['output_mode'] = '0';
+$GLOBALS['__module'] = 'mailid';
+$GLOBALS['__output_mode'] = '0';
$errorCode = '';
+// This is a frameset module
+$GLOBALS['frameset_mode'] = true;
+
+// Disable copyright footer which would break the frameset
+$GLOBALS['__copyright_enabled'] = 'N';
+
// Load the required file(s)
require('inc/config-global.php');
// Set content type and HTTP status
setContentType('text/html');
-setHttpStatus('404 NOT FOUND');
+setHttpStatus('404 Not Found');
// Is the extension active?
redirectOnUninstalledExtension('mailid');
break;
default: // Invalid mail type
- debug_report_bug(__FILE__, __LINE__, 'Invalid mail type ' . $ltype . ' detected.');
+ reportBug(__FILE__, __LINE__, 'Invalid mail type ' . $ltype . ' detected.');
break;
} // END - switch
break;
default: // Invalid mail type
- debug_report_bug(__FILE__, __LINE__, 'Invalid mail type ' . $ltype . ' detected.');
+ reportBug(__FILE__, __LINE__, 'Invalid mail type ' . $ltype . ' detected.');
break;
}
* @TODO Merge this script with mailid.php *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Tell everyone we are in this module
-$GLOBALS['__module'] = 'mailid';
-$GLOBALS['output_mode'] = '0';
+$GLOBALS['__module'] = 'mailid';
+$GLOBALS['__output_mode'] = '0';
+
+// Disable copyright footer which would be to large for the upper frame
+$GLOBALS['__copyright_enabled'] = 'N';
// Load the required file(s)
require('inc/config-global.php');
// Set content type and HTTP status
setContentType('text/html');
-setHttpStatus('404 NOT FOUND');
+setHttpStatus('404 Not Found');
// Is the extension mailid active?
redirectOnUninstalledExtension('mailid');
break;
default: // Unknown type
- debug_report_bug(__FILE__, __LINE__, 'Unknown mail type ' . $ltype . ' detected.');
+ reportBug(__FILE__, __LINE__, 'Unknown mail type ' . $ltype . ' detected.');
break;
}
list($pool, $sender, $notify) = SQL_FETCHROW($result_mailid);
// Correct notification switch in non-bonus mails
- if (($notify != 'Y') && ($notify != 'N')) {
+ if (!in_array($notify, array('Y', 'N'))) {
$notify = 'N';
} // END - if
break;
default: // Unknown type
- debug_report_bug(__FILE__, __LINE__, 'Unknown mail type ' . $ltype . ' detected.');
+ reportBug(__FILE__, __LINE__, 'Unknown mail type ' . $ltype . ' detected.');
break;
- }
+ } // END - switch
// Is this entry valid?
if ($isValid === true) {
break;
default: // Unknown type
- debug_report_bug(__FILE__, __LINE__, 'Unknown mail type ' . $ltype . ' detected.');
+ reportBug(__FILE__, __LINE__, 'Unknown mail type ' . $ltype . ' detected.');
break;
} // END - switch
$content['banner'] = loadTemplate('mailid_banner', true);
if (getCodeLength() > 0) {
// Generate Code
- $content['image'] = generateCaptchaCode($realCode, $type, $urlId, $userId);
+ $content['image'] = generateCaptchaCode($code, $type, $urlId, $userId);
$templ = 'mailid_enter_code';
} else {
// Disabled code
loadTemplate($templ, false, $content);
} else {
// Cannot confirm!
- debug_report_bug(__FILE__, __LINE__, 'No code given.');
+ reportBug(__FILE__, __LINE__, 'No code given.');
}
break;
$content['userid'] = $userId;
$content['type'] = $type;
$content['data'] = $urlId;
- $content['rand'] = mt_rand(0, 99999);
+ $content['rand'] = getRandomTan();
$content['banner'] = loadTemplate('mailid_banner', true);
// Load template
break;
default: // Unknown mode
- debug_report_bug(__FILE__, __LINE__, 'Unknown mode ' . $do . ' detected.');
+ reportBug(__FILE__, __LINE__, 'Unknown mode ' . $do . ' detected.');
break;
} // END - switch
} else {
}
// Really all done here... ;-)
-shutdown();
+doShutdown();
// [EOF]
?>
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Init output mode and module
-$GLOBALS['__module'] = 'unknown';
-$GLOBALS['output_mode'] = '0';
+$GLOBALS['__module'] = 'unknown';
+$GLOBALS['__output_mode'] = '0';
// Needed include files
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
-// Set module
-$GLOBALS['__module'] = 'network-vcheck';
-$GLOBALS['output_mode'] = '0';
+// Set module and output mode (raw)
+$GLOBALS['__module'] = 'network-vcheck';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module
-$GLOBALS['__module'] = 'ref';
-$GLOBALS['output_mode'] = -1;
+$GLOBALS['__module'] = 'ref';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
-#
-# Thanx to Mr. Jungwirth for his hint to create this file (was a bit lost in my mind...)
-#
+# Generic exclusion (makes never sense)
User-agent: *
Disallow: /css/
Disallow: /inc/
Disallow: /install.php
Disallow: /cms/index/wht/impressum
+# Exclusion for Google (he will not listen to '*' :( )
User-agent: Googlebot
Disallow: /css/
Disallow: /inc/
Disallow: /install.php
Disallow: /cms/index/wht/impressum
+# A lot "bot" you may don't like as I do
User-agent: grub-client
Disallow: /
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set this because we have no module in URI
-$GLOBALS['__module'] = 'show_bonus';
-$GLOBALS['output_mode'] = '0';
+$GLOBALS['__module'] = 'show_bonus';
+$GLOBALS['__output_mode'] = '0';
// Load the required file(s)
require('inc/config-global.php');
if (!empty($t)) {
// Check for data
$result = SQL_QUERY_ESC("SELECT
- d.`userid`, b.`level`, b.`points`
+ d.`userid`,
+ b.`level`,
+ b.`points`
FROM
`{?_MYSQL_PREFIX?}_user_data` AS d
INNER JOIN
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software. You can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module / output mode
-$GLOBALS['__module'] = 'sponsor_confirm';
-$GLOBALS['output_mode'] = -2;
+$GLOBALS['__module'] = 'sponsor_confirm';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software. You can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module / output mode
-$GLOBALS['__module'] = 'sponsor_ref';
-$GLOBALS['output_mode'] = -2;
+$GLOBALS['__module'] = 'sponsor_ref';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module output mode
-$GLOBALS['__module'] = 'surfbar';
-$GLOBALS['output_mode'] = '0';
-$GLOBALS['header_sent'] = 3;
+$GLOBALS['__module'] = 'surfbar';
+$GLOBALS['__output_mode'] = '0';
+$GLOBALS['__header_sent'] = 3;
// Load the required file(s)
require('inc/config-global.php');
setContentType('text/html');
// Is a frame active?
-if (isGetRequestElementSet('frame')) {
+if (!isFullPage()) {
// Then we need to set header_sent to 0
- $GLOBALS['header_sent'] = '0';
+ $GLOBALS['__header_sent'] = '0';
} // END - if
// Only logged in users may use this surfbar!
// No member?
if (!isMember()) {
// Should we display login window or redirect to main page?
- if ((getConfig('surfbar_guest_login_form') == 'Y') && (isExtensionActive('user'))) {
+ if ((isSurfbarGuestLoginFormEnabled()) && (isExtensionActive('user'))) {
// Is the form sent?
- if ((isFormSent()) && (isPostRequestElementSet('id')) && (isPostRequestElementSet('password'))) {
+ if ((isFormSent('login')) && (isPostRequestElementSet('id')) && (isPostRequestElementSet('password'))) {
// Do the login procedure
$url = doUserLogin(postRequestElement('id'), postRequestElement('password'), basename(__FILE__), basename(__FILE__) . '?code=');
loadTemplate('surfbar_login_form');
// Allow footer here
- $GLOBALS['header_sent'] = 2;
+ $GLOBALS['__header_sent'] = 2;
// Load footer
loadIncludeOnce('inc/footer.php');
} // END - if
// Initialize the surfbar
-SURFBAR_INIT();
+initSurfbar();
// Handle tasks on self-maintenance
-SURFBAR_HANDLE_SELF_MAINTENANCE();
+doSurfbarSelfMaintenance();
// Is there a check value?
-if ((SURFBAR_CHECK_RELOAD_FULL()) || ((isGetRequestElementSet('frame')) && (in_array(getRequestElement('frame'), array('stop', 'stop2', 'stats', 'textlinks'))))) {
+if ((isSurfbarReloadFull()) || ((!isFullPage()) && (in_array(getRequestElement('frame'), array('stop', 'stop2', 'stats', 'textlinks'))))) {
// Reload-lock is full, surfbar stopped so...
// Load header
loadIncludeOnce('inc/header.php');
// Load template
- if (((isGetRequestElementSet('frame')) && (getRequestElement('frame') == 'stop2')) || (!isGetRequestElementSet('frame'))) {
+ if (((!isFullPage()) && (getRequestElement('frame') == 'stop2')) || (isFullPage())) {
// Load template for "start" page
loadTemplate('surfbar_frame_start');
// This makes the footer appear again
unsetGetRequestElement('frame');
- } elseif ((isGetRequestElementSet('frame')) && (getRequestElement('frame') == 'stats')) {
+ } elseif ((!isFullPage()) && (getRequestElement('frame') == 'stats')) {
// Prepare content
$content = array(
'points' => getTotalPoints(getMemberId()),
- 'reload' => (getConfig('surfbar_stats_reload') * 1000)
+ 'reload' => (getSurfbarStatsReload() * 1000)
);
// Load template for "stats" page
loadTemplate('surfbar_frame_stats', false, $content);
- } elseif ((isGetRequestElementSet('frame')) && (getRequestElement('frame') == 'textlinks')) {
+ } elseif ((!isFullPage()) && (getRequestElement('frame') == 'textlinks')) {
// Prepare content
$content = array(
- 'reload' => (getConfig('surfbar_stats_reload') * 1000)
+ 'reload' => (getSurfbarStatsReload() * 1000)
);
// Load template for "stats" page
} else {
// Prepare content
$content = array(
- 'start' => str_repeat('X', strlen(getConfig('surfbar_restart_time'))),
- 'autostart' => (getConfig('surfbar_autostart') == 'Y') ? 'true' : 'false'
+ 'start' => str_repeat('X', strlen(getSurfbarRestartTime())),
+ 'autostart' => (isSurfbarAutoStartEnbaled()) ? 'true' : 'false'
);
// Load template for stopped surfbar
}
} elseif ((isGetRequestElementSet('check')) && (isGetRequestElementSet('id')) && (isGetRequestElementSet('salt'))) {
// Dummy next id get
- SURFBAR_DETERMINE_NEXT_ID(getRequestElement('id'));
+ determineSurfbarNextId(getRequestElement('id'));
// Check reload lock and validation code
- if ((!SURFBAR_CHECK_RELOAD_LOCK(getRequestElement('id'))) && (SURFBAR_CHECK_VALIDATION_CODE(getRequestElement('id'), getRequestElement('check'), getRequestElement('salt')))) {
+ if ((!ifSurfbarReloadLock(getRequestElement('id'))) && (isSurfbarValidationCodeValid(getRequestElement('id'), getRequestElement('check'), getRequestElement('salt')))) {
// Lock the URL (id) down
- SURFBAR_LOCKDOWN_ID(getRequestElement('id'));
+ addSurfbarReloadLockById(getRequestElement('id'));
// Code is valid so pay points here
- SURFBAR_PAY_POINTS();
+ doSurfbarPayPoints();
// Check if reload is full
- if (SURFBAR_CHECK_RELOAD_FULL()) {
+ if (isSurfbarReloadFull()) {
// Then load waiting page
- SURFBAR_RELOAD_TO_STOP_PAGE();
+ redirectToSurfbarStopPage();
} // END - if
// Load header to avoid a bug
loadIncludeOnce('inc/header.php');
} else {
// Reload to stop frame!
- SURFBAR_RELOAD_TO_STOP_PAGE();
+ redirectToSurfbarStopPage();
}
// All done, so fix notice for footer.php
- $GLOBALS['footer_sent'] = 1;
+ $GLOBALS['__footer_sent'] = 1;
} else {
// Prepare content
$content = '';
// Frame "top" set?
- if ((isGetRequestElementSet('frame')) && (getRequestElement('frame') == 'top')) {
+ if ((!isFullPage()) && (getRequestElement('frame') == 'top')) {
// Determine next id
- $nextId = SURFBAR_DETERMINE_NEXT_ID();
- //* DEBUG: */ die('nextId='.$nextId);
+ $nextId = determineSurfbarNextId();
+ //* DEBUG: */ exit('nextId='.$nextId);
// Is there a valid id?
if ($nextId > 0) {
// Then prepare other content
$content = array(
'url_id' => $nextId,
- 'xxx' => str_repeat('X', strlen(SURFBAR_GET_RELOAD_TIME($nextId))),
+ 'xxx' => str_repeat('X', strlen(gerSurfbarReloadTime($nextId))),
);
// Update salt (double-call lock!) and statistics
- SURFBAR_UPDATE_SALT_STATS();
+ updateSurfbarSaltStatistics();
} else {
// Load new URL
- SURFBAR_RELOAD_TO_STOP_PAGE('stop');
+ redirectToSurfbarStopPage('stop');
}
- } elseif ((isGetRequestElementSet('frame')) && (getRequestElement('frame') == 'start')) {
+ } elseif ((!isFullPage()) && (getRequestElement('frame') == 'start')) {
// Starter frame found so let the footer display
unsetGetRequestElement('frame');
}
loadIncludeOnce('inc/header.php');
// Determine template name
- $templateName = SURFBAR_DETERMINE_TEMPLATE_NAME();
+ $templateName = determineSurfbarTemplateName();
// Load that template
- //* DEBUG: */ die('templateName=' . $templateName . '<br /><strong>content</strong>=<pre>' . print_r($content, true) . '</pre>');
+ //* DEBUG: */ exit('templateName=' . $templateName . '<br /><strong>content</strong>=<pre>' . print_r($content, true) . '</pre>');
loadTemplate($templateName, false, $content);
}
// Load footer
-$GLOBALS['footer_sent'] = 3;
+$GLOBALS['__footer_sent'] = 3;
loadIncludeOnce('inc/footer.php');
// [EOF]
--- /dev/null
+Hallo Administrator,
+
+Einer unserer Administratoren hat einem Mitglied per Sammel-Direktgutschrift {?POINTS?} aufgebucht!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+einies unserer Mitglieder hat soeben eine anteilige Sammel-Referralgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+Einer unserer Administratoren hat einem Mitglied per Sammel-Referralgutschrift {?POINTS?} aufgebucht!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+Einer unserer Administratoren hat einem Mitglied per Einzel-Direktgutschrift {?POINTS?} aufgebucht!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+Einer unserer Administratoren hat einem Mitglied per Einzel-Referralgutschrift {?POINTS?} aufgebucht!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied soeben beim Betteln {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+ein Mitglied soeben beim Betteln {%pipe,translateComma=$content[points]%} {?POINTS?} per anteiliger Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+ein Mitglied soeben beim Betteln {%pipe,translateComma=$content[points]%} {?POINTS?} per Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
------------------------------
Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
+ Ihr {?MAIN_TITLE?} Script
-{?URL?}/login.php ({?WEBMASTER?})
+{?URL?}/admin.php
--------------------------------------------------
Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
+ Ihr {?MAIN_TITLE?} Script
-{?URL?}/login.php ({?WEBMASTER?})
+{?URL?}/admin.php
$content
Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
+ Ihr {?MAIN_TITLE?} Script
-{?URL?}/login.php ({?WEBMASTER?})
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+Es wurde soeben Forced-Werbemittel geändert.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Forced-Werbemittel-Id: $content[forced_ads_id]
+------------------------------------------
+{--ADMIN_FORCED_ADS_AD_URL--}: $content[forced_ads_ad_url]
+------------------------------------------
+{--ADMIN_FORCED_ADS_ALTERNATE_TEXT--}: $content[forced_ads_alt_text]
+------------------------------------------
+{--ADMIN_FORCED_ADS_CLICK_URL--}: $content[forced_ads_click_url]
+------------------------------------------
+{--ADMIN_FORCED_ADS_WIDTH--}: {%pipe,translateComma=$content[forced_ads_width]%}
+------------------------------------------
+{--ADMIN_FORCED_ADS_HEIGHT--}: {%pipe,translateComma=$content[forced_ads_height]%}
+------------------------------------------
+{--ADMIN_FORCED_ADS_USERID--}: $content[forced_ads_userid]
+------------------------------------------
+{--ADMIN_FORCED_ADS_TYPE--}: {%pipe,translateForcedAdsType=$content[forced_ads_type]%}
+------------------------------------------
+{--ADMIN_FORCED_ADS_HAS_FRAMEBREAKER--}: {%pipe,translateYesNo=$content[forced_ads_framebreaker]%}
+------------------------------------------
+{--ADMIN_FORCED_ADS_VIEWS_COUNTER--}: {%pipe,translateComma=$content[forced_ads_views_counter]%}
+------------------------------------------
+{--ADMIN_FORCED_ADS_CLICKS_COUNTER--}: {%pipe,translateComma=$content[forced_ads_clicks_counter]%}
+------------------------------------------
+{--ADMIN_FORCED_ADS_ADDED--}: $content[forced_ads_added]
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+Es wurde soeben Forced-Preise geändert.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Forced-Preis-Id: $content[forced_costs_id]
+------------------------------------------
+{--ADMIN_FORCED_COSTS_PRICE_CLICK--}: {%pipe,translateComma=$content[forced_costs_price_click]%}
+------------------------------------------
+{--ADMIN_FORCED_COSTS_PAYMENT_CLICK--}: {%pipe,translateComma=$content[forced_costs_payment_click]%}
+------------------------------------------
+{--ADMIN_FORCED_COSTS_VISIBILITY--}: {%pipe,translateForcedCostsVisibility=$content[forced_costs_visibility]%}
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+es wurde soeben ein {?POINTS?}-Guthabenkonto geändert.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Konten-Id: $content[id]
+------------------------------------------
+{--ADMIN_POINTS_ACCOUNT_SUBJECT--}: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------------------
+{--ADMIN_POINTS_ACCOUNT_COLUMN_NAME--}: {%pipe,translatePointsAccountType=$content[column_name]%}
+------------------------------------------
+{--ADMIN_POINTS_ACCOUNT_LOCKED_MODE--}: {%pipe,translatePointsLockedMode=$content[locked_mode]%}
+------------------------------------------
+{--ADMIN_POINTS_ACCOUNT_PAYMENT_METHOD--}: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------------------
+{--ADMIN_POINTS_ACCOUNT_NOTIFY_RECIPIENT--} {%pipe,translateYesNo=$content[notify_recipient]%}
+------------------------------------------
+{--ADMIN_POINTS_ACCOUNT_PROVIDER--}: {%pipe,translatePointsAccountProvider=$content[account_provider]%}
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
Bitte deinstallieren Sie bald diese Erweiterung. Sie wird vom {?TITLE?}-Entwicklerteam nicht mehr unterstützt.
Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
+ Ihr {?MAIN_TITLE?} Script
-{?URL?}/login.php ({?WEBMASTER?})
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein Administrator hat soeben eine Forced-Kampagne freigeschaltet.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Mitglied-Id: $content[forced_campaign_userid]
+------------------------------------------
+Email: {%user,email=$userid%}
+------------------------------------------
+Name: {%user,surname=$userid%} {%user,family=$userid%}
+------------------------------------------
+Kampagnen-Id: $content[forced_campaign_id]
+------------------------------------------
+Kampagne erstellt: $content[forced_campaign_created]
+------------------------------------------
+Klicks übrig: {%pipe,translateComma=$content[forced_campaign_ordered_clicks]%}
+------------------------------------------
+Reload-Sperre: {%pipe,createFancyTime=$content[forced_campaign_reload_lock]%}
+------------------------------------------
+Mindestauffenthalt: {%pipe,createFancyTime=$content[forced_campaign_minimum_stay]%}
+------------------------------------------
+Forced-Werbemittel: $content[forced_ads_id]
+------------------------------------------
+Kosten-Id: $content[forced_costs_id]
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein geworbenes Mitglied hat soeben eine Mail korrekt bestägt und über das Referral-System eine Gutschrift erhalten. Der Werber hat hiermit einen Anteil gutgeschrieben bekommen.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben eine Mail korrekt bestägt und über das Referral-System eine Gutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben bei der monatlichen Bettelrallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben bei der monatlichen Bettelrallye {%pipe,translateComma=$content[points]%} {?POINTS?} per anteiliger Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben bei der monatlichen Bettelrallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben bei der monatlichen Aktiv-Rallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben bei der monatlichen Aktiv-Rallye {%pipe,translateComma=$content[points]%} {?POINTS?} per anteiliger Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben bei der monatlichen Aktiv-Rallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
Es wurden bereits alle {%pipe,translateComma=$content[count]%} Gewinner informiert!
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
Bitte informieren Sie Ihre Mitglieder nun selber:
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
$content
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
$content
-----------------------------------
Bereits verdient: {%pipe,translateComma=$content[refback_points]%} {?POINTS?}
-----------------------------------
-Hinweis: $content[refback_note]
+Hinweis: $content[refback_notice]
-----------------------------------
Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
+ Ihr {?MAIN_TITLE?} Script
-{?URL?}/login.php ({?WEBMASTER?})
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+soeben hat ein Mitglied Refback-{?POINTS?} per Direktgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+Refbackgeber: $content[subject_userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+soeben hat ein Mitglied anteilig Refback-{?POINTS?} von einer Referralgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+Refbackgeber: $content[subject_userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+soeben hat ein Mitglied Refback-{?POINTS?} von einer Referralgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+Refbackgeber: $content[subject_userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein geworbenes Mitglied hat soeben seine Email-Adresse bestätigt. Dabei wurde dem Werber eine einmalige Werbeprämie per Direktgutschrift aufgebucht.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein geworbenes Mitglied hat soeben seine Email-Adresse bestätigt. Dabei wurde dem Werber einen Anteil der einmaligen Werbeprämie per Referralgutschrift aufgebucht.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein geworbenes Mitglied hat soeben seine Email-Adresse bestätigt. Dabei wurde dem Werber eine einmalige Werbeprämie per Referralgutschrift aufgebucht.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglied: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+ein Mitglied hat soeben per Direktgutschrift seine Willkommensgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
------------------------------
IP-Nummer: {%server,remote_addr%} (Real: {%server,real_ip_address%})
------------------------------
-User-Id: {%user,userid%}
+User-Id: {%template,UserId%}
------------------------------
-Bitte melden Sie diesen Bug im Forum oder Bug-Tracker von {?TITLE?}, diese Mail ist nicht an das Entwicklerteam weitergeleitet. Die Links dazu finden Sie am Ende dieser Mail.
+Bitte melden Sie diesen Bug im Forum oder Bug-Tracker von {?TITLE?}, die Links dazu finden Sie am Ende dieser Mail. Diese Mail ist nicht an das Entwicklerteam weitergeleitet worden.
+
+Alternativ können Sie auch auf diese Mail antworten (webmaster@mxchange.org), fügen Sie bitte das Logbuch inc/cache/debug.log und weitere Fehlermeldungen vom Script dazu.
Mit freundlichen Grüßen,
Ihr {?MAIN_TITLE?} Script
------------------------------
Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
+ Ihr {?MAIN_TITLE?} Script
-{?URL?} ({?WEBMASTER?})
+{?URL?}/admin.php
--- /dev/null
+Hallo Administrator,
+
+Ein Mitglied hat soeben seine abgelehnte URL erneut angemeldet. Dabei wurde sie auf "Wartend" gestellt.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Mitglied-Id: $content[url_userid]
+------------------------------------------
+Email: {%user,email=$userid%}
+------------------------------------------
+Name: {%user,surname=$userid%} {%user,family=$userid%}
+------------------------------------------
+Gebuchte URL: $content[url]
+------------------------------------------
+ID in der Surfbar: $content[url_id]
+------------------------------------------
+URL angemeldet: $content[url_registered]
+------------------------------------------
+Zuletzt gesperrt: $content[url_last_locked]
+------------------------------------------
+Sperrgrund: $content[url_lock_reason]
+------------------------------------------
+Gesamteinblendungen: {%pipe,translateComma=$content[url_views_total]%}
+------------------------------------------
+Maximale Einblendungen: {%pipe,translateComma=$content[url_views_allowed]%}
+------------------------------------------
+Davon übrig: {%pipe,translateComma=$content[url_views_max]%}
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Script
+
+{?URL?}/admin.php
-- Daten des Empfängers: --
------------------------------
Mitglied-Id: $content[recipient][userid]
-Vollst. Name: {%pipe,translateGender=$content[recipient][gender]%} $content[recipient][surname] $content[recipient][family]
+Vollst. Name: {%pipe,translateGender=$content[recipient][gender]%} $content[recipient][userid] $content[recipient][userid]
Email-Adresse: $content[recipient][email]
------------------------------
-- Daten des Absenders: --
------------------------------
Mitglied-Id: $content[sender][userid]
-Vollst. Name: {%pipe,translateGender=$content[sender][gender]%} $content[sender][surname] $content[sender][family]
+Vollst. Name: {%pipe,translateGender=$content[sender][gender]%} $content[sender][userid] $content[sender][userid]
Email-Adresse: $content[sender][email]
------------------------------
IP-Nummer: {%server,remote_addr%} (Real: {%server,real_ip_address%})
-Hallo {%sponsor,gender,translateGender=$content[id]%} {%sponsor,surname=$content[id]%} {%sponsor,family=$content[id]%},
-
-Einer unserer Administratoren hat soeben Ihren Account gelöscht!
-
-Grund der Löschung war folgender:
-------------------------------------
-$content[reason]
-------------------------------------
-Ihre Sponsor-Id war: $content[id]
-------------------------------------
-
-Wir wünschen Ihnen weiterhin noch alles Gute und können Sie vielleicht irgentwann einmal wieder als Sponsor begrüssen.
-
-Vielen Dank.
-
-Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
-
-{?URL?} ({?WEBMASTER?})
+@DEPRECATED
Sie oder ein anderes Mitglied haben soben ein neues Passwort angefordert. Hier ist Ihr neues Passwort:
------------------------------------
-Ihre Login-Id lautet: $userid / Nickname: $content[nickname]
+Ihre Mitglieds-Id: $userid / Nickname: $content[nickname]
Neues Passwort: $content[new_pass]
Sie können sich nun hier einloggen:: {?URL?}/login.php
------------------------------------
Sie haben soeben Ihre Email-Adresse bestätigt und sind somit für den {?mt_word?} {?MAIN_TITLE?} freigeschaltet!
-Sie können sich nun hier einloggen:
-
-Ihre Login-Id lautet: $userid
+Sie können sich nun hiermit einloggen:
+-------------------------------------
+Ihre Mitglieds-Id lautet: $userid
URL zum Login: {?URL?}/login.php
+-------------------------------------
Für Ihre Anmeldung werden wir Ihnen als Willkommensgutschrift {%config,translateComma=points_register%} {?POINTS?} gutschreiben, sobald Sie {?ref_payout?} Mails bestätigt haben. Erst dann können Sie Mails an andere Mitglieder verschicken!
Wir wünschen Ihnen viel Spass und Erfolg beim Mail-Versand!
+Das Passwort kann nicht mitgeschickt werden, da es kodiert gespeichert wurde. Dies wird aus Sicherheitsgründen getan.
+
Mit freundlichen Grüßen,
Ihr {?MAIN_TITLE?} Team
Sie haben heute ein neues Mitglied für {?MAIN_TITLE?} geworben!
Hier sehen Sie genau, in welcher Ebene Sie ihn geworben haben:
------------------
+-------------------------------------------------
+Ihre Mitglieds-Id: $content[refid]
+-------------------------------------------------
Referral-Ebene ({%pipe,translateComma=$content[percents]%}%): $content[level]
-{?POINTS?}: {%pipe,translateComma=$content[points]%}
-ID des Mitgliedes: {%user,refid,bigintval=$userid%}
------------------
+Anteilige {?POINTS?} an Willkommensgutschrift: {%pipe,translateComma=$content[points]%}
+ID des Mitgliedes: $content[userid]
+-------------------------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+-------------------------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+-------------------------------------------------
-Sie werden nun auch weiterhin {?POINTS?} über diese geworbene Person erhalten.
-
-Vielen Dank für Ihr Mitwerben! Wir wünschen Ihnen noch weiterhin viele neue Referrals!
+Vielen Dank für Ihr Mitwerben. Wir wünschen Ihnen noch weiterhin viele neue Referrals. Sie werden nun auch weiterhin {?POINTS?} über dieses geworbene Mitglied erhalten.
Mit freundlichen Grüßen,
Ihr {?MAIN_TITLE?} Team
Bounces-To: {?WEBMASTER?}
X-Loop: {?WEBMASTER?}
From: "{?MAIN_TITLE?}" <{?WEBMASTER?}>
+{%template,AddExtraTextMailHeaders=$content%}
Bounces-To: {?WEBMASTER?}
X-Loop: {?WEBMASTER?}
From: "{?MAIN_TITLE?}" <{?WEBMASTER?}>
+{%template,AddExtraHtmlMailHeaders=$content%}
-Hallo {%sponsor,gender,translateGender=$content[id]%} {%sponsor,surname=$content[id]%} {%sponsor,family=$content[id]%},
-
---------------------------
-Ihre Sponsor-Id bei uns: $content[id]
---------------------------
-
-$content[message]
-
-Grund der Sperrung war:
---------------------------
-$content[reason]
---------------------------
-
-Sollten Sie damit nicht einverstanden sein, so melden Sie sich bitte bei uns ({?WEBMASTER?}). Wir kommen dann mit Ihnen bald in Kontakt.
-
-Vielen Dank.
-
-Mit freundlichen Grüßen,
- Ihr {?MAIN_TITLE?} Team
-
-{?URL?} ({?WEBMASTER?})
+@DEPRECATED
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Einer unserer Administratoren hat Ihnen soeben {%pipe,translateComma=$content[points]%} {?POINTS?} per Sammel-Direktgutschrift aufgebucht!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben eine anteilige Sammel-Referralgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Einer unserer Administratoren hat Ihnen soeben {%pipe,translateComma=$content[points]%} {?POINTS?} per Referral-System aufgebucht! Ihren Referrals werden prozentuale Gutschrift aufgebucht.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Einer unserer Administratoren hat Ihnen soeben {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutschrift aufgebucht!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Einer unserer Administratoren hat Ihnen soeben {%pipe,translateComma=$content[points]%} {?POINTS?} per Referral-System aufgebucht! Ihren Referrals werden prozentuale Gutschrift aufgebucht.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben beim Betteln {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben beim Betteln {%pipe,translateComma=$content[points]%} {?POINTS?} per anteiliger Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben beim Betteln {%pipe,translateComma=$content[points]%} {?POINTS?} per Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Ein Administrator hat soeben Ihre Forced-Kampagne freigeschaltet.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Mitglied-Id: $content[forced_campaign_userid]
+------------------------------------------
+Kampagnen-Id: $content[forced_campaign_id]
+------------------------------------------
+Werbemittel-Id: $content[forced_ads_id]
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?}/login.php ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+eines Ihrer geworbenen Mitglieder hay soeben eine Mail korrekt bestätigt und dafür über das Referral-System eine Gutschrift erhalten. Sie erhalten hiermit einen Anteil davon.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben eine Mail korrekt bestätigt und dafür über das Referral-System eine Gutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben bei der monatlichen Bettelrallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben bei der monatlichen Bettelrallye {%pipe,translateComma=$content[points]%} {?POINTS?} per anteiliger Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben bei der monatlichen Bettelrallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben bei der monatlichen Aktiv-Rallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Direktgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben bei der monatlichen Aktiv-Rallye {%pipe,translateComma=$content[points]%} {?POINTS?} per anteiliger Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben bei der monatlichen Aktiv-Rallye {%pipe,translateComma=$content[points]%} {?POINTS?} per Referralgutgschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
Wir bedanken uns für Ihre Bemühungen und Interesse an unserer Rallye und wünschen Ihnen weiterhin viel Erfolg und viele interessante Webseiten von unseren Mitgliedern.
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
Wir bedanken uns für Ihre Bemühungen und Interesse an unserer Rallye und wünschen Ihnen weiterhin viel Erfolg und viele interessante Webseiten von unseren Mitgliedern.
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
Wir bedanken uns für Ihre Bemühungen und Interesse an unserer Rallye und wünschen Ihnen weiterhin viel Erfolg und viele interessante Webseiten von unseren Mitgliedern.
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
Wir bedanken uns für Ihre Bemühungen und Interesse an unserer Rallye und wünschen Ihnen weiterhin viel Erfolg und viele interessante Webseiten von unseren Mitgliedern.
------------------------------
Titel: $content[title]
------------------------------
-Beginn der Rallye: $content[start] Uhr
-Ende der Rallye: $content[end] Uhr
-Server-Zeit: $content[now_t] Uhr
+Beginn der Rallye: $content[start_time] Uhr
+Ende der Rallye: $content[end_time] Uhr
+Server-Zeit: $content[now_time] Uhr
------------------------------
-$content[prices]
+{%pipe,addReferralRallyePrices=$content[id]%}
Ihr Werbelink zum Werben neuer Mitglieder:
{?URL?}/ref.php?refid=$userid
------------------------------
Wichtig:
------------------------------
- Es werden nur aktive User gewertet. Der Rechtsweg ist ausgeschlossen.
-- $content[min_users]
-- $content[min_prices]
+- {%pipe,determineReferralRallyeMinimumUsers=$content[min_users]%}
+- {%pipe,determineReferralRallyeMinimumPrices=$content[min_prices]%}
------------------------------
Mit freundlichen Grüßen,
das Mitglied {%pipe,getMemberId%} hat Ihnen soeben {%pipe,translateComma=$content[refback_percents]%}% Refback eingestellt. Sie erhalten also anteilig {?POINTS?} von seinen Referral-Gutschriften die Sie ihm/ihr bringen ebenfalls gutgeschrieben.
------------------------------
-Ihr Mitglied-Id ist: $userid
+Mitglied-Id: $userid
------------------------------
Refback: {%pipe,translateComma=$content[refback_percents]%}%
------------------------------
-Hinweis: $content[refback_note]
+Hinweis: $content[refback_notice]
------------------------------
-Sie haben bereits {%pipe,translateComma=$content[refback_points]%} {?POINTS?} Refback-Vergütung an das Mitglied abgegeben.
+Sie haben bereits {%pipe,translateComma=$content[refback_points]%} {?POINTS?} Refback-Vergütung von dem Mitglied erhalten.
Mit freundlichen Grüßen,
Ihr {?MAIN_TITLE?} Team
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben {%pipe,translateComma=$content[points]%} {?POINTS?} Refback per Direktgutschrift erhalten!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+Refbackgeber: $content[subject_userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben anteilig {%pipe,translateComma=$content[points]%} {?POINTS?} Refback von einer Referralgutschrift erhalten!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+Refbackgeber: $content[subject_userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben {%pipe,translateComma=$content[points]%} {?POINTS?} Refback von einer Referralgutschrift erhalten!
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+Refbackgeber: $content[subject_userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+eines Ihrer geworbenen Mitglieder hat soeben seine Email-Adresse bestätigt. Dabei haben Sie eine einmalige Werbeprämie per Direktgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+eines Ihrer geworbenen Mitglieder hat soeben seine Email-Adresse bestätigt. Dabei haben Sie einen Anteiler seiner einmaligen Werbeprämie per Referralgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+eines Ihrer geworbenen Mitglieder hat soeben seine Email-Adresse bestätigt. Dabei haben Sie eine einmalige Werbeprämie per Referralgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Referral-Ebene: $content[level]
+------------------------------
+Prozente: {%pipe,translateComma=$content[percents]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie haben soeben per Direktgutschrift Ihre Willkommensgutschrift erhalten.
+
+Hier sind nochmals alle Daten dazu:
+------------------------------
+Ihre Mitglieds-Id: $content[userid]
+------------------------------
+{?POINTS?}: {%pipe,translateComma=$content[points]%}
+------------------------------
+Guthabenkonto: {%pipe,translatePointsAccountType=$content[column]%}
+------------------------------
+Verwendungszweck: {%pipe,translatePointsSubject=$content[subject]%}
+------------------------------
+Vergütungsmethode: {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%user,gender,translateGender=$userid%} {%user,surname=$userid%} {%user,family=$userid%},
+
+Sie hatten soeben Ihre abgelehnte URL erneut angemeldet. Dabei wurde sie auf "Wartend" gestellt.
+
+Hier sind alle Daten dazu:
+------------------------------------------
+Mitglied-Id: $content[url_userid]
+------------------------------------------
+Gebuchte URL: $content[url]
+------------------------------------------
+ID in der Surfbar: $content[url_id]
+------------------------------------------
+URL angemeldet: $content[url_registered]
+------------------------------------------
+Zuletzt gesperrt: $content[url_last_locked]
+------------------------------------------
+Sperrgrund: $content[url_lock_reason]
+------------------------------------------
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?}/login.php ({?WEBMASTER?})
-Hallo {%user,gender,translateGender=$content[recipient][gender]%} {%user,surname=$content[recipient][surname]%} {%user,family=$content[recipient][family]%},
+Hallo {%user,gender,translateGender=$content[recipient][gender]%} {%user,surname=$content[recipient][userid]%} {%user,family=$content[recipient][userid]%},
Sie haben soeben eine {?POINTS?}-Überweisung von einem unserer Mitglieder erhalten!
-Hallo {%user,gender,translateGender=$content[sender][gender]%} {%user,surname=$content[sender][surname]%} {%user,family=$content[sender][family]%},
+Hallo {%user,gender,translateGender=$content[sender][gender]%} {%user,surname=$content[sender][userid]%} {%user,family=$content[sender][userid]%},
Sie haben soeben eine {?POINTS?}-Überweisung an eines unserer Mitglieder abgeschlossen!
--- /dev/null
+Hallo {%sponsor,gender,translateGender=$content[id]%} {%sponsor,surname=$content[id]%} {%sponsor,family=$content[id]%},
+
+Einer unserer Administratoren hat soeben Ihren Account gelöscht!
+
+Grund der Löschung war folgender:
+------------------------------------
+$content[reason]
+------------------------------------
+Ihre Sponsor-Id war: $content[id]
+------------------------------------
+
+Wir wünschen Ihnen weiterhin noch alles Gute und können Sie vielleicht irgentwann einmal wieder als Sponsor begrüssen.
+
+Vielen Dank.
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
--- /dev/null
+Hallo {%sponsor,gender,translateGender=$content[id]%} {%sponsor,surname=$content[id]%} {%sponsor,family=$content[id]%},
+
+--------------------------
+Ihre Sponsor-Id bei uns: $content[id]
+--------------------------
+
+$content[message]
+
+Grund der Sperrung war:
+--------------------------
+$content[reason]
+--------------------------
+
+Sollten Sie damit nicht einverstanden sein, so melden Sie sich bitte bei uns ({?WEBMASTER?}). Wir kommen dann mit Ihnen bald in Kontakt.
+
+Vielen Dank.
+
+Mit freundlichen Grüßen,
+ Ihr {?MAIN_TITLE?} Team
+
+{?URL?} ({?WEBMASTER?})
<div class="table_header bottom">
<strong>{%message,ADMIN_ADD_CONFIG_NETWORK_HANDLER_TYPE_TITLE=$content[network_type_handler]%}</strong>
</div>
+
<div class="bottom">
{--ADMIN_ADD_CONFIG_NETWORK_HANDLER_TYPE_404--}
</div>
+
<div class="table_footer">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="what" value="config_network_types" />
<input type="hidden" name="network_type_id" value="$content[network_type_id]" />
<input type="submit" class="form_submit" value="{--ADMIN_ADD_CONFIG_NETWORK_HANDLER_TYPE_SUBMIT--}" />
</div>
+</div>
</form>
</div>
(<a href="{%network,getNetworkDataById,network_reflink=%network_id%%}" target="_blank" title="{%network,getNetworkDataById,network_title=%network_id%%}">{%network,getNetworkDataById,network_title=%network_id%%}</a>)
</div>
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_SET_ALL--}
{%template,YesNoSelectionBox=set_all%}
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MAX_RELOAD_TIME--} ({%pipe,translateTimeUnit=$content[network_type_reload_time_unit]%})<br />
$content[network_max_reload_time]
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_WAITING_TIME--}<br />
<input type="text" class="form_normal" name="network_min_waiting_time" size="5" maxlength="20" value="$content[network_min_waiting_time]" />
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_REMAIN_CLICKS--}<br />
<input type="text" class="form_normal" name="network_min_remain_clicks" size="5" maxlength="20" value="$content[network_min_remain_clicks]" />
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_PAYMENT--}<br />
<input type="text" class="form_normal" name="network_min_payment" size="7" maxlength="20" value="$content[network_min_payment]" />
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_ALLOW_EROTIC--}<br />
<input type="text" class="form_normal" name="network_allow_erotic" size="5" maxlength="20" value="$content[network_allow_erotic]" />
</div>
+
<div class="table_footer">
<input type="submit" class="form_submit" name="ok" value="{--ADMIN_ADD_CONFIG_NETWORK_HANDLER_TYPE_FORM_SUBMIT--}" />
</div>
+</div>
</form>
</div>
<tr>
<td class="table_footer" colspan="2">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" name="add" class="form_submit" value="{--ADMIN_ADD_FORCED_ADD_SUBMIT--}" />
+ <input type="submit" name="add" class="form_submit" value="{--ADMIN_ADD_FORCED_AD_SUBMIT--}" />
</td>
</tr>
</table>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_campaigns%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td class="table_header bottom" align="center" colspan="2">
+ <strong>{--ADMIN_ADD_FORCED_CAMPAIGN_TITLE--}</strong>
+ </td>
+ </tr>
+
+ <tr>
+ <td width="60%" align="right">
+ {--ADMIN_ENTER_FORCED_CAMPAIGN_ORDERED_CLICKS--}
+ </td>
+ <td width="40%">
+ <input type="text" class="form_field" name="forced_campaign_ordered_clicks" size="10" maxlength="20" />
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_SELECT_FORCED_CAMPAIGN_RELOAD_LOCK--}
+ </td>
+ <td>
+ $content[reload]
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_ENTER_FORCED_CAMPAIGN_MINIMUM_STAY--}
+ </td>
+ <td>
+ <input type="text" class="form_field" name="forced_campaign_minimum_stay" size="10" maxlength="20" />
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_SELECT_FORCED_AD--}
+ </td>
+ <td>
+ {%template,ForcedAdSelectionBox%}
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_SELECT_FORCED_CAMPAIGN_USERID--}
+ </td>
+ <td>
+ {%template,ForcedCampaignUseridSelectionBox%}
+ </td>
+ </tr>
+
+ <tr>
+ <td class="bottom" align="right">
+ {--ADMIN_SELECT_FORCED_COSTS--}
+ </td>
+ <td class="bottom">
+ {%template,ForcedCostsSelectionBox%}
+ </td>
+ </tr>
+
+ <tr>
+ <td class="table_footer" colspan="2">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" name="add" class="form_submit" value="{--ADMIN_ADD_FORCED_CAMPAIGN_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
+
+<div class="notice">
+ {--ADMIN_FORCED_COSTS_SELECTION_NOTICE--}
+</div>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_costs%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td class="table_header bottom" align="center" colspan="2">
+ <strong>{--ADMIN_ADD_FORCED_COSTS_TITLE--}</strong>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_ENTER_FORCED_COSTS_PRICE_PER_CLICK--}
+ </td>
+ <td>
+ <input type="text" class="form_field" name="forced_costs_price_click" size="10" maxlength="20" />
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_ENTER_FORCED_COSTS_PAYMENT_PER_CLICK--}
+ </td>
+ <td>
+ <input type="text" class="form_field" name="forced_costs_payment_click" size="10" maxlength="20" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="bottom" align="right">
+ {--ADMIN_SELECT_FORCED_COSTS_VISIBILITY--}
+ </td>
+ <td class="bottom">
+ {%template,ForcedCostsVisiblitySelectionBox%}
+ </td>
+ </tr>
+
+ <tr>
+ <td class="table_footer" colspan="2">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" name="add" class="form_submit" value="{--ADMIN_ADD_FORCED_COSTS_ADD_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
+
+<div class="tiny notice">
+ {--ADMIN_ADD_FORCED_COSTS_NOTICE--}
+</div>
\ No newline at end of file
</div>
<div class="para">
- Bei &euro-Auszahlungen (oder auch jede andere Währung; auch per
+ Bei €-Auszahlungen (oder auch jede andere Währung; auch per
API) ist die Einstellung auf <strong>Nein</strong> zu lassen. Wollen Sie
hingegen, dass Ihre Mitglieder sich ihre {?POINTS?} in z.B.
Bannereinblendungen "auszahlen" lassen, ist hier
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_point_accounts%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td class="table_header bottom" align="center" colspan="2">
+ <strong>{--ADMIN_ADD_POINTS_DATA_TITLE--}</strong>
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_ENTER_POINTS_DATA_SUBJECT_LINE--}
+ </td>
+ <td>
+ <input type="text" class="form_field" name="subject" size="20" maxlength="255" />
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_ENTER_POINTS_DATA_COLUMN_NAME--}
+ </td>
+ <td>
+ <input type="text" class="form_field" name="column_name" size="20" maxlength="255" />
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_SELECT_POINTS_DATA_LOCKED_MODE--}
+ </td>
+ <td>
+ {%template,PointsLockedModeSelectionBox%}
+ </td>
+ </tr>
+
+ <tr>
+ <td align="right">
+ {--ADMIN_SELECT_POINTS_DATA_PAYMENT_METHOD--}
+ </td>
+ <td>
+ {%template,PointsPaymentMethodSelectionBox%}
+ </td>
+ </tr>
+
+ <tr>
+ <td class="bottom" align="right">
+ {--ADMIN_SELECT_POINTS_DATA_NOTIFY_RECIPIENT--}
+ </td>
+ <td class="bottom">
+ {%template,YesNoSelectionBox=notify_recipient%}
+ </td>
+ </tr>
+
+ <tr>
+ <td class="table_footer" colspan="2">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" name="add" class="form_submit" value="{--ADMIN_ADD_POINTS_DATA_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
+
+<div class="para notice">
+ {--ADMIN_ADD_POINTS_DATA_NOTICE--}
+</div>
+
+<div class="para">
+ {--ADMIN_ADD_POINTS_DATA_USAGE_TITLE--}
+ <ul>
+ <li>{--ADMIN_ADD_POINTS_DATA_SUBJECT_NOTICE--}</li>
+ <li>{--ADMIN_ADD_POINTS_DATA_COLUMN_NAME_NOTICE--}</li>
+ <li>{--ADMIN_ADD_POINTS_DATA_LOCKED_MODE_NOTICE--}</li>
+ <li>{--ADMIN_ADD_POINTS_DATA_PAYMENT_METHOD_NOTICE--}</li>
+ </ul>
+</div>
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_TITLE--}:</td>
+ <td align="right">{--ADMIN_RALLYE_TITLE--}:</td>
<td align="center">
<input type="text" class="form_field" name="title" size="30" maxlength="255" />
</td>
</tr>
<tr>
- <td align="right" valign="top">{--RALLYE_DESCR--}:</td>
+ <td align="right" valign="top">{--ADMIN_ENTER_RALLYE_DESCRIPTION--}:</td>
<td align="center">
<textarea name="descr" cols="30" rows="6" class="form_field"></textarea>
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_TEMPLATE--}:</td>
+ <td align="right">{--ADMIN_SELECT_RALLYE_TEMPLATE--}:</td>
<td align="center">
{%pipe,addReferralRallyeTemplateSelection%}
</td>
</tr>
<tr>
- <td width="200" align="right" valign="top">{--RALLYE_START_DAY--}:</td>
+ <td width="200" align="right" valign="top">{--ADMIN_RALLYE_START_DAY--}:</td>
<td width="290" align="center">
- $content[start_day].$content[start_month].$content[start_year]<br />
- $content[start_hour]:$content[start_min]:$content[start_sec]
+ $content[start_day] . $content[start_month] . $content[start_year]<br />
+ $content[start_hour] : $content[start_min] : 00
</td>
</tr>
<tr>
- <td align="right" valign="top">{--RALLYE_END_DAY--}:</td>
+ <td align="right" valign="top">{--ADMIN_RALLYE_END_DAY--}:</td>
<td align="center">
- $content[end_day].$content[end_month].$content[end_year]<br />
- $content[end_hour]:$content[end_min]:$content[end_sec]
+ $content[end_day] . $content[end_month] . $content[end_year]<br />
+ $content[end_hour] : $content[end_min] : 00
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_IS_ACTIVE--}:</td>
+ <td align="right">{--ADMIN_RALLYE_IS_ACTIVE--}:</td>
<td align="center">
<select name="active" size="1" class="form_select">
- {%pipe,generateYesNoOptionList%}
+ {%pipe,generateYesNoOptions%}
</select>
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_AUTO_ADD_USER--}:</td>
+ <td align="right">{--ADMIN_SELECT_RALLYE_AUTO_ADD_USERS--}:</td>
<td align="center">
<select name="auto_add" size="1" class="form_select">
- {%pipe,generateYesNoOptionList%}
+ {%pipe,generateYesNoOptions%}
</select>
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_SEND_NOTIFY--}:</td>
+ <td align="right">{--ADMIN_SELECT_RALLYE_SEND_NOTIFY--}:</td>
<td align="center">
<select name="notify" size="1" class="form_select">
- {%pipe,generateYesNoOptionList%}
+ {%pipe,generateYesNoOptions%}
</select>
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_MIN_USERS--}:</td>
+ <td align="right">{--ADMIN_RALLYE_MIN_USERS--}:</td>
<td align="center">
<input type="text" class="form_field" name="min_users" size="5" maxlength="20" value="100" />
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_MIN_PRICES--}:</td>
- <td align="center">
+ <td class="bottom" align="right">{--ADMIN_RALLYE_MIN_PRICES--}:</td>
+ <td class="bottom" align="center">
<input type="text" class="form_field" name="min_prices" size="5" maxlength="20" value="3" />
</td>
</tr>
<tr>
<td colspan="2" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--ADD_RALLYE--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--ADMIN_ADD_RALLYE_SUBMIT--}" />
</td>
</tr>
</table>
<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=$content%}" method="post">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content%}" method="post">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="2" align="center" class="table_header bottom">
- <strong>{%message,RALLYE_CONFIG_PRICES,$content%}:</strong>
+ <strong>{%message,ADMIN_LIST_RALLYE_PRICES_TITLE,$content%}:</strong>
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_PRICE_LEVEL--}:</td>
+ <td align="right">{--ADMIN_ENTER_RALLYE_PRICE_LEVEL--}:</td>
<td>
<input type="text" class="form_field" name="level" size="5" maxlength="20" />
</td>
</tr>
<tr>
- <td align="right">{--RALLYE_PRICE_POINTS--}:</td>
+ <td align="right">{--ADMIN_RALLYE_PRICE_POINTS--}:</td>
<td>
<input type="text" class="form_field" name="points" size="8" maxlength="20" />
</td>
</tr>
<tr>
- <td class="bottom" align="right">{--RALLYE_PRICE_INFOS--}:</td>
+ <td class="bottom" align="right">{--ADMIN_RALLYE_PRICE_INFOS--}:</td>
<td class="bottom">
<input type="text" class="form_field" name="info" size="15" maxlength="255" />
</td>
<tr>
<td colspan="2" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" name="add" class="form_submit" value="{--ADD_RALLYE_PRICE--}" />
+ <input type="submit" name="add" class="form_submit" value="{--ADMIN_ADD_RALLYE_PRICE_SUBMIT--}" />
</td>
</tr>
</table>
<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=refbanner%}&do=add" method="post">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=refbanner%}&do=add" method="post">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="410">
<tr>
<td class="table_header bottom" colspan="2" align="center">
<span class="notice">(0 = Unbegrenzt)</span>
</div>
- <div class="admin_input" align="center">
+ <div class="admin_input bottom" align="center">
Reloadzeit: $content[reload]
<span class="notice">(0 = Ausgangseinstellungen)</span>
</div>
- <div align="center" class="table_footer top">
+ <div align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="add" value="{--ADMIN_SURFBAR_ADD_URL--}" />
+ <input type="submit" class="form_submit" name="add" value="{--ADMIN_SURFBAR_ADD_URL_SUBMIT--}" />
</div>
</div>
</form>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=add_tester_user%}" method="post">
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_ADD_TESTER_USER_TITLE--}</strong>
+ </div>
+
+ <fieldset id="add_tester_user_fields">
+ <legend>{--ADMIN_ADD_TESTER_USER_LEGEND--}</legend>
+ <div class="table_row">
+ <label for="tester_user_family">{--ADMIN_ADD_TESTER_USER_GENDER--}</label>
+ <div align="left">{%config,generateGenderSelectionBox=tester_user_gender%}</div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_surname_prefix">{--ADMIN_ADD_TESTER_USER_SURNAME--}</label>
+ <div align="left"><em>{?tester_user_surname_prefix?}{%pipe,getNextFreeTesterUserNumber%}</em></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_family">{--ADMIN_ADD_TESTER_USER_FAMILY--}</label>
+ <div align="left"><input type="text" class="form_field" name="family" value="{?tester_user_family?}" size="10" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_street_nr">{--ADMIN_ADD_TESTER_USER_STREET_NR--}</label>
+ <div align="left"><input type="text" class="form_field" name="street_nr" value="{?tester_user_street_nr?}" size="15" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_default_refid">{--ADMIN_ADD_TESTER_USER_COUNTRY--}</label>
+ <div align="left">{%pipe,addCountryCodeSelectionBox%}</div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_zip">{--ADMIN_ADD_TESTER_USER_ZIP--}</label>
+ <div align="left"><input type="text" class="form_field" name="zip" value="{?tester_user_zip?}" size="6" maxlength="6" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_city">{--ADMIN_ADD_TESTER_USER_CITY--}</label>
+ <div align="left"><input type="text" class="form_field" name="city" value="{?tester_user_city?}" size="10" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_email">{--ADMIN_ADD_TESTER_USER_EMAIL--}</label>
+ <div align="left"><input type="text" class="form_field" name="email" value="{?tester_user_email?}" size="20" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_email">{--ADMIN_ADD_TESTER_USER_BIRTHDAY--}</label>
+ <input type="hidden" name="day" value="01" />
+ <input type="hidden" name="month" value="01" />
+ <input type="hidden" name="year" value="1970" />
+ <div align="left">01.01.1970</div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_default_refid">{--ADMIN_ADD_TESTER_USER_DEFAULT_REFID--}</label>
+ <div align="left">{%pipe,addTesterUserDefaultRefidSelectionBox=refid%}</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="add_tester_user_categories_fields">
+ <legend>{--ADMIN_ADD_TESTER_USER_CATEGORIES_LEGEND--}</legend>
+
+ {%template,AdminRegisterCategoryTable=tester_user_check_cat%}
+ </fieldset>
+
+ <fieldset id="add_tester_user_max_receive_fields">
+ <legend>{--ADMIN_ADD_TESTER_USER_MAX_RECEIVE_LEGEND--}</legend>
+
+ $content[max_receive_selection]
+ </fieldset>
+
+ <fieldset id="add_tester_user_passwords">
+ <legend>{--ADMIN_ADD_TESTER_USER_PASSWORDS_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="tester_user_email">{--ADMIN_ADD_TESTER_USER_PASSWORD1--}</label>
+ <input type="password" class="form_field" name="pass1" value="{?tester_user_password?}" size="10" maxlength="255" />
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_email">{--ADMIN_ADD_TESTER_USER_PASSWORD2--}</label>
+ <input type="password" class="form_field" name="pass2" value="{?tester_user_password?}" size="10" maxlength="255" />
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="hidden" name="agree" value="Y" />
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--ADMIN_ADD_TESTER_USER_SUBMIT--}" />
+ </div>
+</div>
+</form>
+</div>
+
+<div class="notice">
+ {--ADMIN_ADD_TESTER_USER_NOTICE--}
+</div>
--- /dev/null
+<div class="admin_main_ajax" align="center">
+<div class="table_header">
+ <strong class="big">: : : {--ADMIN_MAIN_TITLE--} : : :</strong>
+</div>
+
+<div id="admin_error" class="ajax_error">
+ <div class="ajax_error_title">
+ <strong>{--ADMIN_AJAX_ERROR_TITLE--}</strong>
+ </div>
+ <div class="ajax_error_close">
+ <strong id="admin_error_close" style="padding-left:1.5px;cursor:pointer">X</strong>
+ </div>
+ <div style="clear:both"></div>
+ <div class="ajax_error_content" id="admin_error_content">
+ <!-- Content will be inserted here by AJAX //-->
+ </div>
+</div>
+
+<div id="admin_warning" class="ajax_warning">
+ <div class="ajax_warning_title">
+ <strong>{--ADMIN_AJAX_WARNING_TITLE--}</strong>
+ </div>
+ <div class="ajax_warning_close">
+ <strong id="admin_warning_close" style="padding-left:1.5px;cursor:pointer">X</strong>
+ </div>
+ <div style="clear:both"></div>
+ <div class="ajax_warning_content" id="admin_warning_content">
+ <!-- Content will be inserted here by AJAX //-->
+ </div>
+</div>
+
+<div style="clear:both"></div>
+
+<div class="admin_content_container">
+ <div id="admin_content" class="admin_content">
+ {%pipe,generateAdminContent%}
+ </div>
+</div>
+</div>
+
+<script type="text/javascript" src="{%url=js/ajax-loader.js%}"></script>
+<script type="text/javascript">
+<!--
+// These scripts shall be loaded
+var scripts = new Array();
+scripts[0] = '{%url,js=js/ajax-common.js%}';
+scripts[1] = '{%url,js=js/jquery-ui.custom.js%}';
+scripts[2] = '{%url,js=js/admin-data.js%}';
+scripts[3] = '{%url,js=js/admin-common.js%}';
+
+// This must be the last one
+scripts[scripts.length] = '{%url,js=js.php?js=admin_ajax&admin_page=overview%}';
+
+// Do this only when all is ready
+// Load all scripts
+if (loadScripts(scripts) == true) {
+ // Wait for loadScripts() finishing loading all scripts
+ $().ready(function () {
+ // Do stuff, when all scripts are loaded
+ });
+} // END - if
+
+//-->
+</script>
<div align="center">
-<table border="0" cellspacing="0" cellpadding="0" width="420"
- class="table dashed">
- <tr>
- <td colspan="2" class="table_header bottom" align="center">
- <strong>{--ADMIN_CACHE_STATS_TITLE--}</strong>
- </td>
- </tr>
- <tr>
- <td width="320" class="bottom right" align="right">{--ADMIN_CACHE_DB_HITS--}</td>
- <td width="100" class="bottom" style="padding-right: 2px" align="right">
- {%pipe,translateComma=$content[db_hits]%}
- </td>
- </tr>
- <tr>
- <td width="320" class="bottom right" align="right">{--ADMIN_CACHE_HITS--}</td>
- <td width="100" class="bottom" style="padding-right: 2px" align="right">
- +{%pipe,translateComma=$content[cache_hits]%}
- </td>
- </tr>
- <tr>
- <td width="320" class="bottom right" align="right">{--ADMIN_TOTAL_HITS--}</td>
- <td width="100" class="bottom" style="padding-right: 2px" align="right">
- ={%pipe,translateComma=$content[total_hits]%}
- </td>
- </tr>
- <tr>
- <td width="320" class="table_footer right">
- <div align="right" style="padding-right: 2px">
- <strong>{--ADMIN_CACHE_PERCENTS--}</strong>
- </div>
- </td>
- <td width="100" class="table_footer">
- <div align="right" style="padding-right: 2px">
- <strong>{%pipe,translateComma=$content[cache_perc]%}%</strong>
- </div>
- </td>
- </tr>
+<table border="0" cellspacing="0" cellpadding="0" width="420" class="table dashed">
+<tr>
+ <td colspan="2" class="table_header bottom" align="center">
+ <strong>{--ADMIN_CACHE_STATS_TITLE--}</strong>
+ </td>
+</tr>
+<tr>
+ <td width="320" class="bottom right" align="right">{--ADMIN_CACHE_DB_HITS--}</td>
+ <td width="100" class="bottom" style="padding-right: 2px" align="right">
+ {%pipe,getStatsEntry,translateComma=db_hits%}
+ </td>
+</tr>
+<tr>
+ <td width="320" class="bottom right" align="right">{--ADMIN_CACHE_HITS--}</td>
+ <td width="100" class="bottom" style="padding-right: 2px" align="right">
+ +{%pipe,getStatsEntry,translateComma=cache_hits%}
+ </td>
+</tr>
+<tr>
+ <td width="320" class="bottom right" align="right">{--ADMIN_TOTAL_HITS--}</td>
+ <td width="100" class="bottom" style="padding-right: 2px" align="right">
+ ={%pipe,translateComma=$content[total_hits]%}
+ </td>
+</tr>
+<tr>
+ <td width="320" class="table_footer right">
+ <div align="right" style="padding-right: 2px">
+ <strong>{--ADMIN_CACHE_PERCENTS--}</strong>
+ </div>
+ </td>
+ <td width="100" class="table_footer">
+ <div align="right" style="padding-right: 2px">
+ <strong>{%pipe,translateComma=$content[cache_perc]%}%</strong>
+ </div>
+ </td>
+</tr>
</table>
</div>
<div class="notice tiny">
- {--ADMIN_CACHE_NOTICE--}
+ {--ADMIN_CACHE_STATS_NOTICE--}
</div>
<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td class="table_header bottom" colspan="2" align="center">
- <strong>{--ADMIN_CONFIG__SETTINGS_TITLE--}:</strong>
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right">{--ADMIN_CONFIG_--}:</td>
- <td class="bottom" align="center">
- <input type="input" name="" class="form_field" value="{??}" size="5" maxlength="20" />
- </td>
- </tr>
- <tr>
- <td class="table_footer" colspan="2" align="center">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_foo%}" method="post">
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_FOO_TITLE--}</strong>
+ </div>
+
+ <fieldset id="config_foo_my_stuff">
+ <legend>{--ADMIN_CONFIG_FOO_MY_STUFF_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="foo_stuff_bar">{--ADMIN_CONFIG_FOO_STUFF_BAR--}</label>
+ <div align="center">
+ <input type="text" class="form_field" name="foo_stuff_bar" value="{?foo_stuff_bar?}" />
+ </div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
+
+<div class="notice">
+ {--ADMIN_CONFIG_FOO_NOTICE--}
+</div>
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_admin%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="3" align="center" class="table_header bottom">
- <strong>{--ADMIN_CONFIG_ADMIN_MENU_TITLE--}</strong>
- </td>
- </tr>
- <tr>
- <td align="right" valign="top" style="padding-top: 3px; padding-right: 20px">
- {--ADMIN_CONFIG_SELECT_MENU_TYPE--}:
- </td>
- <td align="right" valign="top" style="padding-top: 3px">
- <input type="radio" class="form_field disabled" disabled="disabled" name="admin_menu" value="NEW"$content[admin_menu_new] />
- </td>
- <td>
- {--ADMIN_CONFIG_ADMIN_MENU_NEW--}
- </td>
- </tr>
- <tr>
- <td class="bottom" colspan="2" align="right" valign="top" style="padding-top: 3px">
- <input type="radio" class="form_field" name="admin_menu" value="OLD"$content[admin_menu_old] />
- </td>
- <td class="bottom">
- {--ADMIN_CONFIG_ADMIN_MENU_OLD--}
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right" style="padding-right:5px">
- {--ADMIN_CONFIG_ADMIN_MENU_JAVASCRIPT_ENABLED--}
- </td>
- <td class="bottom" align="center" colspan="2">
- {%template,ConfigurationYesNoSelectionBox=admin_menu_javascript%}
- </td>
- </tr>
- <tr>
- <td colspan="3" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_ADMIN_MENU_TITLE--}</strong>
+ </div>
+
+ <fieldset id="config_admin_menu_type_fields">
+ <legend>{--ADMIN_CONFIG_ADMIN_MENU_TYPE_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="admin_menu">{--ADMIN_CONFIG_ADMIN_MENU_NEW--}</label>
+ <div align="center">
+ <input type="radio" class="form_field disabled" disabled="disabled" name="admin_menu" value="NEW"$content[admin_menu_new] />
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="admin_menu">{--ADMIN_CONFIG_ADMIN_MENU_OLD--}</label>
+ <div align="center">
+ <input type="radio" class="form_field" name="admin_menu" value="OLD"$content[admin_menu_old] />
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset id="config_admin_menu_misc_fields">
+ <legend>{--ADMIN_CONFIG_ADMIN_MENU_MISC_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="admin_menu_javascript">{--ADMIN_CONFIG_ADMIN_MENU_JAVASCRIPT_ENABLED--}</label>
+ <div align="center">
+ {%template,ConfigurationYesNoSelectionBox=admin_menu_javascript%}
+ </div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_autopurge%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- <strong>{--ADMIN_CONFIG_AUTOPURGE_TITLE--}</strong>
- </td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- {--ADMIN_CONFIG_AUTOPURGE_INACTIVE_TITLE--}
- </td>
- </tr>
- <tr>
- <td align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_INACTIVE--}</td>
- <td>$content[ap_inactive_selection]</td>
- </tr>
- <tr>
- <td align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_INACTIVE_SINCE--}:</td>
- <td>$content[ap_in_since]</td>
- </tr>
- <tr>
- <td class="bottom" align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_INACTIVE_TIME--}:</td>
- <td class="bottom">$content[ap_in_time]</td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- {--ADMIN_CONFIG_AUTOPURGE_UNCONFIRMED_TITLE--}
- </td>
- </tr>
- <tr>
- <td align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_UNCONFIRMED--}</td>
- <td>$content[ap_unconfirmed_selection]</td>
- </tr>
- <tr>
- <td class="bottom" align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_UNCONFIRMED_TIME--}:</td>
- <td class="bottom">$content[ap_un_time]</td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- {--ADMIN_CONFIG_AUTOPURGE_TASKS_TITLE--}
- </td>
- </tr>
- <tr>
- <td align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_TASKS--}</td>
- <td>$content[ap_tasks_selection]</td>
- </tr>
- <tr>
- <td class="bottom" align="right" width="250">{--ADMIN_CONFIG_AUTOPURGE_TASKS_TIME--}:</td>
- <td class="bottom">$content[ap_task_time]</td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- {--ADMIN_CONFIG_AUTOPURGE_MAILID_TITLE--}
- </td>
- </tr>
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_AUTOPURGE_ACTIVE--}:
- </td>
- <td>
- {%template,ConfigurationYesNoSelectionBox=autopurge_active%}
- </td>
- </tr>
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_MAIL_LIFETIME--}:
- </td>
- <td>
- $content[auto_purge]
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right" width="250">
- {--ADMIN_CONFIG_AUTOPURGE_NOTIFY_DELETE_MAILS--}:
- </td>
- <td class="bottom">
- $content[ap_notify_del_mails]
- </td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- {--ADMIN_CONFIG_AUTOPURGE_DELETE_MAILS_TITLE--}
- </td>
- </tr>
- <tr>
- <td align="right" width="250">
- {--ADMIN_CONFIG_AUTOPURGE_DELETE_MAILS--}
- </td>
- <td>
- $content[ap_del_mails_selection]
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right" width="250">
- {--ADMIN_CONFIG_AUTOPURGE_DELETE_MAILS_TIME--}:
- </td>
- <td class="bottom">
- $content[ap_del_mails_time]
- </td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- {--ADMIN_CONFIG_AUTOPURGE_NOTIFICATION_TITLE--}
- </td>
- </tr>
- <tr>
- <td align="right" width="250">
- {--ADMIN_CONFIG_AUTOPURGE_NOTIFY_INACTIVE--}:
- </td>
- <td>
- $content[ap_notify_inactive]
- </td>
- </tr>
- <tr>
- <td align="right" width="250">
- {--ADMIN_CONFIG_AUTOPURGE_NOTIFY_UNCONFIRMED--}:
- </td>
- <td>
- $content[ap_notify_unconfirmed]
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right" width="250">
- {--ADMIN_CONFIG_AUTOPURGE_NOTIFY_TASKS--}:
- </td>
- <td class="bottom">
- $content[ap_notify_tasks]
- </td>
- </tr>
- <tr>
- <td colspan="2" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<div class="table dashed">
+ <div align="center" class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_AUTOPURGE_TITLE--}</strong>
+ </div>
+
+ <fieldset id="autopurge_inactive_fields">
+ <legend>{--ADMIN_CONFIG_AUTOPURGE_INACTIVE_TITLE--}</legend>
+
+ <div class="table_row">
+ <label for="autopurge_inactive">{--ADMIN_CONFIG_AUTOPURGE_INACTIVE--}</label>
+ <div align="center">$content[ap_inactive_selection]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_inactive_since">{--ADMIN_CONFIG_AUTOPURGE_INACTIVE_SINCE--}</label>
+ <div align="center">$content[ap_in_since]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_inactive_time">{--ADMIN_CONFIG_AUTOPURGE_INACTIVE_TIME--}</label>
+ <div align="center">$content[ap_in_time]</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="autopurge_unconfirmed_fields">
+ <legend>{--ADMIN_CONFIG_AUTOPURGE_UNCONFIRMED_TITLE--}</legend>
+
+ <div class="table_row">
+ <label for="autopurge_unconfirmed">{--ADMIN_CONFIG_AUTOPURGE_UNCONFIRMED--}</label>
+ <div align="center">$content[ap_unconfirmed_selection]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_un_time">{--ADMIN_CONFIG_AUTOPURGE_UNCONFIRMED_TIME--}:</label>
+ <div align="center">$content[ap_un_time]</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="autopurge_tasks_fields">
+ <legend>{--ADMIN_CONFIG_AUTOPURGE_TASKS_TITLE--}</legend>
+
+ <div class="table_row">
+ <label for="autopurge_tasks">{--ADMIN_CONFIG_AUTOPURGE_TASKS--}</label>
+ <div align="center">$content[ap_tasks_selection]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_task_time">{--ADMIN_CONFIG_AUTOPURGE_TASKS_TIME--}</label>
+ <div align="center">$content[ap_task_time]</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="autopurge_mailid_fields">
+ <legend>{--ADMIN_CONFIG_AUTOPURGE_MAILID_TITLE--}</legend>
+
+ <div class="table_row">
+ <label for="auto_purge">{--ADMIN_CONFIG_AUTOPURGE_ACTIVE--}</label>
+ <div align="center">{%template,ConfigurationYesNoSelectionBox=auto_purge%}</div>
+ </div>
+
+ <div class="table_row">
+ <label for="auto_purge">{--ADMIN_CONFIG_MAIL_LIFETIME--}</label>
+ <div align="center">$content[auto_purge]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_notify_del_mails">{--ADMIN_CONFIG_AUTOPURGE_NOTIFY_DELETE_MAILS--}</label>
+ <div align="center">$content[ap_notify_del_mails]</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="autopurge_delete_mails_fields">
+ <legend>{--ADMIN_CONFIG_AUTOPURGE_DELETE_MAILS_TITLE--}</legend>
+
+ <div class="table_row">
+ <label for="ap_del_mails">{--ADMIN_CONFIG_AUTOPURGE_DELETE_MAILS--}</label>
+ <div align="center">$content[ap_del_mails_selection]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_del_mails_time">{--ADMIN_CONFIG_AUTOPURGE_DELETE_MAILS_TIME--}</label>
+ <div align="center">$content[ap_del_mails_time]</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="autopurge_notification_fields">
+ <legend>{--ADMIN_CONFIG_AUTOPURGE_NOTIFICATION_TITLE--}</legend>
+
+ <div class="table_row">
+ <label for="ap_notify_inactive">{--ADMIN_CONFIG_AUTOPURGE_NOTIFY_INACTIVE--}</label>
+ <div align="center">$content[ap_notify_inactive]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_notify_unconfirmed">{--ADMIN_CONFIG_AUTOPURGE_NOTIFY_UNCONFIRMED--}</label>
+ <div align="center">$content[ap_notify_unconfirmed]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="ap_notify_tasks">{--ADMIN_CONFIG_AUTOPURGE_NOTIFY_TASKS--}</label>
+ <div align="center">$content[ap_notify_tasks]</div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
</table>
</form>
</div>
+
+<div class="notice">
+ {--ADMIN_CONFIG_BIRTHDAY_NOTICE--}
+</div>
<strong>{%message,ADMIN_CONFIG_NETWORK_API_TITLE=<a href="$content[network_reflink]" target="_blank" title="$content[network_title]">$content[network_title]</a>%}</strong>
</td>
</tr>
+
<tr>
<td align="center" class="bottom right" width="50%">
{--ADMIN_CONFIG_NETWORK_API_ENTER_AFFILIATE_ID--}<br />
<input type="text" class="form_field" name="network_api_site_id" size="5" maxlength="20" value="$content[network_api_site_id]" />
</td>
</tr>
+
<tr>
<td align="center" class="bottom right" width="50%">
{--ADMIN_CONFIG_NETWORK_API_ENTER_API_PASSWORD--}<br />
</select>
</td>
</tr>
+
<tr>
<td align="center" class="bottom right" width="50%">
{--ADMIN_CONFIG_NETWORK_API_ENTER_REFERRAL_LINK--}<br />
<input type="text" class="form_field" name="network_api_referral_button" size="20" maxlength="255" value="$content[network_api_referral_button]" />
</td>
</tr>
+
<tr>
<td class="table_footer" colspan="2" align="center">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_network_types&do=network_types_config&network_id=$content[network_id]%}" method="post">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="2" align="center" class="table_header bottom">
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_order%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="2" class="table_header bottom" align="center">
- <strong>{--ADMIN_CONFIG_ORDER_TITLE--}:</strong>
- </td>
- </tr>
-
- <tr>
- <td class="bottom" rowspan="2" align="center">
- {--ADMIN_CONFIG_ORDER_SELECT_MAX--}
- </td>
- <td class="bottom">
- <input type="radio" class="form_field" name="order_max_full" value="MAX"$content[order_max_full_max] />
- {--ADMIN_CONFIG_ORDER_OPTION_MAX--}
- </td>
- </tr>
-
- <tr>
- <td class="bottom">
- <input type="radio" class="form_field" name="order_max_full" value="ORDER"$content[order_max_full_order] />
- {--ADMIN_CONFIG_ORDER_OPTION_ORDER--}
- </td>
- </tr>
-
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_MAX_UNCONFIRMED_MAILS--}:
- </td>
- <td>
- <input type="text" class="form_field" name="unconfirmed" size="10" maxlength="10" value="{?unconfirmed?}" />
- </td>
- </tr>
-
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_MAX_TEXT_LENGTH--}:
- </td>
- <td>
- <input type="text" class="form_field" name="max_tlength" size="10" maxlength="100" value="{?max_tlength?}" />
- </td>
- </tr>
-
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_CHECK_EMAIL_TEXT--}
- </td>
- <td>
- {%template,ConfigurationYesNoSelectionBox=allow_url_in_text%}
- </td>
- </tr>
-
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_CHECK_EMAIL_SUBJECT--}
- </td>
- <td>
- {%template,ConfigurationYesNoSelectionBox=allow_url_in_subject%}
- </td>
- </tr>
-
- <tr>
- <td align="right">
- {--ADMIN_CONFIG_URL_BLACKLIST--}
- </td>
- <td>
- {%template,ConfigurationYesNoSelectionBox=url_blacklist%}
- </td>
- </tr>
-
- <tr>
- <td class="bottom" align="right">{--ADMIN_REPAY_ON_DELETE_MODE--}</td>
- <td class="bottom">
- <select name="repay_deleted_mails" class="form_select" size="1">
- <option value="REPAY"$content[repay_deleted_mails_repay]>{--ADMIN_CONFIG_REPAY_POINTS_REPAY--}</option>
- <option value="JACKPOT"$content[repay_deleted_mails_jackpot]>{--ADMIN_CONFIG_REPAY_POINTS_JACKPOT--}</option>
- <option value="SHRED"$content[repay_deleted_mails_shred]>{--ADMIN_CONFIG_REPAY_POINTS_SHRED--}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td colspan="2" class="table_header bottom" align="center">
- <strong>{--ADMIN_ORDER_SELECTION_SETTINGS--}:</strong>
- </td>
- </tr>
-
- <tr>
- <td align="right">
- {--ADMIN_ORDER_SELECTION_COLUMN--}:
- </td>
- <td align="center">
- <select name="order_select" class="form_select" size="1">
- $content[order_selection]
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="bottom" align="right">{--ADMIN_ORDER_SELECTION_MODE--}:</td>
- <td class="bottom" align="center">
- <select name="order_mode" class="form_select" size="1">
- <option value="ASC"$content[order_mode_asc]>{--SORT_ASCENDING--}</option>
- <option value="DESC"$content[order_mode_desc]>{--SORT_DESCENDING--}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td colspan="2" class="table_header bottom" align="center">
- <strong>{--ADMIN_CONFIG_ORDER_MISC_TITLE--}:</strong>
- </td>
- </tr>
-
- <tr>
- <td class="bottom" align="right">
- {--ADMIN_CONFIG_ORDER_MIN_RECEIVER_PER_ORDER--}:
- </td>
- <td class="bottom" align="center">
- <input type="input" class="form_field" name="order_min" value="{?order_min?}" size="5" maxlength="20" />
- </td>
- </tr>
-
- <tr>
- <td colspan="2" align="center" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_ORDER_TITLE--}</strong>
+ </div>
+
+ <fieldset id="config_order_select_max_fields">
+ <legend>{--ADMIN_CONFIG_ORDER_SELECT_MAX_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="order_max_full">{--ADMIN_CONFIG_ORDER_OPTION_MAX--}</label>
+ <div align="center">
+ <input type="radio" class="form_field" name="order_max_full" value="MAX"$content[order_max_full_max] />
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="order_max_full">{--ADMIN_CONFIG_ORDER_OPTION_ORDER--}</label>
+ <div align="center">
+ <input type="radio" class="form_field" name="order_max_full" value="ORDER"$content[order_max_full_order] />
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset id="config_order_member_fields">
+ <legend>{--ADMIN_CONFIG_ORDER_MEMBER_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="unconfirmed">{--ADMIN_CONFIG_MAX_UNCONFIRMED_MAILS--}</label>
+ <div align="center">
+ <input type="text" class="form_field" name="unconfirmed" size="10" maxlength="10" value="{?unconfirmed?}" />
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="max_tlength">{--ADMIN_CONFIG_MAX_TEXT_LENGTH--}</label>
+ <div align="center">
+ <input type="text" class="form_field" name="max_tlength" size="10" maxlength="100" value="{?max_tlength?}" />
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="allow_url_in_text"> {--ADMIN_CONFIG_CHECK_EMAIL_TEXT--}</label>
+ <div align="center">
+ {%template,ConfigurationYesNoSelectionBox=allow_url_in_text%}
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="allow_url_in_subject">{--ADMIN_CONFIG_CHECK_EMAIL_SUBJECT--}</label>
+ <div align="center">
+ {%template,ConfigurationYesNoSelectionBox=allow_url_in_subject%}
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="url_blacklist">{--ADMIN_CONFIG_URL_BLACKLIST--}</label>
+ <div align="center">
+ {%template,ConfigurationYesNoSelectionBox=url_blacklist%}
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="repay_deleted_mails">{--ADMIN_REPAY_ON_DELETE_MODE--}</label>
+ <div align="center">
+ <select name="repay_deleted_mails" class="form_select" size="1">
+ <option value="REPAY"$content[repay_deleted_mails_repay]>{--ADMIN_CONFIG_REPAY_POINTS_REPAY--}</option>
+ <option value="JACKPOT"$content[repay_deleted_mails_jackpot]>{--ADMIN_CONFIG_REPAY_POINTS_JACKPOT--}</option>
+ <option value="SHRED"$content[repay_deleted_mails_shred]>{--ADMIN_CONFIG_REPAY_POINTS_SHRED--}</option>
+ </select>
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset id="config_order_selection_fields">
+ <legend>{--ADMIN_CONFIG_ORDER_SELECTION_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="order_select">{--ADMIN_CONFIG_ORDER_SELECTION_COLUMN--}</label>
+ <div align="center">
+ <select name="order_select" class="form_select" size="1">
+ $content[order_selection]
+ </select>
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="order_mode">{--ADMIN_CONFIG_ORDER_SELECTION_MODE--}</label>
+ <div align="center">
+ <select name="order_mode" class="form_select" size="1">
+ <option value="ASC"$content[order_mode_asc]>{--SORT_ASCENDING--}</option>
+ <option value="DESC"$content[order_mode_desc]>{--SORT_DESCENDING--}</option>
+ </select>
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset id="config_order_misc_fields">
+ <legend>{--ADMIN_CONFIG_ORDER_MISC_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="order_min">{--ADMIN_CONFIG_ORDER_MIN_RECEIVER_PER_ORDER--}</label>
+ <div align="center">
+ <input type="input" class="form_field" name="order_min" value="{?order_min?}" size="5" maxlength="20" />
+ </div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
+
+<div class="notice">
+ {--ADMIN_CONFIG_ORDER_NOTICE--}
+</div>
-<!--@DEPRECATED //-->
+<!-- @DEPRECATED //-->
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=$content[rallye]%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="4" align="center" class="table_header">
- <strong>{--RALLYE_REMOVE_PRICES--}</strong>
- </td>
- </tr>
- <tr>
- <td align="center" width="10" class="header_column bottom right">
- <strong>{--ID_SELECT--}</strong>
- </td>
- <td align="center" width="50" class="header_column bottom right">
- <strong>{--RALLYE_LEVEL--}:</strong>
- </td>
- <td align="center" width="200" class="header_column bottom right">
- <strong>{--RALLYE_PRICE_POINTS--}:</strong>
- </td>
- <td align="center" width="320" class="header_column bottom">
- <strong>{--RALLYE_PRICE_INFO--}:</strong>
- </td>
- </tr>
- $content[rows]
- <tr>
- <td colspan="4" class="table_footer">
- <input type="submit" name="do_delete" class="form_delete" value="{--RALLYE_REMOVE_PRICES--}" />
- </td>
- </tr>
-</table>
-</form>
-</div>
+<!-- @DEPRECATED //-->
-<tr>
- <td class="{%template,ColorSwitch%} bottom right" align="center">
- $content[rallye_id] <input type="hidden" claass="form_field" name="sel[$content[rallye_id]]" value="1" />
- </td>
- <td class="{%template,ColorSwitch%} bottom right" align="center">
- $content[price_level]
- </td>
- <td class="{%template,ColorSwitch%} bottom right">
- {%pipe,translateComma=$content[points]%}
- </td>
- <td class="{%template,ColorSwitch%} bottom">
- {%pipe,fixEmptyContentToDashes=$content[info]%}
- </td>
-</tr>
+<!-- @DEPRECATED //-->
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=$content[rallye]%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="4" align="center" class="table_header">
- <strong>{--RALLYE_EDIT_SELECTED_PRICES--}</strong>
- </td>
- </tr>
- <tr>
- <td width="120" align="center" class="header_column bottom right">
- <strong>{--RALLYE_ID--}:</strong>
- </td>
- <td width="65" align="center" class="header_column bottom right">
- <strong>{--RALLYE_LEVEL--}:</strong>
- </td>
- <td width="185" align="center" class="header_column bottom right">
- <strong>{--RALLYE_PRICE_POINTS--}:</strong>
- </td>
- <td width="130" align="center" class="header_column bottom">
- <strong>{--RALLYE_PRICE_INFO--}:</strong>
- </td>
- </tr>
- $content[rows]
- <tr>
- <td colspan="4" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="do_edit" value="{--RALLYE_CHANGE_PRICES--}" />
- </td>
- </tr>
-</table>
-</form>
-</div>
+<!-- @DEPRECATED //-->
-<tr>
- <td class="{%template,ColorSwitch%} bottom right" align="center">
- <select name="rallye_id[$content[rallye_id]]" size="1" class="form_select">
- $content[rallye_content]
- </select>
- </td>
- <td class="{%template,ColorSwitch%} bottom right" align="center">
- <input type="text" class="form_field" name="level[$content[rallye_id]]" size="5" maxlength="20" value="$content[price_level]" />
- </td>
- <td class="{%template,ColorSwitch%} bottom right">
- <input type="text" class="form_field" name="points[$content[rallye_id]]" size="8" maxlength="20" value="$content[points]" />
- </td>
- <td class="{%template,ColorSwitch%} bottom">
- <input type="text" class="form_field" name="infos[$content[rallye_id]]" size="15" maxlength="255" value="$content[info]" />
- </td>
-</tr>
+<!-- @DEPRECATED //-->
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=$content[rallye]%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="4" align="center" class="table_header">
- <strong>{--RALLYE_EDIT_DELETE_PRICES--}</strong>
- </td>
- </tr>
- <tr>
- <td align="center" width="10" class="header_column bottom right">
- <strong>{--ID_SELECT--}</strong>
- </td>
- <td align="center" width="50" class="header_column bottom right">
- <strong>{--RALLYE_LEVEL--}:</strong>
- </td>
- <td align="center" width="200" class="header_column bottom right">
- <strong>{--RALLYE_PRICE_POINTS--}:</strong>
- </td>
- <td align="center" width="320" class="header_column bottom">
- <strong>{--RALLYE_PRICE_INFO--}:</strong>
- </td>
- </tr>
- $content[rows]
- <tr>
- <td colspan="4" class="table_footer">
- <input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
- <input type="submit" class="form_submit" name="edit" value="{--ADMIN_ACTION_EDIT_SUBMIT--}" />
- <input type="submit" class="form_delete" name="delete" value="{--ADMIN_ACTION_DELETE_SUBMIT--}" />
- </td>
- </tr>
-</table>
-</form>
-</div>
+<!-- @DEPRECATED //-->
-<tr>
- <td class="{%template,ColorSwitch%} bottom right" align="center">
- <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[id]" name="sel[$content[id]]" value="1" />
- </td>
- <td class="{%template,ColorSwitch%} bottom right" align="center">
- $content[price_level]
- </td>
- <td class="{%template,ColorSwitch%} bottom right">
- {%pipe,translateComma=$content[points]%}
- </td>
- <td class="{%template,ColorSwitch%} bottom">
- {%pipe,fixEmptyContentToDashes=$content[info]%}
- </td>
-</tr>
+<!-- @DEPRECATED //-->
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_refid%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td class="table_header bottom" colspan="2" align="center">
- <strong>{--ADMIN_CONFIG_REFID_TITLE--}</strong>
- </td>
- </tr>
-
- <tr>
- <td align="right" width="200" style="padding-right:5px">{--ADMIN_CONFIG_SELECT_DEFAULT_REFID--}:</td>
- <td align="center">
- $content[def_refid]
- </td>
- </tr>
-
- <tr>
- <td class="bottom" align="right" width="200" style="padding-right:5px">{--ADMIN_CONFIG_SELECT_REFID_TARGRT--}:</td>
- <td class="bottom" align="center">
- <select name="refid_target" size="1" class="form_select">
- <option value="register"$content[refid_target_register]>{--ADMIN_CONFIG_REFERRAL_TARGET_REGISTER--}</option>
- <option value="index"$content[refid_target_index]>{--ADMIN_CONFIG_REFERRAL_TARGET_INDEX--}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="table_header bottom" colspan="2" align="center">
- <strong>{--ADMIN_CONFIG_RANDOM_REFID_TITLE--}</strong>
- </td>
- </tr>
-
- <tr>
- <td align="right" width="200" style="padding-right:5px">{--ADMIN_CONFIG_RANDOM_ZERO_REFID--}</td>
- <td align="center">
- <select name="select_user_zero_refid" size="1" class="form_select">
- <option value="Y"$content[select_user_zero_refid_y]>{--ADMIN_CONFIG_RANDOM_REFID_ENABLED--}</option>
- <option value="N"$content[select_user_zero_refid_n]>{--ADMIN_CONFIG_RANDOM_REFID_DISABLED--}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="bottom" align="right" width="200" style="padding-right:5px">{--ADMIN_CONFIG_RANDOM_MIN_CONFIRMED--}</td>
- <td class="bottom" align="center">
- <input type="text" class="form_field" name="user_min_confirmed" size="3" maxlength="3" value="{?user_min_confirmed?}" />
- </td>
- </tr>
-
- <tr>
- <td class="table_footer" colspan="2" align="center">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_REFID_TITLE--}</strong>
+ </div>
+
+ <fieldset id="config_refid_general_fields">
+ <legend>{--ADMIN_CONFIG_REFID_GENERAL_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="default_refid">{--ADMIN_CONFIG_SELECT_DEFAULT_REFID--}</label>
+ <div align="center">
+ $content[def_refid]
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="refid_target">{--ADMIN_CONFIG_SELECT_REFID_TARGRT--}:</label>
+ <div align="center">
+ <select name="refid_target" size="1" class="form_select">
+ <option value="register"$content[refid_target_register]>{--ADMIN_CONFIG_REFERRAL_TARGET_REGISTER--}</option>
+ <option value="index"$content[refid_target_index]>{--ADMIN_CONFIG_REFERRAL_TARGET_INDEX--}</option>
+ </select>
+ </div>
+ </div>
+ </fieldset>
+
+ <fieldset id="random_refid_fields">
+ <legend>{--ADMIN_CONFIG_RANDOM_REFID_LEGEND--}</legend>
+
+ <div class="table_row">
+ <label for="select_user_zero_refid">{--ADMIN_CONFIG_RANDOM_ZERO_REFID--}</label>
+ <div align="center">
+ <select name="select_user_zero_refid" size="1" class="form_select">
+ <option value="Y"$content[select_user_zero_refid_y]>{--ADMIN_CONFIG_RANDOM_REFID_ENABLED--}</option>
+ <option value="N"$content[select_user_zero_refid_n]>{--ADMIN_CONFIG_RANDOM_REFID_DISABLED--}</option>
+ </select>
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="user_min_confirmed">{--ADMIN_CONFIG_RANDOM_MIN_CONFIRMED--}</label>
+ <div align="center">
+ <input type="text" class="form_field" name="user_min_confirmed" size="3" maxlength="3" value="{?user_min_confirmed?}" />
+ </div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
</td>
</tr>
<tr>
- <td colspan="2" align="center" class="table_footer top">
+ <td colspan="2" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
<input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
</td>
</tr>
<tr>
<td class="bottom" align="right" style="padding-right:5px">
- {--ADMIN_CONFIG_SURFBAR_AUTOSTART--}
+ {--ADMIN_CONFIG_SURFBAR_AUTO_START--}
</td>
<td class="bottom" align="center">
- {%template,ConfigurationYesNoSelectionBox=surfbar_autostart%}
+ {%template,ConfigurationYesNoSelectionBox=surfbar_auto_start%}
</td>
</tr>
<tr>
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_title%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- <strong>{--ADMIN_CONFIG_TITLE_SETTINGS--}</strong>
- </td>
- </tr>
- <tr>
- <td align="right">{--ADMIN_CONFIG_TITLE_ENABLE_DECORATIONS--}:</td>
- <td>$content[enable_title_deco]</td>
- </tr>
- <tr>
- <td align="right">{--ADMIN_CONFIG_TITLE_ENABLE_MODULE_TITLE--}:</td>
- <td>$content[enable_mod_title]</td>
- </tr>
- <tr>
- <td class="bottom" align="right">{--ADMIN_CONFIG_TITLE_ENABLE_WHAT_TITLE--}:</td>
- <td class="bottom">$content[enable_what_title]</td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- <strong>{--ADMIN_CONFIG_TITLE_DECORATIONS--}</strong>
- </td>
- </tr>
- <tr>
- <td align="right">{--ADMIN_CONFIG_TITLE_LEFT--}:</td>
- <td>
- <input type="text" class="form_field" name="title_left" value="{?title_left?}" size="4" maxlength="10" />
- </td>
- </tr>
- <tr>
- <td align="right">{--ADMIN_CONFIG_TITLE_MIDDLE--}:</td>
- <td>
- <input type="text" class="form_field" name="title_middle" value="{?title_middle?}" size="4" maxlength="10" />
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right">{--ADMIN_CONFIG_TITLE_RIGHT--}:</td>
- <td class="bottom">
- <input type="text" class="form_field" name="title_right" value="{?title_right?}" size="4" maxlength="10" />
- </td>
- </tr>
- <tr>
- <td colspan="2" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_TITLE_SETTINGS--}</strong>
+ </div>
+
+ <fieldset id="config_title_general_fields">
+ <legend>{--ADMIN_CONFIG_TITLE_LEGEND--}</legend>
+ <div class="table_row">
+ <label for="enable_title_deco">{--ADMIN_CONFIG_TITLE_ENABLE_DECORATIONS--}:</label>
+ <div align="center">$content[enable_title_deco]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="enable_mod_title">{--ADMIN_CONFIG_TITLE_ENABLE_MODULE_TITLE--}:</label>
+ <div align="center">$content[enable_mod_title]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="enable_what_title">{--ADMIN_CONFIG_TITLE_ENABLE_WHAT_TITLE--}:</label>
+ <div align="center">$content[enable_what_title]</div>
+ </div>
+ </fieldset>
+
+ <fieldset id="config_title_decorations_fields">
+ <legend>{--ADMIN_CONFIG_TITLE_DECORATIONS--}</legend>
+
+ <div class="table_row">
+ <label for="title_left">{--ADMIN_CONFIG_TITLE_LEFT--}:</label>
+ <div align="center"><input type="text" class="form_field" name="title_left" value="{?title_left?}" size="4" maxlength="10" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="title_middle">{--ADMIN_CONFIG_TITLE_MIDDLE--}:</label>
+ <div align="center"><input type="text" class="form_field" name="title_middle" value="{?title_middle?}" size="4" maxlength="10" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="title_right">{--ADMIN_CONFIG_TITLE_RIGHT--}:</label>
+ <div align="center"><input type="text" class="form_field" name="title_right" value="{?title_right?}" size="4" maxlength="10" /></div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_user%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- <strong>{--ADMIN_CONFIG_USER_TITLE--}</strong>
- </td>
- </tr>
- <tr>
- <td align="right">{--ADMIN_CONFIG_USER_LIMIT--}:</td>
- <td>
- <input type="text" class="form_field" name="user_limit" value="{?user_limit?}" size="4" maxlength="6" />
- </td>
- </tr>
- <tr>
- <td class="bottom" align="right">{--ADMIN_CONFIG_USER_ALPHA--}:</td>
- <td class="bottom">
- <input type="text" class="form_field" name="user_alpha" value="{?user_alpha?}" size="4" maxlength="6" />
- </td>
- </tr>
- <tr>
- <td colspan="2" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
- </td>
- </tr>
-</table>
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_CONFIG_USER_TITLE--}</strong>
+ </div>
+
+ <fieldset id="config_user_fields">
+ <legend>{--ADMIN_CONFIG_USER_LEGEND--}</legend>
+ <div class="table_row">
+ <label for="user_limit">{--ADMIN_CONFIG_USER_LIMIT--}</label>
+ <div align="center"><input type="text" class="form_field" name="user_limit" value="{?user_limit?}" size="4" maxlength="6" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="user_alpha">{--ADMIN_CONFIG_USER_ALPHA--}</label>
+ <div align="center"><input type="text" class="form_field" name="user_alpha" value="{?user_alpha?}" size="4" maxlength="6" /></div>
+ </div>
+ </fieldset>
+
+ <fieldset id="config_tester_user_fields">
+ <legend>{--ADMIN_CONFIG_TESTER_USER_LEGEND--}</legend>
+ <div class="table_row">
+ <label for="tester_user_maximum">{--ADMIN_CONFIG_TESTER_USER_MAXIMUM--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_maximum" value="{?tester_user_maximum?}" size="5" maxlength="5" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_family">{--ADMIN_CONFIG_TESTER_USER_GENDER--}</label>
+ <div align="left">$content[tester_user_gender_selection]</div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_surname_prefix">{--ADMIN_CONFIG_TESTER_USER_SURNAME_PREFIX--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_surname_prefix" value="{?tester_user_surname_prefix?}" size="10" maxlength="100" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_family">{--ADMIN_CONFIG_TESTER_USER_FAMILY--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_family" value="{?tester_user_family?}" size="10" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_street_nr">{--ADMIN_CONFIG_TESTER_USER_STREET_NR--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_street_nr" value="{?tester_user_street_nr?}" size="15" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_zip">{--ADMIN_CONFIG_TESTER_USER_ZIP--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_zip" value="{?tester_user_zip?}" size="6" maxlength="6" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_city">{--ADMIN_CONFIG_TESTER_USER_CITY--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_city" value="{?tester_user_city?}" size="10" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_email">{--ADMIN_CONFIG_TESTER_USER_EMAIL--}</label>
+ <div align="left"><input type="text" class="form_field" name="tester_user_email" value="{?tester_user_email?}" size="20" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_password">{--ADMIN_CONFIG_TESTER_USER_PASSWORD--}</label>
+ <div align="left"><input type="password" class="form_field" name="tester_user_password" value="{?tester_user_password?}" size="20" maxlength="255" /></div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_check_cat">{--ADMIN_CONFIG_TESTER_USER_CHECK_CAT--}</label>
+ <div align="left">{%template,ConfigurationYesNoSelectionBox=tester_user_check_cat%}</div>
+
+ <div class="field_note">
+ {--ADMIN_CONFIG_TESTER_USER_CHECK_CAT_NOTICE--}
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label for="tester_user_default_refid">{--ADMIN_CONFIG_TESTER_USER_DEFAULT_REFID--}</label>
+ <div align="left">{%pipe,addTesterUserDefaultRefidSelectionBox%}</div>
+ </div>
+ </fieldset>
+
+ <div class="table_footer top">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SAVE_SETTINGS--}" />
+ </div>
+</div>
</form>
</div>
+<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=user_contct&userid=$content[userid]%}" method="post">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed" align="center">
<tr>
</tr>
</table>
</form>
+</div>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_ads&do=delete_forced_ads%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td align="center" class="table_header bottom" height="25" colspan="4">
+ <strong>{--ADMIN_DELETE_FORCED_ADS_TITLE--}</strong>
+ </td>
+ </tr>
+ $content
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_delete" name="do_delete" value="{--ADMIN_FORCED_ADS_REMOVE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {--ADMIN_FORCED_ADS_ADDED--}:<br />
+ <input type="hidden" name="forced_ads_id[$content[forced_ads_id]]" value="1" />
+ <strong>$content[forced_ads_added]</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_FORCED_ADS_AD_URL--}:<br />
+ <strong>$content[forced_ads_ad_url]</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {--ADMIN_FORCED_ADS_ALTERNATE_TEXT--}:<br />
+ <strong>$content[forced_ads_alt_text]</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_FORCED_ADS_CLICK_URL--}:<br />
+ <strong><a href="{%pipe,generateFrametesterUrl=$content[forced_ads_click_url]%}" target="_blank">{--ADMIN_TEST_URL--}</a></strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {--ADMIN_FORCED_ADS_WIDTH--}:<br />
+ <strong>$content[forced_ads_width]</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_FORCED_ADS_HEIGHT--}:<br />
+ <strong>$content[forced_ads_height]</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {--ADMIN_FORCED_ADS_USERID--}:<br />
+ <strong>{%pipe,generateUserProfileLink=$content[forced_ads_userid]%}</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_FORCED_ADS_TYPE--}:<br />
+ <strong>{%pipe,translateForcedAdsType=$content[forced_ads_type]%}</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_FORCED_ADS_HAS_FRAMEBREAKER--}<br />
+ <strong>{%pipe,translateYesNo=$content[forced_ads_framebreaker]%}</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom separator"> </td>
+</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_costs&do=delete_forced_costs%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td align="center" class="table_header bottom" height="25" colspan="4">
+ <strong>{--ADMIN_DELETE_FORCED_COSTS_TITLE--}</strong>
+ </td>
+ </tr>
+ $content
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_delete" name="do_delete" value="{--ADMIN_FORCED_COSTS_REMOVE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {--ADMIN_FORCED_COSTS_PRICE_CLICK--}:<br />
+ <input type="hidden" name="forced_costs_id[$content[forced_costs_id]]" value="1" />
+ <strong>{%pipe,translateComma=$content[forced_costs_price_click]%} ({?POINTS?})</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {--ADMIN_FORCED_COSTS_PAYMENT_CLICK--}:<br />
+ <strong>{%pipe,translateComma=$content[forced_costs_payment_click]%} ({?POINTS?})</strong>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_FORCED_COSTS_VISIBILITY--}:<br />
+ <strong>{%pipe,translateForcedCostsVisibility=$content[forced_costs_visibility]%}</strong>
+ </td>
+</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content[rallye_id]%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td colspan="4" align="center" class="table_header">
+ <strong>{--ADMIN_DELETE_RALLYE_PRICES_TITLE--}</strong>
+ </td>
+ </tr>
+ <tr>
+ <td align="center" width="10" class="header_column bottom right">
+ <strong>{--ID_SELECT--}</strong>
+ </td>
+ <td align="center" width="50" class="header_column bottom right">
+ <strong>{--RALLYE_LEVEL--}:</strong>
+ </td>
+ <td align="center" width="200" class="header_column bottom right">
+ <strong>{--ADMIN_RALLYE_PRICE_POINTS--}:</strong>
+ </td>
+ <td align="center" width="320" class="header_column bottom">
+ <strong>{--ADMIN_RALLYE_PRICE_INFO--}:</strong>
+ </td>
+ </tr>
+ $content[rows]
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="submit" name="do_delete" class="form_delete" value="{--ADMIN_REMOVE_RALLYE_PRICES_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ $content[id]
+ <input type="hidden" claass="form_field" name="sel[$content[id]]" value="1" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ $content[price_level]
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {%pipe,translateComma=$content[points]%}
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {%pipe,fixEmptyContentToDashes=$content[info]%}
+ </td>
+</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_rallyes%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td colspan="3" align="center" class="table_header bottom">
+ <strong>{--ADMIN_DELETE_RALLYES_TITLE--}:</strong>
+ </td>
+ </tr>
+ $content
+ <tr>
+ <td colspan="3" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_delete" name="do_delete" value="{--ADMIN_REMOVE_RALLYE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%}" width="305" align="right">{--ADMIN_RALLYE_TITLE--}:</td>
+ <td class="{%template,ColorSwitch%}" width="265">
+ <strong>$content[title]</strong>
+ <input type="hidden" name="sel[$content[rallye_id]]" value="1" />
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}" align="right" valign="top">{--ADMIN_RALLYE_DESCRIPTION--}:</td>
+ <td class="{%template,ColorSwitch%}">
+ <pre>$content[descr]</pre>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}" align="right">{--ADMIN_RALLYE_TEMPLATE--}:</td>
+ <td class="{%template,ColorSwitch%}">
+ <strong>$content[template]</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}" width="200" align="right" valign="top">{--ADMIN_RALLYE_START_DAY--}:</td>
+ <td class="{%template,ColorSwitch%}" width="290">
+ <strong>$content[start_time]</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}" width="200" align="right" valign="top">{--ADMIN_RALLYE_END_DAY--}:</td>
+ <td class="{%template,ColorSwitch%}" width="290">
+ <strong>$content[end_time]</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}" width="305" align="right">{--ADMIN_RALLYE_MIN_USERS_MINI--}:</td>
+ <td class="{%template,ColorSwitch%}" width="265">
+ <strong>{%pipe,translateComma=$content[min_users]%}</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom" width="305" align="right">{--ADMIN_RALLYE_MIN_PRICES_MINI--}:</td>
+ <td class="{%template,ColorSwitch%} bottom" width="265">
+ <strong>{%pipe,translateComma=$content[min_prices]%}</strong>
+ </td>
+</tr>
$content
<tr>
<td class="table_footer" colspan="3">
- <input type="submit" name="do_delete" class="form_delete" value="{--ADMIN_SURFBAR_DELETE_URL_NOW--}" />
+ <input type="submit" name="do_delete" class="form_delete" value="{--ADMIN_SURFBAR_DELETE_URL_NOW_SUBMIT--}" />
</td>
</tr>
</table>
(<a href="{%network,getNetworkDataById,network_reflink=%network_id%%}" target="_blank" title="{%network,getNetworkDataById,network_title=%network_id%%}">{%network,getNetworkDataById,network_title=%network_id%%}</a>)
</div>
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_SET_ALL--}
{%template,NoYesSelectionBox=set_all%}
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MAX_RELOAD_TIME--} ({--TIME_UNIT--})<br />
$content[network_max_reload_time] ({%pipe,translateTimeUnit=$content[network_type_reload_time_unit]%})
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_WAITING_TIME--}<br />
<input type="text" class="form_normal" name="network_min_waiting_time" size="5" maxlength="20" value="$content[network_min_waiting_time]" />
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_REMAIN_CLICKS--}<br />
<input type="text" class="form_normal" name="network_min_remain_clicks" size="5" maxlength="20" value="$content[network_min_remain_clicks]" />
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_PAYMENT--}<br />
<input type="text" class="form_normal" name="network_min_payment" size="7" maxlength="20" value="$content[network_min_payment]" />
</div>
+
<div class="bottom" style="padding-top:3px;padding-bottom:3px">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_ALLOW_EROTIC--}<br />
<input type="text" class="form_normal" name="network_allow_erotic" size="5" maxlength="20" value="$content[network_allow_erotic]" />
</div>
+
<div class="table_footer">
<input type="hidden" name="network_data_id" value="$content[network_data_id]" />
<input type="submit" class="form_submit" name="ok" value="{--ADMIN_EDIT_CONFIG_NETWORK_HANDLER_TYPE_FORM_SUBMIT--}" />
</div>
+</div>
</form>
</div>
</td>
<td align="center" class="{%template,ColorSwitch%} bottom">
<select name="is_active[$content[id]]" class="form_select" size="1">
- {%pipe,generateYesNoOptionList=$content[is_active]%}
+ {%pipe,generateYesNoOptions=$content[is_active]%}
</select>
</td>
</tr>
<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_email_max_rec&do=edit%}" method="post">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_email_max_rec&do=edit%}" method="post">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td align="center" colspan="2" class="table_header bottom">
<tr>
<td class="{%template,ColorSwitch%}">
- {--ADMIN_FORCED_ADS_ADDED--}<br />
- <input type="hidden" name="sel[$content[forced_ads_id]]" value="1" />
+ {--ADMIN_FORCED_ADS_ADDED--}:<br />
+ <input type="hidden" name="forced_ads_id[$content[forced_ads_id]]" value="1" />
<strong>$content[forced_ads_added]</strong>
</td>
<td class="{%template,ColorSwitch%}">
</tr>
<tr>
<td class="{%template,ColorSwitch%}">
- {--ADMIN_CHANGE_FORCED_ADS_ALT_TEXT--}<br />
+ {--ADMIN_CHANGE_FORCED_ADS_ALTERNATE_TEXT--}<br />
<input type="text" class="form_field" name="forced_ads_alt_text[$content[forced_ads_id]]" size="15" maxlength="255" value="$content[forced_ads_alt_text]" />
</td>
<td class="{%template,ColorSwitch%}">
<td class="{%template,ColorSwitch%} bottom">
{--ADMIN_CHANGE_FORCED_ADS_FRAMEBREAKER--}<br />
<select name="forced_ads_framebreaker[$content[forced_ads_id]]" class="form_select" size="1">
- {%pipe,generateYesNoOptionList=$content[forced_ads_framebreaker]%}
+ {%pipe,generateYesNoOptions=$content[forced_ads_framebreaker]%}
</select>
</td>
<td class="{%template,ColorSwitch%} bottom separator"> </td>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_campaigns&do=edit_forced_campaigns%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td align="center" class="table_header bottom" height="25" colspan="4">
+ <strong>{--ADMIN_EDIT_FORCED_CAMPAIGN_TITLE--}</strong>
+ </td>
+ </tr>
+ $content
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="do_edit" value="{--ADMIN_FORCED_CAMPAIGN_CHANGE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
+
+<div class="notice">
+ {--ADMIN_EDIT_FORCED_CAMPAIGN_NOTICE--}
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_FORCED_CAMPAIGN_CREATED--}:<br />
+ <input type="hidden" name="forced_campaign_id[$content[forced_campaign_id]]" value="1" />
+ <strong>$content[forced_campaign_created]</strong>
+ </td>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_ORDERED_CLICKS--}<br />
+ <input type="text" class="form_field" name="forced_campaign_ordered_clicks[$content[forced_campaign_id]]" size="5" maxlength="20" value="{%pipe,translateComma=$content[forced_campaign_ordered_clicks]%}" />
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_PAYMENT_API--}<br />
+ <input type="text" class="form_field" name="forced_campaign_payment_api[$content[forced_campaign_id]]" size="5" maxlength="20" value="{%pipe,translateComma=$content[forced_campaign_payment_api]%}" />
+ </td>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_RELOAD_LOCK--}<br />
+ $content[forced_campaign_reload_lock]
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_MINIMUM_STAY--}<br />
+ <input type="text" class="form_field" name="forced_campaign_minimum_stay[$content[forced_campaign_id]]" size="5" maxlength="20" value="$content[forced_campaign_minimum_stay]" />
+ </td>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_ADS_ID--}<br />
+ {%template,ForcedAdSelectionBox=$content[forced_ads_id]%}
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_USERID--}<br />
+ $content[forced_campaign_userid]
+ <input type="hidden" name="forced_campaign_userid_raw" value="$content[forced_campaign_userid_raw]" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_CHANGE_FORCED_CAMPAIGN_COSTS_ID--}<br />
+ {%template,ForcedCostsSelectionBox=$content[forced_costs_id]%}
+ </td>
+</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_costs&do=edit_forced_costs%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td align="center" class="table_header bottom" height="25" colspan="4">
+ <strong>{--ADMIN_EDIT_FORCED_COSTS_TITLE--}</strong>
+ </td>
+ </tr>
+ $content
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="do_edit" value="{--ADMIN_FORCED_COSTS_CHANGE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_COSTS_PRICE_CLICK--}<br />
+ <input type="hidden" name="forced_costs_id[$content[forced_costs_id]]" value="1" />
+ <input type="text" class="form_field" name="forced_costs_price_click[$content[forced_costs_id]]" size="10" maxlength="20" value="{%pipe,translateComma=$content[forced_costs_price_click]%}" /> ({?POINTS?})
+ </td>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_FORCED_COSTS_PAYMENT_CLICK--}<br />
+ <input type="text" class="form_field" name="forced_costs_payment_click[$content[forced_costs_id]]" size="10" maxlength="20" value="{%pipe,translateComma=$content[forced_costs_payment_click]%}" /> ({?POINTS?})
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%} bottom">
+ {--ADMIN_CHANGE_FORCED_COSTS_VISIBILITY--}<br />
+ <select name="forced_costs_visibility[$content[forced_costs_id]]" class="form_select" size="1">
+ {%pipe,generateForcedCostsVisibilityOptions=$content[forced_costs_visibility]%}
+ </select>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom separator"> </td>
+</tr>
<td class="{%template,ColorSwitch%}" style="padding-left:5px">{--ADMIN_NETWORK_REQUIRE_ID_CARD--}</td>
<td class="{%template,ColorSwitch%}">
<select name="network_require_id_card[$content[network_id]]" class="form_select" size="1">
- {%pipe,generateYesNoOptionList=$content[network_require_id_card]%}
+ {%pipe,generateYesNoOptions=$content[network_require_id_card]%}
</select>
</td>
</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_point_accounts&do=edit_points_data%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td align="center" class="table_header bottom" height="25" colspan="4">
+ <strong>{--ADMIN_EDIT_POINTS_DATA_TITLE--}</strong>
+ </td>
+ </tr>
+ $content
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="do_edit" value="{--ADMIN_POINTS_DATA_CHANGE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%}">
+ <input type="hidden" name="id[$content[id]]" value="1" />
+ <strong>$content[subject]</strong>
+ <div class="tiny">({%pipe,translatePointsSubject=$content[subject]%})</div>
+ </td>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_POINTS_ACCOUNT_COLUMN_NAME--}<br />
+ <strong>{%pipe,translatePointsAccountType=$content[column_name]%}</strong>
+ </td>
+</tr>
+<tr>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_POINTS_LOCKED_MODE--}<br />
+ <select name="locked_mode[$content[id]]" class="form_select" size="1">
+ {%pipe,generatePointsLockedModeOptions=$content[locked_mode]%}
+ </select>
+ </td>
+ <td class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_POINTS_PAYMENT_METHOD--}<br />
+ <select name="payment_method[$content[id]]" class="form_select" size="1">
+ {%pipe,generatePointsPaymentMethodOptions=$content[payment_method]%}
+ </select>
+ </td>
+</tr>
+<tr>
+ <td class="bottom {%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_POINTS_NOTIFY_RECIPIENT--}<br />
+ <select name="notify_recipient[$content[id]]" class="form_select" size="1">
+ {%pipe,generatePointsNotifyRecipientOptions=$content[notify_recipient]%}
+ </select>
+ </td>
+ <td class="bottom {%template,ColorSwitch%}">
+ {--ADMIN_POINTS_ACCOUNT_PROVIDER--}<br />
+ <strong>{%pipe,translatePointsAccountProvider=$content[account_provider]%}</strong>
+ </td>
+</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content[rallye_id]%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td colspan="4" align="center" class="table_header">
+ <strong>{--ADMIN_EDIT_RALLYE_PRICES_TITLE--}</strong>
+ </td>
+ </tr>
+ <tr>
+ <td width="120" align="center" class="header_column bottom right">
+ <strong>{--RALLYE_ID--}:</strong>
+ </td>
+ <td width="65" align="center" class="header_column bottom right">
+ <strong>{--RALLYE_LEVEL--}:</strong>
+ </td>
+ <td width="185" align="center" class="header_column bottom right">
+ <strong>{--ADMIN_RALLYE_PRICE_POINTS--}:</strong>
+ </td>
+ <td width="130" align="center" class="header_column bottom">
+ <strong>{--ADMIN_RALLYE_PRICE_INFO--}:</strong>
+ </td>
+ </tr>
+ $content[rows]
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="do_edit" value="{--ADMIN_CHANGE_RALLYE_PRICES_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ <select name="rallye_id[$content[id]]" size="1" class="form_select">
+ $content[rallye_content]
+ </select>
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ <input type="text" class="form_field" name="level[$content[id]]" size="5" maxlength="20" value="$content[price_level]" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right">
+ <input type="text" class="form_field" name="points[$content[id]]" size="8" maxlength="20" value="{%pipe,translateComma=$content[points]%}" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ <input type="text" class="form_field" name="infos[$content[id]]" size="15" maxlength="255" value="$content[info]" />
+ </td>
+</tr>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="3" align="center" class="table_header bottom">
- <strong>{--RALLYE_EDIT_RALLYES--}:</strong></td>
+ <strong>{--ADMIN_EDIT_RALLYES_TITLE--}:</strong>
+ </td>
</tr>
$content
<tr>
<td colspan="3" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="do_edit" value="{--RALLYE_CHANGE_ADMIN--}" />
+ <input type="submit" class="form_submit" name="do_edit" value="{--ADMIN_CHANGE_RALLYE_SUBMIT--}" />
</td>
</tr>
</table>
<tr>
- <td class="{%template,ColorSwitch%}" width="305" align="right">{--RALLYE_TITLE--}:</td>
+ <td class="{%template,ColorSwitch%}" width="305" align="right">{--ADMIN_RALLYE_TITLE--}:</td>
<td class="{%template,ColorSwitch%}" width="265" align="center">
- <input type="text" class="form_field" name="title[$content[id]]" size="30" maxlength="255" value="$content[title]" />
+ <input type="text" class="form_field" name="title[$content[rallye_id]]" size="30" maxlength="255" value="$content[title]" />
+ <input type="hidden" name="sel[$content[rallye_id]]" value="1" />
</td>
</tr>
<tr>
- <td class="{%template,ColorSwitch%}" align="right" valign="top">{--RALLYE_DESCR--}:</td>
+ <td class="{%template,ColorSwitch%}" align="right" valign="top">{--ADMIN_ENTER_RALLYE_DESCRIPTION--}:</td>
<td class="{%template,ColorSwitch%}" align="center">
- <textarea name="descr[$content[id]]" cols="30" rows="6" class="form_field">$content[descr]</textarea>
+ <textarea name="descr[$content[rallye_id]]" cols="30" rows="6" class="form_field">$content[descr]</textarea>
</td>
</tr>
<tr>
- <td class="{%template,ColorSwitch%}" align="right">{--RALLYE_TEMPLATE--}:</td>
- <td class="{%template,ColorSwitch%}" align="center">$content[templ]</td>
+ <td class="{%template,ColorSwitch%}" align="right">{--ADMIN_SELECT_RALLYE_TEMPLATE--}:</td>
+ <td class="{%template,ColorSwitch%}" align="center">
+ $content[templ]
+ </td>
</tr>
<tr>
- <td class="{%template,ColorSwitch%}" width="200" align="right" valign="top">{--RALLYE_START_DAY--}:</td>
+ <td class="{%template,ColorSwitch%}" width="200" align="right" valign="top">{--ADMIN_RALLYE_START_DAY--}:</td>
<td class="{%template,ColorSwitch%}" width="290" align="center">
- <div>$content[s_day]. $content[s_month]. $content[s_year]</div>
- <div>$content[s_hour]: $content[s_min]: $content[s_sec]</div>
+ <div>$content[s_day] . $content[s_month] . $content[s_year]</div>
+ <div>$content[s_hour] : $content[s_min] : 00</div>
</td>
</tr>
<tr>
- <td class="{%template,ColorSwitch%}" width="200" align="right" valign="top">{--RALLYE_END_DAY--}:</td>
+ <td class="{%template,ColorSwitch%}" width="200" align="right" valign="top">{--ADMIN_RALLYE_END_DAY--}:</td>
<td class="{%template,ColorSwitch%}" width="290" align="center">
- <div>$content[e_day]. $content[e_month]. $content[e_year]</div>
- <div>$content[e_hour]: $content[e_min]: $content[e_sec]</div>
+ <div>$content[e_day] . $content[e_month] . $content[e_year]</div>
+ <div>$content[e_hour] : $content[e_min] : 00</div>
</td>
</tr>
<tr>
- <td class="{%template,ColorSwitch%}" width="305" align="right">{--RALLYE_MIN_USERS_MINI--}:</td>
+ <td class="{%template,ColorSwitch%}" width="305" align="right">{--ADMIN_RALLYE_MIN_USERS_MINI--}:</td>
<td class="{%template,ColorSwitch%}" width="265" align="center">
- <input type="text" class="form_field" name="min_users[$content[id]]" size="5" maxlength="20" value="$content[min_users]" />
+ <input type="text" class="form_field" name="min_users[$content[rallye_id]]" size="5" maxlength="20" value="$content[min_users]" />
</td>
</tr>
<tr>
- <td class="{%template,ColorSwitch%}" width="305" align="right">{--RALLYE_MIN_PRICES_MINI--}:</td>
- <td class="{%template,ColorSwitch%}" width="265" align="center">
- <input type="text" class="form_field" name="min_prices[$content[id]]" size="5" maxlength="20" value="$content[min_prices]" >
+ <td class="{%template,ColorSwitch%} bottom" width="305" align="right">{--ADMIN_RALLYE_MIN_PRICES_MINI--}:</td>
+ <td class="{%template,ColorSwitch%} bottom" width="265" align="center">
+ <input type="text" class="form_field" name="min_prices[$content[rallye_id]]" size="5" maxlength="20" value="$content[min_prices]" >
</td>
</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_surfbar_actions%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+<tr>
+ <td align="center" colspan="2" class="table_header bottom">
+ <strong>{--ADMIN_EDIT_SURFBAR_ACTIONS_TITLE--}</strong>
+ </td>
+</tr>
+$content
+<tr>
+ <td class="table_footer" colspan="2">
+ <input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
+ <input type="submit" name="do_edit" class="form_submit" value="{--ADMIN_CHANGE_SURFBAR_ACTIONS_SUBMIT--}" />
+ </td>
+</tr>
+</table>
+</form>
+</div>
+
+<div class="notice">
+ {--ADMIN_EDIT_SURFBAR_ACTIONS_NOTICE--}
+</div>
--- /dev/null
+<tr>
+ <td align="center" class="{%template,ColorSwitch%}">
+ {--ADMIN_SURFBAR_ACTIONS_ID--}
+ <input type="hidden" name="actions_id[$content[actions_id]]" value="1" />
+ <strong>$content[actions_id]</strong>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_SURFBAR_ACTIONS_STATUS--}<br />
+ {%template,SurfbarActionsStatusSelectionBox=$content[actions_id]%}
+ </td>
+</tr>
+
+<tr>
+ <td align="center" class="bottom {%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_SURFBAR_ACTIONS_ACTION--}<br />
+ {%template,SurfbarActionsActionSelectionBox=$content[actions_id]%}
+ </td>
+ <td align="center" class="bottom {%template,ColorSwitch%}">
+ {--ADMIN_CHANGE_SURFBAR_ACTIONS_NEW_STATUS--}<br />
+ {%template,SurfbarActionsNewStatusSelectionBox=$content[actions_id]%}
+ </td>
+</tr>
<tr>
<td class="table_footer" colspan="2">
<input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
- <input type="submit" name="do_edit" class="form_submit" value="{--ADMIN_SURFBAR_EDIT_URL_NOW--}" />
+ <input type="submit" name="do_edit" class="form_submit" value="{--ADMIN_SURFBAR_EDIT_URL_NOW_SUBMIT--}" />
</td>
</tr>
</table>
<div align="center">
<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_EXPORT_NETWORK_ARRAY_TRANSLATION_TITLE--}</strong>
+ </div>
-<div class="table_header bottom">
- <strong>{--ADMIN_EXPORT_NETWORK_ARRAY_TRANSLATION_TITLE--}</strong>
-</div>
-
-<div class="bottom">
- <pre>$content</pre>
-</div>
-
+ <div class="bottom">
+ <pre>$content</pre>
+ </div>
</div>
</div>
<div align="center">
<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--ADMIN_EXPORT_NETWORK_DATA_TITLE--}</strong>
+ </div>
-<div class="table_header bottom">
- <strong>{--ADMIN_EXPORT_NETWORK_DATA_TITLE--}</strong>
-</div>
-
-<div class="bottom">
- <pre>$content</pre>
-</div>
-
+ <div class="bottom">
+ <pre>$content</pre>
+ </div>
</div>
</div>
<div align="center">
<div class="table dashed" style="width:400px;margin-bottom:5px">
<ul style="padding:0px;margin:0px">
- <li class="menu_blur bottom"><a href="{%url=modules.php?module=index%}" title="{--ADMIN_BACK_TO_GUEST_MENU--}">{--ADMIN_BACK_TO_GUEST_MENU--}</a></li>
- <li class="menu_blur bottom"><a href="http://forum.mxchange.org" target="_blank" title="{--ADMIN_SUPPORT_FORUM_LINK--}">{--ADMIN_SUPPORT_FORUM_LINK--}</a></li>
- <li class="menu_blur bottom"><a href="http://bugs.mxchange.org" target="_blank" title="{--ADMIN_SUPPORT_BUGTRACKER_LINK--}">{--ADMIN_SUPPORT_BUGTRACKER_LINK--}</a></li>
- <li class="menu_blur bottom"><a href="http://wiki.mxchange.org" target="_blank" title="{--ADMIN_SUPPORT_WIKI_LINK--}">{--ADMIN_SUPPORT_WIKI_LINK--}</a></li>
- <!--
- CIA.vc is down indefinitely, see:
- http://scanlime.org/2011/05/cia-vc-service-is-down-indefinitely/
- <li class="menu_blur bottom"><a href="http://cia.vc/stats/project/mxchange" target="_blank" title="{--ADMIN_SUPPORT_CIAVC_LINK--}">{--ADMIN_SUPPORT_CIAVC_LINK--}</a></li>
- //-->
- <li class="menu_blur"><a href="http://stats.mxchange.org/branches/0.2.1-FINAL" target="_blank" title="{--ADMIN_SUPPORT_STATS_LINK--}">{--ADMIN_SUPPORT_STATS_LINK--}</a></li>
+ <li class="menu_blur switch_sw2 bottom"><a href="{%url=modules.php?module=index%}" title="{--ADMIN_BACK_TO_GUEST_MENU--}">{--ADMIN_BACK_TO_GUEST_MENU--}</a></li>
+ <li class="menu_blur switch_sw1 bottom"><a href="http://forum.mxchange.org" target="_blank" title="{--ADMIN_SUPPORT_FORUM_LINK--}">{--ADMIN_SUPPORT_FORUM_LINK--}</a></li>
+ <li class="menu_blur switch_sw2 bottom"><a href="http://bugs.mxchange.org" target="_blank" title="{--ADMIN_SUPPORT_BUGTRACKER_LINK--}">{--ADMIN_SUPPORT_BUGTRACKER_LINK--}</a></li>
+ <li class="menu_blur switch_sw1 bottom"><a href="http://wiki.mxchange.org" target="_blank" title="{--ADMIN_SUPPORT_WIKI_LINK--}">{--ADMIN_SUPPORT_WIKI_LINK--}</a></li>
+ <li class="menu_blur switch_sw2 bottom"><a href="http://cia.vc/stats/project/mxchange" target="_blank" title="{--ADMIN_SUPPORT_CIAVC_LINK--}">{--ADMIN_SUPPORT_CIAVC_LINK--}</a></li>
+ <li class="menu_blur switch_sw1"><a href="http://stats.mxchange.org/branches/0.2.1-FINAL" target="_blank" title="{--ADMIN_SUPPORT_STATS_LINK--}">{--ADMIN_SUPPORT_STATS_LINK--}</a></li>
</ul>
</div>
</div>
<div class="table_header bottom">
<strong>{--ADMIN_SELECTION_BOX_TITLE--}</strong>
</div>
- <div align="center" class="bottom">
+ <div class="bottom" align="center" style="padding:5px">
{--ADMIN_SELECT_USER--}:
<select name="userid" size="1" class="form_select">
$content[form_selection]
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=theme_import%}" method="post">
<input type="hidden" name="theme" value="$content" />
- <input type="submit" class="form_submit" name="ok" value="{--ADMIN_INSTALL_THEME--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--ADMIN_INSTALLER_THEME--}" />
</form>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="5" class="table_header bottom" align="center">
- <strong>{--ADMIN_LIST_BEG_TITLE--}/<strong>
+ <strong>{--ADMIN_LIST_BEG_TITLE--}</strong>
</td>
</tr>
<tr>
<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_beg%}" method="post">
- <input type="submit" name="withdraw" class="form_submit" value="{--ADMIN_BEG_WITHDRAW_NOW--}" />
+ <input type="submit" name="withdraw" class="form_submit" value="{--ADMIN_BEG_WITHDRAW_NOW_SUBMIT--}" />
</form>
<div class="notice">
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_campaigns%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="800">
+<tr>
+ <td align="center" colspan="11" class="table_header">
+ <strong>{--ADMIN_LIST_FORCED_CAMPAIGNS_TITLE--}</strong>
+ </td>
+</tr>
+<tr>
+ <td class="header_column bottom right" align="center"><strong>{--ID_SELECT--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--_USERID--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_STATUS--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_ORDERED_CLICKS--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_PAYMENT_API--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_RELOAD_LOCK--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_MINIMUM_STAY--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_LAST_LOCKED--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_LOCK_REASON--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_EXPIRED--}</strong></td>
+ <td class="header_column bottom" align="center"><strong>{--ADMIN_FORCED_CAMPAIGN_CREATED--}</strong></td>
+</tr>
+$content
+<tr>
+ <td class="table_footer" colspan="11">
+ <input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
+ <input type="submit" class="form_submit" name="edit" value="{--ADMIN_ACTION_EDIT_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="activate" value="{--ADMIN_ACTION_ACTIVATE_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="lock" value="{--ADMIN_ACTION_UNLOCK_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="delete" value="{--ADMIN_ACTION_DELETE_SUBMIT--}" />
+ </td>
+</tr>
+</table>
+</form>
+</div>
+
+<div class="notice">
+ {--ADMIN_LIST_FORCED_CAMPAIGN_NOTICE--}
+</div>
--- /dev/null
+<tr>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[forced_campaign_id]" name="forced_campaign_id[$content[forced_campaign_id]]" value="1" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ {%pipe,generateUserProfileLink=$content[forced_campaign_userid]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translateForcedCampaignStatus=$content[forced_campaign_status]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translateComma=$content[forced_campaign_ordered_clicks]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translateComma=$content[forced_campaign_payment_api]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ $content[forced_campaign_reload_lock]
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ $content[forced_campaign_minimum_stay]
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ $content[forced_campaign_last_locked]
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,fixEmptyContentToDashes=$content[forced_campaign_lock_reason]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ $content[forced_campaign_expired]
+ </td>
+ <td align="center" class="bottom {%template,ColorSwitch%}">
+ $content[forced_campaign_created]
+ </td>
+</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_forced_costs%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="800">
+<tr>
+ <td align="center" colspan="4" class="table_header">
+ <strong>{--ADMIN_LIST_FORCED_COSTS_TITLE--}</strong>
+ </td>
+</tr>
+<tr>
+ <td class="header_column bottom right" align="center"><strong>{--ID_SELECT--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_COSTS_PRICE_CLICK--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_FORCED_COSTS_PAYMENT_CLICK--}</strong></td>
+ <td class="header_column bottom" align="center"><strong>{--ADMIN_FORCED_COSTS_VISIBILITY--}</strong></td>
+</tr>
+$content
+<tr>
+ <td class="table_footer" colspan="4">
+ <input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
+ <input type="submit" class="form_submit" name="edit" value="{--ADMIN_ACTION_EDIT_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="delete" value="{--ADMIN_ACTION_DELETE_SUBMIT--}" />
+ </td>
+</tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[forced_costs_id]" name="forced_costs_id[$content[forced_costs_id]]" value="1" />
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translateComma=$content[forced_costs_price_click]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translateComma=$content[forced_costs_payment_click]%}
+ </td>
+ <td align="center" class="bottom {%template,ColorSwitch%}">
+ {%pipe,translateForcedCostsVisibility=$content[forced_costs_visibility]%}
+ </td>
+</tr>
<tr>
- <td align="center" class="{%template,ColorSwitch%} bottom right">$content[link]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom right">$content[subject]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom right">$content[timestamp]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">{%pipe,getCategory=$content[cat_id]%}</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right">
+ <a href="{%url=mailid.php?userid=$content[userid]&$content[link_type]=$content[mail_id]%}" target="_blank">$content[mail_id]</a>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right">
+ $content[subject]
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right">
+ $content[timestamp]
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom">
+ {%pipe,getCategory=$content[cat_id]%}
+ </td>
</tr>
$content[network_row_separator]
</td>
<td class="{%template,ColorSwitch%} bottom right" align="center">
- $content[network_request_type]
+ <span title="{%pipe,translateNetworkRequestType=$content[network_request_type]%}">$content[network_request_type]</span>
</td>
<td class="{%template,ColorSwitch%} bottom right" align="center">
$content[network_charset]
<tr>
- <td class="bottom right" colspan="2" width="46%" align="center">
- {--EMAIL_SUBJECT--}:<br />
- <strong>$content[subject]</strong>
- </td>
- <td class="bottom" width="54%" align="center">
- {--EMAIL_TEXT--}:<br />
- <strong><pre>$content[text]</pre></strong>
- </td>
+ <td class="bottom right" colspan="2" width="46%" align="center">
+ <div>{--EMAIL_SUBJECT--}:</div>
+ <div><strong>$content[subject]</strong></div>
+ </td>
+ <td class="bottom" width="54%" align="center">
+ <div>{--EMAIL_TEXT--}:</div>
+ <div><strong><pre>$content[text]</pre></strong></div>
+ </td>
</tr>
<tr>
- <td align="center" class="bottom right" width="23%">
- {--EMAIL_POINTS--}:<br />
- <strong>{%pipe,translateComma=$content[points]%} {?POINTS?}</strong>
- </td>
- <td align="center" class="bottom right" width="23%">
- {--EMAIL_SECONDS--}:<br />
- <strong>{%pipe,createFancyTime=$content[time]%}</strong>
- </td>
- <td align="center" class="bottom">
- {--EMAIL_CATEGORY--}:<br />
- <strong>{%pipe,getCategory=$content[cat_id]%}</strong>
- </td>
+ <td align="center" class="bottom right" width="23%">
+ <div>{--EMAIL_POINTS--}:</div>
+ <div><strong>{%pipe,translateComma=$content[points]%} {?POINTS?}</strong></div>
+ </td>
+ <td align="center" class="bottom right" width="23%">
+ <div>{--EMAIL_SECONDS--}:</div>
+ <div><strong>{%pipe,createFancyTime=$content[time]%}</strong></div>
+ </td>
+ <td align="center" class="bottom">
+ <div>{--EMAIL_CATEGORY--}:</div>
+ <div><strong>{%pipe,getCategory=$content[cat_id]%}</strong></div>
+ </td>
</tr>
<tr>
- <td align="center" class="bottom right">
- {--EMAIL_RECEIVERS--}:<br />
- <strong>{%pipe,translateComma=$content[mails_sent]%}</strong>
- ({--EMAIL_RUIDS--}: <strong>{%pipe,convertReceivers=$content[receivers]%}</strong>)
- </td>
- <td align="center" class="bottom right">
- {--USERS_LINKS--}:<br />
- <strong>$content[unconfirmed_content]</strong>
- </td>
- <td align="center" class="bottom">
- {--EMAIL_POOL_TYPE--}:<br />
- <strong>{%pipe,translatePoolType=$content[data_type]%}</strong>
- </td>
+ <td align="center" class="bottom right">
+ <div>{--EMAIL_RECEIVERS--}:</div>
+ <div><strong>{%pipe,translateComma=$content[mails_sent]%}</strong></div>
+ <div>({--EMAIL_RUIDS--}: <strong>{%pipe,convertReceivers=$content[receivers]%}</strong>)</div>
+ </td>
+ <td align="center" class="bottom right">
+ <div>{--USERS_LINKS--}:</div>
+ <div><strong>$content[unconfirmed_content]</strong></div>
+ </td>
+ <td align="center" class="bottom">
+ <div>{--EMAIL_POOL_TYPE--}:</div>
+ <div><strong>{%pipe,translatePoolType=$content[data_type]%}</strong></div>
+ </td>
</tr>
<tr>
- <td align="center" class="bottom right">
- {--EMAIL_TSEND--}:<br />
- <strong>{%pipe,translateComma=$content[target_send]%}</strong>
- </td>
- <td align="center" class="bottom right">
- {--EMAIL_URL--}:<br />
- <strong><a href="{%pipe,generateFrametesterUrl=$content[url]%}" target="_blank">{--ADMIN_TEST_URL--}</a></strong>
- </td>
- <td align="center" class="bottom">
- {--EMAIL_TIMESTAMP--}:<br />
- <strong>$content[timestamp]</strong>
- </td>
+ <td align="center" class="bottom right">
+ <div>{--EMAIL_TSEND--}:</div>
+ <div><strong>{%pipe,translateComma=$content[target_send]%}</strong></div>
+ </td>
+ <td align="center" class="bottom right">
+ <div>{--EMAIL_URL--}:</div>
+ <div><strong><a href="{%pipe,generateFrametesterUrl=$content[url]%}" target="_blank">{--ADMIN_TEST_URL--}</a></strong></div>
+ </td>
+ <td align="center" class="bottom">
+ <div>{--EMAIL_TIMESTAMP--}:</div>
+ <div><strong>$content[timestamp]</strong></div>
+ </td>
</tr>
<tr>
- <td align="center" class="top right" colspan="2">
- <div>{--EMAIL_URL--}:</div>
- <div><strong>$content[url]</strong></div>
- </td>
- <td align="center" class="top">
- {--_UNUSED--}:<br />
- <strong>---</strong>
- </td>
+ <td align="center" class="top right" colspan="2">
+ <div>{--EMAIL_URL--}:</div>
+ <div><strong>$content[url]</strong></div>
+ </td>
+ <td align="center" class="top">
+ <div>{--_UNUSED--}:</div>
+ <div><strong>---</strong></div>
+ </td>
</tr>
<tr>
- <td align="center" class="top admin_delete_link" colspan="3">
- <a href="{%url=modules.php?module=admin&what=del_email&nid=$content[id]%}">{--ADMIN_DELETE_NOTIFY_MAIL--}</a>
- </td>
+ <td align="center" class="top admin_delete_link" colspan="3">
+ <a href="{%url=modules.php?module=admin&what=del_email&nid=$content[id]%}">{--ADMIN_DELETE_NOTIFY_MAIL--}</a>
+ </td>
</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=list_point_accounts%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="800">
+<tr>
+ <td align="center" colspan="7" class="table_header">
+ <strong>{--ADMIN_LIST_POINTS_ACCOUNTS_TITLE--}</strong>
+ </td>
+</tr>
+<tr>
+ <td class="header_column bottom right" align="center"><strong>{--ID_SELECT--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_POINTS_ACCOUNT_SUBJECT--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_POINTS_ACCOUNT_COLUMN_NAME--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_POINTS_ACCOUNT_LOCKED_MODE--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_POINTS_ACCOUNT_PAYMENT_METHOD--}</strong></td>
+ <td class="header_column bottom right" align="center"><strong>{--ADMIN_POINTS_ACCOUNT_NOTIFY_RECIPIENT--}</strong></td>
+ <td class="header_column bottom" align="center"><strong>{--ADMIN_POINTS_ACCOUNT_PROVIDER--}</strong></td>
+</tr>
+$content
+<tr>
+ <td class="table_footer" colspan="7">
+ <input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
+ <input type="submit" class="form_submit" name="edit" value="{--ADMIN_ACTION_EDIT_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="delete" value="{--ADMIN_ACTION_DELETE_SUBMIT--}" />
+ </td>
+</tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[id]" name="id[$content[id]]" value="1" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ <strong>$content[subject]</strong>
+ <div class="tiny">({%pipe,translatePointsSubject=$content[subject]%})</div>
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translatePointsAccountType=$content[column_name]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translatePointsLockedMode=$content[locked_mode]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translatePointsPaymentMethod=$content[payment_method]%}
+ </td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">
+ {%pipe,translateYesNo=$content[notify_recipient]%}
+ </td>
+ <td align="center" class="bottom {%template,ColorSwitch%}">
+ {%pipe,translatePointsAccountProvider=$content[account_provider]%}
+ </td>
+</tr>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="5" align="center" class="table_header">
- <strong>{--ADMIN_LIST_RALLYES_PRICING--}:</strong>
+ <strong>{--ADMIN_LIST_RALLYES_PRICES_TITLE--}:</strong>
</td>
</tr>
<tr>
- <td align="center" width="100" class="header_column bottom right"><strong>{--RALLYE_TITLE--}:</strong></td>
- <td align="center" width="70" class="header_column bottom right"><strong>{--RALLYE_ADMIN_ID--}:</strong></td>
- <td align="center" width="200" class="header_column bottom right"><strong>{--RALLYE_TSTART--}:</strong></td>
- <td align="center" width="200" class="header_column bottom"><strong>{--RALLYE_TEND--}:</strong></td>
+ <td align="center" width="100" class="header_column bottom right"><strong>{--ADMIN_RALLYE_TITLE--}:</strong></td>
+ <td align="center" width="70" class="header_column bottom right"><strong>{--ADMIN_RALLYE_ADMIN_LOGIN--}:</strong></td>
+ <td align="center" width="200" class="header_column bottom right"><strong>{--ADMIN_RALLYE_STARTED--}:</strong></td>
+ <td align="center" width="200" class="header_column bottom"><strong>{--ADMIN_RALLYE_ENDED--}:</strong></td>
</tr>
$content
<tr>
<td colspan="5" class="table_footer">
- {--ADMIN_RALLYE_PRICES_NOTICE--}
+ <div class="notice">{--ADMIN_RALLYE_PRICES_NOTICE--}</div>
</td>
</tr>
</table>
<tr>
- <td align="center" class="{%template,ColorSwitch%} bottom right"><a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=$content[id]%}">$content[title]</a></td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right"><a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content[rallye_id]%}">$content[title]</a></td>
<td align="center" class="{%template,ColorSwitch%} bottom right">{%pipe,generateAdminLink=$content[admin_id]%}</td>
- <td align="center" class="{%template,ColorSwitch%} bottom right">$content[start]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[end]</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right">$content[start_time]</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom">$content[end_time]</td>
</tr>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content[rallye_id]%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+ <tr>
+ <td colspan="4" align="center" class="table_header">
+ <strong>{--ADMIN_LIST_RALLYE_PRICES_SIMPLE_TITLE--}</strong>
+ </td>
+ </tr>
+ <tr>
+ <td align="center" width="10" class="header_column bottom right">
+ <strong>{--ID_SELECT--}</strong>
+ </td>
+ <td align="center" width="50" class="header_column bottom right">
+ <strong>{--RALLYE_LEVEL--}:</strong>
+ </td>
+ <td align="center" width="200" class="header_column bottom right">
+ <strong>{--ADMIN_RALLYE_PRICE_POINTS--}:</strong>
+ </td>
+ <td align="center" width="320" class="header_column bottom">
+ <strong>{--ADMIN_RALLYE_PRICE_INFO--}:</strong>
+ </td>
+ </tr>
+ $content[rows]
+ <tr>
+ <td colspan="4" class="table_footer">
+ <input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
+ <input type="submit" class="form_submit" name="edit" value="{--ADMIN_ACTION_EDIT_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="delete" value="{--ADMIN_ACTION_DELETE_SUBMIT--}" />
+ </td>
+ </tr>
+</table>
+</form>
+</div>
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[id]" name="sel[$content[id]]" value="1" />
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right" align="center">
+ $content[price_level]
+ </td>
+ <td class="{%template,ColorSwitch%} bottom right">
+ {%pipe,translateComma=$content[points]%}
+ </td>
+ <td class="{%template,ColorSwitch%} bottom">
+ {%pipe,fixEmptyContentToDashes=$content[info]%}
+ </td>
+</tr>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="4" align="center" class="table_header bottom">
- <strong>{%message,RALLYE_LIST_USERS=$content[rallye]%}:</strong>
+ <strong>{%message,ADMIN_LIST_RALLYE_USERS_TITLE2=$content[rallye_id]%}:</strong>
</td>
</tr>
<tr>
$content[rows]
<tr>
<td colspan="4" class="table_footer">
- <span class="notice">{--RALLYE_REFERRAL_POINTS_NOTICE--}</span>
+ <span class="notice">{--ADMIN_RALLYE_REFERRAL_POINTS_NOTICE--}</span>
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td colspan="6" align="center" class="table_header">
- <strong>{--RALLYE_EDIT_DELETE_RALLYES--}:</strong>
+ <strong>{--ADMIN_LIST_RALLYES_TITLE--}:</strong>
</td>
</tr>
<tr>
<td align="center" width="10" class="header_column bottom right"><strong>{--ID_SELECT--}</strong></td>
- <td align="center" class="header_column bottom" colspan="5"><strong>{--RALLYE_LIST_OVERVIEW_TITLE--}:</strong></td>
+ <td align="center" class="header_column bottom" colspan="5"><strong>{--ADMIN_LIST_RALLYE_DATA_OVERVIEW_TITLE--}:</strong></td>
</tr>
$content[rows]
<tr>
</div>
<div class="notice">
- {--RALLYE_EDIT_ONLY_INACTIVE_NOTICE--}
+ {--ADMIN_LIST_RALLYES_NOTICE--}
+ {--ADMIN_RALLYE_EDIT_ONLY_INACTIVE_NOTICE--}
</div>
<tr>
<td align="center" class="{%template,ColorSwitch%} bottom right" rowspan="5">$content[select]</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
- <strong>{--RALLYE_TITLE--}:</strong><br />
- $content[title]
+ <strong>{--ADMIN_RALLYE_TITLE--}:</strong><br />
+ <a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content[rallye_id]%}">$content[title]</a>
</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
- <strong>{--RALLYE_DESCR2--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_DESCRIPTION--}:</strong><br />
{%pipe,fixEmptyContentToDashes=$content[descr]%}
</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
- <strong>{--RALLYE_ADMIN_ID--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_ADMIN_LOGIN--}:</strong><br />
{%pipe,generateAdminLink=$content[admin_id]%}
</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
- <strong>{--RALLYE_TSTART--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_STARTED--}:</strong><br />
$content[start_date]
</td>
<td align="center" class="{%template,ColorSwitch%} bottom">
- <strong>{--RALLYE_TEND--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_ENDED--}:</strong><br />
$content[end_date]
</td>
</tr>
<tr>
<td align="center" class="{%template,ColorSwitch%} bottom right">
- <strong>{--RALLYE_TEMPLATE2--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_TEMPLATE--}:</strong><br />
{%pipe,fixEmptyContentToDashes=$content[template]%}
</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
- <strong>{--RALLYE_AUTO_ADD--}:</strong><br />
- <a href="{%url=modules.php?module=admin&what=list_rallyes&rallye=$content[id]&auto=$content[auto]%}" title="$content[auto_title]">{%pipe,translateYesNo=$content[auto_add_new_user]%}</a>
+ <strong>{--ADMIN_RALLYE_AUTO_ADD_USERS--}:</strong><br />
+ <a href="{%url=modules.php?module=admin&what=list_rallyes&rallye_id=$content[rallye_id]&auto=$content[auto]%}" title="$content[auto_title]">{%pipe,translateYesNo=$content[auto_add_new_user]%}</a>
</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
<strong>{--RALLYE_ACTIVE--}:</strong><br />
- <a href="{%url=modules.php?module=admin&what=list_rallyes&rallye=$content[id]&activate=$content[active]%}" title="$content[active_title]">{%pipe,translateYesNo=$content[is_active]%}</a>
+ <a href="{%url=modules.php?module=admin&what=list_rallyes&rallye_id=$content[rallye_id]&activate=$content[active]%}" title="$content[active_title]">{%pipe,translateYesNo=$content[is_active]%}</a>
</td>
<td align="center" class="{%template,ColorSwitch%} bottom right">
<strong>{--RALLYE_NOTIFY--}:</strong><br />
- <a ref="{%url=modules.php?module=admin&what=list_rallyes&rallye=$content[id]&notify=$content[notify]%}" title="$content[notify_title]">{%pipe,translateYesNo=$content[send_notify]%}</a>
+ <a ref="{%url=modules.php?module=admin&what=list_rallyes&rallye_id=$content[rallye_id]&notify=$content[notify]%}" title="$content[notify_title]">{%pipe,translateYesNo=$content[send_notify]%}</a>
</td>
<td align="center" class="{%template,ColorSwitch%} bottom">
<strong>{--RALLYE_NOTIFIED--}:</strong><br />
<tr>
<td align="center" class="{%template,ColorSwitch%} bottom right" colspan="3">
<strong>{--RALLYE_ASSIGNED_PRICES--}:</strong><br />
- <a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye=$content[id]%}">{%pipe,translateComma=$content[prices_cnt]%}</a>
+ <a href="{%url=modules.php?module=admin&what=config_rallye_prices&rallye_id=$content[rallye_id]%}">{%pipe,translateComma=$content[prices_cnt]%}</a>
</td>
<td align="center" class="{%template,ColorSwitch%} bottom" colspan="2">
<strong>{--RALLYE_ASSIGNED_USERS--}:</strong><br />
</tr>
<tr>
<td align="center" class="{%template,ColorSwitch%} bottom right" colspan="3">
- <strong>{--RALLYE_MIN_USERS_MINI--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_MIN_USERS_MINI--}:</strong><br />
$content[min_users]
</td>
<td align="center" class="{%template,ColorSwitch%} bottom" colspan="2">
- <strong>{--RALLYE_MIN_PRICES_MINI--}:</strong><br />
+ <strong>{--ADMIN_RALLYE_MIN_PRICES_MINI--}:</strong><br />
$content[min_prices]
</td>
</tr>
<div>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
- <td colspan="6" class="table_header" align="center">
+ <td colspan="7" class="table_header" align="center">
<strong>{%message,ADMIN_LIST_REFERRALS_LEVEL=$content[level]%}</strong><br />
$content[info]
</td>
</tr>
<tr>
<td width="5%" align="center" class="header_column bottom right"><strong>{--_USERID--}</strong></td>
+ <td width="5%" align="center" class="header_column bottom right"><strong>{--_REFID--}</strong></td>
<td width="5%" align="center" class="header_column bottom right"><strong>{--REFS_COUNT--}</strong></td>
<td width="35%" align="center" class="header_column bottom right"><strong>{--SURNAME_FAMILY--}</strong></td>
<td width="35%" align="center" class="header_column bottom right"><strong>{--EMAIL--}</strong></td>
</tr>
$content[rows]
<tr>
- <td colspan="6" class="table_footer">
+ <td colspan="7" class="table_footer">
<!-- @TODO Nothing to say here? //-->
</td>
<tr>
- <td colspan="6" class="table_header bottom" height="20">
+ <td colspan="7" class="table_header bottom" height="20">
<strong>{%message,ADMIN_LIST_USER_NO_REFERRALS=$content[userid]%}</strong>
</td>
</tr>
<tr>
- <td align="right" class="bottom right {%template,ColorSwitch%}" valign="top">{%pipe,generateUserProfileLink=$content[userid]%}</td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">{%pipe,generateUserProfileLink=$content[userid]%}</td>
+ <td align="center" class="bottom right {%template,ColorSwitch%}">{%user,refid,generateUserProfileLink=$content[userid]%}</td>
<td align="center" class="bottom right {%template,ColorSwitch%}">$content[refs_link]</td>
<td class="bottom right {%template,ColorSwitch%}">{%user,gender,translateGender=$content[userid]%} {%user,surname=$content[userid]%} {%user,family=$content[userid]%}</td>
<td class="bottom right {%template,ColorSwitch%}">$content[email]</td>
<tr>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="100"><strong>{--ID_SELECT--}</strong></td>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="240" colspan="2"><strong>{--SURNAME_FAMILY--}:</strong></td>
- <td align="center" class="{%template,ColorSwitch%} bottom" width="160"><strong>{--SPONSOR_POINTS_LEFT--}:</strong></td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
+ <strong>{--ID_SELECT--}</strong>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="240" colspan="2">
+ <strong>{--SURNAME_FAMILY--}:</strong>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom" width="160">
+ <strong>{--SPONSOR_POINTS_LEFT--}:</strong>
+ </td>
</tr>
<tr>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
- [<strong><a href="{%url=modules.php?module=admin&what=list_sponsor&id=$content[id]%}" title="{--ADMIN_SPONSOR_DETAILS_LINK_TITLE--}">$content[id]</a></strong>]
- </td>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="240" colspan="2">
- <a href="$content[email]">{%pipe,translateGender=$content[gender]%} $content[surname] $content[family]</a>
- </td>
- <td align="center" class="{%template,ColorSwitch%} bottom" width="160">
- <a href="{%url=modules.php?module=admin&what=edit_sponsor&id=$content[id]&do=add_points%}"
- title="{--ADMIN_SPONSOR_ADD_POINTS_LINK_TITLE--}">{%pipe,translateComma=$content[points]%}</a> {?POINTS?}
- </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
+ [<strong><a href="{%url=modules.php?module=admin&what=list_sponsor&id=$content[id]%}" title="{--ADMIN_SPONSOR_DETAILS_LINK_TITLE--}">$content[id]</a></strong>]
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="240" colspan="2">
+ <a href="$content[email]">{%pipe,translateGender=$content[gender]%} $content[surname] $content[family]</a>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom" width="160">
+ <a href="{%url=modules.php?module=admin&what=edit_sponsor&id=$content[id]&do=add_points%}"
+ title="{--ADMIN_SPONSOR_ADD_POINTS_LINK_TITLE--}">{%pipe,translateComma=$content[points]%}</a> {?POINTS?}
+ </td>
</tr>
<tr>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
- <strong>{--SPONSOR_STATUS--}</strong>:
- </td>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="160"><strong>{--SPONSOR_CREATED--}:</strong></td>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="160"><strong>{--LAST_ONLINE_SHORT--}:</strong></td>
- <td align="center" class="{%template,ColorSwitch%} bottom" width="160"><strong>{--REMOTE_IP--}:</strong></td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
+ <strong>{--SPONSOR_STATUS--}:</strong>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="160">
+ <strong>{--SPONSOR_CREATED--}:</strong>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="160">
+ <strong>{--LAST_ONLINE_SHORT--}:</strong>
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom" width="160">
+ <strong>{--REMOTE_IP--}:</strong>
+ </td>
</tr>
<tr>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
- [<strong><a href="{%url=modules.php?module=admin&what=lock_sponsor&id=$content[id]%}">{%pipe,translateSponsorStatus=$content[status]%}</a></strong>]
- </td>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="120">
- $content[sponsor_created]
- </td>
- <td align="center" class="{%template,ColorSwitch%} bottom right" width="120">
- $content[last_online]
- </td>
- <td align="center" class="{%template,ColorSwitch%} bottom" width="160">
- $content[remote_addr]
- </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="100">
+ [<strong><a href="{%url=modules.php?module=admin&what=lock_sponsor&id=$content[id]%}">{%pipe,translateSponsorStatus=$content[status]%}</a></strong>]
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="120">
+ $content[sponsor_created]
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom right" width="120">
+ $content[last_online]
+ </td>
+ <td align="center" class="{%template,ColorSwitch%} bottom" width="160">
+ $content[remote_addr]
+ </td>
</tr>
<tr>
<td colspan="4" class="table_footer" align="center">
<input type="reset" class="form_reset" value="{--ADMIN_UNSELECT_ALL--}" />
- <input type="submit" class="form_submit" name="edit" value="{--ADMIN_SURFBAR_EDIT_ACTIONS--}" />
+ <input type="submit" class="form_submit" name="edit" value="{--ADMIN_EDIT_SURFBAR_ACTIONS_SUBMIT--}" />
</td>
</tr>
</table>
<tr>
<td align="center" class="bottom right {%template,ColorSwitch%}">
- <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[actions_id]" name="id[$content[actions_id]]" value="1" />
+ <input type="checkbox" class="form_field" title="{--ID_SELECT--} $content[actions_id]" name="actions_id[$content[actions_id]]" value="1" />
</td>
<td align="center" class="bottom right {%template,ColorSwitch%}">
{%pipe,translateSurfbarUrlStatus=$content[actions_status]%}
<tr>
<td class="table_footer" colspan="8">
<input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
- <input type="submit" class="form_submit" name="edit" value="{--ADMIN_SURFBAR_EDIT_URL--}" />
- <input type="submit" class="form_delete" name="lock" value="{--ADMIN_SURFBAR_UNLOCK_URL--}" />
- <input type="submit" class="form_submit" name="undelete" value="{--ADMIN_SURFBAR_UNDELETE_URL--}" />
- <input type="submit" class="form_delete" name="delete" value="{--ADMIN_SURFBAR_DELETE_URL--}" />
+ <input type="submit" class="form_submit" name="edit" value="{--ADMIN_SURFBAR_EDIT_URL_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="lock" value="{--ADMIN_SURFBAR_UNLOCK_URL_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="undelete" value="{--ADMIN_SURFBAR_UNDELETE_URL_SUBMIT--}" />
+ <input type="submit" class="form_delete" name="delete" value="{--ADMIN_SURFBAR_DELETE_URL_SUBMIT--}" />
</td>
</tr>
</table>
<strong>{--TRANSFER_STAMP--}</strong>
</td>
<td width="120" align="center" class="header_column bottom right">
- <strong>{--TRANSFER_FROM_USERID--}</strong>
+ <strong>{--ADMIN_TRANSFER_FROM_USERID--}</strong>
</td>
<td width="120" align="center" class="header_column bottom right">
- <strong>{--TRANSFER_TO_USERID--}</strong>
+ <strong>{--ADMIN_TRANSFER_TO_USERID--}</strong>
</td>
<td width="230" align="center" class="header_column bottom right">
<strong>{--TRANSFER_POINTS_REASON--}</strong>
<strong>{%template,AdminListUserTitle%}:</strong>
</td>
</tr>
- {%pipe,getRequestElement,alpha=sortby%}
+ {%pipe,getRequestElement,addAlphabeticalSorting=sortby%}
$content[sort_links]
{%pipe,addPageNavigation=$content[num_pages]%}
$content[rows]
<tr>
<td class="table_footer" colspan="5">
<input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
- <input type="submit" name="do_lock" class="admin_lock" value="{--ADMIN_SURFBAR_LOCK_URL_NOW--}" />
+ <input type="submit" name="do_lock" class="admin_lock" value="{--ADMIN_SURFBAR_LOCK_URL_NOW_SUBMIT--}" />
</td>
</tr>
</table>
<td align="center" colspan="2" class="table_footer">
<input type="hidden" name="timeout" value="0" />
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--ADMIN_LOGIN_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="login" value="{--ADMIN_LOGIN_SUBMIT--}" />
</td>
</tr>
</table>
</tr>
</table>
</div>
-<script language="JavaScript">
+<script type="text/javascript">
<!--
initMenuFoldStates();
//-->
<li style="white-space: normal">{--ADMIN_TASK_SUBJECT--}: <strong>$content[subject]</strong></li>
$content[add]
<li style="white-space: normal">{--ADMIN_TASK_TEXT--}: $content[text]</li>
- <li style="white-space: normal"><div style="text-align: right"><a href="#ext_$content[extension]">{--GOTO_TOP--}</a></div></li>
+ <li style="white-space: normal"><div style="text-align: right"><a href="#ext_$content[ext_name]">{--GOTO_TOP--}</a></div></li>
<li style="white-space: normal">{--ADMIN_TASK_CREATED--}: <strong>$content[task_created]</strong></li>
</ul>
</td>
</td>
</tr>
<tr>
- <td align="right" class="admin_task_left switch_sw1">{--ADMIN_TASK_RANDOM_REFID--}:</td>
- <td align="center" class="admin_task_right switch_sw1">
+ <td align="right" class="admin_task_left switch_sw1 bottom">{--ADMIN_TASK_RANDOM_REFID--}:</td>
+ <td align="center" class="admin_task_right switch_sw1 bottom">
<strong>$content[random_refid]</strong>
</td>
</tr>
+ <tr>
+ <td align="right" class="admin_task_left switch_sw2">{--ADMIN_TASK_TESTERS--}:</td>
+ <td align="center" class="admin_task_right switch_sw2">
+ <strong>$content[testers]</strong>
+ </td>
+ </tr>
</table>
</td>
<td align="center" valign="top">
--- /dev/null
+<div class="table_row">
+ <label for="max_mails">{--ADMIN_MAX_MAILS_PER_DAY--}</label>
+
+ <div align="left">
+ <select name="max_mails" size="1" class="form_select">
+ $content
+ </select>
+ </div>
+</div>
<div class="{%template,ColorSwitch%} bottom">
- <div>
+ <div class="bad">
Das Sprachpaket
<span class="data">{%pipe,basename=$content[inc]%}</span>
(Sprache: <span class="data">$content[lang]</span>)
<div class="table_header bottom">
<strong>{%message,ADMIN_SHOW_CONFIG_NETWORK_HANDLER_TYPE_TITLE=$content[network_type_handler]%}</strong>
</div>
+
<div>
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MAX_RELOAD_TIME--} ({--TIME_UNIT--})<br />
<strong>{%pipe,createFancyTime=$content[network_max_reload_time]%} ({%pipe,translateTimeUnit=$content[network_type_reload_time_unit]%})</strong>
</div>
+
<div>
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_WAITING_TIME--}<br />
<strong>{%pipe,fixEmptyContentToDashes=$content[network_min_waiting_time]%}</strong>
</div>
+
<div>
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_REMAIN_CLICKS--}<br />
<strong>{%pipe,translateComma=$content[network_min_remain_clicks]%}</strong>
</div>
+
<div>
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_MIN_PAYMENT--}<br />
<strong>{%pipe,translateComma=$content[network_min_payment]%}</strong>
</div>
+
<div class="bottom">
{--ADMIN_CONFIG_NETWORK_HANDLER_TYPE_ALLOW_EROTIC--}<br />
<strong>{%pipe,fixEmptyContentToDashes=$content[network_allow_erotic]%}</strong>
</div>
+
<div class="table_footer">
<input type="hidden" name="module" value="admin" />
<input type="hidden" name="what" value="config_network_types" />
<input type="hidden" name="network_type_id" value="$content[network_type_id]" />
<input type="submit" class="form_submit" value="{--ADMIN_EDIT_CONFIG_NETWORK_HANDLER_TYPE_SUBMIT--}" />
</div>
+</div>
</form>
</div>
<tr>
<td class="table_footer" colspan="4">
<input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
- <input type="submit" name="do_undelete" class="admin_lock" value="{--ADMIN_SURFBAR_UNDELETE_URL_NOW--}" />
+ <input type="submit" name="do_undelete" class="admin_lock" value="{--ADMIN_SURFBAR_UNDELETE_URL_NOW_SUBMIT--}" />
</td>
</tr>
</table>
</tr>
$content[rows]
<tr>
- <td class="table_footer top" colspan="8" align="center" height="35">
+ <td class="table_footer bottom top" colspan="8" align="center" height="35">
{--ADMIN_ENTER_REDIRECT_URL--}:
<input type="text" class="form_field" name="redirect" size="30" maxlength="255" value="{?reject_url?}" />
</td>
</tr>
<tr>
- <td class="table_footer top" colspan="8" align="center" height="35">
+ <td class="table_footer" colspan="8" align="center" height="35">
<input type="reset" class="form_reset" value="{--RESET_SELECT--}" />
<input type="submit" class="form_submit" name="accept" value="{--ADMIN_EMAIL_ACCEPT--}" />
<input type="submit" class="form_delete" name="reject" value="{--ADMIN_EMAIL_REJECT--}" />
<tr>
<td class="table_footer" colspan="5">
<input type="reset" class="form_reset" value="{--UNDO_SELECTIONS--}" />
- <input type="submit" name="reject" class="form_submit" value="{--ADMIN_SURFBAR_REJECT_URL--}" />
- <input type="submit" name="unlock" class="form_submit" value="{--ADMIN_SURFBAR_CONFIRM_URL--}" />
+ <input type="submit" name="reject" class="form_delete" value="{--ADMIN_SURFBAR_REJECT_URL_SUBMIT--}" />
+ <input type="submit" name="unlock" class="form_submit" value="{--ADMIN_SURFBAR_CONFIRM_URL_SUBMIT--}" />
</td>
</tr>
</table>
<strong>{%user,receive_mails,translateComma=$content[userid]%}</strong>
</td>
<td align="center" class="bottom">
- {--MAX_PER_DAY--}:<br />
+ {--MAX_MAILS_PER_DAY--}:<br />
<strong>{%user,max_mails,translateComma=$content[userid]%}</strong>
</td>
</tr>
<strong>$content[last_online]</strong>
</td>
<td align="center" class="bottom right">
- {--ADMIN_LAST_MODULE--}:<br />
- <strong>{%user,last_module,fixEmptyContentToDashes=$content[userid]%}</strong>
+ {--ADMIN_LAST_WHAT--}:<br />
+ <strong>{%user,last_what,fixEmptyContentToDashes=$content[userid]%}</strong>
</td>
<td align="center" class="bottom right">
{--HAS_JOINED--}:<br />
--- /dev/null
+<div class="para">
+ Sollten Sie diesen Text zu sehen bekommen, unterstützt Ihr Browser
+ "interaktive" Webseiten (AJAX = <strong>A</strong>synchronous
+ <strong>J</strong>avascript <strong>A</strong>nd <strong>X</strong>ml).
+</div>
+
+<div class="para">
+ AJAX ist ein Konzept, wie man Webseiten aufzubauen hat. {?TITLE?} verwendet
+ das AJAX-Framework <a href="http://jquery.com" rel="external"
+ target="_blank">jQuery</a>. Dies sollte auf den meisten, modernen Browsern
+ (wie es z.B. der Firefox ist) funktionieren.
+</div>
+
+<div class="para">
+ <strong>Für die Interssierten:</strong>
+</div>
+
+<div class="para">
+ Dieses Mini-Fenster ist in Wirklichkeit ein Konstrukt aus mehreren div-Tags,
+ das standardmäßig ausgeblendet ist (<em>display:none</em>) und dann
+ von jquery eingeblendet wird. Sie können dies separat schließen,
+ dazu brauchen Sie nicht das ganze Browserfenster schließen.
+</div>
-<div align="center" style="margin-top:10px;margin-bottom:10px">
-
-<div style="width:550px" class="table dashed">
- <div class="table_header bottom">
+<div class="bug_table dashed">
+ <div class="bug_table_header bottom">
<strong>{--APP_DIE_TITLE--}</strong>
</div>
<div align="left" style="margin:5px">
$content
</div>
</div>
-
-</div>
<tr>
<td colspan="2" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--DOUBLER_NOW--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--DOUBLER_NOW_SUBMIT--}" />
</td>
</tr>
</table>
<div class="para">
Bezahlungen mit <a href="http://www.bitcoin.org/" rel="external"
target="_blank" title="Virtual P2P Currency Bitcoin">Bitcoins</a> sind mit
- dieser Erweiterung möglich. Bitcoin ist eine virtuelle
+ dieser Erweiterung möglich. Bitcoin ist eine virtuelle
Internetwährung mit der Ihre Sponsoren Werbung bei Ihrem
{OPEN_CONFIG}mt_word{CLOSE_CONFIG} bezahlen können. Üblicherweise
wird solch eine virtuelle Währung (wie z.B. FunCoins, Wernis, Klammlose
<div class="para">
-Diese Erweiterung lagert oft aus der Datenbank geladenen Daten in
-externe Dateien aus. Damit konnte ich bei mir im Intranet die Anfragen
-um <strong>50 bis 66%</strong> reduzieren, was für Ihren Server
-bedeutet, dass er weniger belastet wird.
+ Diese Erweiterung lagert oft aus der Datenbank geladenen Daten in
+ externe Dateien aus. Damit konnte ich bei mir im Intranet die Anfragen
+ um <strong>50 bis 66%</strong> reduzieren, was für Ihren Server
+ bedeutet, dass er weniger belastet wird.
</div>
<div class="para">
-<strong>Bitte löschen Sie immer die Cache-Dateien aus dem
-Verzeichnis <u>/{OPEN_CONFIG}CACHE_PATH{CLOSE_CONFIG}/</u> vor Update /
-Neuinstallation der Erweiterung!</strong>
+ <strong>Bitte löschen Sie immer die Cache-Dateien aus dem
+ Verzeichnis <u>/{OPEN_CONFIG}CACHE_PATH{CLOSE_CONFIG}/</u> vor Update /
+ Neuinstallation der Erweiterung!</strong>
</div>
<div class="para">
-Bitte lesen Sie sich vor der Installation unbedingt die Anleitung
-<strong>DOCS/de/cache/README.txt</strong> durch!
+ Bitte lesen Sie sich vor der Installation unbedingt die Anleitung
+ <strong>DOCS/de/cache/README.txt</strong> durch!
</div>
</div>
<div class="para">
- Das verdeckte Feld hat im Gegensatz zum CPR-Plugin (<u>C/<u>omments
+ Das verdeckte Feld hat im Gegensatz zum CPR-Plugin (<u>C</u>omments
<u>P</u>ost <u>R</u>ewriter) einen Zufallsanteil, um dem Spambot das
Erkennen des Feldes durch Mustererkennung zu erschweren. Da für das
sich anmeldende Mitglied das verdeckte Feld nicht sichtbar ist (dies ist
--- /dev/null
+<div class="para">
+ Diese Erweiterung ist ähnlich wie <strong>ext-network</strong> und
+ bietet eine allgemeine Anbindung an die APIs verschiedener virtueller
+ Währungen, wie z.B. Wernis, FunCoins, eBesucher und vieles mehr. Diese
+ Erweiterung löst zukünftig die bereits bestehende Erweiterungen
+ <strong>ext-funcoins</strong>, <strong>ext-primera</strong> und
+ <strong>ext-wernis</strong> ab.
+</div>
+
+<div class="para">
+ Es kann dann pro Währung eingestellt werden, ob diese auszahlungs-,
+ einzahlungsfähig oder beides ist und dies für Mitglieder und
+ Sponsoren getrennt. Es kann dann auch ein Wechselkurs eingestellt werden
+ oder diesen von einer weiteren API (z.B. virtuelle Börsen von diversen
+ virtuellen Währungen) abgefragt werden (falls diese solches anbietet).
+</div>
+
+<div class="para">
+ Die einzelnen Transaktionen sind für Mitglieder, Sponsoren und
+ Administratoren für eine getrennt einstellbare Speicherdauer und pro
+ Währung unterschiedlich im jeweiligen Loginbereich einsehbar (der
+ Administrator kann sich selber somit z.B. längere Speicherzeiten
+ einstellen als für Mitglieder).
+</div>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td align="center" colspan="2" class="table_header bottom">
- <div class="big">{--GUEST_REQUEST_CONFIRM_LINK_TITLE--}</div>
+ <strong>{--GUEST_REQUEST_CONFIRM_LINK_TITLE--}</strong>
</td>
</tr>
<tr>
- </td>
- <td valign="top"><div class="skyscraper">
- <!-- 120x600 may fit here //-->
- </div></td>
+ </td>
+ <td valign="top"><div class="skyscraper">
+ <!-- 120x600 may fit here //-->
+ </div></td>
</tr>
<tr>
- <td align="center" valign="top" class="guest_advert">
+ <td align="center" valign="top" class="guest_advert">
<!-- Don't add your code here! //-->
</tr>
$content[rows]
<tr>
- <td colspan="3" class="table_footer">
- <ul>
- <li><div class="notice">Es werden nur aktive User gewertet.</div></li>
- <li><div class="notice">{%pipe,determineReferralRallyeMinimumUsers=$content[min_users]%}</div></li>
- <li><div class="notice">{%pipe,determineReferralRallyeMinimumPrices=$content[min_prices]%}</div></li>
- <li><div class="notice">Der Rechtsweg ist ausgeschlossen.</div></li>
- </ul>
+ <td colspan="3" class="table_footer" align="left">
+ <div align="left"><ul>
+ <li><div class="notice">Es werden nur aktive User gewertet.</div></li>
+ <li><div class="notice">{%pipe,determineReferralRallyeMinimumUsers=$content[min_users]%}</div></li>
+ <li><div class="notice">{%pipe,determineReferralRallyeMinimumPrices=$content[min_prices]%}</div></li>
+ <li><div class="notice">Der Rechtsweg ist ausgeschlossen.</div></li>
+ </ul></div>
</td>
</tr>
</table>
<tr>
- <td class="{%template,ColorSwitch%} bottom">$content[idx].</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[start].{%pipe,fixEmptyContentToDashes=$content[userid]%}.$content[end]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[start].{%pipe,fixEmptyContentToDashes=$content[ref]%}.$content[end]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[start].{%pipe,fixEmptyContentToDashes=$content[infos]%}.$content[end]</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom"><strong>$content[idx]</strong></td>
+ <td align="center" class="{%template,ColorSwitch%} bottom">$content[start]{%pipe,fixEmptyContentToDashes=$content[userid]%}$content[end]</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom">$content[start]{%pipe,fixEmptyContentToDashes=$content[ref]%}$content[end]</td>
</tr>
<tr>
<td class="table_footer" colspan="4" align="center">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--LOGIN_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="login" value="{--LOGIN_SUBMIT--}" />
</td>
</tr>
</table>
--- /dev/null
+<tr>
+ <td colspan="4" align="center">
+ <span class="bad">{%pipe,getMessageFromErrorCode=$content%}</span>
+ </td>
+</tr>
<tr>
<td colspan="4" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--LOGIN_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="login" value="{--LOGIN_SUBMIT--}" />
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="440" class="table dashed">
<tr>
<td width="60%" align="right" height="40" class="register_left">
- {--MAX_PER_DAY--}:
+ {--MAX_MAILS_PER_DAY--}:
</td>
<td width="40%" class="register_right">
<select name="max_mails" size="1" class="form_select">
<td class="bottom" align="left" style="margin-left: 5px; margin-right: 5px; margin-top: 10px; margin-bottom: 10px">
<ul>
<li>Titel: <strong>$content[title]</strong></li>
- <li>Start: <strong>$content[start]</strong></li>
- <li>Ende : <strong>$content[end]</strong></li>
+ <li>Start: <strong>$content[start_time]</strong></li>
+ <li>Ende : <strong>$content[end_time]</strong></li>
</ul>
</td>
</tr>
<div align="center">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="550">
<tr>
- <td class="table_header bottom">
- <div class="big">
- {--GUEST_SPONSOR_WANT_BECOME_HEADER--}
- </div>
- <div>
- {--GUEST_SPONSOR_INFOS_PRICING_HEADER--}
- </div>
- </td>
+ <td class="table_header bottom">
+ <div>
+ <strong>{--GUEST_SPONSOR_WANT_BECOME_HEADER--}</strong>
+ </div>
+ <div>
+ {--GUEST_SPONSOR_INFOS_PRICING_HEADER--}
+ </div>
+ </td>
</tr>
<tr>
- <td align="center" style="padding-top:8px; padding-bottom: 4px">
- <div>
- {--GUEST_SPONSOR_PRICING_HEADER--}
- </div>
- <div>
- <table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="450">
-$content[paytypes]
- <tr>
- <td colspan="2" class="table_footer">
- {--GUEST_SPONSOR_PRICING_FOOTER--}
- </td>
- </tr>
- </table>
- </div>
- </td>
+ <td align="center" style="padding-top:8px; padding-bottom: 4px">
+ <div>
+ {--GUEST_SPONSOR_PRICING_HEADER--}
+ </div>
+ <div>
+ <table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="450">
+ $content[paytypes]
+ <tr>
+ <td colspan="2" class="table_footer">
+ {--GUEST_SPONSOR_PRICING_FOOTER--}
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
</tr>
<tr>
- <td align="center" style="padding-top: 4px; padding-bottom: 8px">
- <table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="450">
- <tr>
- <td colspan="2" align="center" class="table_header bottom">
- <strong>{--GUEST_SPONSOR_ACTIONS_HEADER--}</strong>
- </td>
- </tr>
-$content[actions]
- <tr>
- <td colspan="2" class="table_footer">
- {--GUEST_SPONSOR_ACTIONS_FOOTER--}
- </td>
- </tr>
- </table>
- </td>
+ <td align="center" style="padding-top: 4px; padding-bottom: 8px">
+ <table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="450">
+ <tr>
+ <td colspan="2" align="center" class="table_header bottom">
+ <strong>{--GUEST_SPONSOR_ACTIONS_HEADER--}</strong>
+ </td>
+ </tr>
+ $content[actions]
+ <tr>
+ <td colspan="2" class="table_footer">
+ {--GUEST_SPONSOR_ACTIONS_FOOTER--}
+ </td>
+ </tr>
+ </table>
+ </td>
</tr>
</table>
</div>
<tr>
<td colspan="2" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--LOGIN_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="login" value="{--LOGIN_SUBMIT--}" />
</td>
</tr>
</table>
<tr>
- <td align="center" class="table_header bottom" colspan="2">$content</td>
+ <td align="center" class="table_header bottom" colspan="2">$content</td>
</tr>
-<form accept-charset="UTF-8" action="{%url=install.php?page=2%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="install_main">
+<form accept-charset="UTF-8" action="{%url=install.php?install_page=2%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="install_content">
<tr>
- <td align="center">
- <div class="install_welcome">{--INSTALLER_HEADER_MYSQL_ERRORS--}</div>
+ <td align="center" class="install_title">
+ {--INSTALLER_MYSQL_ERRORS_TITLE--}
</td>
</tr>
<tr>
--- /dev/null
+<div>
+ <ul id="footernav">
+ <li><input id="finish" type="button" class="form_submit disabled" value="{--PAGE_FINISH_SUBMIT--}" disabled="disabled" /></li>
+ <li><input id="next_page" type="button" class="form_submit disabled" value="{--PAGE_NEXT_SUBMIT--}" disabled="disabled" /></li>
+ <li><input id="previous_page" type="button" class="form_submit disabled" value="{--PAGE_PREVIOUS_SUBMIT--}" disabled="disabled" /></li>
+ <li><input id="save_changes" type="button" class="form_submit disabled" value="{--SAVE_CHANGES_SUBMIT--}" disabled="disabled" /></li>
+ <li><input id="installer_switch" type="button" class="form_submit" value="{--INSTALLER_SWITCH_PLAIN--}" /></li>
+ </ul>
+</div>
-<div class="install_header">
- <strong>: : : {--INSTALLER_MAIN_HEADER--} : : :</strong>
-</div>
-
-<div class="install_main">
- {%pipe,getInstallerContent%}
-</div>
+<!-- @DEPRECATED //-->
--- /dev/null
+<div class="install_main_ajax" align="center">
+<div class="install_header">
+ <strong>: : : {--INSTALLER_MAIN_TITLE--} : : :</strong>
+</div>
+
+<div align="center">
+<div class="install_menu_ajax">
+ {%pipe,generateInstallerMenu%}
+</div>
+</div>
+
+<div id="install_error" class="ajax_error">
+ <div class="ajax_error_title">
+ <strong>{--INSTALLER_AJAX_ERROR_TITLE--}</strong>
+ </div>
+ <div class="ajax_error_close">
+ <strong id="install_error_close" style="padding-left:1.5px;cursor:pointer">X</strong>
+ </div>
+ <div style="clear:both"></div>
+ <div class="ajax_error_content" id="install_error_content">
+ <!-- Content will be inserted here by AJAX //-->
+ </div>
+</div>
+
+<div id="install_warning" class="ajax_warning">
+ <div class="ajax_warning_title">
+ <strong>{--INSTALLER_AJAX_WARNING_TITLE--}</strong>
+ </div>
+ <div class="ajax_warning_close">
+ <strong id="install_warning_close" style="padding-left:1.5px;cursor:pointer">X</strong>
+ </div>
+ <div style="clear:both"></div>
+ <div class="ajax_warning_content" id="install_warning_content">
+ <!-- Content will be inserted here by AJAX //-->
+ </div>
+</div>
+
+<div style="clear:both"></div>
+
+<div class="install_content_container">
+ <div id="install_content" class="install_content">
+ {%pipe,getInstallerContent%}
+ </div>
+</div>
+
+<div class="install_footer">
+ {%pipe,generateInstallerFooterNavigation%}
+</div>
+</div>
+
+<script type="text/javascript" src="{%url=js/ajax-loader.js%}"></script>
+<script type="text/javascript">
+<!--
+// These scripts shall be loaded
+var scripts = new Array();
+scripts[0] = '{%url,js=js/ajax-common.js%}';
+scripts[1] = '{%url,js=js/jquery-ui.custom.js%}';
+scripts[2] = '{%url,js=js/install-data.js%}';
+scripts[3] = '{%url,js=js/install-common.js%}';
+
+// This must be the last one
+scripts[scripts.length] = '{%url,js=js.php?js=install_ajax&install_page=$content[install_page]%}';
+
+// Do this only when all is ready
+// Load all scripts
+if (loadScripts(scripts) == true) {
+ // Wait for loadScripts() finishing loading all scripts
+ $().ready(function () {
+ // Do stuff, when all scripts are loaded
+ });
+} // END - if
+
+//-->
+</script>
--- /dev/null
+<div class="install_header">
+ <strong>: : : {--INSTALLER_MAIN_TITLE--} : : :</strong>
+</div>
+
+<div>
+ {%pipe,getInstallerContent%}
+</div>
+
+<div class="para">
+ <input type="button" class="form_submit" value="{--INSTALLER_SWITCH_START--}" onclick="switchInstaller('start'); return false" />
+ <input type="button" class="form_submit" value="{--INSTALLER_SWITCH_AJAX--}" onclick="switchInstaller('ajax'); return false" />
+</div>
+
+<script type="text/javascript" src="{%url=js/install-common.js?dummy=1%}{%ext,version=sql_patches%}"></script>
--- /dev/null
+<ul id="tabnav">
+ <li id="install_welcome" class="tab_enabled"><a href="#" title="{--INSTALLER_TAB_NAVIGATION_WELCOME_TITLE--}">{--INSTALLER_TAB_NAVIGATION_WELCOME_LINK--}</a></li>
+ <li id="install_base_data" class="tab_enabled"><a href="#" title="{--INSTALLER_TAB_NAVIGATION_BASE_DATA_TITLE--}">{--INSTALLER_TAB_NAVIGATION_BASE_DATA_LINK--}</a></li>
+ <li id="install_database_config" class="tab_enabled"><a href="#" title="{--INSTALLER_TAB_NAVIGATION_DATABASE_CONFIG_TITLE--}">{--INSTALLER_TAB_NAVIGATION_DATABASE_CONFIG_LINK--}</a></li>
+ <li id="install_smtp_config" class="tab_enabled"><a href="#" title="{--INSTALLER_TAB_NAVIGATION_SMTP_CONFIG_TITLE--}">{--INSTALLER_TAB_NAVIGATION_SMTP_CONFIG_LINK--}</a></li>
+ <li id="install_other_config" class="tab_enabled"><a href="#" title="{--INSTALLER_TAB_NAVIGATION_OTHER_CONFIG_TITLE--}">{--INSTALLER_TAB_NAVIGATION_OTHER_CONFIG_LINK--}</a></li>
+ <li id="install_overview" class="tab_enabled"><a id="install_overview_link" class="tabnav_enabled" href="#" title="{--INSTALLER_TAB_NAVIGATION_OVERVIEW_TITLE--}">{--INSTALLER_TAB_NAVIGATION_OVERVIEW_LINK--}</a></li>
+</ul>
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=install.php?page=2%}" method="post" target="_self">
-<table border="0" cellspacing="0" cellpadding="0" class="install_main">
+<div align="center" style="margin-bottom:10px">
+<form accept-charset="UTF-8" action="{%url=install.php?install_page=2%}" method="post" target="_self">
+<table border="0" cellspacing="0" cellpadding="0" class="install_content">
<tr>
- <td colspan="2" align="center">
- <div class="install_welcome">{--INSTALLER_HEADER_TEXT_PAGE1--}</div>
+ <td colspan="2" align="center" class="install_title">
+ {--INSTALLER_BASE_DATA_TITLE--}
</td>
</tr>
<tr>
<td colspan="2">
- {--INSTALLER_TEXT_PAGE_1--}
+ {--INSTALLER_BASE_DATA_DESCRIPTION--}
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_SERVER_PATH--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_LABEL_BASE_PATH--} ({--INSTALLER_BASE_PATH_NOTICE--})</td>
<td align="left"><input type="text" class="form_field" name="spath" size="50" value="{?PATH?}" /></td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_BASE_URL--} ({--BASE_URL_NOTICE--}):</td>
+ <td align="right" class="install_right">{--INSTALLER_LABEL_BASE_URL--} ({--INSTALLER_BASE_URL_NOTICE--}):</td>
<td align="left"><input type="text" class="form_field" name="burl" size="50" value="{?URL?}" /></td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_HP_TITLE--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_LABEL_MAIN_TITLE--}</td>
<td align="left"><input type="text" class="form_field" name="title" size="50" maxlength="255" value="{?MAIN_TITLE?}" /></td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_HP_SLOGAN--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_LABEL_SLOGAN--}</td>
<td align="left"><input type="text" class="form_field" name="slogan" size="50" maxlength="255" value="{?SLOGAN?}" /></td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_HP_EMAIL--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_LABEL_WEBMASTER--}</td>
<td align="left"><input type="text" class="form_field" name="email" size="30" maxlength="255" value="{?WEBMASTER?}" /></td>
</tr>
<tr>
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=install.php?page=3%}" method="post" target="_self">
-<table border="0" cellspacing="0" cellpadding="0" class="install_main">
+<div align="center" style="margin-bottom:10px">
+<form accept-charset="UTF-8" action="{%url=install.php?install_page=3%}" method="post" target="_self">
+<table border="0" cellspacing="0" cellpadding="0" class="install_content">
<tr>
<td colspan="2" align="center" class="install_title">
- <div class="install_welcome">{--INSTALLER_HEADER_TEXT_PAGE2--}</div>
+ {--INSTALLER_DATABASE_CONFIG_TITLE--}
</td>
</tr>
<tr>
<td colspan="2">
- {--INSTALLER_TEXT_PAGE_2--}
+ {--INSTALLER_DATABASE_CONFIG_DESCRIPTION--}
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_HOST--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_HOST--}</td>
<td align="left">
<input type="text" class="form_field" name="mysql[host]" size="25" value="$content[mysql_host]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_DBASE--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_DBASE--}</td>
<td align="left">
<input type="text" class="form_field" name="mysql[dbase]" size="25" value="$content[mysql_dbase]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_PREFIX--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_PREFIX--}</td>
<td align="left">
<input type="text" class="form_field" name="mysql[prefix]" size="25" value="$content[mysql_prefix]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_TABLE_TYPE--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_TABLE_TYPE--}</td>
<td align="left">
<select name="mysql[type]" size="1">
<option value="MyISAM">{--INSTALLER_TABLE_TYPE_MYISAM--}</option>
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_LOGIN--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_LOGIN--}</td>
<td align="left">
<input type="text" class="form_field" name="mysql[login]" size="25" value="$content[mysql_login]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_PASSWORD1--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_PASSWORD1--}</td>
<td align="left">
<input type="password" class="form_field" name="mysql[pass1]" size="25" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_MYSQL_PASSWORD2--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_MYSQL_PASSWORD2--}</td>
<td align="left">
<input type="password" class="form_field" name="mysql[pass2]" size="25" />
</td>
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=install.php?page=5%}" method="post" target="_self">
-<table border="0" cellspacing="0" cellpadding="0" class="install_main">
+<div align="center" style="margin-bottom:10px">
+<form accept-charset="UTF-8" action="{%url=install.php?install_page=5%}" method="post" target="_self">
+<table border="0" cellspacing="0" cellpadding="0" class="install_content">
<tr>
- <td colspan="2" align="center">
- <div class="install_welcome">{--INSTALLER_HEADER_TEXT_PAGE3--}</div>
+ <td colspan="2" align="center" class="install_title">
+ {--INSTALLER_SMTP_CONFIG_TITLE--}
</td>
</tr>
<tr>
<td colspan="2">
- {--INSTALLER_TEXT_PAGE_3--}
+ {--INSTALLER_SMTP_CONFIG_DESCRIPTION--}
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_HOST--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_SMTP_HOST--}</td>
<td align="left">
<input type="text" class="form_field" name="smtp_host" size="25" value="$content[smtp_host]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_USER--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_SMTP_USER--}</td>
<td align="left">
<input type="text" class="form_field" name="smtp_user" size="25" value="$content[smtp_user]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_PASSWORD1--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_SMTP_PASSWORD1--}</td>
<td align="left">
<input type="password" class="form_field" name="smtp_pass1" size="25" value="$content[smtp_pass1]" />
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_PASSWORD2--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_SMTP_PASSWORD2--}</td>
<td align="left">
<input type="password" class="form_field" name="smtp_pass2" size="25" value="$content[smtp_pass2]" />
</td>
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=install.php?page=finalize%}" method="POST" target="_self">
-<table border="0" cellspacing="0" cellpadding="0" class="install_main">
+<div align="center" style="margin-bottom:10px">
+<form accept-charset="UTF-8" action="{%url=install.php?install_page=finalize%}" method="POST" target="_self">
+<table border="0" cellspacing="0" cellpadding="0" class="install_content">
<tr>
- <td colspan="2" align="center">
- <div class="install">{--INSTALLER_HEADER_TEXT_PAGE5--}</div>
+ <td colspan="2" align="center" class="install_title">
+ {--INSTALLER_OTHER_CONFIG_TITLE--}
</td>
</tr>
<tr>
<td colspan="2">
- {--INSTALLER_TEXT_PAGE_5--}
+ {--INSTALLER_OTHER_CONFIG_DESCRIPTION--}
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_OUTPUT_MODE--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_OUTPUT_MODE--}</td>
<td align="left">
<select name="omode" size="1" class="form_select">
<option value="render">{--INSTALLER_MODE_RENDER--}</option>
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_WARN_NO_PASSWORD--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_WARN_NO_PASSWORD--}</td>
<td align="left">
<select name="warn_no_pass" size="1" class="form_select">
<option value="Y">{--YES--}</option>
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_CONFIG_WRITE_FOOTER--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_CONFIG_WRITE_FOOTER--}</td>
<td align="left">
<select name="wfooter" size="1" class="form_select">
<option value="Y">{--YES--}</option>
</td>
</tr>
<tr>
- <td align="right" class="install_right">{--INSTALLER_ENABLE_BACKLINK--}:</td>
+ <td align="right" class="install_right">{--INSTALLER_ENABLE_BACKLINK--}</td>
<td align="left">
<select name="blink" size="1" class="form_select">
<option value="Y">{--YES--}</option>
--- /dev/null
+<div align="center">
+
+<div class="install_title">
+ {--INSTALLER_BASE_DATA_TITLE--}
+</div>
+
+<div class="para">
+ {--INSTALLER_BASE_DATA_DESCRIPTION--}
+</div>
+
+<form>
+<fieldset id="base_url_path">
+ <legend>{--INSTALLER_BASE_DATA_LEGEND_BASE_URL_PATH--}</legend>
+ <div class="table_row">
+ <label class="install_label" for="base_path">{--INSTALLER_LABEL_BASE_PATH--}</label>
+ <input type="text" class="form_field" id="base_path" name="base_path" size="50" value="{%session=base_path%}" onchange="return allowSaveChanges('base_path')" />
+
+ <div class="field_note">
+ {--INSTALLER_BASE_PATH_NOTICE--}
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="base_url">{--INSTALLER_LABEL_BASE_URL--}</label>
+ <input type="text" class="form_field" id="base_url" name="base_url" size="50" value="{%session=base_url%}" onchange="return allowSaveChanges('base_url')" />
+
+ <div class="field_note">
+ {--INSTALLER_BASE_URL_NOTICE--}
+ </div>
+ </div>
+</fieldset>
+
+<fieldset id="title_slogan">
+ <legend>{--INSTALLER_BASE_DATA_LEGEND_TITLE_SLOGAN--}</legend>
+ <div class="table_row">
+ <label class="install_label" for="main_title">{--INSTALLER_LABEL_MAIN_TITLE--}</label>
+ <input type="text" class="form_field" id="main_title" name="main_title" size="50" maxlength="255" value="{%session=main_title%}" onchange="return allowSaveChanges('main_title')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="slogan">{--INSTALLER_LABEL_SLOGAN--}</label>
+ <input type="text" class="form_field" id="slogan" name="slogan" size="50" maxlength="255" value="{%session=slogan%}" onchange="return allowSaveChanges('slogan')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="webmaster">{--INSTALLER_LABEL_WEBMASTER--}</label>
+ <input type="text" class="form_field" id="webmaster" name="webmaster" size="30" maxlength="255" value="{%session=webmaster%}" onchange="return allowSaveChanges('webmaster')" />
+ </div>
+</fieldset>
+</form>
+
+</div>
--- /dev/null
+<div align="center">
+<div class="install_title">
+ {--INSTALLER_DATABASE_CONFIG_TITLE--}
+</div>
+
+<div class="para">
+ {--INSTALLER_DATABASE_CONFIG_DESCRIPTION--}
+</div>
+
+<form>
+<fieldset id="host_dbase_prefix_type">
+ <legend>{--INSTALLER_DATABASE_LEGEND_HOST_DBASE_PREFIX_TYPE--}</legend>
+ <div class="table_row">
+ <label class="install_label" for="mysql_host">{--INSTALLER_MYSQL_HOST--}</label>
+ <input type="text" class="form_field" id="mysql_host" name="mysql_host" size="25" value="{%session=mysql_host%}" onchange="return allowSaveChanges('mysql_host')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="mysql_dbase">{--INSTALLER_MYSQL_DBASE--}</label>
+ <input type="text" class="form_field" id="mysql_dbase" name="mysql_dbase" size="25" value="{%session=mysql_dbase%}" onchange="return allowSaveChanges('mysql_dbase')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="mysql_prefix">{--INSTALLER_MYSQL_PREFIX--}</label>
+ <input type="text" class="form_field" id="mysql_prefix" name="mysql_prefix" size="25" value="{%session=mysql_prefix%}" onchange="return allowSaveChanges('mysql_prefix')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="mysql_type">{--INSTALLER_MYSQL_TABLE_TYPE--}</label>
+ <select id="mysql_type" name="mysql_type" size="1" class="form_select" onchange="return allowSaveChanges('mysql_type')">
+ {%pipe,generateInstallerDatabaseTypeOptions%}
+ </select>
+
+ <div class="field_note">
+ {--INSTALLER_MYSQL_TABLE_TYPE_NOTICE--}
+ </div>
+ </div>
+</fieldset>
+
+<fieldset id="login_password">
+ <legend>{--INSTALLER_DATABASE_LEGEND_LOGIN_PASSWORD--}</legend>
+ <div class="table_row">
+ <label class="install_label" for="mysql_login">{--INSTALLER_MYSQL_LOGIN--}</label>
+ <input type="text" class="form_field" id="mysql_login" name="mysql_login" size="25" value="{%session=mysql_login%}" onchange="return allowSaveChanges('mysql_login')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="mysql_password1">{--INSTALLER_MYSQL_PASSWORD1--}</label>
+ <input type="password" class="form_field" id="mysql_password1" name="mysql_password1" size="25" value="{%session=mysql_password1%}" onchange="return allowSaveChanges('mysql_password1')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="mysql_password2">{--INSTALLER_MYSQL_PASSWORD2--}</label>
+ <input type="password" class="form_field" id="mysql_password2" name="mysql_password2" size="25" value="{%session=mysql_password2%}" onchange="return allowSaveChanges('mysql_password2')" />
+ </div>
+</fieldset>
+</form>
+
+</div>
--- /dev/null
+<div align="center">
+<div class="install_title">
+ {--INSTALLER_PAGE_INIT_TITLE--}
+</div>
+
+<div class="para">
+ Einen Augenblick, die Installation wird vorbereitet ...
+</div>
+
+</div>
--- /dev/null
+<div align="center">
+<div class="install_title">
+ {--INSTALLER_OTHER_CONFIG_TITLE--}
+</div>
+
+<div class="para">
+ {--INSTALLER_OTHER_CONFIG_DESCRIPTION--}
+</div>
+
+<form>
+<fieldset id="login_password">
+ <legend>{--INSTALLER_OTHER_CONFIG_LEGEND_ET_CETERA--}</legend>
+ <div class="table_row">
+ <label class="install_label" for="output_mode">{--INSTALLER_OUTPUT_MODE--}</label>
+ <select id="output_mode" name="output_mode" size="1" class="form_select" onchange="return allowSaveChanges('output_mode')">
+ {%session-pipe,generateInstallerOutputModeOptions=output_mode%}
+ </select>
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="warn_no_pass">{--INSTALLER_WARN_NO_PASSWORD--}</label>
+ <select id="warn_no_pass" name="warn_no_pass" size="1" class="form_select" onchange="return allowSaveChanges('warn_no_pass')">
+ {%session-pipe,generateYesNoOptions=warn_no_pass%}
+ </select>
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="write_footer">{--INSTALLER_CONFIG_WRITE_FOOTER--}</label>
+ <select id="write_footer" name="write_footer" size="1" class="form_select" onchange="return allowSaveChanges('write_footer')">
+ {%session-pipe,generateYesNoOptions=write_footer%}
+ </select>
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="enable_backlink">{--INSTALLER_ENABLE_BACKLINK--}</label>
+ <select id="enable_backlink" name="enable_backlink" size="1" class="form_select" onchange="return allowSaveChanges('enable_backlink')">
+ {%session-pipe,generateYesNoOptions=enable_backlink%}
+ </select>
+
+ <div class="field_note">
+ {--INSTALLER_ENABLE_BACKLINK_NOTICE--}
+ </div>
+ </div>
+</fieldset>
+</form>
+
+</div>
--- /dev/null
+<div align="center">
+<div class="install_title">
+ {--INSTALLER_SMTP_CONFIG_TITLE--}
+</div>
+
+<div class="para">
+ {--INSTALLER_SMTP_CONFIG_DESCRIPTION--}
+</div>
+
+<form>
+<fieldset id="login_password">
+ <legend>{--INSTALLER_SMTP_LEGEND_OPTIONAL_CONFIG--}</legend>
+ <div class="table_row">
+ <label class="install_label" for="smtp_host">{--INSTALLER_SMTP_HOST--}</label>
+ <input type="text" class="form_field" id="smtp_host" name="smtp_host" size="25" value="{%session=smtp_host%}" onchange="return allowSaveChanges('smtp_host')" />
+
+ <div class="field_note">
+ {--INSTALLER_SMTP_HOST_NOTICE--}
+ </div>
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="smtp_user">{--INSTALLER_SMTP_USER--}</label>
+ <input type="text" class="form_field" id="smtp_user" name="smtp_user" size="20" value="{%session=smtp_user%}" onchange="return allowSaveChanges('smtp_user')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="smtp_password1">{--INSTALLER_SMTP_PASSWORD1--}</label>
+ <input type="password" class="form_field" id="smtp_password1" name="smtp_password1" size="15" value="{%session=smtp_password1%}" onchange="return allowSaveChanges('smtp_password1')" />
+ </div>
+
+ <div class="table_row">
+ <label class="install_label" for="smtp_password2">{--INSTALLER_SMTP_PASSWORD2--}</label>
+ <input type="password" class="form_field" id="smtp_password2" name="smtp_password2" size="15" value="{%session=smtp_password2%}" onchange="return allowSaveChanges('smtp_password2')" />
+ </div>
+</fieldset>
+</form>
+
+</div>
--- /dev/null
+<div align="center">
+<div class="install_title">
+ {--INSTALLER_PAGE_WELCOME_TITLE--}
+</div>
+
+<div class="para">
+ Dieses Script wird Ihnen dabei helfen, den {?mt_word?} schrittweise zu
+ installieren. Dabei werden z.B. der absolute Serverpfad, URL, Ihre
+ Email-Adresse (Webmaster) und Daten zur Datenbank abgefragt, um dann
+ testweise eine Verbindung aufzubauen. Anschließend können Sie
+ optional Ihre SMTP-Zugangsdaten zu Ihrer Email-Adresse eingeben, da nicht
+ auf jedem Server der PHP-Befehl <em>mail()</em> aktiviert ist.
+</div>
+
+<div class="para">
+ Sie werden während der Installation Schritt-Für-Schritt durch die
+ einzelnen Installationsschritte gebracht. Sie brauchen dazu weder
+ Programmiererkenntnisse noch ein abgschlossenes Informatikstudium. Bitte
+ halten Sie die MySQL-und eventuelle SMTP-Zugangsdaten von Ihrem Hoster
+ bereit.
+</div>
+
+<div class="para">
+ Nach Abschluss der Installation sollten Sie als nächstes das erste
+ Administrator-Login einrichten, da sonst jeder beliebiger Anderer dies tun
+ kann. Anschliessend können Sie sich zum ersten Mal in den Adminbereich
+ einloggen und weitere Einstellungen verfeinern, sowie Erweiterungen
+ installieren.
+</div>
+
+<div class="para">
+ {?TITLE?} empfiehlt Ihnen, dann alle Installationsdateien von Ihrem Server
+ aus Sicherheitsgründen zu löschen. Sie sollten auch nur auf das
+ Verzeichnis inc/cache/ (und alle Unterordner) die CHMOD-Rechte 0777 geben,
+ nicht jedoch auf die restlichen Verzeichnisse (wie z.B. inc/, templates/,
+ theme/ usw.), da sonst zu viele Dateien beschreibbar sind, was nicht
+ nötig ist und ein Sicherheitsrisko darstellt.
+</div>
+</div>
--- /dev/null
+<div class="install_header">
+ <strong>: : : {--INSTALLER_MAIN_TITLE--} : : :</strong>
+</div>
+
+<div id="install_error" class="ajax_error">
+ <div class="ajax_error_title">
+ <strong>{--INSTALLER_AJAX_ERROR_TITLE--}</strong>
+ </div>
+ <div class="ajax_error_close">
+ <strong id="install_error_close" style="padding-left:1.5px;cursor:pointer">X</strong>
+ </div>
+ <div style="clear:both"></div>
+ <div class="ajax_error_content" id="install_error_content">
+ <!-- Content will be inserted here by AJAX //-->
+ </div>
+</div>
+
+<div id="install_warning" class="ajax_warning">
+ <div class="ajax_warning_title">
+ <strong>{--INSTALLER_AJAX_TEST_TITLE--}</strong>
+ </div>
+ <div class="ajax_warning_close">
+ <strong id="install_warning_close" style="padding-left:1.5px;cursor:pointer">X</strong>
+ </div>
+ <div style="clear:both"></div>
+ <div class="ajax_warning_content" id="install_warning_content">
+ <!-- Content will be inserted here by AJAX //-->
+ </div>
+</div>
+
+<div align="center" style="margin-bottom:10px">
+<div class="install_content">
+ <div class="install_title">
+ {--INSTALLER_SELECTOR_TITLE--}
+ </div>
+
+ <div class="para">
+ Sie können jetzt zwischen zwei Installationsvarrianten
+ entscheiden. Die erste ist eine moderne, interaktive und auf dem
+ AJAX-Framework <a href="http://jquery.com" rel="external"
+ target="_blank">jQuery</a> basierend. Die zweite ist mit jedem Browser
+ kompatibel und funktioniert vollständig ohne JavaScript.
+ </div>
+
+ <div class="para">
+ Ersteres können Sie nur verwenden, wenn auch Ihr Browser aktuelles
+ JavaScript versteht, letzteres funktioniert auf jedem Browser. Ihr
+ Browser wird nun auf AJAX-Kompatiblität getestet. Sollte ein
+ kleines Fenster nach 3 Sekunden erscheinen, funktioniert jquery bei
+ Ihnen. Anderfalls sollten Sie die Standardversion auswählen.
+ </div>
+
+ <div align="center">
+ <div style="float:left; width:38%">
+ <form action="{%url=install.php%}" method="get">
+ <input type="hidden" name="installer" value="ajax" />
+ <input type="submit" id="ajax_installer" class="form_submit big disabled" disabled="disabled" value="Interaktive Version" />
+ </form>
+ </div>
+ <div style="float:left; width:23%; text-align:center">
+ <span id="counter">3</span> Sekunde(n)
+ </div>
+ <div style="float:left; width:38%">
+ <form action="{%url=install.php%}" method="get">
+ <input type="hidden" name="installer" value="plain" />
+ <input type="submit" id="plain_installer" class="form_submit big" value="Kompatiblitätsmodus" />
+ </form>
+ </div>
+ <div style="clear:both"></div>
+ </div>
+</div>
+</div>
+
+<script type="text/javascript" src="{%url=js/ajax-loader.js%}"></script>
+<script type="text/javascript">
+<!--
+// These scripts shall be loaded
+var scripts = new Array();
+scripts[0] = '{%url,js=js/ajax-common.js%}';
+scripts[1] = '{%url,js=js/ajax-test.js%}';
+scripts[2] = '{%url,js=js/jquery-ui.custom.js%}';
+
+// Do this only when all loaders are finished
+if (loadScripts(scripts) == true) {
+ // Wait for loadScripts() finishing loading all scripts
+ $().ready(function () {
+ // Warning window
+ $("#install_warning").draggable({opacity: 0.85});
+
+ // Error window
+ $("#install_error").draggable({opacity: 0.85});
+ });
+} // END - if
+
+//-->
+</script>
--- /dev/null
+<div class="para">
+ Sie haben die farblich markierten Formularfelder noch nicht abgespeichert.
+ Wenn Sie ohne zu speichern fortfahren, gehen diese verloren und es sind
+ weiter die Standard-Einstellungen verwendet.
+</div>
+
+<div class="para">
+ Hier sind alle geänderten Felder aufgelistet:
+ $content[out]
+</div>
+
+<div>
+ <input type="button" class="form_submit" value="{--NEXT_SAVE_CHANGES_SUBMIT--}" onclick="return doSaveChangesPage('install', 'install_content', 'next')" />
+</div>
--- /dev/null
+<div class="para">
+ Sie haben die farblich markierten Formularfelder noch nicht abgespeichert.
+ Wenn Sie ohne zu speichern fortfahren, gehen diese verloren und es sind
+ weiter die Standard-Einstellungen verwendet.
+</div>
+
+<div class="para">
+ Hier sind alle geänderten Felder aufgelistet:
+ $content[out]
+</div>
+
+<div>
+ <input type="button" class="form_submit" value="{--PREVIOUS_SAVE_CHANGES_SUBMIT--}" onclick="return doSaveChangesPage('install', 'install_content', 'previous')" />
+</div>
--- /dev/null
+<div class="para">
+ Sie haben die farblich markierten Formularfelder noch nicht abgespeichert.
+ Wenn Sie ohne zu speichern fortfahren, gehen diese verloren und es sind
+ weiter die Standard-Einstellungen verwendet.
+</div>
+
+<div class="para">
+ Hier sind alle geänderten Felder aufgelistet:
+ $content[out]
+</div>
+
+<div>
+ <input type="button" class="form_submit" value="{%message,TAB_SAVE_CHANGES_SUBMIT=$content[message]%}" onclick="return doSaveChangesContinue('install', 'install_content', '$content[button]')" />
+</div>
-<div class="install_welcome">
- Willkommen zum Installationsscript vom Mailer-Projekt, dem
- <strong>freien</strong> {?mt_word?}-Script!
+<div align="center" style="margin-bottom:10px">
+<div class="install_content">
+<div class="install_title">
+ {--INSTALLER_PAGE_WELCOME_TITLE--}
</div>
<div class="para">
- Dieses Script wird Ihnen dabei helfen, den {?mt_word?} zu installieren, die
- Datenbank einzurichten und den {?mt_word?} vorzukonfigurieren.
+ Dieses Script wird Ihnen dabei helfen, den {?mt_word?} schrittweise zu
+ installieren. Dabei werden z.B. der absolute Serverpfad, URL, Ihre
+ Email-Adresse (Webmaster) und Daten zur Datenbank abgefragt, um dann
+ testweise eine Verbindung aufzubauen. Anschließend können Sie
+ optional Ihre SMTP-Zugangsdaten zu Ihrer Email-Adresse eingeben, da nicht
+ auf jedem Server der PHP-Befehl <em>mail()</em> aktiviert ist.
</div>
<div class="para">
Sie werden während der Installation Schritt-Für-Schritt durch die
einzelnen Installationsschritte gebracht. Sie brauchen dazu weder
Programmiererkenntnisse noch ein abgschlossenes Informatikstudium. Bitte
- halten Sie die MySQL-Daten von Ihrem Hoster bereit.
+ halten Sie die MySQL-und eventuelle SMTP-Zugangsdaten von Ihrem Hoster
+ bereit.
</div>
<div class="para">
- Nach erfolgreicher Installation sollten Sie als nächstes das erste
- Administrator-Login einrichten. Anschliessend können Sie sich einloggen
- und weitere Einstellungen verfeinern.
+ Nach Abschluss der Installation sollten Sie als nächstes das erste
+ Administrator-Login einrichten, da sonst jeder beliebiger Anderer dies tun
+ kann. Anschliessend können Sie sich zum ersten Mal in den Adminbereich
+ einloggen und weitere Einstellungen verfeinern, sowie Erweiterungen
+ installieren.
</div>
<div class="para">
- Das Entwickler-Team empfiehlt Ihnen, dann alle Installationsdateien von Ihrem
- Server zu löschen.
+ {?TITLE?} empfiehlt Ihnen, dann alle Installationsdateien von Ihrem Server
+ aus Sicherheitsgründen zu löschen. Sie sollten auch nur auf das
+ Verzeichnis inc/cache/ (und alle Unterordner) die CHMOD-Rechte 0777 geben,
+ nicht jedoch auf die restlichen Verzeichnisse (wie z.B. inc/, templates/,
+ theme/ usw.), da sonst zu viele Dateien beschreibbar sind, was nicht
+ nötig ist und ein Sicherheitsrisko darstellt.
</div>
<div class="install_footer">
<form accept-charset="UTF-8" action="install.php" method="get" target="_self">
- <input type="hidden" name="page" value="1" />
+ <input type="hidden" name="install_page" value="1" />
<input type="submit" class="form_submit" value="{--INSTALLER_NEXT_PAGE--}" />
</form>
</div>
+</div>
--- /dev/null
+/**
+ * JavaScript for admin AJAX stuff
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+// Make both windows drag'n'drop-able
+$().ready(function() {
+ // Fade default content in
+ window.setTimeout("requestAjaxContent('admin', 'admin_content', '$content[admin_page]', false)", 250);
+
+ // Set default tab id
+ defaultTabId = '$content[admin_page]';
+
+ // Set 'save-changes' button id
+ saveChangesId = 'save_changes';
+
+ //-----------------------------------------
+ // Tab navigation
+ //-----------------------------------------
+ $('a').each(function (i) {
+ $(this).on('click', {index:i}, function (event) {
+ // Do we have a valid index?
+ if (indexTranslation[event.data.index] != null) {
+ // Prevent default action
+ event.preventDefault();
+
+ // Valid found, so initialize the POST request
+ requestAjaxContent('admin', 'admin_content', indexTranslation[event.data.index], false);
+ } // END - if
+ });
+ });
+
+ //-----------------------------------------
+ // Close buttons
+ //-----------------------------------------
+ $('#admin_error_close').click(function () {
+ // Close the window
+ closeErrorWindow('admin');
+ });
+
+ $('#admin_warning_close').click(function () {
+ // Close the window
+ closeWarningWindow('admin');
+ });
+
+ //-----------------------------------------
+ // Save changes
+ //-----------------------------------------
+ $('#' + saveChangesId).click(function () {
+ // Save changes
+ saveChanges('admin');
+ });
+
+ //-----------------------------------------
+ // Drag'N'Drop
+ //-----------------------------------------
+ $('#admin_warning').draggable({
+ opacity: 0.85
+ });
+
+ $('#admin_error').draggable({
+ opacity: 0.85
+ });
+});
- onclick="return changeMenuFoldState('$content[menu_mode]', '$content[main_action]', '$content[action]', '$content[what]')"
+<!-- @DEPRECATED //-->
+/**
+ * JavaScript for if cookies are disabled
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+// Loader for URL with COOKIES_DISABLED coded
function Loader() {
document.location.href = '{%url,js=modules.php?module=index&what=login%}&code={%code=COOKIES_DISABLED%}';
}
+// Load after about 2 seconds
window.setTimeout("Loader()", 2000);
--- /dev/null
+/**
+ * JavaScript for installation AJAX stuff
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+// Make both windows drag'n'drop-able
+$().ready(function() {
+ // Fade default content in
+ window.setTimeout("requestAjaxContent('install', 'install_content', '$content[install_page]', true)", 250);
+
+ // Set default tab id
+ defaultTabId = '$content[install_page]';
+
+ // Set 'save-changes' button id
+ saveChangesId = 'save_changes';
+
+ //-----------------------------------------
+ // Tab navigation
+ //-----------------------------------------
+ $('a').each(function (i) {
+ $(this).on('click', {index:i}, function (event) {
+ // Do we have a valid index?
+ if (indexTranslation[event.data.index] != null) {
+ // Prevent default action
+ event.preventDefault();
+
+ // Valid found, so initialize the POST request
+ requestAjaxContent('install', 'install_content', indexTranslation[event.data.index], true);
+ } // END - if
+ });
+ });
+
+ //-----------------------------------------
+ // Close buttons
+ //-----------------------------------------
+ $('#install_error_close').click(function () {
+ // Close the window
+ closeErrorWindow('install');
+ });
+
+ $('#install_warning_close').click(function () {
+ // Close the window
+ closeWarningWindow('install');
+ });
+
+ //-----------------------------------------
+ // Footer navigation
+ //-----------------------------------------
+ $('#next_page').click(function () {
+ // 'next' button has been clicked
+ doFooterPage('install', 'install_content', 'next');
+ });
+
+ $('#previous_page').click(function () {
+ // 'previous' button has been clicked
+ doFooterPage('install', 'install_content', 'previous');
+ });
+
+ $('#installer_switch').click(function () {
+ // Switch installer (to plain)
+ switchInstaller('plain');
+ });
+
+ //-----------------------------------------
+ // Save changes
+ //-----------------------------------------
+ $('#' + saveChangesId).click(function () {
+ // Save changes
+ saveChanges('install');
+ });
+
+ //-----------------------------------------
+ // Drag'N'Drop
+ //-----------------------------------------
+ $('#install_warning').draggable({
+ opacity: 0.85
+ });
+
+ $('#install_error').draggable({
+ opacity: 0.85
+ });
+});
+/**
+ * JavaScript for ext-order
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
var counter = document.getElementById('counter');
var form = document.getElementById('form');
var ok = document.getElementById('ok');
-var currCounter = "{%pipe,SURFBAR_GET_RELOAD_TIME=$content[url_id]%}";
-var maxCounter = "{%pipe,SURFBAR_GET_RELOAD_TIME=$content[url_id]%}";
-var counter = document.getElementById("surfbar_counter");
-var points = document.getElementById("surfbar_points");
-var reload = document.getElementById("surfbar_reload");
-var max = document.getElementById("surfbar_max");
+/**
+ * JavaScript for ext-surfbar - top frame
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+var currCounter = '{%pipe,gerSurfbarReloadTime=$content[url_id]%}';
+var maxCounter = '{%pipe,gerSurfbarReloadTime=$content[url_id]%}';
+var counter = document.getElementById('surfbar_counter');
+var points = document.getElementById('surfbar_points');
+var reload = document.getElementById('surfbar_reload');
+var max = document.getElementById('surfbar_max');
var countDown = null;
function startStopCounter () {
if (countDown == null) {
// Start counter
- document.getElementById("start").innerHTML = "{--MEMBER_SURFBAR_ACTION_PAUSE_SUBMIT--}";
- countDown = window.setInterval("startCounter()", 1000);
+ document.getElementById('start').innerHTML = '{--MEMBER_SURFBAR_ACTION_PAUSE_SUBMIT--}';
+ countDown = window.setInterval('startCounter()', 1000);
} else {
- document.getElementById("start").innerHTML = "{--MEMBER_SURFBAR_ACTION_UNPAUSE_SUBMIT--}";
+ document.getElementById('start').innerHTML = '{--MEMBER_SURFBAR_ACTION_UNPAUSE_SUBMIT--}';
window.clearInterval(countDown);
countDown = null;
}
}
function init () {
- countDown = window.setInterval("startCounter()", 1000);
- window.setTimeout("initCounter()", 500);
+ countDown = window.setInterval('startCounter()', 1000);
+ window.setTimeout('initCounter()', 500);
}
function confirm () {
if (parent.surfbar_url != null) {
// Is in right frameset
- parent.surfbar_url.location.href = "{%url=surfbar.php?id=$content[url_id]&check=$content[check]&salt=$content[salt]%}";
+ parent.surfbar_url.location.href = '{%url=surfbar.php?id=$content[url_id]&check=$content[check]&salt=$content[salt]%}';
} else {
// Called frame=top directly
- window.location.href = "{%url=surfbar.php%}";
+ window.location.href = '{%url=surfbar.php%}';
}
}
parent.surfbar_stats.location.reload();
} else {
// Called frame=top directly
- window.location.href = "{%url=surfbar.php%}";
+ window.location.href = '{%url=surfbar.php%}';
}
this.location.reload();
}
function initCounter () {
if (parent.surfbar_url != null) {
// Is in right frameset
- parent.surfbar_url.location.href = '{%pipe,SURFBAR_GET_URL=$content[url_id]%}';
+ parent.surfbar_url.location.href = '{%pipe,gerSurfbarUrl=$content[url_id]%}';
} else {
// Called frame=top directly
- window.location.href = "{%url=surfbar.php%}";
+ window.location.href = '{%url=surfbar.php%}';
}
- counter.innerHTML = "{%pipe,SURFBAR_GET_RELOAD_TIME=$content[url_id]%}";
- points.innerHTML = "{%pipe,SURFBAR_GET_REWARD,translateComma=$content[url_id]%}";
- reload.innerHTML = "{%pipe,SURFBAR_GET_USER_LOCKS%}";
- max.innerHTML = "{%pipe,SURFBAR_GET_TOTAL_URLS%}";
+ counter.innerHTML = '{%pipe,gerSurfbarReloadTime=$content[url_id]%}';
+ points.innerHTML = '{%pipe,gerSurfbarReward,translateComma=$content[url_id]%}';
+ reload.innerHTML = '{%pipe,getSurfbarUserLocks%}';
+ max.innerHTML = '{%pipe,getSurfbarTotalUrls%}';
}
function startCounter () {
if (currCounter == 0) {
clearInterval(countDown);
confirm();
- window.setTimeout("reloadSurfbar()", 500);
+ window.setTimeout('reloadSurfbar()', 500);
}
}
+/**
+ * JavaScript for ext-surfbar - member booking script
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
var limit = document.getElementById('limit');
var span = document.getElementById('span_limit');
var limited_no = document.getElementById('limited_no');
+/**
+ * JavaScript for ext-surfbar - member editing page
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
var limit = document.getElementById('limit');
var span = document.getElementById('span_limit');
var old_limit = {%pipe,bigintval=$content[views_max]%};
+/**
+ * JavaScript for ext-surfbar - Stopped
+ * --------------------------------------------------------------------
+ * $Revision:: $
+ * $Date:: $
+ * $Tag:: 0.2.1-FINAL $
+ * $Author:: $
+ * --------------------------------------------------------------------
+ * Copyright (c) 2003 - 2009 by Roland Haeder
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team
+ * For more information visit: http://mxchange.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
var interval = null;
-var countDown = "{?surfbar_restart_time?}";
-var timer = document.getElementById("surfbar_counter");
-var buttonDiv = document.getElementById("surfbar_button");
+var countDown = '{?surfbar_restart_time?}';
+var timer = document.getElementById('surfbar_counter');
+var buttonDiv = document.getElementById('surfbar_button');
function restart () {
this.location.reload();
}
function showButton () {
- buttonDiv.innerHTML = "<form accept-charset='UTF-8' action='{%url=surfbar.php%}' target='_self' method='GET'><input type='hidden' name='frame' value='top' /><input type='submit' id='form_submit' value='Surfbar erneut starten' /></form>";
+ buttonDiv.innerHTML = '<form accept-charset=\'UTF-8\' action=\'{%url=surfbar.php%}\' target=\'_self\' method=\'GET\'><input type=\'hidden\' name=\'frame\' value=\'top\' /><input type=\'submit\' id=\'form_submit\' value=\'Surfbar erneut starten\' /></form>';
}
function counter () {
}
function init () {
- interval = window.setInterval("counter()", 1000);
- timer.innerHTML = "{?surfbar_restart_time?}";
+ interval = window.setInterval('counter()', 1000);
+ timer.innerHTML = '{?surfbar_restart_time?}';
}
-window.setTimeout("init()", 500);
+window.setTimeout('init()', 500);
timer--;
document.confirm.counter.value = timer;
if (timer == 0) {
- document.location.href = '{%url,js=mailid_top.php?userid=$content[userid]&$content[type]=$content[data]&do=confirm&code=$content[rand]%}';
clearInterval(Counter);
+ document.location.href = '{%url,js=mailid_top.php?userid=$content[userid]&$content[type]=$content[data]&do=confirm&code=$content[rand]%}';
}
}
//-->
<div align="center">
<table border="0" cellspacing="0" cellpadding="0" width="430" class="mediadata dashed">
<tr>
- <td class="media_header bottom" colspan="2" align="center">{--MEDIA_DATA_GENERAL--}</td>
+ <td class="media_header bottom" colspan="2" align="center">
+ {--MEDIA_DATA_GENERAL--}
+ </td>
</tr>
<tr>
<td class="bottom media_left" align="right">{--USER_MT_START--}:</td>
</tr>
<tr>
<td class="bottom media_left" align="right">{--USERS_CONFIRMED--}:</td>
- <td class="bottom media_right">{%pipe,translateComma=$content[user_confirmed]%}</td>
+ <td class="bottom media_right">{%pipe,getTotalConfirmedUser,translateComma%}</td>
</tr>
<tr>
<td class="bottom media_left" align="right">{--USERS_UNCONFIRMED--}:</td>
- <td class="bottom media_right">{%pipe,translateComma=$content[user_unconfirmed]%}</td>
+ <td class="bottom media_right">{%pipe,getTotalUnconfirmedUser,translateComma%}</td>
</tr>
<tr>
<td class="bottom media_left" align="right">{--USERS_LOCKED--}:</td>
- <td class="bottom media_right">{%pipe,translateComma=$content[user_locked]%}</td>
+ <td class="bottom media_right">{%pipe,getTotalLockedUser,translateComma%}</td>
</tr>
<tr>
<td class="bottom media_left" align="right">{--USERS_MAX_MAILS--}:</td>
</tr>
$content[out_user]
<tr>
- <td class="media_header bottom" colspan="2" align="center">{--MEDIA_DATA_MAIL--}</td>
+ <td class="media_header bottom" colspan="2" align="center">
+ {--MEDIA_DATA_MAIL--}
+ </td>
</tr>
<tr>
<td class="bottom media_left" align="right">{--USERS_STATS--}:</td>
<td class="bottom media_right">{%pipe,translateComma=$content[user_stats]%}</td>
</tr>
<tr>
- <td class="bottom media_left" align="right">{--USERS_MAX_PER_DAY--}:</td>
+ <td class="bottom media_left" align="right">{--USERS_MAX_MAILS_PER_DAY--}:</td>
<td class="bottom media_right">{%pipe,translateComma=$content[max]%}</td>
</tr>
<tr>
<div class="table_header bottom">
<strong>{--MEMBER_BEG_LINK_TITLE--}</strong>
</div>
- <div class="para">
+ <div class="table_row para">
{--MEMBER_BEG_YOUR_LINK--}<br />
<strong><a href="{?URL?}/beg.php?userid=$content[userid]">{?URL?}/beg.php?userid=$content[userid]</a></strong>
</div>
- <div class="para">
+ <div class="table_row para">
{--MEMBER_BEG_CLICKS_TOTAL--}
<strong>{%user,beg_clicks,translateComma%}</strong>
</div>
- <div class="para">
+ <div class="table_row para">
{--MEMBER_BEG_POINTS--}
</div>
- <div class="para">
+ <div class="table_row para bottom">
{%message,MEMBER_BEG_TIMEOUT%}
</div>
- <div class="table_footer top">
+ <div class="table_footer">
<strong>{--MEMBER_BEG_HAVE_FUN--}</strong>
</div>
</div>
-<form accept-charset="UTF-8" id="book" action="{%url=modules.php?module=login&what=book_surfbar%}" method="post" onsubmit="return submitForm()" onreset="return resetForm()">
<div align="center">
+<form accept-charset="UTF-8" id="book" action="{%url=modules.php?module=login&what=book_surfbar%}" method="post" onsubmit="return submitForm()" onreset="return resetForm()">
<div class="table3 dashed" style="margin-top:10px">
<div class="table_header bottom" style="padding-top:5px;padding-bottom:5px">
<strong>URL in Surfbar buchen - Dynamisch:</strong>
<div class="member_input" style="padding-top:5px;padding-bottom:5px">
<div class="para">
Jeder Seiten-Aufruf durch andere Mitglieder kostet Ihnen mindestens
- <strong>{%pipe,SURFBAR_DETERMINE_COSTS,translateComma=true%} {?POINTS?}</strong>.
+ <strong>{%pipe,determineSurfbarCosts,translateComma=true%} {?POINTS?}</strong>.
Surfen Sie mit der Surfbar erhalten Sie mindestens
- <strong>{%pipe,SURFBAR_DETERMINE_REWARD,translateComma=true%} {?POINTS?}</strong>
+ <strong>{%pipe,determineSurfbarReward,translateComma=true%} {?POINTS?}</strong>
auf Ihr Konto gutgeschrieben.
</div>
<div class="para">
Sie haben bereits
- <strong>{%pipe,SURFBAR_GET_TOTAL_USER_URLS,translateComma%}</strong>
+ <strong>{%pipe,getSurfbarTotalUserUrls,translateComma%}</strong>
von maximal
<strong>{%config,translateComma=surfbar_max_order%}</strong>
erlaubten URLs gebucht.
<div class="table_header top" style="padding-top:5px;padding-bottom:5px">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--MEMBER_SURFBAR_ADD_URL--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--MEMBER_SURFBAR_ADD_URL_SUBMIT--}" />
</div>
</div>
<div class="member_input" style="padding-top:5px;padding-bottom:5px">
Jeder Seiten-Aufruf durch andere Mitglieder kostet Ihnen <span
- class="surfbar_points">{%pipe,SURFBAR_DETERMINE_COSTS,translateComma=true%}{?POINTS?}</span>. Surfen Sie mit
- der Surfbar erhalten Sie <span class="surfbar_points">{%pipe,SURFBAR_DETERMINE_REWARD,translateComma=true%}
+ class="surfbar_points">{%pipe,determineSurfbarCosts,translateComma=true%}{?POINTS?}</span>. Surfen Sie mit
+ der Surfbar erhalten Sie <span class="surfbar_points">{%pipe,determineSurfbarReward,translateComma=true%}
{?POINTS?}</span> auf Ihr Konto gutgeschrieben.<br />
<br />
- Sie haben bereits <strong>{%pipe,SURFBAR_GET_TOTAL_USER_URLS,translateComma%}</strong> von maximal
+ Sie haben bereits <strong>{%pipe,getSurfbarTotalUserUrls,translateComma%}</strong> von maximal
<strong>{%config,translateComma=surfbar_max_order%}</strong> erlaubten URLs gebucht.
</div>
<div class="table_header top" style="padding-top:5px;padding-bottom:5px">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--MEMBER_SURFBAR_ADD_URL--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--MEMBER_SURFBAR_ADD_URL_SUBMIT--}" />
</div>
</div>
<div align="center">
-<form accept-charset="UTF-8" id="form" action="{%url=modules.php?module=login&what=cash_coupon%}" method="post">
+<form accept-charset="UTF-8" id="cash_coupon" action="{%url=modules.php?module=login&what=cash_coupon%}" method="post">
<div class="table dashed">
<div class="table_header bottom">
<strong>{--MEMBER_CASH_COUPON_TITLE--}</strong>
</div>
</form>
-<form accept-charset="UTF-8" id="form" action="{%url=modules.php?module=login&what=cash_coupon%}" method="post">
+<form accept-charset="UTF-8" id="change_coupon_status" action="{%url=modules.php?module=login&what=cash_coupon%}" method="post">
<div class="table dashed">
<div class="table_header bottom">
<strong>{--MEMBER_COUPON_CHANGE_STATUS_TITLE--}</strong>
-<tr>
- <td class="{%template,ColorSwitch%} bottom" align="right">$content[cat]</td>
- <td class="{%template,ColorSwitch%} bottom" align="center">
- <input type="radio" class="form_field" name="cat[$content[id]]" value="Y"$content[jy] />
- {--YES--}
- <input type="radio" class="form_field" name="cat[$content[id]]" value="N"$content[jn] />
- {--NO--}
- </td>
-</tr>
+<!-- @DEPRECATED //-->
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=login&what=categories%}" method="post">
+<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+<tr>
+ <td align="center" class="header_column bottom" width="408"><strong>{--CATEGORY_NAME--}</strong></td>
+ <td align="center" class="header_column bottom" width="180"><strong>{--SELECT_CAT--}</strong></td>
+</tr>
+$content
+<tr>
+ <td colspan="2" align="center" class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--SUBMIT_CHANGES--}" />
+ </td>
+</tr>
+</table>
+</form>
+</div>
-<tr>
- <td colspan="2" align="center" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--SUBMIT_CHANGES--}" />
- </td>
-</tr>
-</table>
-</form>
-</div>
+<!-- @DEPRECATED //-->
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=login&what=categories%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
-<tr>
- <td align="center" class="header_column bottom" width="408"><strong>{--CATEGORY_NAME--}</strong></td>
- <td align="center" class="header_column bottom" width="180"><strong>{--SELECT_CAT--}</strong></td>
-</tr>
+<!-- @DEPRECATED //-->
--- /dev/null
+<tr>
+ <td class="{%template,ColorSwitch%} bottom" align="right">$content[cat]</td>
+ <td class="{%template,ColorSwitch%} bottom" align="center">
+ <input type="radio" class="form_field" name="cat[$content[id]]" value="Y"$content[jy] />
+ {--YES--}
+ <input type="radio" class="form_field" name="cat[$content[id]]" value="N"$content[jn] />
+ {--NO--}
+ </td>
+</tr>
<div class="table_header bottom">
<strong>{%message,MEMBER_EARNING_POPUP_FORM_TITLE=$content[earning_provider]%}</strong>
</div>
-<div class="bottom" style="height:25px;padding-top:5px">
+<div style="height:25px;padding-top:5px">
{--MEMBER_EARNING_ENTER_DAILY_POPUP_AMOUNT--}
<input type="text" class="form_field" name="earning_daily_amount" size="5" maxlength="20" />
</div>
<div class="bottom" style="padding-top:5px;padding-bottom:5px">
{--MEMBER_EARNING_CHANGE_IS_ACTIVE--}
<select name="earning_active" class="form_select" size="1">
- {%pipe,generateYesNoOptionList=$content[earning_active]%}
+ {%pipe,generateYesNoOptions=$content[earning_active]%}
</select>
</div>
<div class="bottom" style="padding-top:5px;padding-bottom:5px">
<strong>{--MEMBER_REFBACK_EDIT_TITLE--}</strong><br />
<span class="notice">{--MEMBER_REFBACK_REFID--}: $content[refid]</span>
</div>
-<div class="bottom" align="center">
+<div align="center">
{--MEMBER_ENTER_REFBACK_PERCENTS--}:
<input type="text" class="form_field" name="refback_percents" size="6" maxlength="7" value="{%pipe,translateComma=$content[refback_percents]%}" />%
</div>
-<div class="bottom" align="center">
+<div align="center" class="bottom">
{--MEMBER_ENTER_REFBACK_NOTICE_FOR_RECIPIENT--}:<br />
<textarea class="form_field" rows="5" cols="30" name="refback_note"></textarea>
</div>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td align="center" colspan="2" class="table_header bottom">
- <strong>{--MEMBER_HTML_INTRO--}</strong>
+ <strong>{--MEMBER_HTML_TITLE--}</strong>
</td>
</tr>
<tr>
</table>
<div class="table dashed">
- <div class="table_header bottom"
+ <div class="table_header bottom">
<strong>{--BEG_RALLYE_CONDITIONS--}:</strong>
</div>
<div class="bottom">
$content[rows]
<tr>
<td colspan="3" class="table_footer">
- <ul>
- <li><div class="notice">Es werden nur aktive User gewertet.</div></li>
- <li><div class="notice">{%pipe,determineReferralRallyeMinimumUsers=$content[min_users]%}</div></li>
- <li><div class="notice">{%pipe,determineReferralRallyeMinimumPrices=$content[min_prices]%}</div></li>
- <li><div class="notice">Der Rechtsweg ist ausgeschlossen.</div></li>
- </ul>
+ <div align="left"><ul>
+ <li><div class="notice">Es werden nur aktive User gewertet.</div></li>
+ <li><div class="notice">{%pipe,determineReferralRallyeMinimumUsers=$content[min_users]%}</div></li>
+ <li><div class="notice">{%pipe,determineReferralRallyeMinimumPrices=$content[min_prices]%}</div></li>
+ <li><div class="notice">Der Rechtsweg ist ausgeschlossen.</div></li>
+ </ul></div>
</td>
</tr>
</table>
<tr>
- <td class="{%template,ColorSwitch%} bottom">$content[idx].</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[start].{%pipe,fixEmptyContentToDashes=$content[userid]%}.$content[end]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[start].{%pipe,fixEmptyContentToDashes=$content[ref]%}.$content[end]</td>
- <td align="center" class="{%template,ColorSwitch%} bottom">$content[start].{%pipe,fixEmptyContentToDashes=$content[infos]%}.$content[end]</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom"><strong>$content[idx]</strong></td>
+ <td align="center" class="{%template,ColorSwitch%} bottom">$content[start]{%pipe,fixEmptyContentToDashes=$content[userid]%}$content[end]</td>
+ <td align="center" class="{%template,ColorSwitch%} bottom">$content[start]{%pipe,fixEmptyContentToDashes=$content[ref]%}$content[end]</td>
</tr>
<div class="table2 dashed">
-<div class="header_column bottom">
+<div class="table_header bottom">
<strong>{--MEMBER_REFBACK_TITLE--}</strong>
</div>
$content
--- /dev/null
+<table border="0" cellspacing="0" cellpadding="1" width="100%">
+<tr>
+$content
+</tr>
+</table>
-<div class="para"><div align="center">
+<div class="para">
+<div align="center">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="650">
<tr>
<td colspan="2" align="center" class="header_column bottom">
</td>
</tr>
<tr>
- <td width="45%" align="center" class="switch_sw2 bottom right">{--CONFIRM_LINK--}:</strong></td>
+ <td width="45%" align="center" class="switch_sw2 bottom right">{--CONFIRM_LINK--}:</td>
<td width="55%" align="center" class="switch_sw2 bottom">{--EMAIL_STATUS_ACTIVE--}</td>
</tr>
<tr>
- <td align="center" class="switch_sw1 bottom right">{--EMAIL_SENDER--}:</strong></td>
+ <td align="center" class="switch_sw1 bottom right">{--EMAIL_SENDER--}:</td>
<td align="center" class="switch_sw1 bottom">
$content[sender]
</td>
</tr>
<tr>
- <td align="center" class="switch_sw2 bottom right">{--EMAIL_SUBJECT--}:</strong></td>
+ <td align="center" class="switch_sw2 bottom right">{--EMAIL_SUBJECT--}:</td>
<td align="center" class="switch_sw2 bottom">
$content[subject]
</td>
</tr>
<tr>
- <td align="center" class="switch_sw1 bottom right" valign="top">{--EMAIL_TEXT--}:</strong></td>
+ <td align="center" class="switch_sw1 bottom right" valign="top">{--EMAIL_TEXT--}:</td>
<td align="center" class="switch_sw1 bottom">
<pre>$content[text]</pre>
</td>
</tr>
<tr>
- <td align="center" class="switch_sw2 bottom right">{--EMAIL_CATEGORY--}:</strong></td>
+ <td align="center" class="switch_sw2 bottom right">{--EMAIL_CATEGORY--}:</td>
<td align="center" class="switch_sw2 bottom">
{%pipe,getCategory=$content[cat_id]%}
</td>
</tr>
<tr>
- <td align="center" class="switch_sw1 bottom right">{--EMAIL_TIMESTAMP--}:</strong></td>
+ <td align="center" class="switch_sw1 bottom right">{--EMAIL_TIMESTAMP--}:</td>
<td align="center" class="switch_sw1 bottom">
$content[timestamp]
</td>
</tr>
<tr>
- <td align="center" class="switch_sw2 bottom right">{--EMAIL_TIME--}:</strong></td>
+ <td align="center" class="switch_sw2 bottom right">{--EMAIL_TIME--}:</td>
<td align="center" class="switch_sw2 bottom">
{%pipe,createFancyTime=$content[time]%}
</td>
</tr>
<tr>
- <td align="center" class="switch_sw1 bottom right">{--EMAIL_POINTS--}:</strong></td>
+ <td align="center" class="switch_sw1 bottom right">{--EMAIL_POINTS--}:</td>
<td align="center" class="switch_sw1 bottom" style="padding-right:5px">
{%pipe,translateComma=$content[points]%} {?POINTS?}
</td>
</td>
</tr>
</table>
-</div></div>
+</div>
+</div>
-<div align="center">
-<form accept-charset="UTF-8" action="{%url=modules.php?module=login&what=order%}" method="posr">
- <div class="table">
- {--MEMBER_THANX_ORDER--}
- </div>
- <div>
- <input type="submit" class="form_submit" value="{--MEMBER_CONTINUE_AREA--}" />
- </div>
-</form>
-</div>
+<!-- @DEPRECATED //-->
-<tr>
- <td class="bottom" colspan="2" align="center">
- <strong>{--MEMBER_HTML_VALID_TAGS--}:</strong><br />
- $content <input type="hidden" name="html" value="Y" />
- </td>
-</tr>
+<!-- @DEPRECATED //-->
-<tr>
- <td colspan="2" class="table_header bottom" align="center">
- <strong>{--MEMBER_HTML_ORDER_INTRO--}</strong>
- </td>
-</tr>
-<tr>
- <td class="bottom" valign="top" align="center" height="20">
- {--MEMBER_HTML_MSG--}:
- <input type="radio" class="form_field" name="html" value="Y" />
- </td>
- <td class="bottom" valign="top" align="center">
- {--MEMBER_NORMAL_MSG--}:
- <input type="radio" class="form_field" name="html" value="N" checked="checked" />
- </td>
-</tr>
+<!-- @DEPRECATED //-->
-<tr>
- <td colspan="2" align="center" class="table_header bottom">
- <strong>{--MEMBER_ORDER_PAGE1_INTRO--}</strong>
- </td>
-</tr>
-<tr>
- <td colspan="2" align="center">
- <div class="para">
- Geben Sie hier die ersten ein bis drei Stellen der Postleitzahl ein,
- in der gesendet werden soll.
- </div>
-
- <div class="para">
- Beispiele:
- <ul>
- <li><strong>1</strong> : Sendet nur an Mitglieder, deren Postleitzahl mit 1 anfängt.</li>
- <li><strong>12</strong> : Sendet nur an Mitglieder, deren Postleitzahl mit 12 anfängt.</li>
- <li><strong>123</strong> : Sendet nur an Mitglieder, deren Postleitzahl mit 123 anfängt.</li>
- </ul>
- </div>
-
- <div class="para">
- Oder geben Sie nichts ein, wenn Sie diese Option nicht wünschen.
- </div>
- </td>
-</tr>
-<tr>
- <td class="bottom" align="right">{--MEMBER_ENTER_ZIP_CODE--}:</td>
- <td class="bottom">
- <input type="text" class="form_field" name="zip" size="5" maxlength="6" value="$content[zip]" />
- </td>
-</tr>
+<!-- @DEPRECATED //-->
-<tr>
- <td colspan="2" align="center" class="table_header bottom" height="30">
- <strong>{--MEMBER_ORDER_PAGE2_INTRO--}</strong>
- </td>
-</tr>
-<tr>
- <td class="bottom" align="center" colspan="2">
- <table border="0" cellspacing="0" cellpadding="0" class="table dashed">
- <tr>
- <td align="right">{--MEMBER_ENTER_ZIP_CODE--}</td>
- <td>
- <input type="text" class="form_field" name="zip" size="5" maxlength="6" value="$content" />
- </td>
- </tr>
- </table>
- </td>
-</tr>
+<!-- @DEPRECATED //-->
--- /dev/null
+<div class="para">
+ <strong>{--MEMBER_HTML_VALID_TAGS--}:</strong><br />
+ {%pipe,addValidHtmlTags%}
+ <input type="hidden" name="html" value="Y" />
+</div>
--- /dev/null
+<div class="table_header bottom">
+ <strong>{--MEMBER_HTML_ORDER_TITLE--}</strong>
+</div>
+
+<div class="table_row bottom">
+ <div align="center">
+ {--MEMBER_HTML_MESSAGE--}
+ <input type="radio" class="form_field" name="html" value="Y" />
+ {--MEMBER_NORMAL_MESSAGE--}
+ <input type="radio" class="form_field" name="html" value="N" checked="checked" />
+ </div>
+</div>
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=login&what=order%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--MEMBER_ORDER_PAGE1_TITLE--}</strong>
+ </div>
+
$content[zip_content]
+
$content[html_extension]
- <tr>
- <td colspan="2" align="center" class="table_footer">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" name="data" class="form_submit" value="{--ORDER_PAGE_2--}" />
- </td>
- </tr>
-</table>
+
+ <div class="table_footer">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" name="data" class="form_submit" value="{--ORDER_PAGE_2--}" />
+ </div>
+</div>
</form>
</div>
<div align="center">
<form accept-charset="UTF-8" action="{%url=modules.php?module=login&what=order%}" method="post">
-<table border="0" cellspacing="0" cellpadding="0" width="660" class="table dashed">
+<div class="table dashed">
+ <div class="table_header bottom">
+ <strong>{--MEMBER_ORDER_PAGE2_TITLE--}</strong>
+ </div>
+
$content[zip_content]
- <tr>
- <td align="right">{--SELECT_MAIL_TYPE--}:</td>
- <td><select name="mail_type" size="1" class="form_select">
+
+ <div class="para">
+ <label for="mail_type">{--MEMBER_SELECT_MAIL_TYPE--}</label>
+ <div>
+ <select name="mail_type" size="1" class="form_select">
<option value="X" disabled="disabled">{--PLEASE_SELECT--}</option>
$content[type_selection]
- </select></td>
- </tr>
- <tr>
- <td align="right">{--SELECT_CATEGORY--}:</td>
- <td><select name="cat" size="1" class="form_select">
+ </select>
+ </div>
+ </div>
+
+ <div class="para">
+ <label for="">{--SELECT_CATEGORY--}</label>
+ <div>
+ <select name="cat" size="1" class="form_select">
<option value="X" disabled="disabled">{--PLEASE_SELECT--}</option>
$content[category_selection]
- </select></td>
- </tr>
- <tr>
- <td align="right">
- {--ENTER_RECEIVER--}: Minimum: <strong>{?order_min?}</strong>
- </td>
- <td><input type="text" class="form_field" name="receiver" size="4" maxlength="5" value="$content[target_send]" /></td>
- </tr>
- <tr>
- <td align="right">{--ENTER_SUBJECT--}:</td>
- <td><input type="text" class="form_field" name="subject" size="30" maxlength="150" value="$content[subject]" /></td>
- </tr>
+ </select>
+ </div>
+ </div>
+
+ <div class="para">
+ <label for="receiver">{--ENTER_RECEIVER--}</label>
+ <div>
+ <input type="text" class="form_field" name="receiver" size="4" maxlength="5" value="$content[target_send]" />
+ <span class="notice tiny">(Minimum: <strong>{?order_min?})</strong></span>
+ </div>
+ </div>
+
+ <div class="para">
+ <label for="subject">{--ENTER_SUBJECT--}</label>
+ <div>
+ <input type="text" class="form_field" name="subject" size="30" maxlength="150" value="$content[subject]" />
+ </div>
+ </div>
+
$content[html_extension]
- <tr>
- <td align="right">{--ENTER_TEXT--}:</td>
- <td><textarea name="text" class="form_field" rows="10" cols="50">$content[text]</textarea></td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="notice">
- <strong>{--MEMBER_PLEASE_NOTICE--}</strong>
- </td>
- </tr>
- <tr>
- <td colspan="2" align="center" class="notice bottom">
- <div align="left">
- <ol>
- <li>Bitte prüfen Sie <strong>unbedingt vor</strong> dem Absenden die Verfügbarkeit und <strong><u>Framekiller-Freiheit</u></strong> ihrer beworbenen Adresse!</li>
- <li>Unsere AGBs vergessen? <strong>[<a href="{%url=agb.php%}" target="_blank">Hier sind sie nochmal</a>]</strong>.</li>
- <li>Gesperrte URLs können nicht ein zweites Mal beworben werden.</li>
- <li>Ihre Seite wird vor dem entgültigem Absenden auf Framekiller hin automatisch <u>doppelt</u> geprüft. Sollten Sie also nur Ihre beworbene Seite sehen, enthält diese einen Frame-Killer.</li>
- <li>Ist Sponsor-Mail ausgewählt, wird die beworbene Seite nicht geladen, sondern eine neutrale Seite mit unseren Sponsor-Bannern!</li>
- <li>Fremde {?mt_word3?} dürfen während der gesamten Startphase (bis 100 aktive Mitglieder) nicht mehr beworben werden und werden von uns abgelehnt!</li>
- </ol>
- </div>
- </td>
- </tr>
- <tr>
- <td class="table_footer" align="right">{--MEMBER_ENTER_URL--}:</td>
- <td class="table_footer">
- <input type="text" class="form_field" name="url" size="60" maxlength="350" value="$content[url]" />
- </td>
- </tr>
- <tr>
- <td class="table_footer" colspan="2" align="center">
- <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" name="frametester" class="form_submit" value="{--CONTINUE_FRAMETESTER--}" />
- </td>
- </tr>
-</table>
+
+ <div class="para">
+ <label for="text">{--ENTER_TEXT--}</label>
+ <div>
+ <textarea name="text" class="form_field" rows="10" cols="50">$content[text]</textarea>
+ </div>
+ </div>
+
+ <div class="para">
+ <label for="url">{--MEMBER_ENTER_URL--}</label>
+ <div>
+ <input type="text" class="form_field" name="url" size="60" maxlength="350" value="$content[url]" />
+ </div>
+ </div>
+
+ <div class="para notice">
+ <strong>{--MEMBER_PLEASE_NOTICE--}</strong>
+ <ol>
+ <li>Bitte prüfen Sie <strong>unbedingt vor</strong> dem Absenden die Verfügbarkeit und <strong><u>Framekiller-Freiheit</u></strong> ihrer beworbenen Adresse!</li>
+ <li>Unsere AGBs vergessen? <strong>[<a href="{%template,GetTermsConditionsLink%}" target="_blank">Hier sind sie nochmal</a>]</strong>.</li>
+ <li>Gesperrte URLs können nicht ein zweites Mal beworben werden.</li>
+ <li>Ihre Seite wird vor dem entgültigem Absenden auf Framekiller hin automatisch <u>doppelt</u> geprüft. Sollten Sie also nur Ihre beworbene Seite sehen, enthält diese einen Frame-Killer.</li>
+ <li>Ist Sponsor-Mail ausgewählt, wird die beworbene Seite nicht geladen, sondern eine neutrale Seite mit unseren Sponsor-Bannern!</li>
+ <li>Fremde {?mt_word3?} dürfen während der gesamten Startphase (bis 100 aktive Mitglieder) nicht mehr beworben werden und werden von uns abgelehnt!</li>
+ </ol>
+ </div>
+
+ <div class="table_footer top" colspan="2" align="center">
+ <input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
+ <input type="submit" name="frametester" class="form_submit" value="{--CONTINUE_FRAMETESTER--}" />
+ </div>
+</div>
</form>
</div>
--- /dev/null
+<div align="center">
+<form accept-charset="UTF-8" action="{%url=modules.php?module=login&what=order%}" method="post">
+ <div class="table_header bottom">
+ {--MEMBER_THANX_ORDER_TITLE--}
+ </div>
+
+ <div class="bottom">
+ {--MEMBER_THANX_ORDER--}
+ </div>
+
+ <div class="table_footer>
+ <input type="submit" class="form_submit" value="{--MEMBER_CONTINUE_AREA--}" />
+ </div>
+</form>
+</div>
--- /dev/null
+<div class="para">
+ Geben Sie hier die ersten ein bis drei Stellen der Postleitzahl ein, in der gesendet werden soll.
+</div>
+
+<div class="para">
+ Beispiele:
+ <ul>
+ <li><strong>1</strong> : Sendet nur an Mitglieder, deren Postleitzahl mit 1 anfängt.</li>
+ <li><strong>12</strong> : Sendet nur an Mitglieder, deren Postleitzahl mit 12 anfängt.</li>
+ <li><strong>123</strong> : Sendet nur an Mitglieder, deren Postleitzahl mit 123 anfängt.</li>
+ </ul>
+</div>
+
+<div class="para">
+ Oder geben Sie nichts ein, wenn Sie diese Option nicht wünschen.
+</div>
+
+<div class="table_row bottom">
+ <div align="center">
+ {--MEMBER_ENTER_ZIP_CODE--}
+ <input type="text" class="form_field" name="zip" size="5" maxlength="6" value="$content[zip]" />
+ </div>
+</div>
--- /dev/null
+<div class="table_row bottom">
+ {--MEMBER_ENTER_ZIP_CODE--}
+ <input type="text" class="form_field" name="zip" size="5" maxlength="6" value="$content" />
+</div>
<tr>
<td colspan="2" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--MEMBER_PAYOUT_SEND_NOW--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--MEMBER_PAYOUT_SEND_SUBMIT--}" />
</td>
</tr>
</table>
</div>
<div class="para">
- <a href="{%url=agb.php%}" target="_blank">{--MEMBER_PAYOUT_REMEMBER_TERMS--}</a>
+ <a href="{%template,GetTermsConditionsLink%}" target="_blank">{--MEMBER_PAYOUT_REMEMBER_TERMS--}</a>
</div>
</div>
<tr>
<td colspan="2" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--MEMBER_PAYOUT_SEND_NOW--}" />
+ <input type="submit" class="form_submit" name="ok" value="{--MEMBER_PAYOUT_SEND_SUBMIT--}" />
</td>
</tr>
</table>
</tr>
<tr>
<td class="member_data bottom">{--POINTS_USED--}</td>
- <td class="member_data bottom">-{%user,used_points,translateComma%} {?POINTS?}</td>
+ <td class="member_data bottom">-{%user,used_points,translateComma=$content[userid]%} {?POINTS?}</td>
<td class="member_data bottom">-</td>
<td class="member_data bottom" align="center">-</td>
</tr>
<table border="0" cellspacing="0" cellpadding="0" width="400" class="table dashed">
<tr>
<td align="right" height="40" class="register_left" style="margin-right:3px">
- {--MAX_PER_DAY--}:
+ {--MAX_MAILS_PER_DAY--}:
</td>
<td class="register_right">
<select name="max_mails" size="1" class="form_select">
<div style="padding:5px">
Bei der dynamischen Vergütung werden Ihnen derzeit mindestens
- <strong>{%pipe,SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE,translateComma%}</strong>
- und maximal <strong>{%pipe,SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE,translateComma%}
+ <strong>{%pipe,calculateSurfbarDynamicMininumValue,translateComma%}</strong>
+ und maximal <strong>{%pipe,calculateSurfbarDynamicMaximumValue,translateComma%}
{?POINTS?}</strong> Aufschlag zum Basispreis für jede besuchte
Seite vergütet. Diese müssen Sie mindestens
- <strong>{%pipe,SURFBAR_CALCULATE_DYNAMIC_MIN_VALUE,createFancyTime%}</strong>
+ <strong>{%pipe,calculateSurfbarDynamicMininumValue,createFancyTime%}</strong>
und maximal
- <strong>{%pipe,SURFBAR_CALCULATE_DYNAMIC_MAX_VALUE,createFancyTime%}</strong>
+ <strong>{%pipe,calculateSurfbarDynamicMaximumValue,createFancyTime%}</strong>
zusätzlich zur Basiszeit angesehen haben und können die selbe
Seite erst nach zusätzlichen
- <strong>{%pipe,SURFBAR_CALCULATE_DYNAMIC_LOCK,createFancyTime%}</strong>
+ <strong>{%pipe,calculateSurfbarDynamicLock,createFancyTime%}</strong>
wieder aufrufen.
</div>
Einige Hinweise zur Berechnung: Die derzeige Mitgliederanzahl von
<strong>{%pipe,getTotalConfirmedUser,translateComma%}</strong>, die
derzeit die Surfbar nutzenden
- <strong>{%pipe,SURFBAR_DETERMINE_TOTAL_ONLINE%}</strong> Mitglieder, die
+ <strong>{%pipe,determineSurfbarTotalOnline%}</strong> Mitglieder, die
gesamt in der Surfbar gebuchten
- <strong>{%pipe,SURFBAR_GET_TOTAL_URLS,translateComma%}</strong>
+ <strong>{%pipe,getSurfbarTotalUrls,translateComma%}</strong>
URLs (ohne von unseren Sponsoren), sowie Ihre gebuchten
- <strong>{%pipe,getMemberId,SURFBAR_GET_TOTAL_USER_URLS,translateComma%}</strong> URLs werden als
+ <strong>{%pipe,getMemberId,getSurfbarTotalUserUrls,translateComma%}</strong> URLs werden als
Berechnungsgrundlage verwendet. Sie erhalten allerdings nur einen
reduzierten Anteil von
<strong>{%config,translateComma=surfbar_dynamic_percent%}%</strong>.
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td align="right" class="bottom" height="40"><strong>
- {--TRANSFER_SELECT_TARGET_USERID--}:</strong>
+ {--MEMBER_SELECT_TRANSFER_TARGET_USERID--}:</strong>
</td>
<td align="center" class="bottom">
$content[userid_selection]
</tr>
<tr>
<td align="right" class="bottom" height="40">
- <strong>{--TRANSFER_POINTS_MAXIMUM--}:</strong>
+ <strong>{--MEMBER_TRANSFER_POINTS_MAXIMUM--}:</strong>
</td>
<td class="bottom">
{%pipe,translateComma=$content[max_transferable]%} {?POINTS?}
</tr>
<tr>
<td align="right" class="bottom" height="40">
- <strong>{--TRANSFER_POINTS_AMOUNT--}:</strong>
+ <strong>{--MEMBER_TRANSFER_POINTS_AMOUNT--}:</strong>
</td>
<td class="bottom">
<input type="text" class="form_field" name="points" size="5" maxlength="10" value="{%pipe,bigintval=$content[points]%}"$content[to_disabled] /> {?POINTS?}
</tr>
<tr>
<td align="right" class="bottom" height="40">
- <strong>{--TRANSFER_POINTS_REASON--}:</strong>
+ <strong>{--MEMBER_ENTER_TRANSFER_POINTS_REASON--}:</strong>
</td>
<td class="bottom">
<input type="text" class="form_field" name="reason" size="30" maxlength="255" value="{%pipe,secureString=$content[reason]%}"$content[to_disabled] />
</tr>
<tr>
<td align="right" class="bottom" height="40">
- <strong>{--TRANSFER_POINTS_SECURITY_CODE--}:</strong>
+ <strong>{--MEMBER_TRANSFER_POINTS_SECURITY_CODE--}:</strong>
</td>
<td class="bottom">
$content[captcha_code]
</tr>
<tr>
<td align="right" class="bottom" height="40">
- <strong>{--TRANSFER_ENTER_PASSWORD--}:</strong>
+ <strong>{--MEMBER_ENTER_TRANSFER_PASSWORD--}:</strong>
</td>
<td class="bottom">
<input type="password" class="form_field" name="password" size="10" maxlength="255"$content[to_disabled] />
<tr>
<td colspan="2" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}"$content[to_disabled] />
- <input type="submit" class="form_submit" name="ok" value="{--TRANSFER_ADD_NEW--}"$content[to_disabled] />
+ <input type="submit" class="form_submit" name="ok" value="{--MEMBER_TRANSFER_ADD_NEW_SUBMIT--}"$content[to_disabled] />
</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" class="table dashed">
<tr>
<td align="center" width="260" class="bottom right" height="40">
- {--TRANSFER_LIST_INCOMING--}:<br />
+ {--MEMBER_LIST_INCOMING_TRANSFER_TITLE--}:<br />
<strong>$content[in_link]</strong>
</td>
<td align="center" width="260" class="bottom">
- {--TRANSFER_LIST_OUTGOING--}:<br />
+ {--MEMBER_LIST_OUTGOING_TRANSFER_TITLE--}:<br />
<strong>$content[out_link]</strong>
</td>
</tr>
</tr>
<tr>
<td align="center" colspan="2" height="40" class="bottom">
- <strong>{--TRANSFER_TO_MEMBER_NOW--}:</strong><br />
+ <strong>{--MEMBER_START_NEW_TRANSFER--}:</strong><br />
$content[new_link]
</td>
</tr>
<tr>
- <td class="transfer_row1 {%template,ColorSwitch%} bottom right">
- <div class="transfer_row1">$content[trans_id]</div>
- </td>
- <td class="transfer_row2 {%template,ColorSwitch%} bottom right">
- <div class="transfer_row2">$content[time_trans]</div>
- </td>
- <td class="transfer_row3 {%template,ColorSwitch%} bottom right">
- <div class="transfer_row3">$content[party_userid]</div>
- </td>
- <td class="transfer_row4 {%template,ColorSwitch%} bottom right">
- <div class="transfer_row4">$content[reason]</div>
- </td>
- <td class="transfer_row5 {%template,ColorSwitch%} bottom">
- <div class="transfer_row5">{%pipe,translateComma=$content[points]%}</div>
- </td>
+ <td class="transfer_row1 {%template,ColorSwitch%} bottom right">
+ <div class="transfer_row1">$content[trans_id]</div>
+ </td>
+ <td class="transfer_row2 {%template,ColorSwitch%} bottom right">
+ <div class="transfer_row2">$content[time_trans]</div>
+ </td>
+ <td class="transfer_row3 {%template,ColorSwitch%} bottom right">
+ <div class="transfer_row3">$content[party_userid]</div>
+ </td>
+ <td class="transfer_row4 {%template,ColorSwitch%} bottom right">
+ <div class="transfer_row4">$content[reason]</div>
+ </td>
+ <td class="transfer_row5 {%template,ColorSwitch%} bottom">
+ <div class="transfer_row5">{%pipe,translateComma=$content[points]%}</div>
+ </td>
</tr>
<table border="0" cellspacing="0" cellpadding="0" width="420" class="table dashed">
<tr>
<td align="center" width="260" class="bottom" height="50">
- {--TRANSFER_ALLOW_OPT_IN--}
+ {--MEMBER_ALLOW_TRANSFER_OPT_IN--}
</td>
<td align="center" width="160" class="bottom" height="50">
<input type="radio" class="form_field" name="opt_in" value="Y"$content[allow_y] /> {--YES--}<br />
+<div align="center">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="650">
<tr>
<td width="100" class="header_column bottom right" align="center"><strong>{--CONFIRM_LINK2--}:</strong></td>
</td>
</tr>
</table>
+</div>
+<div align="center">
<table border="0" cellspacing="0" cellpadding="0" class="table dashed" width="550">
<tr>
<td width="100" class="header_column bottom right" align="center"><strong>{--CONFIRM_LINK2--}:</strong></td>
</td>
</tr>
</table>
+</div>
<div class="para member_content">
- {--LAST_ONLINE--}: <strong>$content[last_online]</strong><br />
- {--LAST_MODULE--}: <strong>$content[last_module]</strong>
+ {--MEMBER_LAST_ONLINE--}: <strong>$content[last_online]</strong><br />
+ {--MEMBER_LAST_WHAT--}: <strong>$content[last_what]</strong>
</div>
<div class="para member_content">
<meta http-equiv="language" content="de" />
<script src="{%url=js/jquery.js?dummy=1%}{%ext,version=sql_patches%}" type="text/javascript"></script>
+<script src="{%url=js/core-common.js?dummy=1%}{%ext,version=sql_patches%}" type="text/javascript"></script>
<script src="{%url=js/menu-common.js?dummy=1%}{%ext,version=sql_patches%}" type="text/javascript"></script>
<a href="$content" rel="external" title="$content">$content</a>
</noscript>
-<script type="text/javascript" language="JavaScript">
+<script type="text/javascript">
<!--
document.location.href = '$content';
//-->
-<option value="$content[id]">
+<option value="$content[id]"$content[default]>
$content[login] ($content[special])
</option>
--- /dev/null
+<div>
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[forced_ads_id]"$content[default]>
+ $content[forced_ads_click_url] ($content[forced_ads_width]x$content[forced_ads_height]; {%pipe,translateForcedAdsType=$content[forced_ads_type]%})
+</option>
--- /dev/null
+<option value="$content[forced_ads_id]"$content[default]>
+ $content[forced_ads_click_url] ($content[forced_ads_alt_text]; {%pipe,translateForcedAdsType=$content[forced_ads_type]%})
+</option>
-<option value="$content[type]">
+<option value="$content[type]"$content[default]>
{%pipe,translateForcedAdsType=$content[type]%}
</option>
--- /dev/null
+<div>
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[forced_costs_id]"$content[default]>
+ {%pipe,translateForcedCostsVisibility=$content[forced_costs_visibility]%} ({%pipe,translateComma=$content[forced_costs_price_click]%} {?POINTS?}, {%pipe,translateComma=$content[forced_costs_payment_click]%} {?POINTS?})
+</option>
--- /dev/null
+<div align="center">
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[visibility]"$content[default]>
+ {%pipe,translateForcedCostsVisibility=$content[visibility]%}
+</option>
-<option value="$content[network_id]">
+<option value="$content[network_id]"$content[default]>
$content[network_title] ({%pipe,translateNetworkApiConfiguredStatusById=$content[network_id]%}, $content[network_short_name])
</option>
-<option value="$content[network_type_id]">
+<option value="$content[network_type_id]"$content[default]>
{%pipe,translateNetworkTypeHandler=$content[network_type_handler]%}
</option>
-<option value="$content[network_type_id]">$content[network_type_handler] ($content[network_title])</option>
+<option value="$content[network_type_id]"$content[default]>
+ $content[network_type_handler] ($content[network_title])
+</option>
--- /dev/null
+<div>
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[mode]"$content[default]>
+ {%pipe,translatePointsLockedMode=$content[mode]%}
+</option>
--- /dev/null
+<div>
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[method]"$content[default]>
+ {%pipe,translatePointsPaymentMethod=$content[method]%}
+</option>
--- /dev/null
+<div align="center">
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[actions_action]"$content[default]>
+ {%pipe,translateMemberSurfbarActionToSubmit=$content[actions_action]%}
+</option>
--- /dev/null
+<div align="center">
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[actions_new_status]"$content[default]>
+ {%pipe,translateSurfbarUrlStatus=$content[actions_new_status]%}
+</option>
--- /dev/null
+<div align="center">
+ $content[selection_box]
+</div>
--- /dev/null
+<option value="$content[actions_status]"$content[default]>
+ {%pipe,translateSurfbarUrlStatus=$content[actions_status]%}
+</option>
<tr>
<td id="surfbar_td">
Guthaben: <span id="surfbar_points">{%pipe,translateComma=$content[points]%} {?POINTS?}</span> -
- Jetzt Online: <span class="surfbar_counter">{%pipe,SURFBAR_DETERMINE_TOTAL_ONLINE%}</span> -
+ Jetzt Online: <span class="surfbar_counter">{%pipe,determineSurfbarTotalOnline%}</span> -
Seitenaufrufe: Heute:<span class="surfbar_counter">{%config,translateComma=surfbar_daily_counter%}</span> -
Gestern:<span class="surfbar_counter">{%config,translateComma=surfbar_yester_counter%}</span> -
Woche:<span class="surfbar_counter">{%config,translateComma=surfbar_weekly_counter%}</span> -
<table border="0" cellspacing="0" cellpadding="0" width="100%" id="surfbar_table">
<tr>
<td id="surfbar_td">
- Jetzt Online: <span class="surfbar_counter">{%pipe,SURFBAR_DETERMINE_TOTAL_ONLINE%}</span> -
+ Jetzt Online: <span class="surfbar_counter">{%pipe,determineSurfbarTotalOnline%}</span> -
<!-- @TODO These are static lines and should be replaced by a filter (see ext-network/ext-sponsor) //-->
<a href="{%url=modules.php?module=index&what=impressum%}" target="_blank">Ihr Textlink hier?</a> -
<a href="{%url=modules.php?module=index&what=impressum%}" target="_blank">Ihr Textlink hier?</a> -
</div>
<div>
- »<a href="{%pipe,SURFBAR_GET_URL=$content[url_id]%}" target="_blank">Aktuelle Seite in neuem
+ »<a href="{%pipe,gerSurfbarUrl=$content[url_id]%}" target="_blank">Aktuelle Seite in neuem
Fenster öffnen</a>«
<span id="surfbar_navi">[<a href="#" onclick="return startStopCounter();"
id="start">{--MEMBER_SURFBAR_ACTION_PAUSE_SUBMIT--}</a>|<a target="_parent"
</table>
</div>
-<script type="text/javascript"
- src="{%url=js.php?js=surfbar_frame_top&url_id=$content[url_id]%}"></script>
+<script type="text/javascript" src="{%url=js.php?js=surfbar_frame_top&url_id=$content[url_id]%}"></script>
<tr>
<td colspan="4" align="center" class="table_footer">
<input type="reset" class="form_reset" value="{--CLEAR_FORM--}" />
- <input type="submit" class="form_submit" name="ok" value="{--LOGIN_SUBMIT--}" />
+ <input type="submit" class="form_submit" name="login" value="{--LOGIN_SUBMIT--}" />
</td>
</tr>
</table>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
And all column names to read/write, leave this list tag empty for all (*).
//-->
<database-column-list>
- <database-column-list-entry name="" type="string" value="forced_ads_click_url" />
- <database-column-list-entry name="" type="string" value="forced_ads_alt_text" />
- <database-column-list-entry name="" type="string" value="forced_ads_framebreaker" />
- <database-column-list-entry name="" type="string" value="forced_ads_type" />
- <database-column-list-entry name="" type="string" value="forced_ads_width" />
- <database-column-list-entry name="" type="string" value="forced_ads_height" />
- <database-column-list-entry name="" type="string" value="forced_ads_ad_url" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_click_url" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_alt_text" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_framebreaker" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_type" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_width" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_height" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_ad_url" alias="" function="" />
</database-column-list>
<!--
"Filter" call-back functions to call back for piping the fetched data
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for adding forced-campaigns to the database.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminAddEntries" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_campaigns" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_ordered_clicks" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_reload_lock" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_minimum_stay" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_userid" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_id" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <callback-function-list-entry name="" type="string" value="convertCommaToDot" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="convertZeroToNull" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ <time-columns-list-entry name="" type="string" value="forced_campaign_reload_lock" />
+ </time-columns-list>
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for adding forced-costs to the database.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminAddEntries" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_costs" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_price_click" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_payment_click" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_visibility" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <callback-function-list-entry name="" type="string" value="convertCommaToDot" />
+ <callback-function-list-entry name="" type="string" value="convertCommaToDot" />
+ <callback-function-list-entry name="" type="string" value="" />
+ </callback-function-list>
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for doing deletions on forced ads.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminDeleteEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_ads" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="true" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_ads_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="forced_ads_userid" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="forced_ads_userid" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for doing deletions on forced costs.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminDeleteEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_costs" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="true" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_costs_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
+</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
This' type can again only be 'string' (remember why?).
//-->
<raw-userid-column-key name="" type="string" value="url_userid" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for deleting forced ads.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminDeleteEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_ads" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_userid" alias="" function="" />
+ <database-column-list-entry name="added_list" type="string" table="" value="forced_ads_added" alias="forced_ads_added" function="UNIX_TIMESTAMP" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_ad_url" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_click_url" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_width" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_height" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_alt_text" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_framebreaker" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_type" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_views_counter" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_clicks_counter" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="added_list" type="string" value="generateDateTime" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ <!--
+ A one-dimensional array with some entries
+ //-->
+ <extra-parameter-list-entry name="" type="array" value="added">
+ <!--
+ Our 'added' array
+ //-->
+ <extra-parameter-added-list>
+ <!--
+ A bool entry in the 'bar' array, all other types are added in a
+ similar way.
+ //-->
+ <extra-parameter-added-list-entry name="" type="int" value="2" />
+ </extra-parameter-added-list>
+ </extra-parameter-list-entry>
+ </extra-parameter-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_ads_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="forced_ads_userid" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="forced_ads_userid" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for deleting forced costs.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminDeleteEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_costs" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_price_click" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_payment_click" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_visibility" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="" />
+ <callback-function-list-entry name="" type="string" value="" />
+ <callback-function-list-entry name="" type="string" value="" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_costs_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
A column name list entry. The type is always string, or do you have
numerical column names?
//-->
- <database-column-list-entry name="" type="string" value="url_id" />
- <database-column-list-entry name="" type="string" value="url_userid" />
- <database-column-list-entry name="" type="string" value="url" />
- <database-column-list-entry name="" type="string" value="url_registered" />
+ <database-column-list-entry name="" type="string" table="" value="url_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_userid" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_registered" alias="" function="" />
</database-column-list>
<!--
"Filter" call-back functions to call back for piping the fetched data
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for doing edits on forced costs
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_ads" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="true" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_ads_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="forced_ads_userid" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for doing edits on forced costs
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_costs" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="true" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_costs_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for doing edits on points accounts
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="points_data" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="true" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="points_data" />
+</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
<extra-parameter-list>
</extra-parameter-list>
<!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
//-->
<enable-modify-entries name="" type="bool" value="true" />
Raw userid column ($key) to skip which is always an invalid (?) entry
This' type can again only be 'string' (remember why?).
//-->
- <raw-userid-column-key name="" type="string" value="url_userid" />
+ <raw-userid-column-key name="" type="string" value="" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
call-back function. See function handleExtraValues() for details.
//-->
<extra-parameter-list>
- <!--
- Dummy entry
- //-->
- <extra-parameter-list-entry name="" type="string" value="" />
<!--
A one-dimensional array with some entries
//-->
//-->
<extra-parameter-member-list>
<!--
- A bool entry in the 'bar' array, all other types are added in a
+ A bool entry in the 'member' array, all other types are added in a
similar way.
//-->
<extra-parameter-member-list-entry name="" type="bool" value="false" />
//-->
<extra-parameter-added-list>
<!--
- A bool entry in the 'bar' array, all other types are added in a
+ A bool entry in the 'added' array, all other types are added in a
similar way.
//-->
<extra-parameter-added-list-entry name="" type="int" value="2" />
</extra-parameter-list-entry>
</extra-parameter-list>
<!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
//-->
<enable-modify-entries name="" type="bool" value="false" />
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for editing forced campaigns.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_campaigns" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_id" alias="" function="" />
+ <database-column-list-entry name="created_list" type="string" table="" value="forced_campaign_created" alias="forced_campaign_created" function="UNIX_TIMESTAMP" />
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_ordered_clicks" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_payment_api" alias="" function="" />
+ <database-column-list-entry name="reload_list" type="string" table="" value="forced_campaign_reload_lock" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_campaign_minimum_stay" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_ads_id" alias="" function="" />
+ <database-column-list-entry name="member_list" type="string" table="" value="forced_campaign_userid" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_id" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="created_list" type="string" value="generateDateTime" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="reload_list" type="string" value="createTimeSelections" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="member_list" type="string" value="doTemplateForcedCampaignUseridSelectionBox" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ <!--
+ A one-dimensional array with some entries
+ //-->
+ <extra-parameter-list-entry name="" type="array" value="reload">
+ <!--
+ Our 'reload' array
+ //-->
+ <extra-parameter-reload-list>
+ <!--
+ A bool entry in the 'reload' array, all other types are added in a
+ similar way.
+ //-->
+ <extra-parameter-reload-list-entry name="" type="string" value="forced_campaign_reload_lock" />
+ <extra-parameter-reload-list-entry name="" type="string" value="Dhms" />
+ </extra-parameter-reload-list>
+ </extra-parameter-list-entry>
+ <extra-parameter-list-entry name="" type="array" value="member">
+ <!--
+ Our 'member' array
+ //-->
+ <extra-parameter-member-list>
+ <!--
+ A bool entry in the 'member' array, all other types are added in a
+ similar way.
+ //-->
+ <extra-parameter-member-list-entry name="" type="bool" value="false" />
+ <extra-parameter-member-list-entry name="" type="bool" value="true" />
+ <extra-parameter-member-list-entry name="" type="bool" value="true" />
+ <!--
+ The brackets [] are required for addMemberSelectionBox(),
+ please read there for details.
+ //-->
+ <extra-parameter-member-list-entry name="" type="string" value="forced_campaign_userid[]" />
+ </extra-parameter-member-list>
+ </extra-parameter-list-entry>
+ <!--
+ A one-dimensional array with some entries
+ //-->
+ <extra-parameter-list-entry name="" type="array" value="created">
+ <!--
+ Our 'created' array
+ //-->
+ <extra-parameter-created-list>
+ <!--
+ A bool entry in the 'created' array, all other types are created in a
+ similar way.
+ //-->
+ <extra-parameter-created-list-entry name="" type="int" value="2" />
+ </extra-parameter-created-list>
+ </extra-parameter-list-entry>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_campaign_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="forced_campaign_userid" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="forced_campaign_userid" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for editing forced costs.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="forced_costs" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_price_click" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_payment_click" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="forced_costs_visibility" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ <callback-function-list-entry name="" type="string" value="" />
+ <callback-function-list-entry name="" type="string" value="" />
+ <callback-function-list-entry name="" type="string" value="" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="forced_costs_id" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for editing point accounts.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="points_data" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry name="" type="string" table="" value="id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="subject" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="column_name" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="locked_mode" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="payment_method" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="notify_recipient" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="account_provider" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for editing member actions of the surfbar in
+the admin area.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table name="" type="string" value="surfbar_actions" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry name="" type="string" table="" value="actions_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="actions_status" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="actions_action" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="actions_new_status" alias="" function="" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry name="" type="string" value="bigintval" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ </extra-parameter-list>
+ <!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries name="" type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column name="" type="string" value="actions_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column name="" type="string" value="" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key name="" type="string" value="" />
+</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
//-->
<callback-function-list-entry name="" type="string" value="bigintval" />
<callback-function-list-entry name="member_list" type="string" value="addMemberSelectionBox" />
- <callback-function-list-entry name="" type="string" value="" /><!-- No callback function! //-->
</callback-function-list>
<!--
Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
<extra-parameter-list-entry name="" type="string" value="" />
</extra-parameter-list>
<!--
+ Columns for converting single time selections into a timestamp
+ //-->
+ <time-columns-list>
+ </time-columns-list>
+ <!--
Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
//-->
<enable-modify-entries name="" type="bool" value="false" />
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for listing nickname-change history entries.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2011 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-list-data>
+ <!--
+ Call-back function, the extracted data from this XML will then be re-read
+ from that function. The most common function this XML uses is
+ adminListEntries() so mostly you can leave this alone unless you have JOINs.
+ //-->
+ <callback-function type="string" value="adminListEntries" />
+ <!--
+ Now we need information which template should be loaded and which functions
+ shall be called back. So lets start with the main list template. This mostly
+ requires no call-back function.
+ //-->
+ <list-template type="string" value="admin_list_nickname_history" />
+ <!--
+ The template for all rows, mostly this name has a '_row' suffix and again,
+ no call-back function is usually required.
+ //-->
+ <list-row-template type="string" value="admin_list_nickname_history_row" />
+ <!--
+ Message id to display if no entry could be found
+ //-->
+ <no-entry-found-message type="string" value="ADMIN_LIST_NICKNAME_HISTORY_404" />
+ <!--
+ The table(s) we shall grab the data from, all as list.
+ //-->
+ <data-tables>
+ <!--
+ A single table entry, with alias and without the configurable
+ _MYSQL_PREFIX. You can specify the table's name or alias later on.
+ //-->
+ <data-table type="string" alias="" value="history" />
+ <!--
+ Columns to perform the SELECT statement on, with alias and name plus which table.
+ //-->
+ <select-data-from-list>
+ <!--
+ A single entry with table name (can be left empty), value (must
+ always be set), alias (again can be left empty) and SQL function
+ (can also be left empty) which shall be applied on the column.
+ //-->
+ <select-data-from-list-entry type="string" table="" value="history_userid" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="history_value" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="history_added" alias="history_added" function="UNIX_TIMESTAMP" />
+ <select-data-from-list-entry type="string" table="" value="history_last_used" alias="history_last_used" function="UNIX_TIMESTAMP" />
+ </select-data-from-list>
+ <!--
+ And the column list to perform the WHERE statement on.
+ //-->
+ <where-select-from-list>
+ <!--
+ A single entry to perform the WHERE statement on:
+ - table = table name (or alias)
+ - value = column name
+ - condition = look-up condition
+ - look-for = What to look for
+ //-->
+ <where-select-from-list-entry type="string" table="" value="history_subject" condition="EQUALS" look-for="NICKNAME_CHANGED" />
+ <!--
+ A single entry to perform the AND statement on:
+ - table = table name (or alias)
+ - value = column name
+ - condition = look-up condition
+ - look-for = What to look for
+ //-->
+ <where-select-from-list-entry type="string" table="" value="history_userid" condition="EQUALS" look-for="$userid" />
+ </where-select-from-list>
+ <!--
+ Columns to perform the ORDER BY statement (GROUP BY is not yet supported)
+ //-->
+ <order-by-list>
+ <!--
+ A single entry to perform the ORDER BY statement on, see above WHERE entry for details.
+ //-->
+ <order-by-list-entry type="string" table="" order="history_added" value="DESC" />
+ </order-by-list>
+ </data-tables>
+ <!--
+ List all column names from the 'select-data-from-list' node here, but now
+ with call-back informations. The list must only contain those entries where
+ a call-back function shall be called for.
+ //-->
+ <column-callback-list>
+ <!--
+ Another column, now we need a second parameter here because
+ generateDateTime() expects two parameters (first is always the data
+ from column).
+ //-->
+ <column-callback-list-entry>
+ <!--
+ The actual data, again.
+ //-->
+ <column-callback-data type="string" value="history_added" callback="generateDateTime" />
+ <!--
+ More parameters, remember that the first parameter is always given
+ and that it is the data from column.
+ //-->
+ <callback-extra-parameter-list>
+ <!--
+ A single parameter, 'type' can be one of 'float', 'int',
+ 'bool', 'string'. 'array' is not yet supported.
+ //-->
+ <callback-extra-parameter-list-entry type="int" column="history_added" value="2" />
+ </callback-extra-parameter-list>
+ </column-callback-list-entry>
+ <!--
+ Another column, now we need a second parameter here because
+ generateDateTime() expects two parameters (first is always the data
+ from column).
+ //-->
+ <column-callback-list-entry>
+ <!--
+ The actual data, again.
+ //-->
+ <column-callback-data type="string" value="history_last_used" callback="generateDateTime" />
+ <!--
+ More parameters, remember that the first parameter is always given
+ and that it is the data from column.
+ //-->
+ <callback-extra-parameter-list>
+ <!--
+ A single parameter, 'type' can be one of 'float', 'int',
+ 'bool', 'string'. 'array' is not yet supported.
+ //-->
+ <callback-extra-parameter-list-entry type="int" column="history_last_used" value="2" />
+ </callback-extra-parameter-list>
+ </column-callback-list-entry>
+ </column-callback-list>
+ <!--
+ How the named column shall be logical linked to the above.
+ //-->
+ <where-condition type="string" name="history_userid" condition="AND" />
+</admin-list-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for listing points accounts
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2012 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-list-data>
+ <!--
+ Call-back function, the extracted data from this XML will then be re-read
+ from that function. The most common function this XML uses is
+ adminListEntries() so mostly you can leave this alone unless you have JOINs.
+ //-->
+ <callback-function type="string" value="adminListEntries" />
+ <!--
+ Now we need information which template should be loaded and which functions
+ shall be called back. So lets start with the main list template. This mostly
+ requires no call-back function.
+ //-->
+ <list-template type="string" value="admin_list_points_accounts" />
+ <!--
+ The template for all rows, mostly this name has a '_row' suffix and again,
+ no call-back function is usually required.
+ //-->
+ <list-row-template type="string" value="admin_list_points_accounts_row" />
+ <!--
+ Message id to display if no entry could be found
+ //-->
+ <no-entry-found-message type="string" value="ADMIN_POINTS_ACCOUNTS_404" />
+ <!--
+ The table(s) we shall grab the data from, all as list.
+ //-->
+ <data-tables>
+ <!--
+ A single table entry, with alias and without the configurable
+ _MYSQL_PREFIX. You can specify the table's name or alias later on.
+ //-->
+ <data-table type="string" alias="" value="points_data" />
+ <!--
+ Columns to perform the SELECT statement on, with alias and name plus which table.
+ //-->
+ <select-data-from-list>
+ <!--
+ A single entry with table name (can be left empty), value (must
+ always be set), alias (again can be left empty) and SQL function
+ (can also be left empty) which shall be applied on the column.
+ //-->
+ <select-data-from-list-entry type="string" table="" value="id" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="subject" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="column_name" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="locked_mode" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="payment_method" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="notify_recipient" alias="" function="" />
+ <select-data-from-list-entry type="string" table="" value="account_provider" alias="" function="" />
+ </select-data-from-list>
+ <!--
+ And the column list to perform the WHERE statement on.
+ //-->
+ <where-select-from-list>
+ </where-select-from-list>
+ <!--
+ Columns to perform the ORDER BY statement (GROUP BY is not yet supported)
+ //-->
+ <order-by-list>
+ <!--
+ A single entry to perform the ORDER BY statement on, see above WHERE entry for details.
+ //-->
+ <order-by-list-entry type="string" table="" order="subject" value="ASC" />
+ </order-by-list>
+ </data-tables>
+ <!--
+ List all column names from the 'select-data-from-list' node here, but now
+ with call-back informations. The list must only contain those entries where
+ a call-back function shall be called for.
+ //-->
+ <column-callback-list>
+ </column-callback-list>
+</admin-list-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
This' type can again only be 'string' (remember why?).
//-->
<raw-userid-column-key name="" type="string" value="url_userid" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
A column name list entry. The type is always string, or do you have
numerical column names?
//-->
- <database-column-list-entry name="" type="string" value="url_id" />
- <database-column-list-entry name="" type="string" value="url_userid" />
- <database-column-list-entry name="" type="string" value="url" />
- <database-column-list-entry name="" type="string" value="url_registered" />
- <database-column-list-entry name="" type="string" value="url_status" />
+ <database-column-list-entry name="" type="string" table="" value="url_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_userid" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_registered" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_status" alias="" function="" />
</database-column-list>
<!--
"Filter" call-back functions to call back for piping the fetched data
<extra-parameter-list-entry name="" type="string" value="" />
</extra-parameter-list>
<!--
+ Informations for changing status
+ //-->
+ <status-change-column name="" type="string" value="url_status" />
+ <!--
Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
//-->
<enable-modify-entries name="" type="bool" value="false" />
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
This' type can again only be 'string' (remember why?).
//-->
<raw-userid-column-key name="" type="string" value="url_userid" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="" />
</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
A column name list entry. The type is always string, or do you have
numerical column names?
//-->
- <database-column-list-entry name="" type="string" value="url_id" />
- <database-column-list-entry name="" type="string" value="url_userid" />
- <database-column-list-entry name="" type="string" value="url" />
- <database-column-list-entry name="" type="string" value="url_registered" />
- <database-column-list-entry name="" type="string" value="url_status" />
+ <database-column-list-entry name="" type="string" table="" value="url_id" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_userid" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_registered" alias="" function="" />
+ <database-column-list-entry name="" type="string" table="" value="url_status" alias="" function="" />
</database-column-list>
<!--
"Filter" call-back functions to call back for piping the fetched data
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-MA 02110-1301 USA
+MA 02110-1301 USA
//-->
<admin-entry-meta-data>
<!--
This' type can again only be 'string' (remember why?).
//-->
<raw-userid-column-key name="" type="string" value="userid" />
+ <!--
+ Cache file to delete
+ //-->
+ <cache-file name="" type="string" value="some_foo" />
</admin-entry-meta-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-MA 02110-1301 USA
+MA 02110-1301 USA
//-->
<admin-list-data>
<!--
//-->
<where-select-from-list-entry type="string" table="dt" value="userid" condition="EQUALS" look-for="$userid" />
<!--
- How the next described column shall be logical linked to the above.
- //-->
- <where-condition type="string" condition="AND" />
- <!--
The second column to perform the WHERE statement on. NOT-EQUALS is an alias for '!='.
//-->
<where-select-from-list-entry type="string" table="dt" name="status" condition="NOT-EQUALS" look-for="CONFIRMED" />
</callback-extra-parameter-list>
</column-callback-list-entry>
</column-callback-list>
+ <!--
+ How the named column shall be logical linked to the above.
+ //-->
+ <where-condition type="string" name="status" condition="AND" />
</admin-list-data>
@author Roland Haeder <webmaster@mxchange.org>
@version 0.2.1-FINAL
@copyright (c) 2003 - 2009 by Roland Haeder
-@copyright (c) 2009 - 2011 by Mailer Developer Team
+@copyright (c) 2009 - 2012 by Mailer Developer Team
@license GNU GPL 2.0 or any newer version
@link http://mxchange.org
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
-MA 02110-1301 USA
+MA 02110-1301 USA
//-->
--- /dev/null
+ul#footernav {
+ list-style-type: none;
+ margin: 0px;
+ padding: 5px;
+ background-color: #eeeeff;
+ border: 1px solid #000000;
+ height: 23px;
+ width: 680px;
+ text-align: right;
+}
+
+ul#footernav li {
+ float: right;
+ margin: 2px 2px 2px 4px;
+}
+
+ul#tabnav {
+ list-style-type: none;
+ margin: 0px;
+ padding-left: 30px;
+ padding-bottom: 24px;
+ z-index: 0;
+}
+
+ul#tabnav li {
+ float: left;
+ height: 21px;
+ background-color: #eeeeff;
+ margin: 2px 2px 0px 2px;
+ border-top: 1px solid #000000;
+ border-left: 1px solid #000000;
+ border-right: 1px solid #000000;
+ z-index: 1;
+}
+
+ul#tabnav a {
+ z-index: 1;
+}
+
+ul#tabnav li.tab_enabled a:link, ul#tabnav li.tab_enabled a:visited {
+ display: block;
+ color: #2e51a9;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_disabled a:link, ul#tabnav li.tab_disabled a:visited {
+ display: block;
+ color: #e0e0e0;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_enabled a:hover, ul#tabnav li.tab_active {
+ background-color: #ddddee;
+ color: #0a2d85;
+}
+
+ul#tabnav a:hover {
+ padding: 4px 4px 3px 4px;
+ border-bottom: 1px solid #000000;
+}
+
+ul#tabnav li.tab_active {
+ padding-bottom: 0px;
+ border-bottom: 0px none;
+}
+
+.tabnav_disabled, .tabnav_disabled:visited {
+ cursor: default;
+ height: 7px;
+ background-color: #aaaaaa;
+ color: #e0e0e0;
+}
+
+.ajax_error, .ajax_warning {
+ z-index: 200;
+ min-height: 10px;
+ overflow: visible;
+ padding: 5px;
+ display: none;
+ position: absolute;
+ top: 100px;
+ left: 26%;
+}
+
+.ajax_error {
+ background-color: #990000;
+}
+
+.ajax_warning {
+ background-color: #999900;
+}
+
+.ajax_error_title, .ajax_warning_title {
+ border: 1px solid #ffffff;
+ padding: 3px;
+ color: #ffffff;
+ float: left;
+ width: 461px;
+}
+
+.ajax_error_title {
+ background-color: #bb0000;
+}
+
+.ajax_warning_title {
+ background-color: #bbbb00;
+}
+
+.ajax_error_close, .ajax_warning_close {
+ border: 1px solid #ffffff;
+ float: right;
+ width: 10px;
+ z-index: 200;
+ min-height: 10x;
+ margin-left: 5px;
+ padding: 3px;
+ color: #ffffff;
+ text-align: center;
+}
+
+.ajax_error_close {
+ background-color: #bb0000;
+}
+
+.ajax_warning_close {
+ background-color: #bbbb00;
+}
+
+.ajax_error_content, .ajax_warning_content {
+ width: 470px;
+ border: 1px solid #ffffff;
+ margin-top: 5px;
+ color: #ffffff;
+ padding: 10px;
+}
+
+.field_changed {
+ border: 5px groove #bbbb00;
+}
+
+.field_changed:hover {
+ border: 5px groove #ffff00;
+}
+
+.field_failed {
+ border: 5px groove #bb0000;
+}
+
+.field_failed:hover {
+ border: 5px groove #ff0000;
+}
input, textarea, select, option {
color: #000000;
- background-color: #ffffff;
border: 1px solid #000000;
text-decoration: none;
}
-ul,ol {
+fieldset {
+ border: 1px solid #000000;
+ margin-top: 10px;
+ padding: 10px;
+}
+
+fieldset:hover, input:hover, select:hover, option:hover, textarea:hover {
+ border-color: #000080;
+}
+
+input:hover, select:hover, option:hover, textarea:hover {
+ color: #000080;
+}
+
+legend {
+ font-weight: bold;
+ color: #000000;
+ background-color: transparent;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+ul, ol {
margin-top: 0px;
margin-bottom: 0px;
}
margin: 5px;
}
+.bug_table {
+ background-color: #ffffff;
+ margin: 0px;
+ max-width: 100%;
+ min-width: 400px;
+ overflow: auto
+ color: #000000;
+}
+
.form_submitmenu {
min-width: 500px;
max-width: 90%;
height: 20px;
}
-.form_field {
- border: solid 1px #000000;
- background-color: #eeeeff;
-}
-
.admin_alpha {
text-align: center;
height: 40px;
background-color: #ffffff;
}
-.table_header {
+.table_header, .bug_table_header {
text-align: center;
color: #000000;
vertical-align: middle;
color: #ffffff;
}
+.disabled:hover {
+ background-color: #aaaaaa;
+ color: #ffffff;
+}
+
.mini_select {
border: solid 1px #000000;
background-color: #eeeeff;
background-color: #ffffff;
margin-top: 2px;
width: 150px;
- border: solid 1px #000000;
height: 14px;
}
span.show_timings_column {
+ border: solid 1px #000000;
display: inline-block;
}
.good {
color: #00aa00;
}
+
+.table_row {
+ text-align: left;
+ clear: both;
+ margin: 0px;
+ padding: 0px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ height: 28px;
+}
+
+.table_row label {
+ float: left;
+ width: 45%;
+}
+
+.form_field {
+ border: solid 1px #000000;
+ background-color: #eeeeff;
+}
+
+.field_note {
+ float: left;
+ text-align: left;
+ font-style: italic;
+}
-.install_main {
- color: #000000;
- background-color: #FFFFFF;
+.install_content {
+ background-color: #ffffff;
text-decoration: none;
+ border: 1px solid #000000;
+ padding: 5px;
+ width: 670px;
+ z-index: 20;
+}
+
+.install_main_ajax {
+ padding-bottom: 6px;
}
.install_header {
color: #000000;
- background-color: #EEEEFF;
+ background-color: #eeeeff;
font-size: 20px;
text-decoration: underline;
height: 30px;
- vertical-align: middle;
padding-top: 5px;
padding-bottom: 5px;
+ margin-bottom: 5px;
}
.install_fatalcontent {
text-align: left;
- background-color: #FFFFFF;
+ background-color: #ffffff;
+}
+
+.install_title {
+ padding-top: 5px;
+ padding-bottom: 10px;
+ font-size: 16px;
+ font-weight: bold;
+ color: #000000;
}
.install_error, .install_finished {
padding-bottom: 10px;
}
+.install_footer {
+ padding-bottom: 10px;
+}
+
.install_right {
text-align: right;
padding-right: 5px;
}
+
+.install_menu_ajax {
+ width: 700px;
+}
+
+.install_content_container {
+ height: 420px;
+ width: 700px;
+ z-index: 10;
+ overflow: hidden;
+ padding-bottom: 10px;
+}
+
+.install_tab {
+}
+
+.table_row label.install_label {
+ float: left;
+ width: 30%;
+}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
//
--- /dev/null
+ul#footernav {
+ list-style-type: none;
+ margin: 0px;
+ padding: 5px;
+ background-color: #ddeedd;
+ border: 1px solid #009900;
+ height: 23px;
+ width: 680px;
+ text-align: right;
+}
+
+ul#footernav li {
+ float: right;
+ margin: 2px 2px 2px 4px;
+}
+
+ul#tabnav {
+ list-style-type: none;
+ margin: 0px;
+ padding-left: 30px;
+ padding-bottom: 24px;
+ z-index: 0;
+}
+
+ul#tabnav li {
+ float: left;
+ height: 21px;
+ background-color: #ddeedd;
+ margin: 2px 2px 0px 2px;
+ border-top: 1px solid #009900;
+ border-left: 1px solid #009900;
+ border-right: 1px solid #009900;
+ z-index: 1;
+}
+
+ul#tabnav a {
+ z-index: 1;
+}
+
+ul#tabnav li.tab_enabled a:link, ul#tabnav li.tab_enabled a:visited {
+ display: block;
+ color: #2e51a9;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_disabled a:link, ul#tabnav li.tab_disabled a:visited {
+ display: block;
+ color: #e0e0e0;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_enabled a:hover, ul#tabnav li.tab_active {
+ background-color: #ccddcc;
+ color: #000099;
+}
+
+ul#tabnav a:hover {
+ padding: 4px 4px 3px 4px;
+ border-bottom: 1px solid #000099;
+}
+
+ul#tabnav li.tab_active {
+ padding-bottom: 0px;
+ border-bottom: 0px none;
+}
+
+.tabnav_disabled, .tabnav_disabled:visited {
+ cursor: default;
+ height: 7px;
+ background-color: #aaaaaa;
+ color: #e0e0e0;
+}
+
+.ajax_error, .ajax_warning {
+ z-index: 200;
+ min-height: 10px;
+ overflow: visible;
+ padding: 5px;
+ display: none;
+ position: absolute;
+ top: 100px;
+ left: 26%;
+}
+
+.ajax_error {
+ background-color: #990000;
+}
+
+.ajax_warning {
+ background-color: #999900;
+}
+
+.ajax_error_title, .ajax_warning_title {
+ border: 1px solid #ffffff;
+ padding: 3px;
+ color: #ffffff;
+ float: left;
+ width: 461px;
+}
+
+.ajax_error_title {
+ background-color: #bb0000;
+}
+
+.ajax_warning_title {
+ background-color: #bbbb00;
+}
+
+.ajax_error_close, .ajax_warning_close {
+ border: 1px solid #ffffff;
+ float: right;
+ width: 10px;
+ z-index: 200;
+ min-height: 10x;
+ margin-left: 5px;
+ padding: 3px;
+ color: #ffffff;
+ text-align: center;
+}
+
+.ajax_error_close {
+ background-color: #bb0000;
+}
+
+.ajax_warning_close {
+ background-color: #bbbb00;
+}
+
+.ajax_error_message {
+}
+
+.ajax_error_content, .ajax_warning_content {
+ width: 470px;
+ border: 1px solid #ffffff;
+ margin-top: 5px;
+ color: #ffffff;
+ padding: 10px;
+}
+
+.field_changed {
+ border: 5px groove #bbbb00;
+}
+
+.field_changed:hover {
+ border: 5px groove #ffff00;
+}
+
+.field_failed {
+ border: 5px groove #bb0000;
+}
+
+.field_failed:hover {
+ border: 5px groove #ff0000;
+}
font-family: Verdana, Arial, Geneva, Helvetica, sans-serif;
font-size: 12px;
letter-spacing: 1px;
- scrollbar-base-color: #E9E4AE;
- scrollbar-face-color: #CDEFCD;
- scrollbar-highlight-color: #eeffee;
- scrollbar-shadow-color: #CDEFCD;
- scrollbar-3dlight-color: #dddddd;
- scrollbar-arrow-color: #000000;
- scrollbar-track-color: #ccEFcc;
- scrollbar-darkshadow-color: #999999;
+
margin: 0px;
margin-left: 0px;
margin-right: 0px;
text-decoration: none;
}
+fieldset {
+ border: 1px solid #009900;
+ margin-top: 10px;
+ padding: 10px;
+}
+
+legend {
+ font-weight: bold;
+ color: #009900;
+ background-color: transparent;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
input:hover, textarea:hover {
border-color: #00dd44;
- color: #007700;
+ color: #006600;
+}
+
+fieldset:hover {
+ border-color: #00dd44;
}
input.form_delete:hover {
color: #00aa44;
border-color: #009900;
cursor: pointer;
+ background-color: #eeffee;
}
.form_delete {
font-size: 12px;
}
-.form_submit {
- background-color: #eeffee;
-}
-
.banner {
background-color: #eeffee;
width: 488px;
}
.form_select {
- border: groove 1px #009900;
- background-color: #eeffee;
}
.description_header, .message {
margin: 5px;
}
+.bug_table {
+ background-color: #eeffee;
+ margin: 0px;
+ max-width: 100%;
+ min-width: 400px;
+ overflow: auto
+ color: #000000;
+}
+
.form_submitmenu {
min-width: 500px;
max-width: 90%;
height: 20px;
}
-.form_field {
- border: groove 1px #009900;
-}
-
.normal {
border-style: groove;
}
background-color: #ddeedd;
}
-.table_header {
+.table_header, .bug_table_header {
text-align: center;
color: #009900;
vertical-align: middle;
.disabled {
border-style: groove;
background-color: #aaaaaa;
- color: #ff9900;
+ color: #e0e0e0;
+ cursor: default;
+}
+
+.disabled:hover {
+ background-color: #aaaaaa;
+ color: #e0e0e0;
}
.mini_select {
background-color: #eeffee;
margin-top: 2px;
width: 150px;
- border: solid 1px #009900;
height: 14px;
font-size: 10px;
}
span.show_timings_column {
display: inline-block;
+ border: solid 1px #009900;
}
li.show_timings_column {
.good {
color: #00aa00;
}
+
+.table_row {
+ text-align: left;
+ clear: both;
+ margin: 0px;
+ padding: 0px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ height: 28px;
+}
+
+.table_row label {
+ float: left;
+ width: 45%;
+}
+
+.form_field {
+ border: groove 1px #009900;
+}
+
+.field_note {
+ float: left;
+ text-align: left;
+ font-style: italic;
+}
-.install_main {
- background-color: #DDEEDD;
+.install_content {
+ background-color: #ddeedd;
text-decoration: none;
+ border: 1px solid #009900;
+ padding: 5px;
+ width: 670px;
+ z-index: 20;
+}
+
+.install_main_ajax {
+ padding-bottom: 6px;
}
.install_header {
color: #009900;
- background-color: #CCDDCC;
+ background-color: #ddeedd;
font-size: 20px;
text-decoration: underline;
height: 30px;
padding-top: 5px;
padding-bottom: 5px;
+ margin-bottom: 5px;
}
.install_fatalcontent {
text-align: left;
- background-color: #DDEEDD;
+ background-color: #ddeedd;
}
.install_error {
font-size: 20px;
- color: #AA0000;
+ color: #aa0000;
}
.install_finished {
font-size: 20px;
- color: #00AA00;
+ color: #00aa00;
}
.install_welcome {
font-size: 16px;
}
+.install_title {
+ padding-top: 5px;
+ padding-bottom: 10px;
+ font-size: 16px;
+ font-weight: bold;
+ color: #009900;
+}
+
.install_footer {
padding-bottom: 10px;
}
padding-right: 5px;
}
-.install_menu {
+.install_menu_ajax {
+ width: 700px;
+}
+
+.install_content_container {
+ height: 420px;
+ width: 700px;
+ z-index: 10;
+ overflow: hidden;
+ padding-bottom: 10px;
+}
+
+.install_tab {
+}
+
+.table_row label.install_label {
float: left;
- width: 120px;
- border: 1px solid #ff0000;
+ width: 30%;
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
//
--- /dev/null
+ul#footernav {
+ list-style-type: none;
+ margin: 0px;
+ padding: 5px;
+ background-color: #ffffcc;
+ border: 1px solid #880000;
+ height: 23px;
+ width: 680px;
+ text-align: right;
+}
+
+ul#footernav li {
+ float: right;
+ margin: 2px 2px 2px 4px;
+}
+
+ul#tabnav {
+ list-style-type: none;
+ margin: 0px;
+ padding-left: 30px;
+ padding-bottom: 24px;
+ z-index: 0;
+}
+
+ul#tabnav li {
+ float: left;
+ height: 21px;
+ background-color: #ffffcc;
+ margin: 2px 2px 0px 2px;
+ border-top: 1px solid #880000;
+ border-left: 1px solid #880000;
+ border-right: 1px solid #880000;
+ z-index: 1;
+}
+
+ul#tabnav a {
+ z-index: 1;
+}
+
+ul#tabnav li.tab_enabled a:link, ul#tabnav li.tab_enabled a:visited {
+ display: block;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_disabled a:link, ul#tabnav li.tab_disabled a:visited {
+ display: block;
+ color: #e0e0e0;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_enabled a:hover, ul#tabnav li.tab_active {
+ background-color: #cccc99;
+ color: #550000;
+}
+
+ul#tabnav a:hover {
+ padding: 4px 4px 3px 4px;
+ border-bottom: 1px solid #880000;
+}
+
+ul#tabnav li.tab_active {
+ padding-bottom: 0px;
+ border-bottom: 0px none;
+}
+
+.tabnav_disabled, .tabnav_disabled:visited {
+ cursor: default;
+ height: 7px;
+ background-color: #aaaaaa;
+ color: #e0e0e0;
+}
+
+.ajax_error, .ajax_warning {
+ z-index: 200;
+ min-height: 10px;
+ overflow: visible;
+ padding: 5px;
+ display: none;
+ position: absolute;
+ top: 100px;
+ left: 26%;
+}
+
+.ajax_error {
+ background-color: #990000;
+}
+
+.ajax_warning {
+ background-color: #999900;
+}
+
+.ajax_error_title, .ajax_warning_title {
+ border: 1px solid #ffffff;
+ padding: 3px;
+ color: #ffffff;
+ float: left;
+ width: 461px;
+}
+
+.ajax_error_title {
+ background-color: #bb0000;
+}
+
+.ajax_warning_title {
+ background-color: #bbbb00;
+}
+
+.ajax_error_close, .ajax_warning_close {
+ border: 1px solid #ffffff;
+ float: right;
+ width: 10px;
+ z-index: 200;
+ min-height: 10x;
+ margin-left: 5px;
+ padding: 3px;
+ color: #ffffff;
+ text-align: center;
+}
+
+.ajax_error_close {
+ background-color: #bb0000;
+}
+
+.ajax_warning_close {
+ background-color: #bbbb00;
+}
+
+.ajax_error_message {
+}
+
+.ajax_error_content, .ajax_warning_content {
+ width: 470px;
+ border: 1px solid #ffffff;
+ margin-top: 5px;
+ color: #ffffff;
+ padding: 10px;
+}
+
+.field_changed {
+ border: 5px groove #bbbb00;
+}
+
+.field_changed:hover {
+ border: 5px groove #ffff00;
+}
+
+.field_failed {
+ border: 5px groove #bb0000;
+}
+
+.field_failed:hover {
+ border: 5px groove #ff0000;
+}
background-color: transparent;
}
-input,textarea,select,option {
+input, textarea, select, option {
color: #880000;
- background-color: #ffffcc;
+ background-color: #eeeebb;
border: 1px solid #880000;
text-decoration: none;
}
+fieldset {
+ border: 1px solid #880000;
+ margin-top: 10px;
+ padding: 10px;
+}
+
+fieldset:hover, input:hover, select:hover, option:hover, textarea:hover {
+ border-color: #550000;
+}
+
+input:hover, select:hover, option:hover, textarea:hover {
+ background-color: #cccc99;
+ color: #550000;
+}
+
ul,ol {
margin-top: 0px;
margin-bottom: 0px;
padding: 5px;
}
-.form_reset {
- border: groove 1px #880000;
- color: #880000;
- cursor: pointer;
-}
-
-.form_submit {
- color: #880000;
- border-color: #880000;
- cursor: pointer;
-}
-
-.form_delete {
- border-style: groove;
- color: #880000;
- border-color: #880000;
+.form_reset, .form_submit, .form_delete {
cursor: pointer;
}
}
.form_submit {
- background-color: #ffffcc;
+ background-color: #eeeebb;
}
.banner {
.form_select {
border: solid 1px #880000;
- background-color: #ddddaa;
+ background-color: #eeeebb;
}
.description_header, .message {
- background-color: #ddddaa;
+ background-color: #cccc99;
color: #880000;
text-align: center;
}
.admin_menu {
- background-color: #ddddaa;
+ background-color: #cccc99;
color: #880000;
width: 230px;
height: 25px;
margin: 5px;
}
+.bug_table {
+ background-color: #ffffcc;
+ margin: 0px;
+ max-width: 100%;
+ min-width: 400px;
+ overflow: auto
+ color: #880000;
+}
+
.form_submitmenu {
min-width: 500px;
max-width: 90%;
text-align: center;
color: #880000;
vertical-align: middle;
- background-color: #ddddaa;
+ background-color: #cccc99;
height: 60px;
}
height: 20px;
}
-.form_field {
- border: solid 1px #880000;
- background-color: #ddddaa;
-}
-
.normal {
border-style: groove;
}
background-color: #ffffcc;
}
-.table_header {
+.table_header, .bug_table_header {
text-align: center;
color: #880000;
vertical-align: middle;
- background-color: #ddddaa;
+ background-color: #cccc99;
padding-bottom: 5px;
padding-top: 5px;
}
.guest_login_header {
color: #880000;
vertical-align: middle;
- background-color: #ddddaa;
+ background-color: #cccc99;
}
.guest_menu, .member_menu {
}
.guest_menu_title, .member_menu_title {
- background-color: #ddddaa;
+ background-color: #cccc99;
color: #880000;
height: 25px;
width: 200px;
}
.media_header {
- background-color: #ddddaa;
+ background-color: #cccc99;
text-align: center;
color: #880000;
height: 26px;
}
.admin_sep_footer {
- background-color: #ddddaa;
+ background-color: #cccc99;
font-size: 1px;
}
.admin_sep_footer2 {
- background-color: #ddddaa;
+ background-color: #cccc99;
font-size: 1px;
}
.member_refbanner, .member_update, .admin_delete_link {
- background-color: #ddddaa;
+ background-color: #cccc99;
}
.table_footer {
- background-color: #ddddaa;
+ background-color: #cccc99;
text-align: center;
padding: 5px;
}
.admin_task_header {
- background-color: #ddddaa;
+ background-color: #cccc99;
color: #880000;
vertical-align: middle;
font-size: 18px;
}
.menu_blur:hover {
- background-color: #ddddaa;
+ background-color: #cccc99;
}
.admin_alpha {
border-style: groove;
background-color: #aaaaaa;
color: #ffffcc;
+ cursor: default;
+}
+
+.disabled:hover {
+ background-color: #aaaaaa;
+ color: #ffffcc;
}
.mini_select {
border: solid 1px #880000;
- background-color: #ddddaa;
+ background-color: #cccc99;
font-size: 10px;
}
ul.show_timings_block {
border: solid 1px #880000;
- background-color: #ddddaa;
+ background-color: #cccc99;
font-size: 10px;
width: 645px;
height: 20px;
background-color: #ffffcc;
margin-top: 2px;
width: 150px;
- border: solid 1px #880000;
height: 14px;
}
span.show_timings_column {
+ border: solid 1px #880000;
display: inline-block;
}
.login_failure_header {
text-align: center;
- background-color: #ddddaa;
+ background-color: #cccc99;
font-weight: bold;
}
.good {
color: #00aa00;
}
+
+.table_row {
+ text-align: left;
+ clear: both;
+ margin: 0px;
+ padding: 0px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ height: 28px;
+}
+
+.table_row label {
+ float: left;
+ width: 45%;
+}
+
+.form_field {
+ border: solid 1px #880000;
+ background-color: #eeeebb;
+}
+
+.field_note {
+ float: left;
+ text-align: left;
+ font-style: italic;
+}
-.install_main {
+.install_content {
color: #880000;
- background-color: #FFFFCC;
+ background-color: #ffffcc;
text-decoration: none;
+ border: 1px solid #880000;
+ padding: 5px;
+ width: 670px;
+ z-index: 20;
+}
+
+.install_main_ajax {
+ padding-bottom: 6px;
}
.install_header {
color: #880000;
- background-color: #DDDDAA;
- width: 400px;
+ background-color: #cccc99;
height: 30px;
font-size: 20px;
text-decoration: underline;
padding-top: 5px;
padding-bottom: 5px;
+ margin-bottom: 5px;
}
-.install_fatalcontent {
- text-align: left;
- background-color: #FFFFCC;
+.install_error {
+ font-size: 20px;
+ color: #aa0000;
}
-.install_error, .install_finished {
- font-size: 20px;
+.install_title {
+ padding-top: 5px;
+ padding-bottom: 10px;
+ font-size: 16px;
+ font-weight: bold;
color: #880000;
}
-.install_welcome {
- color: #880000;
- padding-top: 5px;
+.install_footer {
padding-bottom: 10px;
}
text-align: right;
padding-right: 5px;
}
+
+.install_menu_ajax {
+ width: 700px;
+}
+
+.install_content_container {
+ height: 420px;
+ width: 700px;
+ z-index: 10;
+ overflow: hidden;
+ padding-bottom: 10px;
+}
+
+.install_tab {
+}
+
+.table_row label.install_label {
+ float: left;
+ width: 30%;
+}
.admin_task_title {
text-align: center;
height: 23px;
- background-color: #ddddaa;
+ background-color: #cccc99;
color: #880000;
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
//
-Deny from all
\ No newline at end of file
--- /dev/null
+ul#footernav {
+ list-style-type: none;
+ margin: 0px;
+ padding: 5px;
+ background-color: #ddeedd;
+ border: 1px solid #009900;
+ height: 23px;
+ width: 680px;
+ text-align: right;
+}
+
+ul#footernav li {
+ float: right;
+ margin: 2px 2px 2px 4px;
+}
+
+ul#tabnav {
+ list-style-type: none;
+ margin: 0px;
+ padding-left: 30px;
+ padding-bottom: 24px;
+ z-index: 0;
+}
+
+ul#tabnav li {
+ float: left;
+ height: 21px;
+ background-color: #ddeedd;
+ margin: 2px 2px 0px 2px;
+ border-top: 1px solid #009900;
+ border-left: 1px solid #009900;
+ border-right: 1px solid #009900;
+ z-index: 1;
+}
+
+ul#tabnav a {
+ z-index: 1;
+}
+
+ul#tabnav li.tab_enabled a:link, ul#tabnav li.tab_enabled a:visited {
+ display: block;
+ color: #2e51a9;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_disabled a:link, ul#tabnav li.tab_disabled a:visited {
+ display: block;
+ color: #e0e0e0;
+ border-bottom: 0px none;
+ padding: 4px;
+ height: 13px;
+}
+
+ul#tabnav li.tab_enabled a:hover, ul#tabnav li.tab_active {
+ background-color: #ccddcc;
+ color: #000099;
+}
+
+ul#tabnav a:hover {
+ padding: 4px 4px 3px 4px;
+ border-bottom: 1px solid #000099;
+}
+
+ul#tabnav li.tab_active {
+ padding-bottom: 0px;
+ border-bottom: 0px none;
+}
+
+.tabnav_disabled, .tabnav_disabled:visited {
+ cursor: default;
+ height: 7px;
+ background-color: #aaaaaa;
+ color: #e0e0e0;
+}
+
+.ajax_error, .ajax_warning {
+ z-index: 200;
+ min-height: 10px;
+ overflow: visible;
+ padding: 5px;
+ display: none;
+ position: absolute;
+ top: 100px;
+ left: 26%;
+}
+
+.ajax_error {
+ background-color: #990000;
+}
+
+.ajax_warning {
+ background-color: #999900;
+}
+
+.ajax_error_title, .ajax_warning_title {
+ border: 1px solid #ffffff;
+ padding: 3px;
+ color: #ffffff;
+ float: left;
+ width: 461px;
+}
+
+.ajax_error_title {
+ background-color: #bb0000;
+}
+
+.ajax_warning_title {
+ background-color: #bbbb00;
+}
+
+.ajax_error_close, .ajax_warning_close {
+ border: 1px solid #ffffff;
+ float: right;
+ width: 10px;
+ z-index: 200;
+ min-height: 10x;
+ margin-left: 5px;
+ padding: 3px;
+ color: #ffffff;
+ text-align: center;
+}
+
+.ajax_error_close {
+ background-color: #bb0000;
+}
+
+.ajax_warning_close {
+ background-color: #bbbb00;
+}
+
+.ajax_error_message {
+}
+
+.ajax_error_content, .ajax_warning_content {
+ width: 470px;
+ border: 1px solid #ffffff;
+ margin-top: 5px;
+ color: #ffffff;
+ padding: 10px;
+}
+
+.field_changed {
+ border: 5px groove #bbbb00;
+}
+
+.field_changed:hover {
+ border: 5px groove #ffff00;
+}
+
+.field_failed {
+ border: 5px groove #bb0000;
+}
+
+.field_failed:hover {
+ border: 5px groove #ff0000;
+}
body {
- background-color : #ddeedd;
- color : #000000;
- font-family : Verdana, Arial, Geneva, Helvetica, sans-serif;
- font-size : 14px;
-
- scrollbar-base-color : #E9E4AE;
- scrollbar-face-color : #CDEFCD;
- scrollbar-highlight-color : #F4F9BE;
- scrollbar-shadow-color : #CDEFCD;
- scrollbar-3dlight-color : #DDDDDD;
- scrollbar-arrow-color : #000000;
- scrollbar-track-color : #CCEFCC;
- scrollbar-darkshadow-color : #999999;
-
- margin : 0px;
- margin-left : 0px;
- margin-right : 0px;
- margin-top : 0px;
- margin-bottom : 0px;
+ background-color: #ddeedd;
+ color: #000000;
+ font-family: Verdana, Arial, Geneva, Helvetica, sans-serif;
+ font-size: 12px;
+ letter-spacing: 1px;
+
+ margin: 0px;
+ margin-left: 0px;
+ margin-right: 0px;
+ margin-top: 0px;
+ margin-bottom: 0px;
}
table {
- table-layout : auto;
- border-spacing : 0px;
- overflow : auto;
+ table-layout: auto;
+ border-spacing: 0px;
+ overflow: auto;
}
A {
- font-style : normal;
- font-family : Verdana, Arial, Geneva, Helvetica, sans-serif;
- font-size : 14px;
+ font-style: normal;
text-decoration : none;
}
A:link {
- color : #2e51a9;
+ color: #2e51a9;
}
A:visited {
- color : #2e51a9;
+ color: #2e51a9;
}
A:active {
- color : #2e51a9;
- background-color : transparent;
+ color: #2e51a9;
+ background-color: transparent;
}
A:hover {
- background-color : transparent;
+ background-color: transparent;
}
input, textarea, select, option {
- color : #2e51a9;
- background-color : #EEFFEE;
- border-color : #BBBBBB;
- text-decoration : none;
+ color: #2e51a9;
+ background-color: #eeffee;
+ border: 1px solid #009900;
+ text-decoration: none;
+}
+
+fieldset {
+ border: 1px solid #009900;
+ margin-top: 10px;
+ padding: 10px;
+}
+
+legend {
+ font-weight: bold;
+ color: #009900;
+ background-color: transparent;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+input:hover, textarea:hover, select:hover, option:hover {
+ color: #0a2d85;
+ background-color: #ccddcc;
+ border-color: #005500;
+}
+
+fieldset:hover {
+ border-color: #00dd44;
+}
+
+input.form_delete:hover {
+ background-color: #770044;
+ color: #aabbaa;
}
ul, ol {
}
.form_reset {
- border : groove 1px #000000;
- color : #0000AA;
+ border: groove 1px #009900;
+ color: #0000AA;
}
.form_submit {
- color : #0000AA;
- border-color : #000000;
+ color: #0000aa;
+ border: 1px groove #009900;
+ cursor: pointer;
+ background-color: #eeffee;
}
.form_delete {
- border-style : groove 1px #000000;
- color : #881111;
+ border-style: groove 1px #009900;
+ color: #881111;
}
-.form_submit {
- background-color : #ddeedd;
+.banner {
+ background-color: #ddeedd;
+ width: 488px;
}
-.banner {
- background-color : #ddeedd;
- width : 488px;
+.disabled {
+ border-style: groove;
+ background-color: #aaaaaa;
+ color: #e0e0e0;
+ cursor: default;
+}
+
+.disabled:hover {
+ background-color: #aaaaaa;
+ color: #e0e0e0;
}
.fatal_error {
- background-color : #ddeedd;
- color : #eedddd;
- font-size : 11px;
+ background-color: #ddeedd;
+ color: #eedddd;
+ font-size: 11px;
}
.form_select {
- border : solid 1px;
- border-color : #000000;
- background-color : #EEFFEE;
+ border: solid 1px #009900;
+ background-color: #EEFFEE;
}
.admin.register, .description_header {
- background-color : #ddeedd;
- color : #000000;
+ background-color: #ddeedd;
+ color: #000000;
}
.code {
}
.member_data {
- background-color : #ddeedd;
- color : #000000;
- height : 20px;
-}
-
-.form_field {
- border : solid 1px;
- border-color : #000000;
+ background-color: #ddeedd;
+ color: #000000;
+ height: 20px;
}
.normal {
background-color : #DDEEDD;
}
-.table_header {
- color : #000000;
- vertical-align : middle;
- background-color : #DDEEDD;
- padding-bottom : 5px;
- padding-top : 5px;
+.table_header, .bug_table_header {
+ color: #000000;
+ vertical-align: middle;
+ background-color: #DDEEDD;
+ padding-bottom: 5px;
+ padding-top: 5px;
}
.guest_login_header {
- color : #000000;
- vertical-align : middle;
- background-color : #DDEEDD;
+ color: #000000;
+ vertical-align: middle;
+ background-color: #DDEEDD;
}
.guest_menu {
}
.media_left {
- font-size : 14px;
+ font-size : 12px;
width : 200px;
}
.media_right {
color : #000000;
font-weight : bold;
- font-size : 14px;
+ font-size : 12px;
width : 70px;
}
.table_footer {
padding: 5px;
+ margin-top: 5px;
text-align: center;
background-color: #DDEEDD;
}
.you_are_here {
white-space : nowrap;
- font-size : 14px;
+ font-size : 12px;
}
.tiny { font-size : 10px; }
.good {
color: #00aa00;
}
+
+.table_row {
+ text-align: left;
+ clear: both;
+ margin: 0px;
+ padding: 0px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ height: 28px;
+}
+
+.table_row label {
+ float: left;
+ width: 45%;
+}
+
+.form_field {
+ border: groove 1px #009900;
+}
+
+.field_note {
+ float: left;
+ text-align: left;
+ font-style: italic;
+}
-.install_main {
+.install_content {
color: #000000;
- background-color: #FFFFFF;
+ background-color: #ddeedd;
text-decoration: none;
+ border: 1px solid #009900;
+ padding: 5px;
+ width: 670px;
+ z-index: 20;
+}
+
+.install_main_ajax {
+ padding-bottom: 6px;
}
.install_header {
color: #000000;
- background-color: #EEEEFF;
+ background-color: #bbccbb;
font-size: 20px;
text-decoration: underline;
+ text-align: center;
heigth: 30px;
- vertical-align: middle;
padding-top: 5px;
padding-bottom: 5px;
+ margin-bottom: 5px;
}
-.install_fatalcontent {
- text-align: left;
- background-color: #FFFFFF;
-}
-
-.install_error,.install_finished {
+.install_error {
font-size: 20px;
- color: #000000;
+ color: #aa0000;
}
-.install_welcome {
- color: #000000;
+.install_title {
padding-top: 5px;
padding-bottom: 10px;
+ font-size: 16px;
+ font-weight: bold;
+ color: #009900;
+}
+
+.install_footer {
+ padding-bottom: 10px;
+}
+
+.install_right {
+ text-align: right;
+ padding-right: 5px;
+}
+
+.install_menu_ajax {
+ width: 700px;
+}
+
+.install_content_container {
+ height: 420px;
+ width: 700px;
+ z-index: 10;
+ overflow: hidden;
+ padding-bottom: 10px;
+}
+
+.install_tab {
+}
+
+.table_row label.install_label {
+ float: left;
+ width: 30%;
}
-.admin_pagenav {
- text-align : center;
- height : 20px;
- vertical-align : middle;
-}
+// @DEPRECATED
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
//
--- /dev/null
+
+.ajax_error_message {
+}
+
+.ajax_error_content, .ajax_warning_content {
+ width: 470px;
+ border: 1px solid #ffffff;
+ margin-top: 5px;
+ color: #ffffff;
+ padding: 10px;
+}
align : center;
}
-.table_header {
- background-color : #69b2ff;
- color : #FFFFFF;
- text-align : center;
- align : center;
- height : 25px;
- font-size : 14px;
+.table_header, .bug_table_header {
+ background-color: #69b2ff;
+ color: #FFFFFF;
+ text-align: center;
+ align: center;
+ height: 25px;
+ font-size: 14px;
padding-bottom: 5px;
padding-top: 5px;
}
-.install_main {
+.install_content {
color: #000000;
background-color: #FFFFFF;
text-decoration: none;
color: #000000;
}
-.install_welcome {
- color: #000000;
+.install_title {
padding-top: 5px;
padding-bottom: 10px;
+ font-size: 16px;
+ font-weight: bold;
+ color: #000000;
+}
+
+.table_row label.install_label {
+ float: left;
+ width: 30%;
}
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
//
color : #000000;
}
-.table_header {
+.table_header, .bug_table_header {
background-color : #EEEEFF;
color : #000000;
text-align : center;
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- die();
+ exit();
} // END - if
//
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
require('inc/libs/security_functions.php');
// Init start time
-$GLOBALS['startTime'] = microtime(true);
+$GLOBALS['__start_time'] = microtime(true);
// Set module
-$GLOBALS['__module'] = 'view';
-$GLOBALS['output_mode'] = -1;
+$GLOBALS['__module'] = 'view';
+$GLOBALS['__output_mode'] = -1;
// Load the required file(s)
require('inc/config-global.php');
}
// Shutdown
-shutdown();
+doShutdown();
// [EOF]
?>