Simple Calendar – Google Calendar Plugin - Version 3.0.10

Version Description

  • December 21, 2015 =

  • Fix: Pagination tweak to prevent grouped calendars from getting cut off by last calendar in list.

  • Fix: Welcome screen now shows up correctly after a fresh installation.

  • Fix: i18n short day names should now display properly.

  • Fix: i18n truncated event titles should now display properly.

  • Tweak: Allow setting a cache duration of 0.

  • Tweak: Pagination will now always show unless the calendar is static.

  • Tweak: Allow responsive grid view to use hover option.

Download this release

Release Info

Developer nickyoung87
Plugin Icon 128x128 Simple Calendar – Google Calendar Plugin
Version 3.0.10
Comparing to
See all releases

Code changes from version 3.0.9 to 3.0.10

assets/css/admin-activation.min.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/css/admin-add-calendar.min.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/css/admin.min.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/css/default-calendar-grid.min.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/css/default-calendar-list.min.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/js/admin-add-calendar.min.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/js/admin.min.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
assets/js/default-calendar.js CHANGED
@@ -26,10 +26,8 @@
26
  action = 'simcal_default_calendar_draw_grid';
27
  // Always use the first of the month in grid.
28
  date = new Date( currentDate.getFullYear(), currentDate.getMonth(), 1 );
29
- toggleGridNavButtons( buttons, date.getTime() / 1000, start, end );
30
  } else {
31
  action = 'simcal_default_calendar_draw_list';
32
- toggleListNavButtons( buttons, calendar, start, end, false );
33
  toggleListHeading( calendar );
34
  }
35
 
@@ -82,8 +80,6 @@
82
  currentYear.text( year );
83
  current.attr( 'data-calendar-current', ( newDate.getTime() / 1000 ) + offset + 1 );
84
 
85
- toggleGridNavButtons( buttons, newDate.getTime() / 1000, start, end );
86
-
87
  spinner.fadeToggle();
88
 
89
  date = newDate;
@@ -126,7 +122,6 @@
126
  current.attr( 'data-calendar-current', timestamp );
127
 
128
  toggleListHeading( calendar );
129
- toggleListNavButtons( buttons, calendar, start, end, direction );
130
 
131
  spinner.fadeToggle();
132
  expandEventsToggle();
@@ -141,101 +136,6 @@
141
  } );
142
  } );
143
 
144
- /**
145
- * Enable or disable grid calendar navigation buttons.
146
- *
147
- * @param buttons Previous and Next buttons elements.
148
- * @param time Current time.
149
- * @param min Lower bound timestamp.
150
- * @param max Upper bound timestamp.
151
- */
152
- function toggleGridNavButtons( buttons, time, min, max ) {
153
-
154
- buttons.each( function( e, i ) {
155
-
156
- var button = $( i),
157
- month = new Date( time * 1000 );
158
-
159
- if ( button.hasClass( 'simcal-prev' ) ) {
160
-
161
- month = new Date( month.setMonth( month.getMonth(), 1 ) );
162
- month.setDate( 0 );
163
-
164
- if ( month.getTime() / 1000 <= min ) {
165
- button.attr( 'disabled', 'disabled' );
166
- } else {
167
- button.removeAttr( 'disabled' );
168
- }
169
-
170
- } else {
171
-
172
- month = new Date( month.setMonth( month.getMonth() + 1, 1 ) );
173
- month.setDate( 0 );
174
- month.setHours( 23 );
175
- month.setMinutes( 59 );
176
- month.setSeconds( 59 );
177
-
178
- if ( month.getTime() / 1000 >= max ) {
179
- button.attr( 'disabled', 'disabled' );
180
- } else {
181
- button.removeAttr( 'disabled' );
182
- }
183
- }
184
-
185
- } );
186
- }
187
-
188
- /**
189
- * Enable or disable grid calendar navigation buttons.
190
- *
191
- * @param buttons Previous and Next button elements.
192
- * @param calendar Current calendar.
193
- * @param start Lower bound timestamp.
194
- * @param end Upper bound timestamp.
195
- * @param direction Direction intent.
196
- */
197
- function toggleListNavButtons( buttons, calendar, start, end, direction ) {
198
-
199
- var list = calendar.find( '.simcal-events-list-container' ),
200
- prev = list.data( 'prev' ),
201
- next = list.data( 'next' );
202
-
203
- buttons.each( function( e, b ) {
204
-
205
- var button = $( b );
206
-
207
- if ( direction ) {
208
-
209
- if ( direction == 'prev' && button.hasClass( 'simcal-prev' ) ) {
210
- if ( prev <= start ) {
211
- button.attr( 'disabled', 'disabled' );
212
- }
213
- } else if ( button.hasClass( 'simcal-prev' ) ) {
214
- button.removeAttr( 'disabled' );
215
- }
216
-
217
- if ( direction == 'next' && button.hasClass( 'simcal-next' ) ) {
218
- if ( next >= end ) {
219
- button.attr( 'disabled', 'disabled' );
220
- }
221
- } else if( $(button).hasClass( 'simcal-next' ) ) {
222
- button.removeAttr( 'disabled' );
223
- }
224
-
225
- } else {
226
-
227
- if ( prev <= start && button.hasClass( 'simcal-prev' ) ) {
228
- button.attr( 'disabled', 'disabled' );
229
- }
230
-
231
- if ( next >= end && button.hasClass( 'simcal-next' ) ) {
232
- button.attr( 'disabled', 'disabled' );
233
- }
234
-
235
- }
236
- } );
237
- }
238
-
239
  /**
240
  * Replace the list heading with current page.
241
  *
@@ -296,9 +196,6 @@
296
  }
297
  }
298
  eventsDots.show();
299
-
300
- // Force click/tap on mobile.
301
- bubbleTrigger = 'click';
302
  // Adapts cells to be more squareish on mobile.
303
  var minH = ( width - 10 ) + 'px';
304
  cells.css( 'min-height', minH );
26
  action = 'simcal_default_calendar_draw_grid';
27
  // Always use the first of the month in grid.
28
  date = new Date( currentDate.getFullYear(), currentDate.getMonth(), 1 );
 
29
  } else {
30
  action = 'simcal_default_calendar_draw_list';
 
31
  toggleListHeading( calendar );
32
  }
33
 
80
  currentYear.text( year );
81
  current.attr( 'data-calendar-current', ( newDate.getTime() / 1000 ) + offset + 1 );
82
 
 
 
83
  spinner.fadeToggle();
84
 
85
  date = newDate;
122
  current.attr( 'data-calendar-current', timestamp );
123
 
124
  toggleListHeading( calendar );
 
125
 
126
  spinner.fadeToggle();
127
  expandEventsToggle();
136
  } );
137
  } );
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  /**
140
  * Replace the list heading with current page.
141
  *
196
  }
197
  }
198
  eventsDots.show();
 
 
 
199
  // Adapts cells to be more squareish on mobile.
200
  var minH = ( width - 10 ) + 'px';
201
  cells.css( 'min-height', minH );
assets/js/default-calendar.min.js CHANGED
@@ -1,6 +1,6 @@
1
- /*! Simple Calendar - 3.0.9
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
5
 
6
- !function(a,b){"use strict";jQuery(function(b){function c(a,c,d,e){a.each(function(a,f){var g=b(f),h=new Date(1e3*c);g.hasClass("simcal-prev")?(h=new Date(h.setMonth(h.getMonth(),1)),h.setDate(0),h.getTime()/1e3<=d?g.attr("disabled","disabled"):g.removeAttr("disabled")):(h=new Date(h.setMonth(h.getMonth()+1,1)),h.setDate(0),h.setHours(23),h.setMinutes(59),h.setSeconds(59),h.getTime()/1e3>=e?g.attr("disabled","disabled"):g.removeAttr("disabled"))})}function d(a,c,d,e,f){var g=c.find(".simcal-events-list-container"),h=g.data("prev"),i=g.data("next");a.each(function(a,c){var g=b(c);f?("prev"==f&&g.hasClass("simcal-prev")?d>=h&&g.attr("disabled","disabled"):g.hasClass("simcal-prev")&&g.removeAttr("disabled"),"next"==f&&g.hasClass("simcal-next")?i>=e&&g.attr("disabled","disabled"):b(g).hasClass("simcal-next")&&g.removeAttr("disabled")):(d>=h&&g.hasClass("simcal-prev")&&g.attr("disabled","disabled"),i>=e&&g.hasClass("simcal-next")&&g.attr("disabled","disabled"))})}function e(a){var c=b(a).find(".simcal-current"),d=b(a).find(".simcal-events-list-container"),e=d.data("heading-small"),f=d.data("heading-large");a.width()<400?c.html("<h3>"+e+"</h3>"):c.html("<h3>"+f+"</h3>")}function f(c){var d=b(c).find("> table"),e=d.find("thead"),f=e.find("th.simcal-week-day"),g=d.find("td.simcal-day > div"),h=d.find("ul.simcal-events"),i=h.find("> li > .simcal-event-title"),j=d.find(".simcal-events-toggle"),k=d.find("span.simcal-events-dots"),l=d.find(".simcal-tooltip-content"),m=d.find(".simcal-event-toggled"),n=d.data("event-bubble-trigger"),o=g.first().width();if(60>o){f.each(function(a,c){b(c).text(b(c).data("screen-small"))}),h.hide(),i.hide(),"undefined"!=j&&(j.hide(),"undefined"!=m&&m.show()),k.show(),n="click";var p=o-10+"px";g.css("min-height",p),d.find("span.simcal-events-dots:not(:empty)").css("min-height",p)}else 240>=o?f.each(function(a,c){b(c).text(b(c).data("screen-medium"))}):f.each(function(a,c){b(c).text(b(c).data("screen-large"))}),h.show(),i.show(),"undefined"!=j&&(j.show(),"undefined"!=m&&m.hide()),k.hide(),g.css("min-height",o+"px");g.each(function(c,d){var e,f,g=b(d).find("span.simcal-events-dots"),h=b(d).find(".simcal-tooltip");60>o?(l.show(),e=g):(l.hide(),e=h),e.each(function(c,e){b(e).qtip({content:60>o?b(d).find("ul.simcal-events"):b(e).find("> .simcal-tooltip-content"),position:{my:"top center",at:"bottom center",target:b(e),viewport:60>o?b(a):!0,adjust:{method:"shift",scroll:!1}},style:{def:!1,classes:"simcal-default-calendar simcal-event-bubble"},show:{solo:!0,effect:!1,event:"hover"==n?"mouseenter":"click"},hide:{fixed:!0,effect:!1,event:"click"==n?"unfocus":"mouseleave",delay:100},events:{show:function(a,b){f&&f.id&&f.id!=b.id&&f.hide(),f=b}}})})})}function g(){b(".simcal-events-toggle").each(function(a,c){var d=b(c).prev(".simcal-events"),e=d.find(".simcal-event-toggled"),f=b(c).find("i");b(c).on("click",function(){f.toggleClass("simcal-icon-rotate-180"),e.slideToggle()})})}b(".simcal-default-calendar").each(function(a,h){var i,j,k=b(h),l=k.data("calendar-id"),m=k.data("offset"),n=k.data("events-first"),o=k.data("calendar-end"),p=k.find(".simcal-calendar-head"),q=p.find(".simcal-nav-button"),r=k.find(".simcal-ajax-loader"),s=p.find(".simcal-current"),t=s.data("calendar-current"),u=s.find("span.simcal-current-month"),v=s.find("span.simcal-current-year"),w=new Date(1e3*t);k.hasClass("simcal-default-calendar-grid")?(j="simcal_default_calendar_draw_grid",i=new Date(w.getFullYear(),w.getMonth(),1),c(q,i.getTime()/1e3,n,o)):(j="simcal_default_calendar_draw_list",d(q,k,n,o,!1),e(k)),q.on("click",function(){var a=b(this).hasClass("simcal-next")?"next":"prev";if("simcal_default_calendar_draw_grid"==j){var h,p,t,w=k.find(".simcal-month");"prev"==a?h=new Date(i.setMonth(i.getMonth()-1,1)):(h=new Date(i.setMonth(i.getMonth()+2,1)),h.setDate(0),h.setHours(23),h.setMinutes(59),h.setSeconds(59)),p=h.getMonth(),t=h.getFullYear(),b.ajax({url:simcal_default_calendar.ajax_url,method:"POST",dataType:"json",cache:!1,data:{action:j,month:p+1,year:t,id:l},beforeSend:function(){r.fadeToggle()},success:function(a){u.text(simcal_default_calendar.months.full[p]),v.text(t),s.attr("data-calendar-current",h.getTime()/1e3+m+1),c(q,h.getTime()/1e3,n,o),r.fadeToggle(),i=h,w.replaceWith(a.data),f(k,x),g()},error:function(a){console.log(a)}})}else{var x=k.find(".simcal-events-list-container"),y=x.data("prev"),z=x.data("next"),A="prev"==a?y:z;b.ajax({url:simcal_default_calendar.ajax_url,method:"POST",dataType:"json",cache:!1,data:{action:j,ts:A,id:l},beforeSend:function(){r.fadeToggle()},success:function(b){x.replaceWith(b.data),s.attr("data-calendar-current",A),e(k),d(q,k,n,o,a),r.fadeToggle(),g()},error:function(a){console.log(a)}})}})});var h=b(".simcal-default-calendar-grid");h.each(function(a,c){f(c),b(c).on("change",function(){f(this)})}),a.onresize=function(){h.each(function(a,b){f(b)})},g()})}(this);
1
+ /*! Simple Calendar - 3.0.10
2
  * https://simplecalendar.io
3
  * Copyright (c) Moonstone Media 2015
4
  * Licensed GPLv2+ */
5
 
6
+ !function(a,b){"use strict";jQuery(function(b){function c(a){var c=b(a).find(".simcal-current"),d=b(a).find(".simcal-events-list-container"),e=d.data("heading-small"),f=d.data("heading-large");a.width()<400?c.html("<h3>"+e+"</h3>"):c.html("<h3>"+f+"</h3>")}function d(c){var d=b(c).find("> table"),e=d.find("thead"),f=e.find("th.simcal-week-day"),g=d.find("td.simcal-day > div"),h=d.find("ul.simcal-events"),i=h.find("> li > .simcal-event-title"),j=d.find(".simcal-events-toggle"),k=d.find("span.simcal-events-dots"),l=d.find(".simcal-tooltip-content"),m=d.find(".simcal-event-toggled"),n=d.data("event-bubble-trigger"),o=g.first().width();if(60>o){f.each(function(a,c){b(c).text(b(c).data("screen-small"))}),h.hide(),i.hide(),"undefined"!=j&&(j.hide(),"undefined"!=m&&m.show()),k.show();var p=o-10+"px";g.css("min-height",p),d.find("span.simcal-events-dots:not(:empty)").css("min-height",p)}else 240>=o?f.each(function(a,c){b(c).text(b(c).data("screen-medium"))}):f.each(function(a,c){b(c).text(b(c).data("screen-large"))}),h.show(),i.show(),"undefined"!=j&&(j.show(),"undefined"!=m&&m.hide()),k.hide(),g.css("min-height",o+"px");g.each(function(c,d){var e,f,g=b(d).find("span.simcal-events-dots"),h=b(d).find(".simcal-tooltip");60>o?(l.show(),e=g):(l.hide(),e=h),e.each(function(c,e){b(e).qtip({content:60>o?b(d).find("ul.simcal-events"):b(e).find("> .simcal-tooltip-content"),position:{my:"top center",at:"bottom center",target:b(e),viewport:60>o?b(a):!0,adjust:{method:"shift",scroll:!1}},style:{def:!1,classes:"simcal-default-calendar simcal-event-bubble"},show:{solo:!0,effect:!1,event:"hover"==n?"mouseenter":"click"},hide:{fixed:!0,effect:!1,event:"click"==n?"unfocus":"mouseleave",delay:100},events:{show:function(a,b){f&&f.id&&f.id!=b.id&&f.hide(),f=b}}})})})}function e(){b(".simcal-events-toggle").each(function(a,c){var d=b(c).prev(".simcal-events"),e=d.find(".simcal-event-toggled"),f=b(c).find("i");b(c).on("click",function(){f.toggleClass("simcal-icon-rotate-180"),e.slideToggle()})})}b(".simcal-default-calendar").each(function(a,f){var g,h,i=b(f),j=i.data("calendar-id"),k=i.data("offset"),l=(i.data("events-first"),i.data("calendar-end"),i.find(".simcal-calendar-head")),m=l.find(".simcal-nav-button"),n=i.find(".simcal-ajax-loader"),o=l.find(".simcal-current"),p=o.data("calendar-current"),q=o.find("span.simcal-current-month"),r=o.find("span.simcal-current-year"),s=new Date(1e3*p);i.hasClass("simcal-default-calendar-grid")?(h="simcal_default_calendar_draw_grid",g=new Date(s.getFullYear(),s.getMonth(),1)):(h="simcal_default_calendar_draw_list",c(i)),m.on("click",function(){var a=b(this).hasClass("simcal-next")?"next":"prev";if("simcal_default_calendar_draw_grid"==h){var f,l,m,p=i.find(".simcal-month");"prev"==a?f=new Date(g.setMonth(g.getMonth()-1,1)):(f=new Date(g.setMonth(g.getMonth()+2,1)),f.setDate(0),f.setHours(23),f.setMinutes(59),f.setSeconds(59)),l=f.getMonth(),m=f.getFullYear(),b.ajax({url:simcal_default_calendar.ajax_url,method:"POST",dataType:"json",cache:!1,data:{action:h,month:l+1,year:m,id:j},beforeSend:function(){n.fadeToggle()},success:function(a){q.text(simcal_default_calendar.months.full[l]),r.text(m),o.attr("data-calendar-current",f.getTime()/1e3+k+1),n.fadeToggle(),g=f,p.replaceWith(a.data),d(i,s),e()},error:function(a){console.log(a)}})}else{var s=i.find(".simcal-events-list-container"),t=s.data("prev"),u=s.data("next"),v="prev"==a?t:u;b.ajax({url:simcal_default_calendar.ajax_url,method:"POST",dataType:"json",cache:!1,data:{action:h,ts:v,id:j},beforeSend:function(){n.fadeToggle()},success:function(a){s.replaceWith(a.data),o.attr("data-calendar-current",v),c(i),n.fadeToggle(),e()},error:function(a){console.log(a)}})}})});var f=b(".simcal-default-calendar-grid");f.each(function(a,c){d(c),b(c).on("change",function(){d(this)})}),a.onresize=function(){f.each(function(a,b){d(b)})},e()})}(this);
contributing.md DELETED
@@ -1,58 +0,0 @@
1
- ## Contributing
2
-
3
- Simple Calendar is open source software. Community made patches, localizations, bug reports and contributions are always welcome and crucial to make this plugin a quality tool that empowers people, businesses and institutions alike.
4
-
5
- You can contribute to Simple Calendar by contributing translations, reporting issues, or submitting pull requests.
6
-
7
- Support questions or feature requests should be posted to the [WordPress.org support forums](https://wordpress.org/support/plugin/google-calendar-events) instead.
8
-
9
- ### Contributing Translations
10
-
11
- Interested in translating Simple Calendar to your language? Please use our [WordPress.org translation page](https://translate.wordpress.org/projects/wp-plugins/google-calendar-events) using a free account.
12
-
13
- New to Translating WordPress? Read through the [Translator Handbook](https://make.wordpress.org/polyglots/handbook/tools/glotpress-translate-wordpress-org/) to get started.
14
-
15
- It is no longer necessary to generate and translate .po and .mo files manually. If you want to become a translation editor for your language please get in touch.
16
-
17
- ### Reporting Issues
18
-
19
- If something isn't working, you can help us fix it by submitting an issue report following these steps.
20
-
21
- 1. Isolate your issue, check for theme or plugin compatibility issues first.
22
- 2. Make sure you have a [GitHub account](https://github.com/signup/free).
23
- 3. Search the [Existing Issues](https://github.com/moonstonemedia/Simple-Calendar/issues) to be sure that the one you've noticed isn't already there.
24
- 4. Submit a report for your issue:
25
- * Clearly describe the issue.
26
- * Include steps to reproduce the issue if it's a bug.
27
- * If it's a compatibility issue, please add further details.
28
-
29
- ### Submitting Pull Requests
30
-
31
- If you are knowledgeable of PHP, JavaScript, HTML and/or CSS, and you notice something that can be improved for the benefit of all users of this software, you can propose your changes and issue a pull request (PR) here on GitHub.
32
-
33
- First, fork this repository on GiHub or clone to your machine:
34
-
35
- $ git clone https://github.com/moonstonemedia/Simple-Calendar
36
-
37
- This project uses [Composer](https://getcomposer.org/) to grab dependencies not stored in source control. To setup composer run:
38
-
39
- $ composer install
40
- $ composer dump-autoload -o
41
-
42
- If you plan to work with CSS or JavaScript you may want to use Grunt as well:
43
-
44
- $ npm install
45
-
46
- First make your changes locally, then push them to your forked repository.
47
-
48
- Next, issue a pull request in the original repository with your remote branch (use the master branch as target, do not bother with other branches).
49
-
50
- Please review the [GitHub recommended guidelines for using pull requests](https://help.github.com/articles/using-pull-requests/).
51
-
52
- There are a few things to keep in mind when making changes and developing locally for this project.
53
-
54
- * The most important one is to **ensure you stick to the [WordPress Coding Standards](http://make.wordpress.org/core/handbook/coding-standards/php/)**.
55
- * When commiting reference your issue number (e.g. #1234) and include a note about the fix/changes you are proposing.
56
- * Please **don't** modify the changelogs or readme.txt or other meta assets.
57
-
58
- Finally, a big thanks from us and the plugin community for your help.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
google-calendar-events.php CHANGED
@@ -3,11 +3,11 @@
3
  * Plugin Name: Simple Calendar
4
  * Plugin URI: https://simplecalendar.io
5
  * Description: Add Google Calendar events to your WordPress site in minutes. Beautiful calendar displays. Fully responsive.
6
- * Version: 3.0.9
7
  * Author: Moonstone Media
8
  * Author URI: https://simplecalendar.io
9
  * Text Domain: google-calendar-events
10
- * Domain Path: /languages
11
  *
12
  * @package SimpleCalendar
13
  * @copyright 2015 Moonstone Media/Phil Derksen. All rights reserved.
@@ -29,7 +29,7 @@ if ( version_compare( PHP_VERSION, '5.3.0' ) === -1 ) {
29
  $this_plugin_path = trailingslashit( dirname( __FILE__ ) );
30
  $this_plugin_dir = plugin_dir_url( __FILE__ );
31
  $this_plugin_constants = array(
32
- 'SIMPLE_CALENDAR_VERSION' => '3.0.9',
33
  'SIMPLE_CALENDAR_MAIN_FILE' => __FILE__,
34
  'SIMPLE_CALENDAR_URL' => $this_plugin_dir,
35
  'SIMPLE_CALENDAR_ASSETS' => $this_plugin_dir . 'assets/',
3
  * Plugin Name: Simple Calendar
4
  * Plugin URI: https://simplecalendar.io
5
  * Description: Add Google Calendar events to your WordPress site in minutes. Beautiful calendar displays. Fully responsive.
6
+ * Version: 3.0.10
7
  * Author: Moonstone Media
8
  * Author URI: https://simplecalendar.io
9
  * Text Domain: google-calendar-events
10
+ * Domain Path: /i18n
11
  *
12
  * @package SimpleCalendar
13
  * @copyright 2015 Moonstone Media/Phil Derksen. All rights reserved.
29
  $this_plugin_path = trailingslashit( dirname( __FILE__ ) );
30
  $this_plugin_dir = plugin_dir_url( __FILE__ );
31
  $this_plugin_constants = array(
32
+ 'SIMPLE_CALENDAR_VERSION' => '3.0.10',
33
  'SIMPLE_CALENDAR_MAIN_FILE' => __FILE__,
34
  'SIMPLE_CALENDAR_URL' => $this_plugin_dir,
35
  'SIMPLE_CALENDAR_ASSETS' => $this_plugin_dir . 'assets/',
includes/abstracts/feed.php CHANGED
@@ -245,7 +245,7 @@ abstract class Feed {
245
  public function set_cache( $time = 0 ) {
246
  if ( $time === 0 || ! is_numeric( $time ) ) {
247
  $cache = get_post_meta( $this->post_id, '_feed_cache', true );
248
- $time = is_numeric( $cache ) && $cache > 0 ? absint( $cache ) : $this->cache;
249
  }
250
  $this->cache = absint( $time );
251
  }
245
  public function set_cache( $time = 0 ) {
246
  if ( $time === 0 || ! is_numeric( $time ) ) {
247
  $cache = get_post_meta( $this->post_id, '_feed_cache', true );
248
+ $time = is_numeric( $cache ) && $cache >= 0 ? absint( $cache ) : $this->cache;
249
  }
250
  $this->cache = absint( $time );
251
  }
includes/admin/menus.php CHANGED
@@ -50,8 +50,6 @@ class Menus {
50
 
51
  new Welcome();
52
 
53
- // Conditional redirect to welcome page on activation.
54
- add_action( 'admin_init', array( $this, 'admin_redirects' ) );
55
  // Links and meta content in plugins page.
56
  add_filter( 'plugin_action_links_' . self::$plugin, array( __CLASS__, 'plugin_action_links' ), 10, 5 );
57
  add_filter( 'plugin_row_meta', array( __CLASS__, 'plugin_row_meta' ), 10, 2 );
@@ -158,37 +156,6 @@ class Menus {
158
  return $meta_links;
159
  }
160
 
161
- /**
162
- * Handle redirects to welcome page after install and updates.
163
- *
164
- * Transient must be present, the user must have access rights, and we must ignore the network/bulk plugin updaters.
165
- *
166
- * @since 3.0.0
167
- */
168
- public function admin_redirects() {
169
-
170
- $transient = get_transient( '_simple-calendar_activation_redirect' );
171
-
172
- if ( ! $transient || is_network_admin() || isset( $_GET['activate-multi'] ) || ! current_user_can( 'manage_options' ) ) {
173
- return;
174
- }
175
-
176
- delete_transient( '_simple-calendar_activation_redirect' );
177
-
178
- // Do not redirect if already on welcome page screen.
179
- if ( ! empty( $_GET['page'] ) && in_array( $_GET['page'], array( 'simple-calendar_about' ) ) ) {
180
- return;
181
- }
182
-
183
- $url = add_query_arg(
184
- 'simcal_install',
185
- esc_attr( $transient ),
186
- admin_url( 'index.php?page=simple-calendar_about' )
187
- );
188
- wp_safe_redirect( $url );
189
- exit;
190
- }
191
-
192
  /**
193
  * Admin footer text filter callback.
194
  *
50
 
51
  new Welcome();
52
 
 
 
53
  // Links and meta content in plugins page.
54
  add_filter( 'plugin_action_links_' . self::$plugin, array( __CLASS__, 'plugin_action_links' ), 10, 5 );
55
  add_filter( 'plugin_row_meta', array( __CLASS__, 'plugin_row_meta' ), 10, 2 );
156
  return $meta_links;
157
  }
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  /**
160
  * Admin footer text filter callback.
161
  *
includes/admin/metaboxes/settings.php CHANGED
@@ -696,7 +696,7 @@ class Settings implements Meta_Box {
696
 
697
  $cache_freq = esc_attr( get_post_meta( $post->ID, '_feed_cache_user_amount', true ) );
698
  $cache_unit = esc_attr( get_post_meta( $post->ID, '_feed_cache_user_unit', true ) );
699
- $cache_freq = $cache_freq ? $cache_freq : '2';
700
  $cache_unit = $cache_unit ? $cache_unit : '3600';
701
 
702
  ?>
@@ -708,7 +708,7 @@ class Settings implements Meta_Box {
708
  id="_feed_cache_user_amount"
709
  class="simcal-field simcal-field-number simcal-field-tiny simcal-field-inline"
710
  value="<?php echo $cache_freq; ?>"
711
- min="1" />
712
  <select name="_feed_cache_user_unit"
713
  id="_feed_cache_user_unit"
714
  class="simcal-field simcalfield-select simcal-field-inline">
@@ -880,7 +880,7 @@ class Settings implements Meta_Box {
880
  // Cache interval.
881
  $cache = 7200;
882
  if ( isset( $_POST['_feed_cache_user_amount'] ) && isset( $_POST['_feed_cache_user_unit'] ) ) {
883
- $amount = is_numeric( $_POST['_feed_cache_user_amount'] ) ? absint( $_POST['_feed_cache_user_amount'] ) : 1;
884
  $unit = is_numeric( $_POST['_feed_cache_user_unit'] ) ? absint( $_POST['_feed_cache_user_unit'] ) : 3600;
885
  update_post_meta( $post_id, '_feed_cache_user_amount', $amount );
886
  update_post_meta( $post_id, '_feed_cache_user_unit', $unit );
696
 
697
  $cache_freq = esc_attr( get_post_meta( $post->ID, '_feed_cache_user_amount', true ) );
698
  $cache_unit = esc_attr( get_post_meta( $post->ID, '_feed_cache_user_unit', true ) );
699
+ $cache_freq = $cache_freq >= 0 ? $cache_freq : '2';
700
  $cache_unit = $cache_unit ? $cache_unit : '3600';
701
 
702
  ?>
708
  id="_feed_cache_user_amount"
709
  class="simcal-field simcal-field-number simcal-field-tiny simcal-field-inline"
710
  value="<?php echo $cache_freq; ?>"
711
+ min="0" />
712
  <select name="_feed_cache_user_unit"
713
  id="_feed_cache_user_unit"
714
  class="simcal-field simcalfield-select simcal-field-inline">
880
  // Cache interval.
881
  $cache = 7200;
882
  if ( isset( $_POST['_feed_cache_user_amount'] ) && isset( $_POST['_feed_cache_user_unit'] ) ) {
883
+ $amount = is_numeric( $_POST['_feed_cache_user_amount'] ) || $_POST['_feed_cache_user_amount'] == 0 ? absint( $_POST['_feed_cache_user_amount'] ) : 1;
884
  $unit = is_numeric( $_POST['_feed_cache_user_unit'] ) ? absint( $_POST['_feed_cache_user_unit'] ) : 3600;
885
  update_post_meta( $post_id, '_feed_cache_user_amount', $amount );
886
  update_post_meta( $post_id, '_feed_cache_user_unit', $unit );
includes/calendars/views/default-calendar-grid.php CHANGED
@@ -231,7 +231,7 @@ class Default_Calendar_Grid implements Calendar_View {
231
 
232
  ?>
233
  <th class="simcal-week-day simcal-week-day-<?php echo $i ?>"
234
- data-screen-small="<?php echo substr( $week_days_short[ $i ], 0, 1 ); ?>"
235
  data-screen-medium="<?php echo $week_days_short[ $i ]; ?>"
236
  data-screen-large="<?php echo $week_days_full[ $i ]; ?>"><?php echo $week_days_short[ $i ]; ?></th>
237
  <?php
@@ -415,7 +415,7 @@ class Default_Calendar_Grid implements Calendar_View {
415
  // Event title in list.
416
  $title = ! empty( $event->title ) ? trim( $event->title ) : __( 'Event', 'google-calendar-events' );
417
  if ( $calendar->trim_titles >= 1 ) {
418
- $title = strlen( $title ) > $calendar->trim_titles ? substr( $title, 0, $calendar->trim_titles ) . '&hellip;' : $title;
419
  }
420
 
421
  // Event color.
231
 
232
  ?>
233
  <th class="simcal-week-day simcal-week-day-<?php echo $i ?>"
234
+ data-screen-small="<?php echo mb_substr( $week_days_short[ $i ], 0, 1, 'UTF-8' ); ?>"
235
  data-screen-medium="<?php echo $week_days_short[ $i ]; ?>"
236
  data-screen-large="<?php echo $week_days_full[ $i ]; ?>"><?php echo $week_days_short[ $i ]; ?></th>
237
  <?php
415
  // Event title in list.
416
  $title = ! empty( $event->title ) ? trim( $event->title ) : __( 'Event', 'google-calendar-events' );
417
  if ( $calendar->trim_titles >= 1 ) {
418
+ $title = strlen( $title ) > $calendar->trim_titles ? mb_substr( $title, 0, $calendar->trim_titles ) . '&hellip;' : $title;
419
  }
420
 
421
  // Event color.
includes/feeds/google.php CHANGED
@@ -291,7 +291,7 @@ class Google extends Feed {
291
  set_transient(
292
  '_simple-calendar_feed_id_' . strval( $this->post_id ) . '_' . $this->type,
293
  $calendar,
294
- max( absint( $this->cache ), 60 )
295
  );
296
  }
297
  }
291
  set_transient(
292
  '_simple-calendar_feed_id_' . strval( $this->post_id ) . '_' . $this->type,
293
  $calendar,
294
+ max( absint( $this->cache ), 1 ) // Since a value of 0 means forever we set the minimum here to 1 if the user has set it to be 0
295
  );
296
  }
297
  }
includes/update.php CHANGED
@@ -128,9 +128,42 @@ class Update {
128
  }
129
  }
130
 
 
 
131
  update_option( 'simple-calendar_version', $this->new_ver );
132
  }
133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  /**
135
  * Get posts.
136
  *
128
  }
129
  }
130
 
131
+ $this->admin_redirects();
132
+
133
  update_option( 'simple-calendar_version', $this->new_ver );
134
  }
135
 
136
+ /**
137
+ * Handle redirects to welcome page after install and updates.
138
+ *
139
+ * Transient must be present, the user must have access rights, and we must ignore the network/bulk plugin updaters.
140
+ *
141
+ * @since 3.0.0
142
+ */
143
+ public function admin_redirects() {
144
+
145
+ $transient = get_transient( '_simple-calendar_activation_redirect' );
146
+
147
+ if ( ! $transient || is_network_admin() || isset( $_GET['activate-multi'] ) || ! current_user_can( 'manage_options' ) ) {
148
+ return;
149
+ }
150
+
151
+ delete_transient( '_simple-calendar_activation_redirect' );
152
+
153
+ // Do not redirect if already on welcome page screen.
154
+ if ( ! empty( $_GET['page'] ) && in_array( $_GET['page'], array( 'simple-calendar_about' ) ) ) {
155
+ return;
156
+ }
157
+
158
+ $url = add_query_arg(
159
+ 'simcal_install',
160
+ esc_attr( $transient ),
161
+ admin_url( 'index.php?page=simple-calendar_about' )
162
+ );
163
+ wp_safe_redirect( $url );
164
+ exit;
165
+ }
166
+
167
  /**
168
  * Get posts.
169
  *
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: moonstonemedia, pderksen, nickyoung87, nekojira, rosshanney
3
  Tags: calendar, calendars, calendar manager, custom calendar, custom calendars, event, events, events feed, google calendar, google
4
  Requires at least: 4.0
5
  Tested up to: 4.4
6
- Stable tag: 3.0.9
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -80,6 +80,16 @@ We'd love your help! Here's a few things you can do:
80
 
81
  == Changelog ==
82
 
 
 
 
 
 
 
 
 
 
 
83
  = 3.0.9 - December 16, 2015 =
84
 
85
  * Fix: Fixed all-day events with an end time showing on an extra day.
3
  Tags: calendar, calendars, calendar manager, custom calendar, custom calendars, event, events, events feed, google calendar, google
4
  Requires at least: 4.0
5
  Tested up to: 4.4
6
+ Stable tag: 3.0.10
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
80
 
81
  == Changelog ==
82
 
83
+ = 3.0.10 - December 21, 2015 =
84
+
85
+ * Fix: Pagination tweak to prevent grouped calendars from getting cut off by last calendar in list.
86
+ * Fix: Welcome screen now shows up correctly after a fresh installation.
87
+ * Fix: i18n short day names should now display properly.
88
+ * Fix: i18n truncated event titles should now display properly.
89
+ * Tweak: Allow setting a cache duration of 0.
90
+ * Tweak: Pagination will now always show unless the calendar is static.
91
+ * Tweak: Allow responsive grid view to use hover option.
92
+
93
  = 3.0.9 - December 16, 2015 =
94
 
95
  * Fix: Fixed all-day events with an end time showing on an extra day.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitb05cc36e87bb588ad318e9240739102b::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitf26f36ad9bd5c1fa2fd296c51b641376::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit2dc39a0b64306b8942369cfefab762df::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -13,7 +13,9 @@
13
  namespace Composer\Autoload;
14
 
15
  /**
16
- * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 
 
17
  *
18
  * $loader = new \Composer\Autoload\ClassLoader();
19
  *
@@ -37,8 +39,6 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
@@ -344,7 +344,7 @@ class ClassLoader
344
  private function findFileWithExtension($class, $ext)
345
  {
346
  // PSR-4 lookup
347
- $logicalPathPsr4 = ('\\' !== DIRECTORY_SEPARATOR ? str_replace('\\', DIRECTORY_SEPARATOR, $class) : $class) . $ext;
348
 
349
  $first = $class[0];
350
  if (isset($this->prefixLengthsPsr4[$first])) {
@@ -370,10 +370,10 @@ class ClassLoader
370
  if (false !== $pos = strrpos($class, '\\')) {
371
  // namespaced class name
372
  $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
373
- . str_replace('_', DIRECTORY_SEPARATOR, substr($logicalPathPsr4, $pos + 1));
374
  } else {
375
  // PEAR-like class name
376
- $logicalPathPsr0 = str_replace('_', DIRECTORY_SEPARATOR, $class) . $ext;
377
  }
378
 
379
  if (isset($this->prefixesPsr0[$first])) {
13
  namespace Composer\Autoload;
14
 
15
  /**
16
+ * ClassLoader implements a PSR-0 class loader
17
+ *
18
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
19
  *
20
  * $loader = new \Composer\Autoload\ClassLoader();
21
  *
39
  *
40
  * @author Fabien Potencier <fabien@symfony.com>
41
  * @author Jordi Boggiano <j.boggiano@seld.be>
 
 
42
  */
43
  class ClassLoader
44
  {
344
  private function findFileWithExtension($class, $ext)
345
  {
346
  // PSR-4 lookup
347
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
348
 
349
  $first = $class[0];
350
  if (isset($this->prefixLengthsPsr4[$first])) {
370
  if (false !== $pos = strrpos($class, '\\')) {
371
  // namespaced class name
372
  $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
373
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
374
  } else {
375
  // PEAR-like class name
376
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
377
  }
378
 
379
  if (isset($this->prefixesPsr0[$first])) {
vendor/composer/autoload_classmap.php CHANGED
@@ -3612,7 +3612,6 @@ return array(
3612
  'Google_Verifier_Pem' => $vendorDir . '/google/apiclient/src/Google/Verifier/Pem.php',
3613
  'Mexitek\\PHPColors\\Color' => $vendorDir . '/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php',
3614
  'Parsedown' => $vendorDir . '/erusev/parsedown/Parsedown.php',
3615
- 'ParsedownTest' => $vendorDir . '/erusev/parsedown/test/ParsedownTest.php',
3616
  'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php',
3617
  'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php',
3618
  'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php',
@@ -3659,6 +3658,46 @@ return array(
3659
  'Symfony\\Component\\Translation\\MessageSelector' => $vendorDir . '/symfony/translation/MessageSelector.php',
3660
  'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php',
3661
  'Symfony\\Component\\Translation\\PluralizationRules' => $vendorDir . '/symfony/translation/PluralizationRules.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3662
  'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php',
3663
  'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php',
3664
  'Symfony\\Component\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation/TranslatorInterface.php',
3612
  'Google_Verifier_Pem' => $vendorDir . '/google/apiclient/src/Google/Verifier/Pem.php',
3613
  'Mexitek\\PHPColors\\Color' => $vendorDir . '/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php',
3614
  'Parsedown' => $vendorDir . '/erusev/parsedown/Parsedown.php',
 
3615
  'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php',
3616
  'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php',
3617
  'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php',
3658
  'Symfony\\Component\\Translation\\MessageSelector' => $vendorDir . '/symfony/translation/MessageSelector.php',
3659
  'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php',
3660
  'Symfony\\Component\\Translation\\PluralizationRules' => $vendorDir . '/symfony/translation/PluralizationRules.php',
3661
+ 'Symfony\\Component\\Translation\\Tests\\Catalogue\\AbstractOperationTest' => $vendorDir . '/symfony/translation/Tests/Catalogue/AbstractOperationTest.php',
3662
+ 'Symfony\\Component\\Translation\\Tests\\Catalogue\\MergeOperationTest' => $vendorDir . '/symfony/translation/Tests/Catalogue/MergeOperationTest.php',
3663
+ 'Symfony\\Component\\Translation\\Tests\\Catalogue\\TargetOperationTest' => $vendorDir . '/symfony/translation/Tests/Catalogue/TargetOperationTest.php',
3664
+ 'Symfony\\Component\\Translation\\Tests\\DataCollectorTranslatorTest' => $vendorDir . '/symfony/translation/Tests/DataCollectorTranslatorTest.php',
3665
+ 'Symfony\\Component\\Translation\\Tests\\DataCollector\\TranslationDataCollectorTest' => $vendorDir . '/symfony/translation/Tests/DataCollector/TranslationDataCollectorTest.php',
3666
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\ConcreteFileDumper' => $vendorDir . '/symfony/translation/Tests/Dumper/FileDumperTest.php',
3667
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\CsvFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/CsvFileDumperTest.php',
3668
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\FileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/FileDumperTest.php',
3669
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\IcuResFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/IcuResFileDumperTest.php',
3670
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\IniFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/IniFileDumperTest.php',
3671
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\JsonFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/JsonFileDumperTest.php',
3672
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\MoFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/MoFileDumperTest.php',
3673
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\PhpFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/PhpFileDumperTest.php',
3674
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\PoFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/PoFileDumperTest.php',
3675
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\QtFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/QtFileDumperTest.php',
3676
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\XliffFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/XliffFileDumperTest.php',
3677
+ 'Symfony\\Component\\Translation\\Tests\\Dumper\\YamlFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/YamlFileDumperTest.php',
3678
+ 'Symfony\\Component\\Translation\\Tests\\IdentityTranslatorTest' => $vendorDir . '/symfony/translation/Tests/IdentityTranslatorTest.php',
3679
+ 'Symfony\\Component\\Translation\\Tests\\IntervalTest' => $vendorDir . '/symfony/translation/Tests/IntervalTest.php',
3680
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\CsvFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/CsvFileLoaderTest.php',
3681
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\IcuDatFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/IcuDatFileLoaderTest.php',
3682
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\IcuResFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/IcuResFileLoaderTest.php',
3683
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\IniFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/IniFileLoaderTest.php',
3684
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\JsonFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/JsonFileLoaderTest.php',
3685
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\LocalizedTestCase' => $vendorDir . '/symfony/translation/Tests/Loader/LocalizedTestCase.php',
3686
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\MoFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/MoFileLoaderTest.php',
3687
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\PhpFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/PhpFileLoaderTest.php',
3688
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\PoFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/PoFileLoaderTest.php',
3689
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\QtFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/QtFileLoaderTest.php',
3690
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\XliffFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/XliffFileLoaderTest.php',
3691
+ 'Symfony\\Component\\Translation\\Tests\\Loader\\YamlFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/YamlFileLoaderTest.php',
3692
+ 'Symfony\\Component\\Translation\\Tests\\LoggingTranslatorTest' => $vendorDir . '/symfony/translation/Tests/LoggingTranslatorTest.php',
3693
+ 'Symfony\\Component\\Translation\\Tests\\MessageCatalogueTest' => $vendorDir . '/symfony/translation/Tests/MessageCatalogueTest.php',
3694
+ 'Symfony\\Component\\Translation\\Tests\\MessageSelectorTest' => $vendorDir . '/symfony/translation/Tests/MessageSelectorTest.php',
3695
+ 'Symfony\\Component\\Translation\\Tests\\PluralizationRulesTest' => $vendorDir . '/symfony/translation/Tests/PluralizationRulesTest.php',
3696
+ 'Symfony\\Component\\Translation\\Tests\\StaleResource' => $vendorDir . '/symfony/translation/Tests/TranslatorCacheTest.php',
3697
+ 'Symfony\\Component\\Translation\\Tests\\StringClass' => $vendorDir . '/symfony/translation/Tests/TranslatorTest.php',
3698
+ 'Symfony\\Component\\Translation\\Tests\\TranslatorCacheTest' => $vendorDir . '/symfony/translation/Tests/TranslatorCacheTest.php',
3699
+ 'Symfony\\Component\\Translation\\Tests\\TranslatorTest' => $vendorDir . '/symfony/translation/Tests/TranslatorTest.php',
3700
+ 'Symfony\\Component\\Translation\\Tests\\Util\\ArrayConverterTest' => $vendorDir . '/symfony/translation/Tests/Util/ArrayConverterTest.php',
3701
  'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php',
3702
  'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php',
3703
  'Symfony\\Component\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation/TranslatorInterface.php',
vendor/composer/autoload_files.php CHANGED
@@ -6,6 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
10
- 'f15d016d70663d5e96ccd2b863511eb8' => $vendorDir . '/cbschuld/browser.php/lib/Browser.php',
11
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
10
+ $vendorDir . '/cbschuld/browser.php/lib/Browser.php',
11
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitb05cc36e87bb588ad318e9240739102b
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitb05cc36e87bb588ad318e9240739102b
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitb05cc36e87bb588ad318e9240739102b', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitb05cc36e87bb588ad318e9240739102b', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -41,19 +41,15 @@ class ComposerAutoloaderInitb05cc36e87bb588ad318e9240739102b
41
  $loader->register(true);
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
- foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequireb05cc36e87bb588ad318e9240739102b($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequireb05cc36e87bb588ad318e9240739102b($fileIdentifier, $file)
53
  {
54
- if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
- require $file;
56
-
57
- $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
58
- }
59
  }
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitf26f36ad9bd5c1fa2fd296c51b641376
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitf26f36ad9bd5c1fa2fd296c51b641376', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitf26f36ad9bd5c1fa2fd296c51b641376', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
41
  $loader->register(true);
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
+ foreach ($includeFiles as $file) {
45
+ composerRequiref26f36ad9bd5c1fa2fd296c51b641376($file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequiref26f36ad9bd5c1fa2fd296c51b641376($file)
53
  {
54
+ require $file;
 
 
 
 
55
  }
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit2dc39a0b64306b8942369cfefab762df {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit2dc39a0b64306b8942369cfefab762df {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit2dc39a0b64306b8942369cfefab762df', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit2dc39a0b64306b8942369cfefab762df', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -41,80 +41,26 @@
41
  ]
42
  },
43
  {
44
- "name": "mexitek/phpcolors",
45
- "version": "dev-master",
46
- "version_normalized": "9999999-dev",
47
- "source": {
48
- "type": "git",
49
- "url": "https://github.com/mexitek/phpColors.git",
50
- "reference": "89bf30473a68dc8845e46e9db3e536b969e18c11"
51
- },
52
- "dist": {
53
- "type": "zip",
54
- "url": "https://api.github.com/repos/mexitek/phpColors/zipball/89bf30473a68dc8845e46e9db3e536b969e18c11",
55
- "reference": "89bf30473a68dc8845e46e9db3e536b969e18c11",
56
- "shasum": ""
57
- },
58
- "require": {
59
- "php": ">=5.3.0"
60
- },
61
- "time": "2015-09-09 15:43:06",
62
- "type": "library",
63
- "installation-source": "source",
64
- "autoload": {
65
- "classmap": [
66
- "src"
67
- ]
68
- },
69
- "notification-url": "https://packagist.org/downloads/",
70
- "license": [
71
- "MIT"
72
- ],
73
- "authors": [
74
- {
75
- "name": "Arlo Carreon",
76
- "homepage": "http://arlocarreon.com",
77
- "role": "creator"
78
- }
79
- ],
80
- "description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
81
- "homepage": "http://mexitek.github.com/phpColors/",
82
- "keywords": [
83
- "color",
84
- "css",
85
- "design",
86
- "frontend",
87
- "ui"
88
- ]
89
- },
90
- {
91
- "name": "nesbot/carbon",
92
- "version": "1.21.0",
93
- "version_normalized": "1.21.0.0",
94
  "source": {
95
  "type": "git",
96
- "url": "https://github.com/briannesbitt/Carbon.git",
97
- "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7"
98
  },
99
  "dist": {
100
  "type": "zip",
101
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
102
- "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
103
  "shasum": ""
104
  },
105
- "require": {
106
- "php": ">=5.3.0",
107
- "symfony/translation": "~2.6|~3.0"
108
- },
109
- "require-dev": {
110
- "phpunit/phpunit": "~4.0|~5.0"
111
- },
112
- "time": "2015-11-04 20:07:17",
113
  "type": "library",
114
  "installation-source": "dist",
115
  "autoload": {
116
- "psr-4": {
117
- "Carbon\\": "src/Carbon/"
118
  }
119
  },
120
  "notification-url": "https://packagist.org/downloads/",
@@ -123,59 +69,51 @@
123
  ],
124
  "authors": [
125
  {
126
- "name": "Brian Nesbitt",
127
- "email": "brian@nesbot.com",
128
- "homepage": "http://nesbot.com"
129
  }
130
  ],
131
- "description": "A simple API extension for DateTime.",
132
- "homepage": "http://carbon.nesbot.com",
133
  "keywords": [
134
- "date",
135
- "datetime",
136
- "time"
137
  ]
138
  },
139
  {
140
- "name": "erusev/parsedown",
141
- "version": "1.6.0",
142
- "version_normalized": "1.6.0.0",
143
  "source": {
144
- "type": "git",
145
- "url": "https://github.com/erusev/parsedown.git",
146
- "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7"
147
  },
148
  "dist": {
149
  "type": "zip",
150
- "url": "https://api.github.com/repos/erusev/parsedown/zipball/3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
151
- "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
152
  "shasum": ""
153
  },
154
- "time": "2015-10-04 16:44:32",
155
  "type": "library",
 
 
 
 
 
156
  "installation-source": "dist",
157
  "autoload": {
158
  "psr-0": {
159
- "Parsedown": ""
160
  }
161
  },
162
  "notification-url": "https://packagist.org/downloads/",
163
  "license": [
164
  "MIT"
165
  ],
166
- "authors": [
167
- {
168
- "name": "Emanuil Rusev",
169
- "email": "hello@erusev.com",
170
- "homepage": "http://erusev.com"
171
- }
172
- ],
173
- "description": "Parser for Markdown.",
174
- "homepage": "http://parsedown.org",
175
- "keywords": [
176
- "markdown",
177
- "parser"
178
- ]
179
  },
180
  {
181
  "name": "nekojira/wp-requirements",
@@ -222,38 +160,100 @@
222
  ]
223
  },
224
  {
225
- "name": "xrstf/composer-php52",
226
- "version": "v1.0.19",
227
- "version_normalized": "1.0.19.0",
228
  "source": {
229
- "type": "hg",
230
- "url": "https://bitbucket.org/xrstf/composer-php52",
231
- "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e"
232
  },
233
  "dist": {
234
  "type": "zip",
235
- "url": "https://bitbucket.org/xrstf/composer-php52/get/9a4a9c46d0347b39bf9159815301dc66fc25324e.zip",
236
- "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e",
237
  "shasum": ""
238
  },
239
- "time": "2015-10-01 14:11:58",
 
 
 
240
  "type": "library",
241
- "extra": {
242
- "branch-alias": {
243
- "dev-default": "1.x-dev"
 
 
 
 
 
 
 
 
 
 
 
 
244
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  },
 
 
 
 
 
 
 
 
 
246
  "installation-source": "dist",
247
  "autoload": {
248
- "psr-0": {
249
- "xrstf\\Composer52": "lib/"
250
  }
251
  },
252
  "notification-url": "https://packagist.org/downloads/",
253
  "license": [
254
  "MIT"
255
  ],
256
- "homepage": "http://www.xrstf.de/"
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  },
258
  {
259
  "name": "google/apiclient",
@@ -458,7 +458,7 @@
458
  "dev-master": "1.0-dev"
459
  }
460
  },
461
- "installation-source": "source",
462
  "autoload": {
463
  "psr-0": {
464
  "Composer\\Installers\\": "src/"
41
  ]
42
  },
43
  {
44
+ "name": "erusev/parsedown",
45
+ "version": "1.6.0",
46
+ "version_normalized": "1.6.0.0",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  "source": {
48
  "type": "git",
49
+ "url": "https://github.com/erusev/parsedown.git",
50
+ "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7"
51
  },
52
  "dist": {
53
  "type": "zip",
54
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
55
+ "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
56
  "shasum": ""
57
  },
58
+ "time": "2015-10-04 16:44:32",
 
 
 
 
 
 
 
59
  "type": "library",
60
  "installation-source": "dist",
61
  "autoload": {
62
+ "psr-0": {
63
+ "Parsedown": ""
64
  }
65
  },
66
  "notification-url": "https://packagist.org/downloads/",
69
  ],
70
  "authors": [
71
  {
72
+ "name": "Emanuil Rusev",
73
+ "email": "hello@erusev.com",
74
+ "homepage": "http://erusev.com"
75
  }
76
  ],
77
+ "description": "Parser for Markdown.",
78
+ "homepage": "http://parsedown.org",
79
  "keywords": [
80
+ "markdown",
81
+ "parser"
 
82
  ]
83
  },
84
  {
85
+ "name": "xrstf/composer-php52",
86
+ "version": "v1.0.19",
87
+ "version_normalized": "1.0.19.0",
88
  "source": {
89
+ "type": "hg",
90
+ "url": "https://bitbucket.org/xrstf/composer-php52",
91
+ "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e"
92
  },
93
  "dist": {
94
  "type": "zip",
95
+ "url": "https://bitbucket.org/xrstf/composer-php52/get/9a4a9c46d0347b39bf9159815301dc66fc25324e.zip",
96
+ "reference": "9a4a9c46d0347b39bf9159815301dc66fc25324e",
97
  "shasum": ""
98
  },
99
+ "time": "2015-10-01 14:11:58",
100
  "type": "library",
101
+ "extra": {
102
+ "branch-alias": {
103
+ "dev-default": "1.x-dev"
104
+ }
105
+ },
106
  "installation-source": "dist",
107
  "autoload": {
108
  "psr-0": {
109
+ "xrstf\\Composer52": "lib/"
110
  }
111
  },
112
  "notification-url": "https://packagist.org/downloads/",
113
  "license": [
114
  "MIT"
115
  ],
116
+ "homepage": "http://www.xrstf.de/"
 
 
 
 
 
 
 
 
 
 
 
 
117
  },
118
  {
119
  "name": "nekojira/wp-requirements",
160
  ]
161
  },
162
  {
163
+ "name": "mexitek/phpcolors",
164
+ "version": "dev-master",
165
+ "version_normalized": "9999999-dev",
166
  "source": {
167
+ "type": "git",
168
+ "url": "https://github.com/mexitek/phpColors.git",
169
+ "reference": "89bf30473a68dc8845e46e9db3e536b969e18c11"
170
  },
171
  "dist": {
172
  "type": "zip",
173
+ "url": "https://api.github.com/repos/mexitek/phpColors/zipball/89bf30473a68dc8845e46e9db3e536b969e18c11",
174
+ "reference": "89bf30473a68dc8845e46e9db3e536b969e18c11",
175
  "shasum": ""
176
  },
177
+ "require": {
178
+ "php": ">=5.3.0"
179
+ },
180
+ "time": "2015-09-09 15:43:06",
181
  "type": "library",
182
+ "installation-source": "source",
183
+ "autoload": {
184
+ "classmap": [
185
+ "src"
186
+ ]
187
+ },
188
+ "notification-url": "https://packagist.org/downloads/",
189
+ "license": [
190
+ "MIT"
191
+ ],
192
+ "authors": [
193
+ {
194
+ "name": "Arlo Carreon",
195
+ "homepage": "http://arlocarreon.com",
196
+ "role": "creator"
197
  }
198
+ ],
199
+ "description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
200
+ "homepage": "http://mexitek.github.com/phpColors/",
201
+ "keywords": [
202
+ "color",
203
+ "css",
204
+ "design",
205
+ "frontend",
206
+ "ui"
207
+ ]
208
+ },
209
+ {
210
+ "name": "nesbot/carbon",
211
+ "version": "1.21.0",
212
+ "version_normalized": "1.21.0.0",
213
+ "source": {
214
+ "type": "git",
215
+ "url": "https://github.com/briannesbitt/Carbon.git",
216
+ "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7"
217
+ },
218
+ "dist": {
219
+ "type": "zip",
220
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
221
+ "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
222
+ "shasum": ""
223
  },
224
+ "require": {
225
+ "php": ">=5.3.0",
226
+ "symfony/translation": "~2.6|~3.0"
227
+ },
228
+ "require-dev": {
229
+ "phpunit/phpunit": "~4.0|~5.0"
230
+ },
231
+ "time": "2015-11-04 20:07:17",
232
+ "type": "library",
233
  "installation-source": "dist",
234
  "autoload": {
235
+ "psr-4": {
236
+ "Carbon\\": "src/Carbon/"
237
  }
238
  },
239
  "notification-url": "https://packagist.org/downloads/",
240
  "license": [
241
  "MIT"
242
  ],
243
+ "authors": [
244
+ {
245
+ "name": "Brian Nesbitt",
246
+ "email": "brian@nesbot.com",
247
+ "homepage": "http://nesbot.com"
248
+ }
249
+ ],
250
+ "description": "A simple API extension for DateTime.",
251
+ "homepage": "http://carbon.nesbot.com",
252
+ "keywords": [
253
+ "date",
254
+ "datetime",
255
+ "time"
256
+ ]
257
  },
258
  {
259
  "name": "google/apiclient",
458
  "dev-master": "1.0-dev"
459
  }
460
  },
461
+ "installation-source": "dist",
462
  "autoload": {
463
  "psr-0": {
464
  "Composer\\Installers\\": "src/"