├── .gitignore
├── img
├── 018.png
├── 028.png
├── 052.png
├── 131.png
├── google.png
├── facebook.png
├── twitter.png
├── waiting.gif
├── information.png
├── small-menu.png
├── wordpress.png
├── mid-greyscale.png
├── sprite_70x72.png
├── sprite_82x84.png
├── large-greyscale.png
├── small-fullcolour.png
├── small-greyscale.png
├── sprite_127x130.png
├── sprite_254x260.png
└── large-greyscale45.png
├── languages
└── eab.mo
├── css
├── eab-buddypress-my_events.min.css
├── eab-event-capabilities.min.css
├── eab-buddypress-my_events.css
├── smoothness
│ └── images
│ │ ├── ui-icons_222222_256x240.png
│ │ ├── ui-icons_2e83ff_256x240.png
│ │ ├── ui-icons_454545_256x240.png
│ │ ├── ui-icons_888888_256x240.png
│ │ ├── ui-icons_cd0a0a_256x240.png
│ │ ├── ui-bg_flat_0_aaaaaa_40x100.png
│ │ ├── ui-bg_flat_75_ffffff_40x100.png
│ │ ├── ui-bg_glass_55_fbf9ee_1x400.png
│ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ ├── ui-bg_glass_75_dadada_1x400.png
│ │ ├── ui-bg_glass_75_e6e6e6_1x400.png
│ │ ├── ui-bg_glass_95_fef1ec_1x400.png
│ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png
├── ui-lightness
│ └── images
│ │ ├── ui-icons_222222_256x240.png
│ │ ├── ui-icons_228ef1_256x240.png
│ │ ├── ui-icons_ef8c08_256x240.png
│ │ ├── ui-icons_ffd27a_256x240.png
│ │ ├── ui-icons_ffffff_256x240.png
│ │ ├── ui-bg_flat_10_000000_40x100.png
│ │ ├── ui-bg_glass_100_f6f6f6_1x400.png
│ │ ├── ui-bg_glass_100_fdf5ce_1x400.png
│ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png
│ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png
│ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png
│ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png
│ │ └── ui-bg_highlight-soft_100_eeeeee_1x100.png
├── eab-event-capabilities.css
├── upcoming_calendar_widget.min.css
├── upcoming_calendar_widget.css
├── jquery.countdown.min.css
├── eab-events-fpe.min.css
├── jquery.countdown.css
├── jquery.ui.timepicker.min.css
├── weekly-event-calendar.min.css
├── jquery.multiselect.min.css
├── eab-events-fpe.css
├── jquery.multiselect.css
├── weekly-event-calendar.css
└── jquery.ui.timepicker.css
├── lib
├── widgets
│ ├── Widget.class.php
│ ├── NetworkUpcoming_Widget.class.php
│ └── Attendees_Widget.class.php
├── plugins
│ ├── eab-times-local_timezones.php
│ ├── eab-import-facebook_events.php
│ ├── lib
│ │ └── Facebook
│ │ │ ├── FileUpload
│ │ │ └── FacebookVideo.php
│ │ │ ├── Exceptions
│ │ │ ├── FacebookSDKException.php
│ │ │ ├── FacebookOtherException.php
│ │ │ ├── FacebookClientException.php
│ │ │ ├── FacebookServerException.php
│ │ │ ├── FacebookThrottleException.php
│ │ │ ├── FacebookAuthorizationException.php
│ │ │ ├── FacebookAuthenticationException.php
│ │ │ └── FacebookResumableUploadException.php
│ │ │ ├── GraphNodes
│ │ │ ├── GraphList.php
│ │ │ ├── GraphObject.php
│ │ │ ├── GraphApplication.php
│ │ │ ├── GraphCoverPhoto.php
│ │ │ ├── GraphPicture.php
│ │ │ ├── Birthday.php
│ │ │ ├── GraphLocation.php
│ │ │ ├── GraphSessionInfo.php
│ │ │ ├── GraphObjectFactory.php
│ │ │ └── GraphAchievement.php
│ │ │ ├── HttpClients
│ │ │ ├── certs
│ │ │ │ └── DigiCertHighAssuranceEVRootCA.pem
│ │ │ ├── FacebookHttpClientInterface.php
│ │ │ ├── FacebookStream.php
│ │ │ └── FacebookStreamHttpClient.php
│ │ │ ├── Http
│ │ │ ├── RequestBodyInterface.php
│ │ │ └── RequestBodyUrlEncoded.php
│ │ │ ├── Url
│ │ │ └── UrlDetectionInterface.php
│ │ │ ├── Helpers
│ │ │ ├── FacebookJavaScriptHelper.php
│ │ │ ├── FacebookCanvasHelper.php
│ │ │ └── FacebookPageTabHelper.php
│ │ │ ├── PersistentData
│ │ │ ├── PersistentDataInterface.php
│ │ │ ├── FacebookMemoryPersistentDataHandler.php
│ │ │ ├── FacebookSessionPersistentDataHandler.php
│ │ │ └── PersistentDataFactory.php
│ │ │ ├── PseudoRandomString
│ │ │ ├── PseudoRandomStringGeneratorInterface.php
│ │ │ ├── RandomBytesPseudoRandomStringGenerator.php
│ │ │ ├── PseudoRandomStringGeneratorTrait.php
│ │ │ ├── McryptPseudoRandomStringGenerator.php
│ │ │ ├── OpenSslPseudoRandomStringGenerator.php
│ │ │ └── UrandomPseudoRandomStringGenerator.php
│ │ │ ├── polyfills.php
│ │ │ ├── autoload.php
│ │ │ └── FacebookApp.php
│ ├── eab-events-expire_past_events.php
│ ├── eab-events-all_events_default.php
│ ├── eab-events-expire_month_old_events.php
│ ├── eab-export-add_to_gcal.php
│ └── eab-events-recurrent_redirect.php
├── class_eab_scheduler.php
├── twitteroauth
│ └── LICENSE
├── class_eab_options.php
├── class-eab-activator.php
├── class_eab_error_reporter.php
└── class-eab-taxonomies.php
├── default-templates
├── default
│ ├── events.css
│ ├── archive-incsub_event.php
│ └── single-incsub_event.php
├── shortcode-single-default.php
├── shortcode-archive-default.php
├── shortcode-event_map-marker_body-default.php
├── shortcode-calendar-default.php
├── full-width
│ ├── archive-incsub_event.php
│ └── single-incsub_event.php
└── calendar
│ └── archive-incsub_event.php
├── js
├── eab-buddypress-group_events-fpe.js
├── eab-buddypress-group_events-fpe.min.js
├── eab-buddypress-limit_capacity-public.min.js
├── eab-buddypress-rsvp_close_period-public.min.js
├── eab-buddypress-rsvp_close_period-public.js
├── jquery.countdown-tr.min.js
├── eab-buddypress-limit_capacity-public.js
├── eab-buddypress-limit_capacity-admin.min.js
├── eab-buddypress-rsvp_close_period-admin.min.js
├── jquery.countdown-tr.js
├── eab-event-capabilities.min.js
├── eab-buddypress-limit_capacity-fpe.min.js
├── eab-buddypress-rsvp_close_period-fpe.min.js
├── eab-buddypress-limit_capacity-admin.js
├── eab-buddypress-rsvp_close_period-admin.js
├── eab-event-capabilities.js
├── eab-events-local_timezones.min.js
├── eab-buddypress-limit_capacity-fpe.js
├── eab-buddypress-rsvp_close_period-fpe.js
├── eab-event.min.js
├── event_countdown_flip.min.js
├── eab-event.js
├── editor.min.js
├── upcoming_calendar_widget.min.js
├── eab-rsvp_with_email.min.js
├── event_countdown_flip.js
├── upcoming_calendar_widget.js
├── eab-events-local_timezones.js
├── eab-rsvp_with_email.js
└── editor.js
├── phpunit.xml.dist
├── .travis.yml
├── tests
├── bootstrap.php
└── test-activate.php
├── dev-readme.txt
├── package.json
├── template-tags.php
├── wpml-config.xml
├── admin
└── class-eab-shortcodes-menu.php
└── dev-README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | releases
4 |
--------------------------------------------------------------------------------
/img/018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/018.png
--------------------------------------------------------------------------------
/img/028.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/028.png
--------------------------------------------------------------------------------
/img/052.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/052.png
--------------------------------------------------------------------------------
/img/131.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/131.png
--------------------------------------------------------------------------------
/img/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/google.png
--------------------------------------------------------------------------------
/img/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/facebook.png
--------------------------------------------------------------------------------
/img/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/twitter.png
--------------------------------------------------------------------------------
/img/waiting.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/waiting.gif
--------------------------------------------------------------------------------
/languages/eab.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/languages/eab.mo
--------------------------------------------------------------------------------
/img/information.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/information.png
--------------------------------------------------------------------------------
/img/small-menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/small-menu.png
--------------------------------------------------------------------------------
/img/wordpress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/wordpress.png
--------------------------------------------------------------------------------
/img/mid-greyscale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/mid-greyscale.png
--------------------------------------------------------------------------------
/img/sprite_70x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/sprite_70x72.png
--------------------------------------------------------------------------------
/img/sprite_82x84.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/sprite_82x84.png
--------------------------------------------------------------------------------
/img/large-greyscale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/large-greyscale.png
--------------------------------------------------------------------------------
/img/small-fullcolour.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/small-fullcolour.png
--------------------------------------------------------------------------------
/img/small-greyscale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/small-greyscale.png
--------------------------------------------------------------------------------
/img/sprite_127x130.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/sprite_127x130.png
--------------------------------------------------------------------------------
/img/sprite_254x260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/sprite_254x260.png
--------------------------------------------------------------------------------
/img/large-greyscale45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/img/large-greyscale45.png
--------------------------------------------------------------------------------
/css/eab-buddypress-my_events.min.css:
--------------------------------------------------------------------------------
1 | #eab-bp-my_events-wrapper{overflow:hidden}.eab-premium_event-unpaid_notice{color:#a00}
--------------------------------------------------------------------------------
/css/eab-event-capabilities.min.css:
--------------------------------------------------------------------------------
1 | .eab-events-capabilities-per_role{display:none}.eab-events-capabilities-capability_box{line-height:1.8em}
--------------------------------------------------------------------------------
/css/eab-buddypress-my_events.css:
--------------------------------------------------------------------------------
1 | #eab-bp-my_events-wrapper {
2 | overflow: hidden;
3 | }
4 | .eab-premium_event-unpaid_notice {
5 | color: #a00;
6 | }
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_222222_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-icons_222222_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_2e83ff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-icons_2e83ff_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_454545_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-icons_454545_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_888888_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-icons_888888_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_cd0a0a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-icons_cd0a0a_256x240.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-icons_222222_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-icons_222222_256x240.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-icons_228ef1_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-icons_228ef1_256x240.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-icons_ef8c08_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-icons_ffd27a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-icons_ffffff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-icons_ffffff_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/css/eab-event-capabilities.css:
--------------------------------------------------------------------------------
1 | .eab-events-capabilities-per_role {
2 | display: none;
3 | }
4 | .eab-events-capabilities-capability_box {
5 | line-height: 1.8em;
6 | }
7 |
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
--------------------------------------------------------------------------------
/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wpmudev/events-and-bookings/master/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
--------------------------------------------------------------------------------
/css/upcoming_calendar_widget.min.css:
--------------------------------------------------------------------------------
1 | .wpmudevevents-upcoming_calendar_widget-event{font-size:1.2em;text-decoration:none;margin-top:.8em}.wpmudevevents-upcoming_calendar_widget-event-info{display:block;font-size:.8em}
--------------------------------------------------------------------------------
/lib/widgets/Widget.class.php:
--------------------------------------------------------------------------------
1 | ">
2 |
get_title(); ?>
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/js/eab-buddypress-group_events-fpe.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | function append_meta_data (e, request) {
4 | request['eab_event-bp-group_event'] = $("#eab_event-bp-group_event").val();
5 | }
6 |
7 | $(document).bind('eab-events-fpe-save_request', append_meta_data);
8 |
9 | })(jQuery);
10 |
--------------------------------------------------------------------------------
/js/eab-buddypress-group_events-fpe.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){function b(b,c){c["eab_event-bp-group_event"]=a("#eab_event-bp-group_event").val()}a(document).bind("eab-events-fpe-save_request",b)}(jQuery);
--------------------------------------------------------------------------------
/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 | ./tests/
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/js/eab-buddypress-limit_capacity-public.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){a(function(){a('input[name="quantity"]').each(function(){var b=a(this),c=parseInt(b.attr("max"),10);if(!c)return!0;b.on("keyup",function(a){return!(parseInt(b.val(),10)>c&&(b.val(""),1))})})})}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-rsvp_close_period-public.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){a(function(){a('input[name="quantity"]').each(function(){var b=a(this),c=parseInt(b.attr("max"),10);if(!c)return!0;b.on("keyup",function(a){return!(parseInt(b.val(),10)>c&&(b.val(""),1))})})})}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-rsvp_close_period-public.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | $(function () {
4 | var $inputs = $('input[name="quantity"]');
5 | $inputs.each(function () {
6 | var $me = $(this);
7 | var max = parseInt($me.attr("max"), 10);
8 | if (!max) return true;
9 |
10 | $me.on('keyup', function (e) {
11 | var current = parseInt($me.val(), 10);
12 | if (current > max) {
13 | $me.val('');
14 | return false;
15 | }
16 | return true;
17 | });
18 | });
19 | });
20 |
21 | })(jQuery);
--------------------------------------------------------------------------------
/js/jquery.countdown-tr.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){a.countdown.regional.tr={labels:["Yıl","Ay","Hafta","Gün","Saat","Dakika","Saniye"],labels1:["Yıl","Ay","Hafta","Gün","Saat","Dakika","Saniye"],compactLabels:["y","a","h","g"],whichLabels:null,digits:["0","1","2","3","4","5","6","7","8","9"],timeSeparator:":",isRTL:!1},a.countdown.setDefaults(a.countdown.regional.tr)}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-limit_capacity-public.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | $(function () {
4 | var $inputs = $('input[name="quantity"]');
5 | $inputs.each(function () {
6 | var $me = $(this);
7 | var max = parseInt($me.attr("max"), 10);
8 | if (!max) return true;
9 |
10 | $me.on('keyup', function (e) {
11 | var current = parseInt($me.val(), 10);
12 | if (current > max) {
13 | $me.val('');
14 | return false;
15 | }
16 | return true;
17 | });
18 | });
19 | });
20 |
21 | })(jQuery);
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | notifications:
4 | email:
5 | on_success: never
6 | on_failure: change
7 |
8 | php:
9 | - 5.3
10 | - 5.6
11 |
12 | env:
13 | - WP_VERSION=latest WP_MULTISITE=0
14 | - WP_VERSION=3.3 WP_MULTISITE=0
15 | - WP_VERSION=3.3.1 WP_MULTISITE=0
16 |
17 | matrix:
18 | include:
19 | - php: 5.3
20 | env: WP_VERSION=latest WP_MULTISITE=1
21 |
22 | before_script:
23 | - bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
24 |
25 | script: phpunit
26 |
--------------------------------------------------------------------------------
/tests/bootstrap.php:
--------------------------------------------------------------------------------
1 | 0?c.attr("checked",!1):c.attr("checked",!0)}function c(){var b=a("#eab_event_capacity");return a("#eab_event_capacity-unlimited").is(":checked")?b.val(0):b.focus()}a(function(){a("#eab_event_capacity").change(b),a("#eab_event_capacity-unlimited").change(c)})}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-rsvp_close_period-admin.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){function b(){var b=a("#eab_event_close_period"),c=a("#eab_event_close_period-nolimit"),d=parseInt(b.val(),10);d=d||0,d>0?c.attr("checked",!1):c.attr("checked",!0)}function c(){var b=a("#eab_event_close_period");return a("#eab_event_close_period-nolimit").is(":checked")?b.val(0):b.focus()}a(function(){a("#eab_event_close_period").change(b),a("#eab_event_close_period-nolimit").change(c)})}(jQuery);
--------------------------------------------------------------------------------
/default-templates/shortcode-archive-default.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | get_title(); ?>
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/test-activate.php:
--------------------------------------------------------------------------------
1 | prefix . 'eab_bookings';
9 | $results = $wpdb->get_results( "DESCRIBE $table");
10 |
11 | $this->assertNotEmpty( $results );
12 |
13 | $table = $wpdb->prefix . 'eab_booking_meta';
14 | $results = $wpdb->get_results( "DESCRIBE $table");
15 |
16 | $this->assertNotEmpty( $results );
17 |
18 | $this->assertEquals( array(), get_option( 'event_default' ) );
19 | $this->assertTrue( get_option( 'eab_activation_redirect' ) );
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/css/jquery.countdown.min.css:
--------------------------------------------------------------------------------
1 | .countdown_rtl{direction:rtl}.countdown_holding span{background-color:#ccc}.countdown_row{clear:both;width:100%;padding:0 2px;text-align:center}.countdown_show1 .countdown_section{width:98%}.countdown_show2 .countdown_section{width:48%}.countdown_show3 .countdown_section{width:32.5%}.countdown_show4 .countdown_section{width:24.5%}.countdown_show5 .countdown_section{width:19.5%}.countdown_show6 .countdown_section{width:16.25%}.countdown_show7 .countdown_section{width:14%}.countdown_section{display:block;float:left;font-size:75%;text-align:center}.countdown_amount{font-size:200%}.countdown_descr{display:block;width:100%}
--------------------------------------------------------------------------------
/dev-readme.txt:
--------------------------------------------------------------------------------
1 | === Events ===
2 | Contributors: mohanjith
3 | Tags: events, booking
4 | Requires at least: 4.6
5 | Stable tag: trunk
6 | Tested up to: 4.9
7 |
8 | Allow your readers to register for events you organize
9 |
10 | == Description ==
11 |
12 | Allow your readers to register for events you organize
13 |
14 | * Please note we will be automatically changing WPMU DEV Google Maps Plugin Settings if installed *
15 |
16 | == ChangeLog ==
17 |
18 | = 1.0.2 =
19 |
20 | * Allow "No Start Time" and "No End Time" in front end event editor
21 |
22 | = 1.0.1 =
23 |
24 | * Initial release
25 |
26 | = 1.0.0 =
27 |
28 | * Initial release
29 |
--------------------------------------------------------------------------------
/js/jquery.countdown-tr.js:
--------------------------------------------------------------------------------
1 | /* http://keith-wood.name/countdown.html
2 | * Turkish initialisation for the jQuery countdown extension
3 | * Written by Bekir Ahmetoğlu (bekir@cerek.com) Aug 2008. */
4 | (function($) {
5 | $.countdown.regional['tr'] = {
6 | labels: ['Yıl', 'Ay', 'Hafta', 'Gün', 'Saat', 'Dakika', 'Saniye'],
7 | labels1: ['Yıl', 'Ay', 'Hafta', 'Gün', 'Saat', 'Dakika', 'Saniye'],
8 | compactLabels: ['y', 'a', 'h', 'g'],
9 | whichLabels: null,
10 | digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
11 | timeSeparator: ':', isRTL: false};
12 | $.countdown.setDefaults($.countdown.regional['tr']);
13 | })(jQuery);
14 |
--------------------------------------------------------------------------------
/default-templates/shortcode-event_map-marker_body-default.php:
--------------------------------------------------------------------------------
1 | ' . $events->get_excerpt_or_fallback($args['excerpt_length']) . '';
6 | ?>
7 |
12 |
13 |
--------------------------------------------------------------------------------
/js/eab-event-capabilities.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){function b(){var b=a("#eab-event-capabilities-switch_hub").val();if(b){var c=a("#eab-events-capabilities-editor-"+b);c.length&&(a(".eab-events-capabilities-per_role").hide(),c.show())}}function c(){a(".eab-events-capabilities-per_role input").attr("disabled",!0),a("#eab-event-capabilities-switch_hub").val("").attr("disabled",!0),a(".eab-events-capabilities-per_role").hide()}a(function(){a("#eab-event-capabilities-switch_hub").change(b),b(),a("#eab-event-capabilities-reset").click(c)})}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-limit_capacity-fpe.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){function b(b,c){c["eab-elc_capacity"]=a("#eab_event_capacity").val()}function c(){var b=a("#eab_event_capacity"),c=a("#eab_event_capacity-unlimited"),d=parseInt(b.val(),10);d=d||0,d>0?c.attr("checked",!1):c.attr("checked",!0)}function d(){var b=a("#eab_event_capacity");return a("#eab_event_capacity-unlimited").is(":checked")?b.val(0):b.focus()}a(document).bind("eab-events-fpe-save_request",b),a(function(){a("#eab_event_capacity").change(c),a("#eab_event_capacity-unlimited").change(d)})}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-rsvp_close_period-fpe.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){function b(b,c){c["eab-ecp_close_period"]=a("#eab_event_close_period").val()}function c(){var b=a("#eab_event_close_period"),c=a("#eab_event_close_period-nolimit"),d=parseInt(b.val(),10);d=d||0,d>0?c.attr("checked",!1):c.attr("checked",!0)}function d(){var b=a("#eab_event_close_period");return a("#eab_event_close_period-nolimit").is(":checked")?b.val(0):b.focus()}a(document).bind("eab-events-fpe-close_period_save_request",b),a(function(){a("#eab_event_close_period").change(c),a("#eab_event_close_period-nolimit").change(d)})}(jQuery);
--------------------------------------------------------------------------------
/css/eab-events-fpe.min.css:
--------------------------------------------------------------------------------
1 | #ui-datepicker-div{display:none}.eab-events-fpe-col_wrapper{overflow:hidden;margin:.4% 0}.eab-events-fpe-meta_box{width:47%;padding:.4%;float:left}#eab-events-fpe-status_type{float:right}#eab-events-fpe-meta_box-venue,#eab-events-fpe-rsvps{float:none;width:auto}#eab-events-fpe-rsvps{border:none}.eab-events-fpe-meta_box label{display:inline-block;width:10em}#eab-events-fpe-date_time label{width:6em}#eab-events-fpe-waiting_indicator{margin-left:1em;margin-right:1.5em}.hide_time_option{display:none}.eab_action_button{cursor:pointer}#eab-events-fpe-event_title{width:99%;font-size:2em}#eab-events-fpe-venue{width:99%}#eab-events-fpe-date_time-error,.eab-events-fpe-error{color:#a00}.eab-events-fpe-success{color:#060}.eab-events-pae-meta_box{width:47%}
--------------------------------------------------------------------------------
/js/eab-buddypress-limit_capacity-admin.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 |
4 | function capacity_change () {
5 | var $capacity = $("#eab_event_capacity");
6 | var $unlimited = $("#eab_event_capacity-unlimited");
7 | var cap = parseInt($capacity.val(), 10);
8 | cap = cap ? cap : 0;
9 |
10 | if (cap > 0) {
11 | $unlimited.attr("checked", false);
12 | } else {
13 | $unlimited.attr("checked", true);
14 | }
15 | }
16 |
17 | function unlimited_change () {
18 | var $capacity = $("#eab_event_capacity");
19 | var $unlimited = $("#eab_event_capacity-unlimited");
20 |
21 | if ($unlimited.is(":checked")) return $capacity.val(0);
22 | else return $capacity.focus();
23 | }
24 |
25 | $(function () {
26 | $("#eab_event_capacity").change(capacity_change);
27 | $("#eab_event_capacity-unlimited").change(unlimited_change);
28 | });
29 |
30 | })(jQuery);
31 |
--------------------------------------------------------------------------------
/js/eab-buddypress-rsvp_close_period-admin.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 |
4 | function close_period_change () {
5 | var $close_period = $("#eab_event_close_period");
6 | var $nolimit = $("#eab_event_close_period-nolimit");
7 | var cp = parseInt($close_period.val(), 10);
8 | cp = cp ? cp : 0;
9 |
10 | if (cp > 0) {
11 | $nolimit.attr("checked", false);
12 | } else {
13 | $nolimit.attr("checked", true);
14 | }
15 | }
16 |
17 | function nolimit_change () {
18 | var $close_period = $("#eab_event_close_period");
19 | var $nolimit = $("#eab_event_close_period-nolimit");
20 |
21 | if ($nolimit.is(":checked")) return $close_period.val(0);
22 | else return $close_period.focus();
23 | }
24 |
25 | $(function () {
26 | $("#eab_event_close_period").change(close_period_change);
27 | $("#eab_event_close_period-nolimit").change(nolimit_change);
28 | });
29 |
30 | })(jQuery);
31 |
--------------------------------------------------------------------------------
/js/eab-event-capabilities.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 |
4 | function switch_role () {
5 | var role = $("#eab-event-capabilities-switch_hub").val();
6 | if (!role) return;
7 |
8 | var $role = $("#eab-events-capabilities-editor-"+role);
9 | if (!$role.length) return;
10 |
11 | $(".eab-events-capabilities-per_role").hide();
12 | $role.show();
13 | }
14 |
15 | function reset_roles () {
16 | $(".eab-events-capabilities-per_role input").attr("disabled", true);
17 | $("#eab-event-capabilities-switch_hub")
18 | .val('')
19 | .attr("disabled", true)
20 | ;
21 | $(".eab-events-capabilities-per_role").hide();
22 | }
23 |
24 | // Init
25 | $(function () {
26 |
27 | $("#eab-event-capabilities-switch_hub").change(switch_role);
28 | switch_role();
29 |
30 | $("#eab-event-capabilities-reset").click(reset_roles);
31 |
32 | });
33 | })(jQuery);
34 |
--------------------------------------------------------------------------------
/default-templates/shortcode-calendar-default.php:
--------------------------------------------------------------------------------
1 |
2 | set_class($args['class']);
7 | $renderer->set_footer($args['footer']);
8 | $renderer->set_scripts(!$args['override_scripts']);
9 | $renderer->set_navigation($args['navigation']);
10 | $renderer->set_track($args['track']);
11 | $renderer->set_title_format($args['title_format']);
12 | $renderer->set_short_title_format($args['short_title_format']);
13 | $renderer->set_long_date_format($args['long_date_format']);
14 | $renderer->set_thumbnail($args);
15 | $renderer->set_excerpt($args);
16 |
17 | echo $renderer->get_month_calendar($args['date']);
18 | ?>
19 |
--------------------------------------------------------------------------------
/lib/plugins/eab-times-local_timezones.php:
--------------------------------------------------------------------------------
1 | _add_hooks();
17 | }
18 |
19 | private function _add_hooks () {
20 | add_action('eab-javascript-enqueue_scripts', array($this, 'include_scripts'));
21 | }
22 |
23 | public function include_scripts () {
24 | wp_enqueue_script('eab-events-local_timezones', EAB_PLUGIN_URL . "js/eab-events-local_timezones.js", array('jquery'), Eab_EventsHub::CURRENT_VERSION);
25 | }
26 | }
27 | Eab_Events_LocalTimezones::serve();
--------------------------------------------------------------------------------
/lib/plugins/eab-import-facebook_events.php:
--------------------------------------------------------------------------------
1 | = 0 )
12 | {
13 | require_once( dirname( __FILE__ ) . '/eab-import-facebook_events-main.php');
14 | }
15 | else
16 | {
17 | add_action( 'admin_notices', 'eab_show_php_notice' );
18 | function eab_show_php_notice() {
19 | ?>
20 |
21 |
Import: Facebook Events addon.', Eab_EventsHub::TEXT_DOMAIN ); ?>
22 |
23 | -1?(e=e.split("-0000"),dateValue=e[0]):dateValue=e;var g=new Date(Date.parse(dateValue));if(isNaN(g))return!1;f.each(function(){var c=a(this),d=c.text();if(c.is(".eab-date_format-time")&&""!=d){var e=g.toLocaleTimeString(b).split(" GMT")[0],f=e.split(":");if(f.length-1>1){var h=f[2].split(" ")[1];e=void 0==h?f[0]+":"+f[1]:f[0]+":"+f[1]+" "+h}c.text(e)}else if(c.hasClass(".eab-date_format-date")&&""!=d){var i=g.toLocaleDateString(b).split(" GMT")[0];c.text(i)}})})})}(jQuery);
--------------------------------------------------------------------------------
/js/eab-buddypress-limit_capacity-fpe.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | function append_meta_data (e, request) {
4 | request['eab-elc_capacity'] = $("#eab_event_capacity").val();
5 | }
6 |
7 | function capacity_change () {
8 | var $capacity = $("#eab_event_capacity");
9 | var $unlimited = $("#eab_event_capacity-unlimited");
10 | var cap = parseInt($capacity.val(), 10);
11 | cap = cap ? cap : 0;
12 |
13 | if (cap > 0) {
14 | $unlimited.attr("checked", false);
15 | } else {
16 | $unlimited.attr("checked", true);
17 | }
18 | }
19 |
20 | function unlimited_change () {
21 | var $capacity = $("#eab_event_capacity");
22 | var $unlimited = $("#eab_event_capacity-unlimited");
23 |
24 | if ($unlimited.is(":checked")) return $capacity.val(0);
25 | else return $capacity.focus();
26 | }
27 |
28 | $(document).bind('eab-events-fpe-save_request', append_meta_data);
29 | $(function () {
30 | $("#eab_event_capacity").change(capacity_change);
31 | $("#eab_event_capacity-unlimited").change(unlimited_change);
32 | });
33 |
34 | })(jQuery);
35 |
--------------------------------------------------------------------------------
/js/eab-buddypress-rsvp_close_period-fpe.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | function append_meta_data (e, request) {
4 | request['eab-ecp_close_period'] = $("#eab_event_close_period").val();
5 | }
6 |
7 | function close_period_change () {
8 | var $close_period = $("#eab_event_close_period");
9 | var $nolimit = $("#eab_event_close_period-nolimit");
10 | var cp = parseInt($close_period.val(), 10);
11 | cp = cp ? cp : 0;
12 |
13 | if (cp > 0) {
14 | $nolimit.attr("checked", false);
15 | } else {
16 | $nolimit.attr("checked", true);
17 | }
18 | }
19 |
20 | function nolimit_change () {
21 | var $close_period = $("#eab_event_close_period");
22 | var $nolimit = $("#eab_event_close_period-nolimit");
23 |
24 | if ($nolimit.is(":checked")) return $close_period.val(0);
25 | else return $close_period.focus();
26 | }
27 |
28 | $(document).bind('eab-events-fpe-close_period_save_request', append_meta_data);
29 | $(function () {
30 | $("#eab_event_close_period").change(close_period_change);
31 | $("#eab_event_close_period-nolimit").change(nolimit_change);
32 | });
33 |
34 | })(jQuery);
35 |
--------------------------------------------------------------------------------
/css/jquery.ui.timepicker.min.css:
--------------------------------------------------------------------------------
1 | .ui-timepicker-inline{display:inline}#ui-timepicker-div{padding:.2em}.ui-timepicker-table{display:inline-table;width:0}.ui-timepicker-table table{margin:.15em 0 0 0;border-collapse:collapse}.ui-timepicker-hours,.ui-timepicker-minutes{padding:.2em}.ui-timepicker-table .ui-timepicker-title{line-height:1.8em;text-align:center}.ui-timepicker-table td{padding:.1em;width:2.2em}.ui-timepicker-table th.periods{padding:.1em;width:2.2em}.ui-timepicker-table td span{display:block;padding:.2em .3em .2em .5em;width:1.2em;text-align:right;text-decoration:none}.ui-timepicker-table td a{display:block;padding:.2em .3em .2em .5em;width:1.2em;cursor:pointer;text-align:right;text-decoration:none}.ui-timepicker .ui-timepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-timepicker .ui-timepicker-buttonpane button{margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-timepicker .ui-timepicker-close{float:right}.ui-timepicker .ui-timepicker-now{float:left}.ui-timepicker .ui-timepicker-deselect{float:left}
--------------------------------------------------------------------------------
/lib/class_eab_scheduler.php:
--------------------------------------------------------------------------------
1 | _add_hooks();
15 | }
16 |
17 | private function _add_hooks () {
18 | add_action('eab_scheduled_jobs', array($this, 'archive_old_events'));
19 |
20 | if (!wp_next_scheduled('eab_scheduled_jobs')) {
21 | wp_schedule_event(eab_current_time(), 'hourly', 'eab_scheduled_jobs');
22 | }
23 | }
24 |
25 | /**
26 | * Sets status of old events to STATUS_ARCHIVED
27 | */
28 | function archive_old_events () {
29 | $time = eab_current_time();
30 | $events = Eab_CollectionFactory::get_old_events($time);
31 | foreach ($events as $event) {
32 | if ($event->get_last_end_timestamp() < $time) {
33 | if ($event->is_recurring()) continue;
34 | $event->set_status(Eab_EventModel::STATUS_ARCHIVED);
35 | do_action('eab-scheduler-event_archived', $event);
36 | }
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/twitteroauth/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 Abraham Williams - http://abrah.am - abraham@poseurte.ch
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/css/weekly-event-calendar.min.css:
--------------------------------------------------------------------------------
1 | #wpmudevevents-wrapper{padding:1em}.wpmudevevents-list{clear:both;padding:1em}.wpmudevevents-list table{width:100%;border-collapse:collapse}.wpmudevevents-list table th{width:12%;background:#333;color:#ddd;padding:.4em;cursor:default}.wpmudevevents-list table td{border:1px solid #ddd;height:60px}.wpmudevevents-list table td.today{background:#ddd}.wpmudevevents-list table td.now{background:#ddf}a.wpmudevevents-calendar-event{display:block;margin:.2em;padding:.1em .4em;background:#75ab24;color:#fff;text-decoration:none;border:1px solid #558b04;border-radius:5px}a.wpmudevevents-calendar-event:hover{background:#659b14;text-decoration:none}.wpmudevevents-calendar-event-info{display:none;position:absolute;padding:.4em;min-width:200px;background:#464646;margin-top:1em;border:1px solid #262626;border-radius:5px}.wpmudevevents-weekly-calendar-hours-mins{font-weight:700;font-size:.8em;text-align:center}.wpmudevevents-calendar-avatar,.wpmudevevents-calendar-thumbnail{float:left;width:80px;margin:5px}.wpmudevevents-calendar-author,.wpmudevevents-calendar-start,.wpmudevevents-calendar-venue{font-weight:700;font-size:larger;float:left;width:200px}.wpmudevevents-calendar-bio,.wpmudevevents-calendar-content{float:left;width:200px}
--------------------------------------------------------------------------------
/js/eab-event.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | jQuery(function(){jQuery(".hide-if-no-js").show(),jQuery("#wpmudevevents-rsvps-response").hide(),jQuery("#wpmudevevents-hide-rsvps").hide(),jQuery("#wpmudevevents-load-rsvps").click(function(){return jQuery("#wpmudevevents-rsvps-response").show(),jQuery("#wpmudevevents-hide-rsvps").show(),jQuery(this).hide(),""==jQuery("#wpmudevevents-rsvps-response").text()&&(jQuery("#wpmudevevents-rsvps-response").text("Loading..."),jQuery("#wpmudevevents-rsvps-response").load(jQuery("#wpmudevevents-load-rsvps").attr("href"))),!1}),jQuery("#wpmudevevents-hide-rsvps").click(function(){return jQuery("#wpmudevevents-rsvps-response").hide(),jQuery("#wpmudevevents-load-rsvps").show(),jQuery(this).hide(),""==jQuery("#wpmudevevents-rsvps-response").text()&&(jQuery("#wpmudevevents-rsvps-response").text("Loading..."),jQuery("#wpmudevevents-rsvps-response").load(jQuery("#wpmudevevents-load-rsvps").attr("href"))),!1}),jQuery(".eab-buy_tickets-target").hide(),jQuery(".eab-buy_tickets-trigger").show().click(function(){return jQuery(this).hide().parent().find(".eab-buy_tickets-target").show(),!1})});
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "events-and-bookings",
3 | "title": "Events and Bookings",
4 | "description": "Events gives you a flexible WordPress-based system for organizing parties, dinners, fundraisers - you name it.",
5 | "version": "1.9.9.1",
6 | "homepage": "http://premium.wpmudev.org/project/events-and-booking",
7 | "authors": [{
8 | "name": "S H Mohanjith"
9 | },
10 | {
11 | "name": "Ve Bailovity"
12 | },
13 | {
14 | "name": "Ignacio"
15 | },
16 | {
17 | "name": "Ashok Kumar Nath"
18 | }
19 | ],
20 | "contributors": [{
21 | "name": "Hoang Ngo"
22 | },
23 | {
24 | "name": "Hakan Evin"
25 | }
26 | ],
27 | "devDependencies": {
28 | "grunt": "^0.4.5",
29 | "grunt-autoprefixer": "^3.0.4",
30 | "grunt-clear": "^0.2.1",
31 | "grunt-contrib-clean": "^1.0.0",
32 | "grunt-contrib-compass": "^1.1.1",
33 | "grunt-contrib-compress": "^1.4.1",
34 | "grunt-contrib-copy": "^1.0.0",
35 | "grunt-contrib-cssmin": "^2.0.0",
36 | "grunt-contrib-rename": "0.0.3",
37 | "grunt-contrib-uglify": "^2.1.0",
38 | "grunt-wp-i18n": "^1.0.0",
39 | "load-grunt-tasks": "^3.5.2",
40 | "time-grunt": "^1.4.0"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/js/event_countdown_flip.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){a(document).on("eab-event_countdown-tick",function(b,c,d){if(!c.length)return!1;var e=c.find(".countdown_amount"),f=parseInt(c.attr("data-height"),10),g=parseInt(c.attr("data-size"),10);return!(!f||!g)&&(e.css({display:"inline-block",height:f,overflow:"hidden"}).each(function(){var b=a(this),c=parseInt(b.text(),10),e=parseInt(c/100,10),h=parseInt((c-100*e)/10,10),i=c-(100*e+10*h),j=e?3:2,k=Math.ceil(.5*(e+1)),l=Math.ceil(.5*(h+1)),m=Math.ceil(.5*(i+1)),n=(b.html("
"),b.find("span"));b.css({width:g*j}),n.css({float:"left",display:"inline-block",overflow:"hidden",background:"url("+d+") no-repeat",height:f,width:g}),e?n.filter(".eab_event_flip_hundreds").css({"background-position":e?(e+1)*g*-1-k+"px 0":"0 0"}):n.filter(".eab_event_flip_hundreds").remove(),n.filter(".eab_event_flip_tens").css({"background-position":(h+1)*g*-1-l+"px 0"}).end().filter(".eab_event_flip_ones").css({"background-position":(i+1)*g*-1-m+"px 0"}).end()}),!1)})}(jQuery);
--------------------------------------------------------------------------------
/css/jquery.multiselect.min.css:
--------------------------------------------------------------------------------
1 | .ui-multiselect{padding:2px 0 2px 4px;text-align:left}.ui-multiselect span.ui-icon{float:right}.ui-multiselect-single .ui-multiselect-checkboxes input{position:absolute!important;top:auto!important;left:-9999px}.ui-multiselect-single .ui-multiselect-checkboxes label{padding:5px!important}.ui-multiselect-header{margin-bottom:3px;padding:3px 0 3px 4px}.ui-multiselect-header ul{font-size:.9em}.ui-multiselect-header ul li{float:left;padding:0 10px 0 0}.ui-multiselect-header a{text-decoration:none}.ui-multiselect-header a:hover{text-decoration:underline}.ui-multiselect-header span.ui-icon{float:left}.ui-multiselect-header li.ui-multiselect-close{float:right;text-align:right;padding-right:0}.ui-multiselect-menu{display:none;padding:3px;position:absolute;z-index:10000}.ui-multiselect-checkboxes{position:relative;overflow-y:scroll}.ui-multiselect-checkboxes label{cursor:default;display:block;border:1px solid transparent;padding:3px 1px}.ui-multiselect-checkboxes label input{position:relative;top:1px}.ui-multiselect-checkboxes li{clear:both;font-size:.9em;padding-right:3px}.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label{text-align:center;font-weight:700;border-bottom:1px solid}.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a{display:block;padding:3px;margin:1px 0;text-decoration:none}* html .ui-multiselect-checkboxes label{border:none}
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/FileUpload/FacebookVideo.php:
--------------------------------------------------------------------------------
1 | '),a("#map_preview_container").unbind("agm_map_insert").bind("agm_map_insert",f)):(h.append(' '),a(document).off("agm_map_insert",".agm-editor .map_preview_container").on("agm_map_insert",".agm-editor .map_preview_container",f)),a("body").off("click","li.existing_map_item .add_map_item").on("click","li.existing_map_item .add_map_item",e),a("#add_map").hide())})}(jQuery);
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/HttpClients/certs/DigiCertHighAssuranceEVRootCA.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
3 | MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
4 | d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
5 | ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
6 | MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
7 | LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
8 | RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
9 | +9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
10 | PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
11 | xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
12 | Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
13 | hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
14 | EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
15 | MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
16 | FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
17 | nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
18 | eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
19 | hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
20 | Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
21 | vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
22 | +OkuE6N36B9K
23 | -----END CERTIFICATE-----
24 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/Http/RequestBodyInterface.php:
--------------------------------------------------------------------------------
1 | getField('id');
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/js/upcoming_calendar_widget.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){a(function(){a(document).bind("eab-cuw-render_complete",function(){a("table.eab-upcoming_calendar_widget").each(function(){var b=a(this);b.find("tbody a:not(.eab-upcoming_calendar_widget-navigation-link)").click(function(){var c=a(this),d=c.parents("td").find(".wdpmudevevents-upcoming_calendar_widget-info_wrapper");if(!d.length)return!1;var e=a("#wpmudevevents-upcoming_calendar_widget-shelf");return e.length&&e.remove(),b.after('
'),e=a("#wpmudevevents-upcoming_calendar_widget-shelf"),!!e.length&&(e.html(d.html()).slideDown("slow"),!1)})})}),a(document).on("click",".eab-upcoming_calendar_widget .eab-upcoming_calendar_widget-navigation-link:not(.eab-cuw-calendar_date)",function(){var b=a(this),c=b.parents("tr").find("input.eab-cuw-calendar_date").val(),d=b.is(".eab-navigation-prev")?"prev":"next",e=b.is(".eab-time_unit-year")?"year":"month",f=b.parents("[data-eab-widget_id]").attr("data-eab-widget_id"),g=a("#wpmudevevents-upcoming_calendar_widget-shelf");return g.length&&g.slideUp("slow"),b.parents("tr").find("a.eab-cuw-calendar_date").replaceWith(' '),a.post(_eab_data.ajax_url,{action:"eab_cuw_get_calendar",now:c,direction:d,unit:e,widget_id:parseInt(f,10)||0},function(c){b.parents("table").replaceWith(c),a(document).trigger("eab-cuw-render_complete")}),!1}),a(document).trigger("eab-cuw-render_complete")})}(jQuery);
--------------------------------------------------------------------------------
/css/jquery.multiselect.css:
--------------------------------------------------------------------------------
1 | .ui-multiselect { padding:2px 0 2px 4px; text-align:left }
2 | .ui-multiselect span.ui-icon { float:right }
3 | .ui-multiselect-single .ui-multiselect-checkboxes input { position:absolute !important; top: auto !important; left:-9999px; }
4 | .ui-multiselect-single .ui-multiselect-checkboxes label { padding:5px !important }
5 |
6 | .ui-multiselect-header { margin-bottom:3px; padding:3px 0 3px 4px }
7 | .ui-multiselect-header ul { font-size:0.9em }
8 | .ui-multiselect-header ul li { float:left; padding:0 10px 0 0 }
9 | .ui-multiselect-header a { text-decoration:none }
10 | .ui-multiselect-header a:hover { text-decoration:underline }
11 | .ui-multiselect-header span.ui-icon { float:left }
12 | .ui-multiselect-header li.ui-multiselect-close { float:right; text-align:right; padding-right:0 }
13 |
14 | .ui-multiselect-menu { display:none; padding:3px; position:absolute; z-index:10000 }
15 | .ui-multiselect-checkboxes { position:relative /* fixes bug in IE6/7 */; overflow-y:scroll }
16 | .ui-multiselect-checkboxes label { cursor:default; display:block; border:1px solid transparent; padding:3px 1px }
17 | .ui-multiselect-checkboxes label input { position:relative; top:1px }
18 | .ui-multiselect-checkboxes li { clear:both; font-size:0.9em; padding-right:3px }
19 | .ui-multiselect-checkboxes li.ui-multiselect-optgroup-label { text-align:center; font-weight:bold; border-bottom:1px solid }
20 | .ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a { display:block; padding:3px; margin:1px 0; text-decoration:none }
21 |
22 | /* remove label borders in IE6 because IE6 does not support transparency */
23 | * html .ui-multiselect-checkboxes label { border:none }
24 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/Helpers/FacebookJavaScriptHelper.php:
--------------------------------------------------------------------------------
1 | getRawSignedRequestFromCookie();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/js/eab-rsvp_with_email.min.js:
--------------------------------------------------------------------------------
1 | /*! Events and Bookings - v1.9.9-beta-1
2 | * http://premium.wpmudev.org/project/events-and-booking
3 | * Copyright (c) 2018; * Licensed GPLv2+ */
4 |
5 | !function(a){function b(b){b&&b.preventDefault&&b.preventDefault(),a("#eab-rsvps-rsvp_with_email-wrapper").length&&a("#eab-rsvps-rsvp_with_email-wrapper").remove();var d=a(this),e=d.text();d.parents(".wpmudevevents-buttons").append('
');var f=a("#eab-rsvps-rsvp_with_email-wrapper"),g=d.parents(".wpmudevevents-buttons").find('input:hidden[name="event_id"]').val();f.append(''+l10nRsvpWithEmail.email+' '),a(document).trigger("eab-api-email_rsvp-form_rendered"),a("#eab-rsvps-rsvp_with_email-trigger").click(function(){c(d.removeClass("active").attr("class"),g)})}function c(b,c){var e,f=a("#eab-rsvps-rsvp_with_email"),g=f.val();if(!g)return!1;e={action:"eab-rsvps-rsvp_with_email",email:g,location:location.href},a(".eab-additional-registration-field").each(function(){e[a(this).data("key")]=a(this).val()}),a.post(_eab_data.ajax_url,e,function(a){var e=0;try{e=parseInt(a.status,10)}catch(a){e=0}if(e<1)return f.closest("label").replaceWith(""+a.msg+" "),!1;d(b,c)},"json")}function d(b,c){a.post(_eab_data.ajax_url,{action:"eab_get_form",post_id:c},function(c){a("body").append(''+c+"
"),a("#eab-rsvps-rsvp_with_email-form").find("."+b).click()})}a(function(){a("a.wpmudevevents-yes-submit, a.wpmudevevents-maybe-submit, a.wpmudevevents-no-submit").click(b)})}(jQuery);
--------------------------------------------------------------------------------
/default-templates/full-width/archive-incsub_event.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
labels->not_found; ?>
12 |
13 |
14 |
15 |
16 |
17 |
21 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PersistentData/PersistentDataInterface.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
labels->not_found; ?>
12 |
13 |
14 |
15 |
16 |
17 |
21 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PseudoRandomString/PseudoRandomStringGeneratorInterface.php:
--------------------------------------------------------------------------------
1 | signedRequest ? $this->signedRequest->get('app_data') : null;
41 | }
42 |
43 | /**
44 | * Get raw signed request from POST.
45 | *
46 | * @return string|null
47 | */
48 | public function getRawSignedRequest()
49 | {
50 | return $this->getRawSignedRequestFromPost() ?: null;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/Http/RequestBodyUrlEncoded.php:
--------------------------------------------------------------------------------
1 | params = $params;
46 | }
47 |
48 | /**
49 | * @inheritdoc
50 | */
51 | public function getBody()
52 | {
53 | return http_build_query($this->params, null, '&');
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PersistentData/FacebookMemoryPersistentDataHandler.php:
--------------------------------------------------------------------------------
1 | sessionData[$key]) ? $this->sessionData[$key] : null;
44 | }
45 |
46 | /**
47 | * @inheritdoc
48 | */
49 | public function set($key, $value)
50 | {
51 | $this->sessionData[$key] = $value;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/css/jquery.ui.timepicker.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Timepicker stylesheet
3 | * Highly inspired from datepicker
4 | * FG - Nov 2010 - Web3R
5 | *
6 | * version 0.0.3 : Fixed some settings, more dynamic
7 | * version 0.0.4 : Removed width:100% on tables
8 | * version 0.1.1 : set width 0 on tables to fix an ie6 bug
9 | */
10 |
11 | .ui-timepicker-inline { display: inline; }
12 |
13 | #ui-timepicker-div { padding: 0.2em; }
14 | .ui-timepicker-table { display: inline-table; width: 0; }
15 | .ui-timepicker-table table { margin:0.15em 0 0 0; border-collapse: collapse; }
16 |
17 | .ui-timepicker-hours, .ui-timepicker-minutes { padding: 0.2em; }
18 |
19 | .ui-timepicker-table .ui-timepicker-title { line-height: 1.8em; text-align: center; }
20 | .ui-timepicker-table td { padding: 0.1em; width: 2.2em; }
21 | .ui-timepicker-table th.periods { padding: 0.1em; width: 2.2em; }
22 |
23 | /* span for disabled cells */
24 | .ui-timepicker-table td span {
25 | display:block;
26 | padding:0.2em 0.3em 0.2em 0.5em;
27 | width: 1.2em;
28 |
29 | text-align:right;
30 | text-decoration:none;
31 | }
32 | /* anchors for clickable cells */
33 | .ui-timepicker-table td a {
34 | display:block;
35 | padding:0.2em 0.3em 0.2em 0.5em;
36 | width: 1.2em;
37 | cursor: pointer;
38 | text-align:right;
39 | text-decoration:none;
40 | }
41 |
42 |
43 | /* buttons and button pane styling */
44 | .ui-timepicker .ui-timepicker-buttonpane {
45 | background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0;
46 | }
47 | .ui-timepicker .ui-timepicker-buttonpane button { margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
48 | /* The close button */
49 | .ui-timepicker .ui-timepicker-close { float: right }
50 |
51 | /* the now button */
52 | .ui-timepicker .ui-timepicker-now { float: left; }
53 |
54 | /* the deselect button */
55 | .ui-timepicker .ui-timepicker-deselect { float: left; }
56 |
57 |
58 |
--------------------------------------------------------------------------------
/default-templates/calendar/archive-incsub_event.php:
--------------------------------------------------------------------------------
1 | query_vars['event_year'] ) ? $wp_query->query_vars['event_year'] : date( 'Y', $now );
5 | $year = $year ? $year : date_i18n('Y'); // date_i18n uses current_time when called like this
6 | $month = isset( $wp_query->query_vars['event_monthnum'] ) ? $wp_query->query_vars['event_monthnum'] : date( 'm', $now );
7 | $month = $month ? $month : date_i18n('m');
8 | $time = strtotime("{$year}-{$month}-01");
9 |
10 | $events = defined('EAB_CALENDAR_ARCHIVE_TEMPLATE_USE_CUSTOM_QUERY') && EAB_CALENDAR_ARCHIVE_TEMPLATE_USE_CUSTOM_QUERY
11 | ? Eab_CollectionFactory::get_upcoming_events($time)
12 | : $wp_query->posts
13 | ;
14 |
15 | get_header( 'event' );
16 | ?>
17 |
18 |
19 |
23 |
24 | posts);
27 | if( apply_filters( 'eab_show_thumb_in_calendar_template', false, $wp_query->posts ) )
28 | {
29 | $renderer->set_thumbnail( array( 'with_thumbnail' => true ) );
30 | }
31 | echo $renderer->get_month_calendar($time);
32 | ?>
33 |
34 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/lib/class_eab_options.php:
--------------------------------------------------------------------------------
1 | _populate();
13 | }
14 |
15 | public static function get_instance () {
16 | if (!isset(self::$_instance)) self::$_instance = new Eab_Options;
17 | return self::$_instance;
18 | }
19 |
20 | /**
21 | * @return array
22 | */
23 | public function get_options () {
24 | return $this->_data;
25 | }
26 |
27 | public function get_default_options() {
28 | return array(
29 | 'currency' => 'USD',
30 | 'slug' => 'events',
31 | 'accept_payments' => 1,
32 | 'accept_api_logins' => 0,
33 | 'display_attendees' => 1,
34 | 'paypal_email' => '',
35 | 'paypal_sandbox' => 0,
36 | 'override_appearance_defaults' => 0,
37 | 'archive_template' => '',
38 | 'single_template' => ''
39 | );
40 | }
41 |
42 | /**
43 | * @param string $name Option name
44 | * @param mixed $default Optional default return value
45 | * @return mixed Option value, or $default
46 | */
47 | public function get_option ($name, $default=false) {
48 | return isset($this->_data[$name]) ? $this->_data[$name] : $default;
49 | }
50 |
51 | public function set_option ($name, $value) {
52 | $this->_data[$name] = $value;
53 | }
54 |
55 | /**
56 | * Sets and stores options.
57 | * @param array $values A hash of values to be stored.
58 | */
59 | public function set_options ($values) {
60 | if (!$values) return false;
61 | foreach ($values as $name => $value) {
62 | $this->set_option($name, $value);
63 | }
64 | $this->update();
65 | }
66 |
67 | public function update () {
68 | return update_option(self::OPTIONS_KEY, $this->_data);
69 | }
70 |
71 | private function _populate () {
72 | $this->_data = get_option(self::OPTIONS_KEY, $this->get_default_options() );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/polyfills.php:
--------------------------------------------------------------------------------
1 | archived events will be shown in archives, but visitors won't be able to RSVP. Expired events are removed from your archives.
13 | */
14 |
15 | class Eab_Events_ExpirePastEvents {
16 |
17 | private function __construct () {}
18 |
19 | public static function serve () {
20 | $me = new Eab_Events_ExpirePastEvents;
21 | $me->_add_hooks();
22 | }
23 |
24 | private function _add_hooks () {
25 | add_action('admin_notices', array($this, 'show_nags'));
26 | add_action('eab_scheduled_jobs', array($this, 'expire_archived_events'), 99);
27 | }
28 |
29 | function show_nags () {
30 | if (!class_exists('Eab_Events_ExpireMonthOldEvents')) return false;
31 | if (defined('EAB_EXPIRY_CLASS_NAG_RENDERED')) return false;
32 | echo '' .
33 | __("Conflict warning: You'll need to turn off one of the past events expiry add-ons.", Eab_EventsHub::TEXT_DOMAIN) .
34 | '
';
35 | define('EAB_EXPIRY_CLASS_NAG_RENDERED', true);
36 | }
37 |
38 | function expire_archived_events () {
39 | if (class_exists('Eab_Events_ExpireMonthOldEvents')) return false;
40 | $args = array();
41 | $collection = new Eab_ArchivedCollection($args);
42 | $events = $collection->to_collection();
43 | foreach ($events as $event) {
44 | $this->_expire_event($event);
45 | }
46 | }
47 |
48 | private function _expire_event ($event) {
49 | $event->set_status(Eab_EventModel::STATUS_EXPIRED);
50 | }
51 | }
52 |
53 | Eab_Events_ExpirePastEvents::serve();
54 |
--------------------------------------------------------------------------------
/wpml-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | agm_map_created
4 | eab_capacity
5 | eab_event-bp-group_event
6 | eab_events_mi
7 | eab_events_mi_price
8 | eab_event_recurrence_ends
9 | eab_event_recurrence_parts
10 | eab_event_recurrence_starts
11 | eab_event_recurring
12 | eab_public_announcement
13 | incsub_event_attending_count
14 | incsub_event_start
15 | incsub_event_end
16 | incsub_event_fee
17 | incsub_event_yes_count
18 | incsub_event_no_count
19 | incsub_event_maybe_count
20 | incsub_event_no_end
21 | incsub_event_no_start
22 | incsub_event_paid
23 | incsub_event_status
24 | incsub_event_venue
25 | _thumbnail_id
26 | _wp_attached_file
27 |
28 |
29 |
30 | incsub_event
31 |
32 |
33 | eab_events_category
34 |
35 |
--------------------------------------------------------------------------------
/js/event_countdown_flip.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | var cnt = 0;
4 |
5 | $(document).on('eab-event_countdown-tick', function (e, $me, sprite) {
6 | if (!$me.length) return false;
7 | var $amounts = $me.find(".countdown_amount"),
8 | height = parseInt($me.attr('data-height'), 10),
9 | size = parseInt($me.attr('data-size'), 10)
10 | ;
11 | if (!height || !size) return false;
12 |
13 | $amounts
14 | .css({
15 | 'display': 'inline-block',
16 | 'height': height,
17 | 'overflow': 'hidden'
18 | })
19 | .each(function () {
20 | var $amount = $(this),
21 | value = parseInt($amount.text(), 10),
22 | hundreds = parseInt(value / 100, 10),
23 | tens = parseInt((value - hundreds*100) / 10, 10),
24 | ones = value - (hundreds*100 + tens*10),
25 | length = !!hundreds ? 3 : 2,
26 | compensate_hundreds_width = Math.ceil(0.5 * (hundreds+1)),
27 | compensate_tens_width = Math.ceil(0.5 * (tens+1)),
28 | compensate_ones_width = Math.ceil(0.5 * (ones+1)),
29 | tmp = $amount.html("
"),
30 | $digits = $amount.find("span")
31 | ;
32 | $amount.css({
33 | 'width': size*length
34 | });
35 | $digits.css({
36 | 'float': 'left',
37 | 'display': 'inline-block',
38 | 'overflow': 'hidden',
39 | 'background': 'url(' + sprite + ') no-repeat',
40 | 'height': height,
41 | 'width': size
42 | });
43 | if (!!hundreds) {
44 | $digits.filter(".eab_event_flip_hundreds").css({
45 | 'background-position': (!!hundreds
46 | ? (((hundreds+1)*size*-1) -compensate_hundreds_width) + 'px 0'
47 | : '0 0'
48 | )
49 | });
50 | } else {
51 | $digits.filter(".eab_event_flip_hundreds").remove();
52 | }
53 | $digits
54 | .filter(".eab_event_flip_tens").css({
55 | 'background-position': (((tens+1)*size*-1) - compensate_tens_width) + 'px 0'
56 | }).end()
57 | .filter(".eab_event_flip_ones").css({
58 | 'background-position': (((ones+1)*size*-1) -compensate_ones_width) + 'px 0'
59 | }).end()
60 | ;
61 | })
62 | ;
63 | return false;
64 | });
65 |
66 | })(jQuery);
--------------------------------------------------------------------------------
/js/upcoming_calendar_widget.js:
--------------------------------------------------------------------------------
1 | (function ($) {
2 |
3 | $(function () {
4 | $(document).bind('eab-cuw-render_complete', function () {
5 | $("table.eab-upcoming_calendar_widget").each(function () {
6 | var $tbl = $(this);
7 | $tbl.find("tbody a:not(.eab-upcoming_calendar_widget-navigation-link)").click(function () {
8 | var $a = $(this);
9 | var $el = $a.parents('td').find(".wdpmudevevents-upcoming_calendar_widget-info_wrapper");
10 | if (!$el.length) return false;
11 |
12 | var $out = $("#wpmudevevents-upcoming_calendar_widget-shelf");
13 | if ($out.length) $out.remove();
14 | $tbl.after('
');
15 | $out = $("#wpmudevevents-upcoming_calendar_widget-shelf");
16 | if (!$out.length) return false;
17 |
18 | $out
19 | .html($el.html())
20 | .slideDown('slow')
21 | ;
22 |
23 | return false;
24 | });
25 | });
26 | });
27 | $(document).on("click", ".eab-upcoming_calendar_widget .eab-upcoming_calendar_widget-navigation-link:not(.eab-cuw-calendar_date)", function () {
28 | var $me = $(this);
29 | var now = $me.parents("tr").find("input.eab-cuw-calendar_date").val();
30 | var direction = $me.is(".eab-navigation-prev") ? "prev" : "next";
31 | var unit = $me.is(".eab-time_unit-year") ? "year" : "month";
32 | var widget_id = $me.parents('[data-eab-widget_id]').attr("data-eab-widget_id");
33 |
34 | // Start UI change
35 | var $out = $("#wpmudevevents-upcoming_calendar_widget-shelf");
36 | if ($out.length) $out.slideUp('slow');
37 | $me.parents("tr").find("a.eab-cuw-calendar_date").replaceWith(
38 | ' '
39 | );
40 |
41 | $.post(_eab_data.ajax_url, {
42 | "action": "eab_cuw_get_calendar",
43 | "now": now,
44 | "direction": direction,
45 | "unit": unit,
46 | "widget_id": parseInt(widget_id, 10) || 0
47 | }, function (data) {
48 | $me.parents("table").replaceWith(data);
49 | $(document).trigger('eab-cuw-render_complete');
50 | });
51 | return false;
52 | });
53 |
54 | // Init
55 | $(document).trigger('eab-cuw-render_complete');
56 | });
57 | })(jQuery);
58 |
--------------------------------------------------------------------------------
/lib/class-eab-activator.php:
--------------------------------------------------------------------------------
1 | charset ) ) {
24 | $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
25 | }
26 | if ( ! empty( $wpdb->collate ) ) {
27 | $charset_collate .= " COLLATE $wpdb->collate";
28 | }
29 |
30 | $sql_main = "CREATE TABLE IF NOT EXISTS " . Eab_EventsHub::tablename( Eab_EventsHub::BOOKING_TABLE ) . " (
31 | `id` BIGINT NOT NULL AUTO_INCREMENT,
32 | `event_id` BIGINT NOT NULL ,
33 | `user_id` BIGINT NOT NULL ,
34 | `timestamp` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ,
35 | `status` ENUM( 'paid', 'yes', 'maybe', 'no' ) NOT NULL DEFAULT 'no' ,
36 | PRIMARY KEY (`id`),
37 | UNIQUE KEY `event_id_2` (`event_id`,`user_id`),
38 | KEY `event_id` (`event_id`),
39 | KEY `user_id` (`user_id`),
40 | KEY `timestamp` (`timestamp`),
41 | KEY `status` (`status`)
42 | ) ENGINE = InnoDB {$charset_collate};";
43 |
44 | dbDelta( $sql_main );
45 |
46 | $sql_main = "CREATE TABLE IF NOT EXISTS " . Eab_EventsHub::tablename( Eab_EventsHub::BOOKING_META_TABLE ) . " (
47 | `id` BIGINT NOT NULL AUTO_INCREMENT,
48 | `booking_id` BIGINT NOT NULL ,
49 | `meta_key` VARCHAR(255) NOT NULL ,
50 | `meta_value` TEXT NOT NULL,
51 | PRIMARY KEY (`id`),
52 | KEY `booking_id` (`booking_id`),
53 | KEY `meta_key` (`meta_key`)
54 | ) ENGINE = InnoDB {$charset_collate};"; // MySQL strict mode fix, thanks @KJA!
55 | dbDelta( $sql_main );
56 |
57 |
58 | if ( ! get_option( 'event_default', false ) )
59 | add_option( 'event_default', array() );
60 | if ( ! get_option( 'eab_activation_redirect' ) )
61 | add_option( 'eab_activation_redirect', true );
62 | }
63 |
64 | }
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/GraphCoverPhoto.php:
--------------------------------------------------------------------------------
1 | getField('id');
41 | }
42 |
43 | /**
44 | * Returns the source of cover if it exists
45 | *
46 | * @return string|null
47 | */
48 | public function getSource()
49 | {
50 | return $this->getField('source');
51 | }
52 |
53 | /**
54 | * Returns the offset_x of cover if it exists
55 | *
56 | * @return int|null
57 | */
58 | public function getOffsetX()
59 | {
60 | return $this->getField('offset_x');
61 | }
62 |
63 | /**
64 | * Returns the offset_y of cover if it exists
65 | *
66 | * @return int|null
67 | */
68 | public function getOffsetY()
69 | {
70 | return $this->getField('offset_y');
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/GraphPicture.php:
--------------------------------------------------------------------------------
1 | getField('is_silhouette');
41 | }
42 |
43 | /**
44 | * Returns the url of user picture if it exists
45 | *
46 | * @return string|null
47 | */
48 | public function getUrl()
49 | {
50 | return $this->getField('url');
51 | }
52 |
53 | /**
54 | * Returns the width of user picture if it exists
55 | *
56 | * @return int|null
57 | */
58 | public function getWidth()
59 | {
60 | return $this->getField('width');
61 | }
62 |
63 | /**
64 | * Returns the height of user picture if it exists
65 | *
66 | * @return int|null
67 | */
68 | public function getHeight()
69 | {
70 | return $this->getField('height');
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PseudoRandomString/RandomBytesPseudoRandomStringGenerator.php:
--------------------------------------------------------------------------------
1 | validateLength($length);
56 |
57 | return $this->binToHex(random_bytes($length), $length);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PseudoRandomString/PseudoRandomStringGeneratorTrait.php:
--------------------------------------------------------------------------------
1 | -1 ){
20 | datetime = datetime.split( '-0000' );
21 | dateValue = datetime[0];
22 | }
23 | else{
24 | dateValue = datetime;
25 | }
26 |
27 | var date = new Date(Date.parse(dateValue));
28 | if (isNaN(date)) return false;
29 | $dts.each(function () {
30 | var $me = $(this),
31 | old = $me.text()
32 | ;
33 |
34 | if( $me.is(".eab-date_format-time") && old != '' )
35 | {
36 | var modified_time = date.toLocaleTimeString(locale).split( ' GMT' )[0];
37 | var splitted_time = modified_time.split( ':' );
38 | var count = splitted_time.length - 1;
39 | if( count > 1 )
40 | {
41 | var seconds = splitted_time[2].split( ' ' )[1];
42 | if( seconds == undefined )
43 | modified_time = splitted_time[0] + ':' + splitted_time[1];
44 | else
45 | modified_time = splitted_time[0] + ':' + splitted_time[1] + ' ' + seconds;
46 | }
47 | $me.text( modified_time );
48 | }
49 | else if( $me.hasClass(".eab-date_format-date") && old != '' )
50 | {
51 | var modified_date = date.toLocaleDateString(locale).split( ' GMT' )[0];
52 | $me.text( modified_date );
53 | }
54 |
55 | });
56 |
57 | });
58 | });
59 | })(jQuery);
--------------------------------------------------------------------------------
/js/eab-rsvp_with_email.js:
--------------------------------------------------------------------------------
1 | ;(function ($) {
2 |
3 | function create_interface (e) {
4 | if (e && e.preventDefault) e.preventDefault();
5 |
6 | if ($("#eab-rsvps-rsvp_with_email-wrapper").length) {
7 | $("#eab-rsvps-rsvp_with_email-wrapper").remove();
8 | }
9 | var $me = $(this),
10 | text = $me.text()
11 | ;
12 | $me.parents('.wpmudevevents-buttons').append('
');
13 | var $root = $("#eab-rsvps-rsvp_with_email-wrapper"),
14 | post_id = $me.parents(".wpmudevevents-buttons").find('input:hidden[name="event_id"]').val()
15 | ;
16 |
17 | $root.append(
18 | '' +
19 | l10nRsvpWithEmail.email +
20 | ' ' +
21 | ' ' +
22 | ' ' +
23 | ' ' +
24 | ' '
25 | );
26 |
27 | $(document).trigger("eab-api-email_rsvp-form_rendered");
28 |
29 | $("#eab-rsvps-rsvp_with_email-trigger").click(function () {
30 | do_submit($me.removeClass("active").attr("class"), post_id);
31 | });
32 | }
33 |
34 | function do_submit (selector, post_id) {
35 | var $email = $("#eab-rsvps-rsvp_with_email"),
36 | email = $email.val(),
37 | data
38 | ;
39 | if (!email) return false;
40 | data = {
41 | action: "eab-rsvps-rsvp_with_email",
42 | email: email,
43 | location: location.href
44 | };
45 | $('.eab-additional-registration-field').each( function() {
46 | data[$(this).data('key')] = $(this).val();
47 | });
48 | $.post(_eab_data.ajax_url, data, function (data) {
49 | var status = 0;
50 | try { status = parseInt(data.status, 10); } catch (e) { status = 0; }
51 | if (status < 1) { // ... handle error
52 | $email.closest("label").replaceWith('' + data.msg + ' ');
53 | return false;
54 | }
55 | do_rsvp(selector, post_id);
56 | }, 'json');
57 | }
58 |
59 | function do_rsvp (selector, post_id) {
60 | // Get form if all went well
61 | $.post(_eab_data.ajax_url, {
62 | "action": "eab_get_form",
63 | "post_id": post_id
64 | }, function (data) {
65 | $("body").append('' + data + '
');
66 | $("#eab-rsvps-rsvp_with_email-form").find("." + selector).click();
67 | });
68 | }
69 |
70 | $(function () {
71 | $(
72 | "a.wpmudevevents-yes-submit, " +
73 | "a.wpmudevevents-maybe-submit, " +
74 | "a.wpmudevevents-no-submit"
75 | ).click(create_interface);
76 | });
77 |
78 | })(jQuery);
79 |
--------------------------------------------------------------------------------
/admin/class-eab-shortcodes-menu.php:
--------------------------------------------------------------------------------
1 | set_icon_url( EAB_PLUGIN_URL . 'img/information.png' );
25 |
26 | $out = '';
27 | $count = 0;
28 | $half = (int)(count($help) / 2);
29 |
30 | $out .= '';
31 | foreach ($help as $shortcode) {
32 | $out .= '
' . $shortcode['title'] . ' ';
33 | $out .= '
';
34 | $out .= '
';
35 | $out .= '
' . __('Tag:', eab_domain() ) . ' [' . $shortcode['tag'] . ']';
36 | if (!empty($shortcode['note'])) $out .= '
' . $shortcode['note'] . '
';
37 | $out .= '
';
38 | if (!empty($shortcode['arguments'])) {
39 | $out .= '
' . __('Arguments:', eab_domain() ) . ' ';
40 | foreach ($shortcode['arguments'] as $argument => $data) {
41 | if (!empty($shortcode['advanced_arguments']) && !current_user_can('manage_options')) {
42 | if (in_array($argument, $shortcode['advanced_arguments'])) continue;
43 | }
44 | $type = !empty($data['type'])
45 | ? eab_call_template('util_shortcode_argument_type_string_info', $data['type'], $argument, $shortcode['tag'], $tips)
46 | : false
47 | ;
48 | $out .= "
{$argument} - {$data['help']} {$type}
";
49 | }
50 | $out .= '
';
51 | }
52 | $out .= '
';
53 | $count++;
54 | if ($count == $half) $out .= '
';
55 | }
56 | $out .= '
';
57 |
58 | echo '
59 |
' . __('Events Shortcodes', eab_domain() ) . '
60 |
';
61 | echo $out;
62 |
63 | echo '
';
64 | }
65 | }
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/Birthday.php:
--------------------------------------------------------------------------------
1 | hasYear = count($parts) === 3 || count($parts) === 1;
61 | $this->hasDate = count($parts) === 3 || count($parts) === 2;
62 |
63 | parent::__construct($date);
64 | }
65 |
66 | /**
67 | * Returns whether date object contains birth day and month
68 | *
69 | * @return bool
70 | */
71 | public function hasDate()
72 | {
73 | return $this->hasDate;
74 | }
75 |
76 | /**
77 | * Returns whether date object contains birth year
78 | *
79 | * @return bool
80 | */
81 | public function hasYear()
82 | {
83 | return $this->hasYear;
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/HttpClients/FacebookStream.php:
--------------------------------------------------------------------------------
1 | stream = stream_context_create($options);
54 | }
55 |
56 | /**
57 | * The response headers from the stream wrapper
58 | *
59 | * @return array
60 | */
61 | public function getResponseHeaders()
62 | {
63 | return $this->responseHeaders;
64 | }
65 |
66 | /**
67 | * Send a stream wrapped request
68 | *
69 | * @param string $url
70 | *
71 | * @return mixed
72 | */
73 | public function fileGetContents($url)
74 | {
75 | $rawResponse = file_get_contents($url, false, $this->stream);
76 | $this->responseHeaders = $http_response_header ?: [];
77 |
78 | return $rawResponse;
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PseudoRandomString/McryptPseudoRandomStringGenerator.php:
--------------------------------------------------------------------------------
1 | validateLength($length);
56 |
57 | $binaryString = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
58 |
59 | if ($binaryString === false) {
60 | throw new FacebookSDKException(
61 | static::ERROR_MESSAGE .
62 | 'mcrypt_create_iv() returned an error.'
63 | );
64 | }
65 |
66 | return $this->binToHex($binaryString, $length);
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PersistentData/FacebookSessionPersistentDataHandler.php:
--------------------------------------------------------------------------------
1 | sessionPrefix . $key])) {
63 | return $_SESSION[$this->sessionPrefix . $key];
64 | }
65 |
66 | return null;
67 | }
68 |
69 | /**
70 | * @inheritdoc
71 | */
72 | public function set($key, $value)
73 | {
74 | $_SESSION[$this->sessionPrefix . $key] = $value;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/lib/plugins/eab-events-all_events_default.php:
--------------------------------------------------------------------------------
1 | Note: this may take time and resources if you have a lot of events.
13 | */
14 |
15 | class Eab_Events_AllEventsDefault {
16 |
17 | private function __construct () {}
18 |
19 | public static function serve () {
20 | $me = new Eab_Events_AllEventsDefault;
21 | $me->_add_hooks();
22 | }
23 |
24 | private function _add_hooks () {
25 | add_action('eab-query_rewrite-before_query_replacement', array($this, 'bind_replacements'), 10, 2);
26 | }
27 |
28 | function bind_replacements ($year, $month) {
29 | if (!$year) {
30 | add_filter('eab-collection-upcoming-start_timestamp', array($this, 'all_events_start'));
31 | add_filter('eab-collection-upcoming-end_timestamp', array($this, 'all_events_end'));
32 | add_action('eab-query_rewrite-after_query_replacement', array($this, 'unbind_all_replacements'));
33 | } else if (!$month) {
34 | add_filter('eab-collection-upcoming-start_timestamp', array($this, 'yearly_events_start'));
35 | add_filter('eab-collection-upcoming-end_timestamp', array($this, 'yearly_events_end'));
36 | add_action('eab-query_rewrite-after_query_replacement', array($this, 'unbind_yearly_replacements'));
37 | }
38 | }
39 |
40 | function all_events_start () { return '1971-01-01 00:01'; }
41 | function all_events_end () {
42 | return '2037-01-01 23:59';
43 | }
44 | function unbind_all_replacements () {
45 | remove_filter('eab-collection-upcoming-start_timestamp', array($this, 'all_events_start'));
46 | remove_filter('eab-collection-upcoming-end_timestamp', array($this, 'all_events_end'));
47 | }
48 |
49 | function yearly_events_start () {
50 | global $wp_query;
51 |
52 | return $wp_query->query_vars['event_year'] . '-01-01 00:01';
53 | }
54 |
55 | function yearly_events_end () {
56 | global $wp_query;
57 |
58 | return $wp_query->query_vars['event_year'] . '-12-31 23:59';
59 | }
60 |
61 | function unbind_yearly_replacements () {
62 | remove_filter('eab-collection-upcoming-start_timestamp', array($this, 'yearly_events_start'));
63 | remove_filter('eab-collection-upcoming-end_timestamp', array($this, 'yearly_events_end'));
64 | }
65 |
66 | }
67 |
68 | if (!is_admin()) Eab_Events_AllEventsDefault::serve();
69 |
--------------------------------------------------------------------------------
/lib/widgets/NetworkUpcoming_Widget.class.php:
--------------------------------------------------------------------------------
1 | __CLASS__,
8 | 'description' => __('Displays List of Upcoming Events from your entire network', $this->translation_domain),
9 | );
10 | parent::__construct(__CLASS__, __('Network Upcoming', $this->translation_domain), $widget_ops);
11 | }
12 |
13 | function form ($instance) {
14 | $title = isset( $instance['title'] ) ? esc_attr($instance['title']) : '';
15 | $limit = isset( $instance['limit'] ) ? esc_attr($instance['limit']) : '';
16 |
17 | $html .= '';
18 | $html .= '' . __('Title:', Eab_EventsHub::TEXT_DOMAIN) . ' ';
19 | $html .= ' ';
20 | $html .= '
';
21 |
22 | $html .= '';
23 | $html .= '' . __('Display only this many events:', Eab_EventsHub::TEXT_DOMAIN) . ' ';
24 | $html .= '';
25 | for ($i=1; $i<11; $i++) {
26 | $html .= '' . $i . ' ';
27 | }
28 | $html .= ' ';
29 | $html .= '
';
30 |
31 | echo $html;
32 | }
33 |
34 | function update ($new_instance, $old_instance) {
35 | $instance = $old_instance;
36 |
37 | $instance['title'] = isset( $new_instance['title'] ) ? strip_tags($new_instance['title']) : '';
38 | $instance['limit'] = isset( $new_instance['limit'] ) ? (int)$new_instance['limit'] : 0;
39 |
40 | return $instance;
41 | }
42 |
43 | function widget ($args, $instance) {
44 | extract($args);
45 | $title = apply_filters('widget_title', $instance['title']);
46 | $limit = isset( $instance['limit'] ) ? (int)$instance['limit'] : 0;
47 |
48 | $events = Eab_Network::get_upcoming_events($limit);
49 |
50 | echo $before_widget;
51 | if ($title) echo $before_title . $title . $after_title;
52 | if ($events) {
53 | echo '';
60 | } else {
61 | echo '' . __('No upcoming events on network', $this->translation_domain) . '
';
62 | }
63 | echo $after_widget;
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PersistentData/PersistentDataFactory.php:
--------------------------------------------------------------------------------
1 | archived events will be shown in archives, but visitors won't be able to RSVP. Expired events are removed from your archives.
13 | */
14 |
15 | class Eab_Events_ExpireMonthOldEvents {
16 |
17 | private function __construct () {}
18 |
19 | public static function serve () {
20 | $me = new Eab_Events_ExpireMonthOldEvents;
21 | $me->_add_hooks();
22 | }
23 |
24 | private function _add_hooks () {
25 | add_action('admin_notices', array($this, 'show_nags'));
26 | add_action('eab_scheduled_jobs', array($this, 'expire_archived_events'), 99);
27 | }
28 |
29 | function show_nags () {
30 | if (!class_exists('Eab_Events_ExpirePastEvents')) return false;
31 | if (defined('EAB_EXPIRY_CLASS_NAG_RENDERED')) return false;
32 | echo '' .
33 | __("Conflict warning: You'll need to turn off one of the past events expiry add-ons.", Eab_EventsHub::TEXT_DOMAIN) .
34 | '
';
35 | define('EAB_EXPIRY_CLASS_NAG_RENDERED', true);
36 | }
37 |
38 | function expire_archived_events () {
39 | if (class_exists('Eab_Events_ExpirePastEvents')) return false;
40 | $args = array();
41 | $collection = new Eab_LastMonthArchivedCollection(eab_current_time(), $args);
42 | $events = $collection->to_collection();
43 | foreach ($events as $event) {
44 | $event->set_status(Eab_EventModel::STATUS_EXPIRED);
45 | }
46 | }
47 | }
48 |
49 |
50 |
51 | /**
52 | * Month-old archived events
53 | */
54 | class Eab_LastMonthArchivedCollection extends Eab_TimedCollection {
55 |
56 | public function build_query_args ($args) {
57 | $time = $this->get_timestamp();
58 |
59 | $args = array_merge(
60 | $args,
61 | array(
62 | 'post_type' => 'incsub_event',
63 | 'suppress_filters' => false,
64 | 'posts_per_page' => EAB_OLD_EVENTS_EXPIRY_LIMIT,
65 | 'meta_query' => array(
66 | array(
67 | 'key' => 'incsub_event_status',
68 | 'value' => Eab_EventModel::STATUS_ARCHIVED,
69 | ),
70 | array(
71 | 'key' => 'incsub_event_end',
72 | 'value' => date("Y-m-01 00:00:01", $time),
73 | 'compare' => '<',
74 | 'type' => 'DATETIME'
75 | ),
76 | )
77 | )
78 | );
79 | return $args;
80 | }
81 | }
82 |
83 | Eab_Events_ExpireMonthOldEvents::serve();
84 |
--------------------------------------------------------------------------------
/lib/widgets/Attendees_Widget.class.php:
--------------------------------------------------------------------------------
1 | __('Display Attendees of an event', $this->translation_domain),
8 | );
9 | $control_ops = array(
10 | 'title' => __('Attendees', $this->translation_domain)
11 | );
12 |
13 | parent::__construct('incsub_event_attendees', __('Event Attendees', $this->translation_domain), $widget_ops, $control_ops);
14 | }
15 |
16 | function widget ($args, $instance) {
17 | global $wpdb, $current_site, $post, $wiki_tree;
18 |
19 | extract($args);
20 |
21 | if ( $post->post_type != 'incsub_event') {
22 | return;
23 | }
24 |
25 | $options = $instance;
26 | $event = new Eab_EventModel($post);
27 |
28 | $title = apply_filters('widget_title', empty($instance['title']) ? __('Attendees', $this->translation_domain) : $instance['title'], $instance, $this->id_base);
29 | ?>
30 | has_bookings()) { ?>
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | __('Attendees', $this->translation_domain),
54 | 'hierarchical' => 'yes',
55 | )
56 | );
57 | $instance['title'] = strip_tags($new_instance['title']);
58 |
59 | return $instance;
60 | }
61 |
62 | function form ($instance) {
63 | $instance = wp_parse_args( (array) $instance, array( 'title' => __('Attendees', $this->translation_domain)));
64 | $options = array('title' => strip_tags($instance['title']));
65 |
66 | ?>
67 |
68 |
69 | translation_domain); ?>:
70 |
71 |
72 |
73 |
74 | validateLength($length);
53 |
54 | $wasCryptographicallyStrong = false;
55 | $binaryString = openssl_random_pseudo_bytes($length, $wasCryptographicallyStrong);
56 |
57 | if ($binaryString === false) {
58 | throw new FacebookSDKException(static::ERROR_MESSAGE . 'openssl_random_pseudo_bytes() returned an unknown error.');
59 | }
60 |
61 | if ($wasCryptographicallyStrong !== true) {
62 | throw new FacebookSDKException(static::ERROR_MESSAGE . 'openssl_random_pseudo_bytes() returned a pseudo-random string but it was not cryptographically secure and cannot be used.');
63 | }
64 |
65 | return $this->binToHex($binaryString, $length);
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/dev-README.md:
--------------------------------------------------------------------------------
1 | # README
2 |
3 | *Similar structure as: Membership 2, Popup, Custom Sidebars, CoursePress*
4 |
5 | The **only** development branch for Events+ is `master`. This branch ultimately is responsible for creating the production branches that are finally published.
6 |
7 |
8 | **Remember:** `master` is the ONLY branch that should be edited and forked!
9 |
10 | -----
11 |
12 | # DEVELOPMENT
13 |
14 | As mentioned above: Only directly edit the branch `master`. Other branches should be only updated via grunt tasks (see section "Automation" below).
15 |
16 | Important: Do not let your IDE change the **source order** of the code. Fixing up formatting is fine, but moving code blocks around is not! It will confuse grunt and produce problems.
17 |
18 | -----
19 |
20 | # AUTOMATION
21 |
22 | See notes below on how to correctly set up and use grunt.
23 |
24 | Many tasks as well as basic quality control are done via grunt. Below is a list of supported tasks.
25 |
26 | **Important**: Before making a pull-request to the master branch always run the task `grunt` - this ensures that all .php, .js and .css files are validated and existing unit tests pass. If an problems are reported then fix those problems before submitting the pull request.
27 |
28 | ### Grunt Task Runner
29 |
30 | **ALWAYS** use Grunt to build the production branches. Use the following commands:
31 |
32 | Category | Command | Action
33 | ---------| ------- | ------
34 | **Build** | `grunt` | Run all default tasks: js, css. **Run this task before submitting a pull-request**.
35 | Build | `grunt build` | Runs all default tasks + lang, builds production version.
36 |
37 |
38 | ### Set up grunt
39 |
40 | #### 1. npm
41 |
42 | First install node.js from:
43 |
44 | ```
45 | #!bash
46 | # Test it:
47 | $ npm -v
48 |
49 | # Install it system wide (optional but recommended):
50 | $ npm install -g npm
51 | ```
52 |
53 | #### 2. grunt
54 |
55 | Install grunt by running this command in command line:
56 |
57 | ```
58 | #!bash
59 | # Install grunt:
60 | $ npm install -g grunt-cli
61 | ```
62 |
63 | #### 3. Setup project
64 |
65 | In command line switch to the `events-and-bookings` plugin folder. Run this command to set up grunt for the Events+ plugin:
66 |
67 | ```
68 | #!bash
69 | # Install automation tools for M2:
70 | $ cd /wp-content/plugins/events-and-bookings
71 | $ npm install
72 |
73 | # Test it:
74 | $ grunt hello
75 | ```
76 |
77 |
78 | # RELEASE
79 |
80 | ### 1. Build the release version
81 |
82 | 1.) Switch to `development` branch.
83 |
84 | 2.) Make sure the version number in **main plugin file** is correct and that the version in file `pacakge.json` matches the plugin version. (in package.json you have x.y.z format, so "1.2.3.4" becomes "1.2.34" here)
85 |
86 | 3.) Then run `grunt build` This will create a .zip archive of the release files.
87 |
88 | 4.) Only in `development` branch: There is a folder called `release/` which contains the release files as .zip archive.
89 |
90 |
91 |
--------------------------------------------------------------------------------
/default-templates/full-width/single-incsub_event.php:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 | ID, 'incsub_event_start', true)));
11 | ?>
12 |
13 |
14 |
15 |
16 |
17 |
23 |
24 |
25 |
26 | is_premium() && $event->user_is_coming() && !$event->user_paid()) {
28 | ?>
29 |
32 |
33 |
34 |
35 |
36 |
39 |
40 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | has_venue_map()) { ?>
54 |
55 |
58 |
59 | get_venue_location(Eab_EventModel::VENUE_AS_MAP, array('width' => '99%')); ?>
60 |
61 |
62 |
63 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/default-templates/default/single-incsub_event.php:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 | ID, 'incsub_event_start', true)));
16 | ?>
17 |
18 |
26 |
27 |
28 | is_premium() && $event->user_is_coming() && !$event->user_paid()) { ?>
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
56 | has_venue_map()) { ?>
57 |
get_venue_location(Eab_EventModel::VENUE_AS_MAP); ?>
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/GraphLocation.php:
--------------------------------------------------------------------------------
1 | getField('street');
41 | }
42 |
43 | /**
44 | * Returns the city component of the location
45 | *
46 | * @return string|null
47 | */
48 | public function getCity()
49 | {
50 | return $this->getField('city');
51 | }
52 |
53 | /**
54 | * Returns the state component of the location
55 | *
56 | * @return string|null
57 | */
58 | public function getState()
59 | {
60 | return $this->getField('state');
61 | }
62 |
63 | /**
64 | * Returns the country component of the location
65 | *
66 | * @return string|null
67 | */
68 | public function getCountry()
69 | {
70 | return $this->getField('country');
71 | }
72 |
73 | /**
74 | * Returns the zipcode component of the location
75 | *
76 | * @return string|null
77 | */
78 | public function getZip()
79 | {
80 | return $this->getField('zip');
81 | }
82 |
83 | /**
84 | * Returns the latitude component of the location
85 | *
86 | * @return float|null
87 | */
88 | public function getLatitude()
89 | {
90 | return $this->getField('latitude');
91 | }
92 |
93 | /**
94 | * Returns the street component of the location
95 | *
96 | * @return float|null
97 | */
98 | public function getLongitude()
99 | {
100 | return $this->getField('longitude');
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/Helpers/FacebookPageTabHelper.php:
--------------------------------------------------------------------------------
1 | signedRequest) {
53 | return;
54 | }
55 |
56 | $this->pageData = $this->signedRequest->get('page');
57 | }
58 |
59 | /**
60 | * Returns a value from the page data.
61 | *
62 | * @param string $key
63 | * @param mixed|null $default
64 | *
65 | * @return mixed|null
66 | */
67 | public function getPageData($key, $default = null)
68 | {
69 | if (isset($this->pageData[$key])) {
70 | return $this->pageData[$key];
71 | }
72 |
73 | return $default;
74 | }
75 |
76 | /**
77 | * Returns true if the user is an admin.
78 | *
79 | * @return boolean
80 | */
81 | public function isAdmin()
82 | {
83 | return $this->getPageData('admin') === true;
84 | }
85 |
86 | /**
87 | * Returns the page id if available.
88 | *
89 | * @return string|null
90 | */
91 | public function getPageId()
92 | {
93 | return $this->getPageData('id');
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/GraphSessionInfo.php:
--------------------------------------------------------------------------------
1 | getField('app_id');
41 | }
42 |
43 | /**
44 | * Returns the application name the token was issued for.
45 | *
46 | * @return string|null
47 | */
48 | public function getApplication()
49 | {
50 | return $this->getField('application');
51 | }
52 |
53 | /**
54 | * Returns the date & time that the token expires.
55 | *
56 | * @return \DateTime|null
57 | */
58 | public function getExpiresAt()
59 | {
60 | return $this->getField('expires_at');
61 | }
62 |
63 | /**
64 | * Returns whether the token is valid.
65 | *
66 | * @return boolean
67 | */
68 | public function getIsValid()
69 | {
70 | return $this->getField('is_valid');
71 | }
72 |
73 | /**
74 | * Returns the date & time the token was issued at.
75 | *
76 | * @return \DateTime|null
77 | */
78 | public function getIssuedAt()
79 | {
80 | return $this->getField('issued_at');
81 | }
82 |
83 | /**
84 | * Returns the scope permissions associated with the token.
85 | *
86 | * @return array
87 | */
88 | public function getScopes()
89 | {
90 | return $this->getField('scopes');
91 | }
92 |
93 | /**
94 | * Returns the login id of the user associated with the token.
95 | *
96 | * @return string|null
97 | */
98 | public function getUserId()
99 | {
100 | return $this->getField('user_id');
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/lib/class_eab_error_reporter.php:
--------------------------------------------------------------------------------
1 | _errors = array();
12 | add_action('plugins_loaded', array($this, 'initialize'));
13 | }
14 |
15 | public static function get_instance () {
16 | if (!self::$_instance) {
17 | self::$_instance = new Eab_ErrorRepository;
18 | }
19 | return self::$_instance;
20 | }
21 |
22 | public function initialize () {
23 | if (!session_id()) session_start();
24 | if (!empty($_SESSION['eab_error_log'])) $this->_errors = $_SESSION['eab_error_log'];
25 | }
26 |
27 | public function log ($error) {
28 | $key = microtime(true) . '-' . rand();
29 | $this->_errors[$key] = $error;
30 | if (isset($_SESSION)) $_SESSION['eab_error_log'] = $this->_errors;
31 | }
32 |
33 | public function get_all () {
34 | return $this->_errors;
35 | }
36 |
37 | public function purge () {
38 | $this->_errors = array();
39 | if (isset($_SESSION)) $_SESSION['eab_error_log'] = $this->_errors;
40 | }
41 | }
42 |
43 | abstract class Eab_ErrorReporter {
44 |
45 | private static $_loggers = array();
46 |
47 | public static function serve () {
48 | $loggers = defined('EAB_CORE_ERROR_LOGGER') && EAB_CORE_ERROR_LOGGER
49 | ? explode(',', EAB_CORE_ERROR_LOGGER)
50 | : false
51 | ;
52 | if (!$loggers) return false;
53 | $loggers = preg_match('/[a-z]/', EAB_CORE_ERROR_LOGGER)
54 | ? array_map('trim', $loggers)
55 | : array('admin')
56 | ;
57 | foreach ($loggers as $logger) {
58 | $class = 'Eab_ErrorLogger_' . ucfirst(strtolower($logger));
59 | if (!class_exists($class)) continue;
60 | self::$_loggers[] = new $class;
61 | }
62 | add_action('eab-debug-log_error', array('Eab_ErrorReporter', 'log'));
63 | }
64 |
65 | public static function log ($error) {
66 | if (empty(self::$_loggers)) return false;
67 | foreach (self::$_loggers as $logger) {
68 | if (!is_object($logger)) continue;
69 | if (!method_exists($logger, 'log')) continue;
70 | $logger->log($error);
71 | }
72 | }
73 | }
74 |
75 | abstract class Eab_ErrorLogger {
76 |
77 | protected $_repository;
78 |
79 | public function __construct () {
80 | $this->_repository = Eab_ErrorRepository::get_instance();
81 | add_action('plugins_loaded', array($this, 'initialize'));
82 | }
83 |
84 | abstract public function initialize ();
85 | abstract public function log ($error);
86 | }
87 |
88 |
89 | class Eab_ErrorLogger_Admin extends Eab_ErrorLogger {
90 |
91 | public function initialize () {
92 | add_action('admin_notices', array($this, 'show_nags'));
93 | }
94 |
95 | public function log ($error) {
96 | $this->_repository->log($error);
97 | }
98 |
99 | function show_nags () {
100 | $errors = $this->_repository->get_all();
101 | $this->_repository->purge();
102 | if (empty($errors)) return false;
103 |
104 | $msg = '' . join(' ', $errors) . ' ';
105 | echo "";
106 | }
107 | }
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/autoload.php:
--------------------------------------------------------------------------------
1 | register_post_type();
9 | $this->register_taxonomy();
10 | $this->register_post_status();
11 | }
12 |
13 | public function register_post_type() {
14 | $data = Eab_Options::get_instance();
15 |
16 | $labels = array(
17 | 'name' => __('Events', eab_domain() ),
18 | 'singular_name' => __('Event', eab_domain() ),
19 | 'add_new' => __('Add Event', eab_domain() ),
20 | 'add_new_item' => __('Add New Event', eab_domain() ),
21 | 'edit_item' => __('Edit Event', eab_domain() ),
22 | 'new_item' => __('New Event', eab_domain() ),
23 | 'view_item' => __('View Event', eab_domain() ),
24 | 'search_items' => __('Search Event', eab_domain() ),
25 | 'not_found' => __('No event found', eab_domain() ),
26 | 'not_found_in_trash' => __('No event found in Trash', eab_domain() ),
27 | 'menu_name' => __('Events', eab_domain() )
28 | );
29 |
30 | $supports = array( 'title', 'editor', 'author', 'venue', 'thumbnail', 'comments');
31 | $supports = apply_filters('eab-event-post_type-supports', $supports);
32 |
33 | $event_type_args = array(
34 | 'labels' => $labels,
35 | 'public' => true,
36 | 'show_ui' => true,
37 | 'publicly_queryable' => true,
38 | 'capability_type' => 'event',
39 | 'hierarchical' => false,
40 | 'map_meta_cap' => true,
41 | 'query_var' => true,
42 | 'supports' => $supports,
43 | 'rewrite' => array( 'slug' => $data->get_option('slug'), 'with_front' => false ),
44 | 'has_archive' => true,
45 | 'menu_icon' => 'dashicons-calendar-alt',
46 | );
47 |
48 | register_post_type(
49 | self::POST_TYPE,
50 | apply_filters('eab-post_type-register', $event_type_args)
51 | );
52 | }
53 |
54 | public function register_taxonomy() {
55 | $data = Eab_Options::get_instance();
56 |
57 | register_taxonomy(
58 | 'eab_events_category',
59 | Eab_EventModel::POST_TYPE,
60 | array(
61 | 'labels' => array(
62 | 'name' => __('Event Categories', eab_domain() ),
63 | 'singular_name' => __('Event Category', eab_domain() ),
64 | ),
65 | 'hierarchical' => true,
66 | 'public' => true,
67 | 'rewrite' => array(
68 | 'slug' => $data->get_option('slug'),
69 | 'with_front' => true,
70 | ),
71 | 'capabilities' => array(
72 | 'manage_terms' => 'manage_categories',
73 | 'edit_terms' => 'manage_categories',
74 | 'delete_terms' => 'manage_categories',
75 | 'assign_terms' => 'edit_events',
76 | ),
77 | )
78 | );
79 | }
80 |
81 | public function register_post_status() {
82 | $pts_args = array(
83 | 'show_in_admin_all_list' => false,
84 | 'label' => __( 'Recurrent', 'eab' )
85 | );
86 |
87 | $pts_args['label_count'] = _n_noop(
88 | 'Recurrent (%s) ',
89 | 'Recurrent (%s) ',
90 | 'eab'
91 | );
92 |
93 | if ( is_admin() )
94 | $pts_args['protected'] = true;
95 | else
96 | $pts_args['public'] = true;
97 |
98 | register_post_status(Eab_EventModel::RECURRENCE_STATUS, $pts_args);
99 | }
100 | }
--------------------------------------------------------------------------------
/js/editor.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Responsible for hooking Maps to the Events interface.
3 | */
4 |
5 | (function($){
6 | $(function() {
7 |
8 |
9 | /**
10 | * Creates tag markup.
11 | */
12 | function create_map_marker (id) {
13 | if (!id) return '';
14 | //Deal with this at later stage
15 | /*
16 | var shortcode = window._agmConfig && window._agmConfig.shortcode
17 | ? window._agmConfig.shortcode
18 | : 'map'
19 | ;
20 | */
21 | var shortcode = 'map';
22 | return '[' + shortcode + ' id="' + id + '"] ';
23 | }
24 |
25 | function close_editor_window () {
26 | if ("function" === typeof closeMapEditor) return closeMapEditor();
27 |
28 | var $cls = $(".wpmui-wnd-close:visible");
29 | if ($cls.length) $cls.click();
30 | }
31 |
32 | /**
33 | * Inserts the map marker into editor.
34 | * Supports TinyMCE and regular editor (textarea).
35 | */
36 | function insert_map_text (mapMarker) {
37 | var $venue = $("#incsub_event_venue");
38 | if (!$venue.length) return false;
39 |
40 | return $venue.is("input,textarea")
41 | ? $venue.val(mapMarker)
42 | : $venue.text(mapMarker)
43 | ;
44 | }
45 |
46 | function insert_map_item_handler () {
47 | var $me = $(this);
48 | var mapMarker = create_map_marker($me.parents('li').find('input:hidden').val());
49 | insert_map_text(mapMarker);
50 | close_editor_window();
51 | return false;
52 | }
53 |
54 | function insert_map_preview_handler (e, id) {
55 | var mapMarker = create_map_marker(id);
56 | insert_map_text(mapMarker);
57 | close_editor_window();
58 | return false;
59 | }
60 |
61 | // Find Media Buttons strip and add the new one
62 | var maps_url = ("undefined" != typeof _agm && _agm.root_url
63 | ? _agm.root_url
64 | : _agm_root_url
65 | ),
66 | eab_mbuttons_container = $('#eab_insert_map')
67 | ;
68 | if (!eab_mbuttons_container.length) return;
69 | if (window.openMapEditor) {
70 | // Old API
71 | eab_mbuttons_container.append('' +
72 | '' +
73 | ' ' +
74 | ' '
75 | );
76 | $('#map_preview_container')
77 | .unbind('agm_map_insert')
78 | .bind('agm_map_insert', insert_map_preview_handler)
79 | ;
80 | } else {
81 | // New API
82 | eab_mbuttons_container.append('' +
83 | '' +
84 | ' ' +
85 | ' '
86 | );
87 | $(document)
88 | .off('agm_map_insert', '.agm-editor .map_preview_container')
89 | .on('agm_map_insert', '.agm-editor .map_preview_container', insert_map_preview_handler)
90 | ;
91 | }
92 |
93 | $('body')
94 | .off("click", "li.existing_map_item .add_map_item")
95 | .on("click", "li.existing_map_item .add_map_item", insert_map_item_handler)
96 | ;
97 |
98 | $('#add_map').hide();
99 |
100 | });
101 | })(jQuery);
102 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/GraphObjectFactory.php:
--------------------------------------------------------------------------------
1 | makeGraphNode($subclassName);
60 | }
61 |
62 | /**
63 | * Convenience method for creating a GraphEvent collection.
64 | *
65 | * @return GraphEvent
66 | *
67 | * @throws FacebookSDKException
68 | */
69 | public function makeGraphEvent()
70 | {
71 | return $this->makeGraphNode(static::BASE_GRAPH_OBJECT_PREFIX . 'GraphEvent');
72 | }
73 |
74 | /**
75 | * Tries to convert a FacebookResponse entity into a GraphEdge.
76 | *
77 | * @param string|null $subclassName The GraphNode sub class to cast the list items to.
78 | * @param boolean $auto_prefix Toggle to auto-prefix the subclass name.
79 | *
80 | * @return GraphEdge
81 | *
82 | * @deprecated 5.0.0 GraphObjectFactory has been renamed to GraphNodeFactory
83 | */
84 | public function makeGraphList($subclassName = null, $auto_prefix = true)
85 | {
86 | return $this->makeGraphEdge($subclassName, $auto_prefix);
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/PseudoRandomString/UrandomPseudoRandomStringGenerator.php:
--------------------------------------------------------------------------------
1 | validateLength($length);
64 |
65 | $stream = fopen('/dev/urandom', 'rb');
66 | if (!is_resource($stream)) {
67 | throw new FacebookSDKException(
68 | static::ERROR_MESSAGE .
69 | 'Unable to open stream to /dev/urandom.'
70 | );
71 | }
72 |
73 | if (!defined('HHVM_VERSION')) {
74 | stream_set_read_buffer($stream, 0);
75 | }
76 |
77 | $binaryString = fread($stream, $length);
78 | fclose($stream);
79 |
80 | if (!$binaryString) {
81 | throw new FacebookSDKException(
82 | static::ERROR_MESSAGE .
83 | 'Stream to /dev/urandom returned no data.'
84 | );
85 | }
86 |
87 | return $this->binToHex($binaryString, $length);
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/lib/plugins/eab-export-add_to_gcal.php:
--------------------------------------------------------------------------------
1 | _data = Eab_Options::get_instance();
24 | }
25 |
26 | public static function serve () {
27 | $me = new Eab_Export_GCalButton;
28 | $me->_add_hooks();
29 | }
30 |
31 | private function _add_hooks () {
32 | add_filter('eab-template-archive_after_view_link', array($this, 'append_export_link'), 10, 2);
33 | add_filter('eab-events-after_single_event', array($this, 'append_export_link'), 10, 2);
34 |
35 | // Catch-all filter, in case we missed the injection previously.
36 | add_filter('eab-events-after_event_details', array($this, 'append_export_link'), 10, 2);
37 | }
38 |
39 | function append_export_link ($content, $event) {
40 | if (in_array($event->get_id(), $this->_added)) return $content;
41 |
42 | $time_callback = 'date';
43 | $zulu = '';
44 | $zone_string = get_option('timezone_string');
45 | $gmt_offset = (float)get_option('gmt_offset');
46 |
47 | if (empty($gmt_offset)) $zulu = 'Z';
48 | else if (empty($zone_string)) {
49 | $hour_tz = sprintf('%02d', abs((int)$gmt_offset));
50 | $minute_offset = (abs($gmt_offset) - abs((int)$gmt_offset)) * 60;
51 | $min_tz = sprintf('%02d', $minute_offset);
52 | $zone_string = 'UTC' . ($gmt_offset > 0 ? '+' : '-') . $hour_tz . ':' . $min_tz;
53 | }
54 |
55 | $start = $time_callback("Ymd\THis", $event->get_start_timestamp()) . $zulu;
56 | $end = $time_callback("Ymd\THis", $event->get_end_timestamp()) . $zulu;
57 | $data = array(
58 | 'action=TEMPLATE',
59 | 'text=' . esc_attr($event->get_title()),
60 | 'dates=' . esc_attr("{$start}/{$end}"),
61 | 'details=' . esc_attr(wp_strip_all_tags($event->get_excerpt_or_fallback(64))),
62 | 'location=' . esc_attr($event->get_venue_location(Eab_EventModel::VENUE_AS_ADDRESS)),
63 | 'trp=false',
64 | 'sprop=' . esc_attr('website:' . parse_url(home_url(), PHP_URL_HOST)),
65 | );
66 | if (!empty($zone_string) && !empty($gmt_offset)) {
67 | $data[] = 'ctz=' . esc_attr($zone_string);
68 | }
69 |
70 | $this->_added[] = $event->get_id();
71 |
72 | /*return "{$content} " . __('Export to GCAL', Eab_EventsHub::TEXT_DOMAIN) . ' ';*/
75 |
76 | /**
77 | * Added by Ashok
78 | *
79 | * New Export to gCal button
80 | */
81 | return "{$content} " . __('Export to GCAL', Eab_EventsHub::TEXT_DOMAIN) . ' ';
84 | }
85 | }
86 |
87 | Eab_Export_GCalButton::serve();
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/GraphNodes/GraphAchievement.php:
--------------------------------------------------------------------------------
1 | '\Facebook\GraphNodes\GraphUser',
38 | 'application' => '\Facebook\GraphNodes\GraphApplication',
39 | ];
40 |
41 | /**
42 | * Returns the ID for the achievement.
43 | *
44 | * @return string|null
45 | */
46 | public function getId()
47 | {
48 | return $this->getField('id');
49 | }
50 |
51 | /**
52 | * Returns the user who achieved this.
53 | *
54 | * @return GraphUser|null
55 | */
56 | public function getFrom()
57 | {
58 | return $this->getField('from');
59 | }
60 |
61 | /**
62 | * Returns the time at which this was achieved.
63 | *
64 | * @return \DateTime|null
65 | */
66 | public function getPublishTime()
67 | {
68 | return $this->getField('publish_time');
69 | }
70 |
71 | /**
72 | * Returns the app in which the user achieved this.
73 | *
74 | * @return GraphApplication|null
75 | */
76 | public function getApplication()
77 | {
78 | return $this->getField('application');
79 | }
80 |
81 | /**
82 | * Returns information about the achievement type this instance is connected with.
83 | *
84 | * @return array|null
85 | */
86 | public function getData()
87 | {
88 | return $this->getField('data');
89 | }
90 |
91 | /**
92 | * Returns the type of achievement.
93 | *
94 | * @see https://developers.facebook.com/docs/graph-api/reference/achievement
95 | *
96 | * @return string
97 | */
98 | public function getType()
99 | {
100 | return 'game.achievement';
101 | }
102 |
103 | /**
104 | * Indicates whether gaining the achievement published a feed story for the user.
105 | *
106 | * @return boolean|null
107 | */
108 | public function isNoFeedStory()
109 | {
110 | return $this->getField('no_feed_story');
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/HttpClients/FacebookStreamHttpClient.php:
--------------------------------------------------------------------------------
1 | facebookStream = $facebookStream ?: new FacebookStream();
42 | }
43 |
44 | /**
45 | * @inheritdoc
46 | */
47 | public function send($url, $method, $body, array $headers, $timeOut)
48 | {
49 | $options = [
50 | 'http' => [
51 | 'method' => $method,
52 | 'header' => $this->compileHeader($headers),
53 | 'content' => $body,
54 | 'timeout' => $timeOut,
55 | 'ignore_errors' => true
56 | ],
57 | 'ssl' => [
58 | 'verify_peer' => true,
59 | 'verify_peer_name' => true,
60 | 'allow_self_signed' => true, // All root certificates are self-signed
61 | 'cafile' => __DIR__ . '/certs/DigiCertHighAssuranceEVRootCA.pem',
62 | ],
63 | ];
64 |
65 | $this->facebookStream->streamContextCreate($options);
66 | $rawBody = $this->facebookStream->fileGetContents($url);
67 | $rawHeaders = $this->facebookStream->getResponseHeaders();
68 |
69 | if ($rawBody === false || empty($rawHeaders)) {
70 | throw new FacebookSDKException('Stream returned an empty response', 660);
71 | }
72 |
73 | $rawHeaders = implode("\r\n", $rawHeaders);
74 |
75 | return new GraphRawResponse($rawHeaders, $rawBody);
76 | }
77 |
78 | /**
79 | * Formats the headers for use in the stream wrapper.
80 | *
81 | * @param array $headers The request headers.
82 | *
83 | * @return string
84 | */
85 | public function compileHeader(array $headers)
86 | {
87 | $header = [];
88 | foreach ($headers as $k => $v) {
89 | $header[] = $k . ': ' . $v;
90 | }
91 |
92 | return implode("\r\n", $header);
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/lib/plugins/eab-events-recurrent_redirect.php:
--------------------------------------------------------------------------------
1 | _data = Eab_Options::get_instance();
20 | }
21 |
22 | /**
23 | * Run the Addon
24 | *
25 | */
26 | public static function serve () {
27 | $me = new Eab_Events_RecurrentRootRedirect;
28 | $me->_add_hooks();
29 | }
30 |
31 | /**
32 | * Hooks to the main plugin Events+
33 | *
34 | */
35 | private function _add_hooks () {
36 | add_action('template_redirect', array($this, 'redirect'));
37 | }
38 |
39 | function redirect() {
40 | global $post;
41 | if (!is_singular()) return false;
42 | if (!$post || !is_object($post) || !isset($post->post_type) || 'incsub_event' != $post->post_type) return false;
43 |
44 | $event = ($post instanceof Eab_EventModel) ? $post : new Eab_EventModel($post);
45 | if (!$event->is_recurring()) return false;
46 | if ($event->is_recurring_child()) return false; // Already an instance - no need to keep going.
47 |
48 | $collection = new Eab_AllUpcomingRecurringChildrenCollection($event, $time);
49 | $children = $collection->to_collection();
50 | if (!$children) return false;
51 |
52 | $now = eab_current_time();
53 | $redirect_to = $active = false;
54 | $fallback = array();
55 | foreach ($children as $key => $child) {
56 | if ($child->get_end_timestamp() < $now) continue; // Already passed, move on
57 | if ($child->get_start_timestamp() <= $now) {
58 | $active = $child;
59 | break; // Currently ongoing event
60 | } else $fallback[$child->get_start_timestamp()] = $child;
61 | }
62 |
63 | if (!empty($active)) {
64 | $redirect_to = $active;
65 | } else if (!empty($fallback)) {
66 | sort($fallback);
67 | $redirect_to = reset($fallback);
68 | }
69 | if (!$redirect_to) return false;
70 |
71 | wp_redirect(get_permalink($redirect_to->get_id())); die;
72 | }
73 | }
74 |
75 |
76 | class Eab_AllUpcomingRecurringChildrenCollection extends Eab_UpcomingCollection {
77 |
78 | private $_event;
79 |
80 | public function __construct ($event, $timestamp=false, $args=array()) {
81 | $this->_event = $event;
82 | parent::__construct($timestamp, $args);
83 | }
84 |
85 | public function order_by_date ($q) {
86 | return "eab_meta.meta_value DESC";
87 | }
88 |
89 | public function build_query_args ($args) {
90 | $status = $this->_event->is_trashed()
91 | ? WpmuDev_RecurringDatedItem::RECURRENCE_TRASH_STATUS
92 | : WpmuDev_RecurringDatedItem::RECURRENCE_STATUS
93 | ;
94 | $args = array (
95 | 'post_type' => 'incsub_event',
96 | 'post_status' => $status,
97 | 'post_parent' => $this->_event->get_id(),
98 | 'posts_per_page' => -1,
99 | 'meta_query' => array(
100 | array(
101 | 'key' => 'incsub_event_end',
102 | 'value' => date("Y-m-d H:i:s", $this->get_timestamp()),
103 | 'compare' => '>=',
104 | 'type' => 'DATETIME'
105 | ),
106 | ),
107 | );
108 | return $args;
109 | }
110 | }
111 |
112 | if (!is_admin()) Eab_Events_RecurrentRootRedirect::serve();
--------------------------------------------------------------------------------
/lib/plugins/lib/Facebook/FacebookApp.php:
--------------------------------------------------------------------------------
1 | id = (string) $id;
56 | $this->secret = $secret;
57 | }
58 |
59 | /**
60 | * Returns the app ID.
61 | *
62 | * @return string
63 | */
64 | public function getId()
65 | {
66 | return $this->id;
67 | }
68 |
69 | /**
70 | * Returns the app secret.
71 | *
72 | * @return string
73 | */
74 | public function getSecret()
75 | {
76 | return $this->secret;
77 | }
78 |
79 | /**
80 | * Returns an app access token.
81 | *
82 | * @return AccessToken
83 | */
84 | public function getAccessToken()
85 | {
86 | return new AccessToken($this->id . '|' . $this->secret);
87 | }
88 |
89 | /**
90 | * Serializes the FacebookApp entity as a string.
91 | *
92 | * @return string
93 | */
94 | public function serialize()
95 | {
96 | return implode('|', [$this->id, $this->secret]);
97 | }
98 |
99 | /**
100 | * Unserializes a string as a FacebookApp entity.
101 | *
102 | * @param string $serialized
103 | */
104 | public function unserialize($serialized)
105 | {
106 | list($id, $secret) = explode('|', $serialized);
107 |
108 | $this->__construct($id, $secret);
109 | }
110 | }
111 |
--------------------------------------------------------------------------------