From aeccff2b381efc8c63217de0bff9a724623a2fbb Mon Sep 17 00:00:00 2001 From: david Date: Mon, 27 Jun 2011 17:09:39 +0000 Subject: [PATCH] - Cambios git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_Web/trunk@16 77ab8c26-3d69-2c4d-86f2-786f4ba54905 --- .../1371C581-8C6D-45D9-D9EF-77BD16F352C8.jpg | Bin 0 -> 15219 bytes .../23017F7E-D698-FABC-62D3-C7F2A64C4BF4.jpg | Bin 0 -> 7746 bytes .../ABE23EE8-8E8F-ED31-B224-E8AADD996AA2.jpg | Bin 0 -> 14086 bytes .../google-calendar-events/admin/add.php | 376 +++++ .../google-calendar-events/admin/delete.php | 39 + .../google-calendar-events/admin/edit.php | 389 +++++ .../google-calendar-events/admin/main.php | 112 ++ .../google-calendar-events/admin/refresh.php | 40 + .../admin/timezone-choices.php | 429 ++++++ .../css/gce-old-style.css | 28 + .../google-calendar-events/css/gce-style.css | 203 +++ .../google-calendar-events.php | 689 +++++++++ .../google-calendar-events/inc/gce-event.php | 536 +++++++ .../google-calendar-events/inc/gce-feed.php | 244 ++++ .../google-calendar-events/inc/gce-parser.php | 357 +++++ .../inc/php-calendar.php | 83 ++ .../js/gce-admin-script.js | 29 + .../google-calendar-events/js/gce-script.js | 45 + .../google-calendar-events/js/jquery-qtip.js | 15 + .../languages/google-calendar-events-hu_HU.mo | Bin 0 -> 14084 bytes .../languages/google-calendar-events-hu_HU.po | 500 +++++++ .../languages/google-calendar-events.pot | 1053 ++++++++++++++ .../google-calendar-events/license.txt | 288 ++++ .../plugins/google-calendar-events/readme.txt | 143 ++ .../google-calendar-events/screenshot-1.jpg | Bin 0 -> 22609 bytes .../google-calendar-events/screenshot-2.jpg | Bin 0 -> 22381 bytes .../google-calendar-events/screenshot-3.jpg | Bin 0 -> 28653 bytes .../google-calendar-events/uninstall.php | 19 + .../widget/gce-widget.php | 235 +++ .../images/cutout/16/asmallworld.png | Bin 0 -> 1155 bytes .../images/cutout/16/bandcamp.png | Bin 0 -> 865 bytes .../images/cutout/16/bbb.png | Bin 0 -> 1128 bytes .../images/cutout/16/blogger.png | Bin 0 -> 760 bytes .../images/cutout/16/buzz.png | Bin 0 -> 1168 bytes .../images/cutout/16/delicious.png | Bin 0 -> 687 bytes .../images/cutout/16/deviantart.png | Bin 0 -> 1032 bytes .../images/cutout/16/digg.png | Bin 0 -> 850 bytes .../images/cutout/16/digitaltunes.png | Bin 0 -> 1125 bytes .../images/cutout/16/ebay.png | Bin 0 -> 1000 bytes .../images/cutout/16/email.png | Bin 0 -> 3856 bytes .../images/cutout/16/etsy.png | Bin 0 -> 1131 bytes .../images/cutout/16/facebook.png | Bin 0 -> 779 bytes .../images/cutout/16/flickr.png | Bin 0 -> 777 bytes .../images/cutout/16/flixster.png | Bin 0 -> 1014 bytes .../images/cutout/16/foursquare.png | Bin 0 -> 1160 bytes .../images/cutout/16/friendfeed.png | Bin 0 -> 982 bytes .../images/cutout/16/hulu.png | Bin 0 -> 951 bytes .../images/cutout/16/hyves.png | Bin 0 -> 1113 bytes .../images/cutout/16/imdb.png | Bin 0 -> 988 bytes .../images/cutout/16/lastfm.png | Bin 0 -> 1119 bytes .../images/cutout/16/linkedin.png | Bin 0 -> 776 bytes .../images/cutout/16/live365.png | Bin 0 -> 1145 bytes .../images/cutout/16/meetup.png | Bin 0 -> 1147 bytes .../images/cutout/16/merchantcircle.png | Bin 0 -> 1059 bytes .../images/cutout/16/myspace.png | Bin 0 -> 816 bytes .../images/cutout/16/orkut.png | Bin 0 -> 836 bytes .../images/cutout/16/pandora.png | Bin 0 -> 985 bytes .../images/cutout/16/picasa.png | Bin 0 -> 813 bytes .../images/cutout/16/ping.png | Bin 0 -> 999 bytes .../images/cutout/16/plancast.png | Bin 0 -> 1071 bytes .../images/cutout/16/reddit.png | Bin 0 -> 856 bytes .../images/cutout/16/rss.png | Bin 0 -> 843 bytes .../images/cutout/16/skype.png | Bin 0 -> 1147 bytes .../images/cutout/16/slideshare.png | Bin 0 -> 1089 bytes .../images/cutout/16/soundcloud.png | Bin 0 -> 1080 bytes .../images/cutout/16/steam.png | Bin 0 -> 860 bytes .../images/cutout/16/stumble.png | Bin 0 -> 838 bytes .../images/cutout/16/talk.png | Bin 0 -> 1040 bytes .../images/cutout/16/tumblr.png | Bin 0 -> 1131 bytes .../images/cutout/16/tungle.png | Bin 0 -> 1144 bytes .../images/cutout/16/twitter.png | Bin 0 -> 817 bytes .../images/cutout/16/ustream.png | Bin 0 -> 902 bytes .../images/cutout/16/vimeo.png | Bin 0 -> 1124 bytes .../images/cutout/16/wordpress.png | Bin 0 -> 849 bytes .../images/cutout/16/yelp.png | Bin 0 -> 1154 bytes .../images/cutout/16/youtube.png | Bin 0 -> 841 bytes .../images/cutout/32/asmallworld.png | Bin 0 -> 3473 bytes .../images/cutout/32/bandcamp.png | Bin 0 -> 2192 bytes .../images/cutout/32/bbb.png | Bin 0 -> 2997 bytes .../images/cutout/32/blogger.png | Bin 0 -> 1761 bytes .../images/cutout/32/buzz.png | Bin 0 -> 2131 bytes .../images/cutout/32/delicious.png | Bin 0 -> 1533 bytes .../images/cutout/32/deviantart.png | Bin 0 -> 2563 bytes .../images/cutout/32/digg.png | Bin 0 -> 2055 bytes .../images/cutout/32/digitaltunes.png | Bin 0 -> 3092 bytes .../images/cutout/32/ebay.png | Bin 0 -> 2678 bytes .../images/cutout/32/email.png | Bin 0 -> 6022 bytes .../images/cutout/32/etsy.png | Bin 0 -> 3386 bytes .../images/cutout/32/facebook.png | Bin 0 -> 1767 bytes .../images/cutout/32/flickr.png | Bin 0 -> 1799 bytes .../images/cutout/32/flixster.png | Bin 0 -> 2963 bytes .../images/cutout/32/foursquare.png | Bin 0 -> 3501 bytes .../images/cutout/32/friendfeed.png | Bin 0 -> 2353 bytes .../images/cutout/32/hulu.png | Bin 0 -> 2692 bytes .../images/cutout/32/hyves.png | Bin 0 -> 3005 bytes .../images/cutout/32/imdb.png | Bin 0 -> 2755 bytes .../images/cutout/32/lastfm.png | Bin 0 -> 2951 bytes .../images/cutout/32/linkedin.png | Bin 0 -> 1778 bytes .../images/cutout/32/live365.png | Bin 0 -> 3464 bytes .../images/cutout/32/meetup.png | Bin 0 -> 3374 bytes .../images/cutout/32/merchantcircle.png | Bin 0 -> 2557 bytes .../images/cutout/32/myspace.png | Bin 0 -> 1966 bytes .../images/cutout/32/orkut.png | Bin 0 -> 2035 bytes .../images/cutout/32/pandora.png | Bin 0 -> 2615 bytes .../images/cutout/32/picasa.png | Bin 0 -> 1928 bytes .../images/cutout/32/ping.png | Bin 0 -> 2979 bytes .../images/cutout/32/plancast.png | Bin 0 -> 2839 bytes .../images/cutout/32/reddit.png | Bin 0 -> 2191 bytes .../images/cutout/32/rss.png | Bin 0 -> 1954 bytes .../images/cutout/32/skype.png | Bin 0 -> 3267 bytes .../images/cutout/32/slideshare.png | Bin 0 -> 3092 bytes .../images/cutout/32/soundcloud.png | Bin 0 -> 2902 bytes .../images/cutout/32/steam.png | Bin 0 -> 2109 bytes .../images/cutout/32/stumble.png | Bin 0 -> 1962 bytes .../images/cutout/32/talk.png | Bin 0 -> 2860 bytes .../images/cutout/32/tumblr.png | Bin 0 -> 3146 bytes .../images/cutout/32/tungle.png | Bin 0 -> 3354 bytes .../images/cutout/32/twitter.png | Bin 0 -> 1977 bytes .../images/cutout/32/ustream.png | Bin 0 -> 2332 bytes .../images/cutout/32/vimeo.png | Bin 0 -> 3060 bytes .../images/cutout/32/wordpress.png | Bin 0 -> 2285 bytes .../images/cutout/32/yelp.png | Bin 0 -> 3488 bytes .../images/cutout/32/youtube.png | Bin 0 -> 2125 bytes .../images/cutout/64/asmallworld.png | Bin 0 -> 10664 bytes .../images/cutout/64/bandcamp.png | Bin 0 -> 5572 bytes .../images/cutout/64/bbb.png | Bin 0 -> 8127 bytes .../images/cutout/64/blogger.png | Bin 0 -> 8195 bytes .../images/cutout/64/buzz.png | Bin 0 -> 5744 bytes .../images/cutout/64/delicious.png | Bin 0 -> 7888 bytes .../images/cutout/64/deviantart.png | Bin 0 -> 6078 bytes .../images/cutout/64/digg.png | Bin 0 -> 9636 bytes .../images/cutout/64/digitaltunes.png | Bin 0 -> 8537 bytes .../images/cutout/64/ebay.png | Bin 0 -> 6195 bytes .../images/cutout/64/email.png | Bin 0 -> 11949 bytes .../images/cutout/64/etsy.png | Bin 0 -> 9831 bytes .../images/cutout/64/facebook.png | Bin 0 -> 9485 bytes .../images/cutout/64/flickr.png | Bin 0 -> 9010 bytes .../images/cutout/64/flixster.png | Bin 0 -> 9545 bytes .../images/cutout/64/foursquare.png | Bin 0 -> 10408 bytes .../images/cutout/64/friendfeed.png | Bin 0 -> 4441 bytes .../images/cutout/64/hulu.png | Bin 0 -> 7413 bytes .../images/cutout/64/hyves.png | Bin 0 -> 8021 bytes .../images/cutout/64/imdb.png | Bin 0 -> 7506 bytes .../images/cutout/64/lastfm.png | Bin 0 -> 8168 bytes .../images/cutout/64/linkedin.png | Bin 0 -> 9040 bytes .../images/cutout/64/live365.png | Bin 0 -> 10852 bytes .../images/cutout/64/meetup.png | Bin 0 -> 9690 bytes .../images/cutout/64/merchantcircle.png | Bin 0 -> 6260 bytes .../images/cutout/64/myspace.png | Bin 0 -> 9778 bytes .../images/cutout/64/orkut.png | Bin 0 -> 10251 bytes .../images/cutout/64/pandora.png | Bin 0 -> 6843 bytes .../images/cutout/64/picasa.png | Bin 0 -> 6759 bytes .../images/cutout/64/ping.png | Bin 0 -> 8783 bytes .../images/cutout/64/plancast.png | Bin 0 -> 7547 bytes .../images/cutout/64/reddit.png | Bin 0 -> 10334 bytes .../images/cutout/64/rss.png | Bin 0 -> 9895 bytes .../images/cutout/64/skype.png | Bin 0 -> 8924 bytes .../images/cutout/64/slideshare.png | Bin 0 -> 8891 bytes .../images/cutout/64/soundcloud.png | Bin 0 -> 8269 bytes .../images/cutout/64/steam.png | Bin 0 -> 5203 bytes .../images/cutout/64/stumble.png | Bin 0 -> 9622 bytes .../images/cutout/64/talk.png | Bin 0 -> 7551 bytes .../images/cutout/64/tumblr.png | Bin 0 -> 8573 bytes .../images/cutout/64/tungle.png | Bin 0 -> 10150 bytes .../images/cutout/64/twitter.png | Bin 0 -> 9496 bytes .../images/cutout/64/ustream.png | Bin 0 -> 6072 bytes .../images/cutout/64/vimeo.png | Bin 0 -> 8088 bytes .../images/cutout/64/wordpress.png | Bin 0 -> 10590 bytes .../images/cutout/64/yelp.png | Bin 0 -> 10606 bytes .../images/cutout/64/youtube.png | Bin 0 -> 10115 bytes .../images/cutout/readme.txt | 3 + .../images/default/16/asmallworld.png | Bin 0 -> 1152 bytes .../images/default/16/bandcamp.png | Bin 0 -> 595 bytes .../images/default/16/bbb.png | Bin 0 -> 983 bytes .../images/default/16/blogger.png | Bin 0 -> 957 bytes .../images/default/16/buzz.png | Bin 0 -> 3574 bytes .../images/default/16/delicious.png | Bin 0 -> 492 bytes .../images/default/16/deviantart.png | Bin 0 -> 825 bytes .../images/default/16/digg.png | Bin 0 -> 1646 bytes .../images/default/16/digitaltunes.png | Bin 0 -> 1063 bytes .../images/default/16/ebay.png | Bin 0 -> 764 bytes .../images/default/16/email.png | Bin 0 -> 3646 bytes .../images/default/16/etsy.png | Bin 0 -> 888 bytes .../images/default/16/facebook.png | Bin 0 -> 796 bytes .../images/default/16/flickr.png | Bin 0 -> 699 bytes .../images/default/16/flixster.png | Bin 0 -> 872 bytes .../images/default/16/foursquare.png | Bin 0 -> 1113 bytes .../images/default/16/friendfeed.png | Bin 0 -> 1349 bytes .../images/default/16/hulu.png | Bin 0 -> 800 bytes .../images/default/16/hyves.png | Bin 0 -> 890 bytes .../images/default/16/imdb.png | Bin 0 -> 760 bytes .../images/default/16/lastfm.png | Bin 0 -> 977 bytes .../images/default/16/linkedin.png | Bin 0 -> 1522 bytes .../images/default/16/live365.png | Bin 0 -> 1147 bytes .../images/default/16/meetup.png | Bin 0 -> 1118 bytes .../images/default/16/merchantcircle.png | Bin 0 -> 1009 bytes .../images/default/16/myspace.png | Bin 0 -> 1608 bytes .../images/default/16/orkut.png | Bin 0 -> 843 bytes .../images/default/16/pandora.png | Bin 0 -> 774 bytes .../images/default/16/picasa.png | Bin 0 -> 843 bytes .../images/default/16/ping.png | Bin 0 -> 991 bytes .../images/default/16/plancast.png | Bin 0 -> 980 bytes .../images/default/16/reddit.png | Bin 0 -> 3555 bytes .../images/default/16/rss.png | Bin 0 -> 3550 bytes .../images/default/16/skype.png | Bin 0 -> 1046 bytes .../images/default/16/slideshare.png | Bin 0 -> 885 bytes .../images/default/16/soundcloud.png | Bin 0 -> 925 bytes .../images/default/16/steam.png | Bin 0 -> 567 bytes .../images/default/16/stumble.png | Bin 0 -> 1093 bytes .../images/default/16/talk.png | Bin 0 -> 864 bytes .../images/default/16/tumblr.png | Bin 0 -> 1033 bytes .../images/default/16/tungle.png | Bin 0 -> 1131 bytes .../images/default/16/twitter.png | Bin 0 -> 3487 bytes .../images/default/16/ustream.png | Bin 0 -> 784 bytes .../images/default/16/vimeo.png | Bin 0 -> 982 bytes .../images/default/16/wordpress.png | Bin 0 -> 1027 bytes .../images/default/16/yelp.png | Bin 0 -> 991 bytes .../images/default/16/youtube.png | Bin 0 -> 1628 bytes .../images/default/32/asmallworld.png | Bin 0 -> 3106 bytes .../images/default/32/bandcamp.png | Bin 0 -> 1296 bytes .../images/default/32/bbb.png | Bin 0 -> 2155 bytes .../images/default/32/blogger.png | Bin 0 -> 2263 bytes .../images/default/32/buzz.png | Bin 0 -> 4974 bytes .../images/default/32/delicious.png | Bin 0 -> 1631 bytes .../images/default/32/deviantart.png | Bin 0 -> 4232 bytes .../images/default/32/digg.png | Bin 0 -> 2758 bytes .../images/default/32/digitaltunes.png | Bin 0 -> 2829 bytes .../images/default/32/ebay.png | Bin 0 -> 1568 bytes .../images/default/32/email.png | Bin 0 -> 5096 bytes .../images/default/32/etsy.png | Bin 0 -> 2239 bytes .../images/default/32/facebook.png | Bin 0 -> 1886 bytes .../images/default/32/flickr.png | Bin 0 -> 2193 bytes .../images/default/32/flixster.png | Bin 0 -> 2624 bytes .../images/default/32/foursquare.png | Bin 0 -> 3150 bytes .../images/default/32/friendfeed.png | Bin 0 -> 2746 bytes .../images/default/32/hulu.png | Bin 0 -> 2048 bytes .../images/default/32/hyves.png | Bin 0 -> 1944 bytes .../images/default/32/imdb.png | Bin 0 -> 1895 bytes .../images/default/32/lastfm.png | Bin 0 -> 2657 bytes .../images/default/32/linkedin.png | Bin 0 -> 2410 bytes .../images/default/32/live365.png | Bin 0 -> 3566 bytes .../images/default/32/meetup.png | Bin 0 -> 3303 bytes .../images/default/32/merchantcircle.png | Bin 0 -> 2480 bytes .../images/default/32/myspace.png | Bin 0 -> 2576 bytes .../images/default/32/orkut.png | Bin 0 -> 2153 bytes .../images/default/32/pandora.png | Bin 0 -> 1824 bytes .../images/default/32/picasa.png | Bin 0 -> 4376 bytes .../images/default/32/ping.png | Bin 0 -> 2915 bytes .../images/default/32/plancast.png | Bin 0 -> 2286 bytes .../images/default/32/reddit.png | Bin 0 -> 5164 bytes .../images/default/32/rss.png | Bin 0 -> 1989 bytes .../images/default/32/skype.png | Bin 0 -> 2564 bytes .../images/default/32/slideshare.png | Bin 0 -> 2373 bytes .../images/default/32/soundcloud.png | Bin 0 -> 2399 bytes .../images/default/32/steam.png | Bin 0 -> 1238 bytes .../images/default/32/stumble.png | Bin 0 -> 3162 bytes .../images/default/32/talk.png | Bin 0 -> 2085 bytes .../images/default/32/tumblr.png | Bin 0 -> 4479 bytes .../images/default/32/tungle.png | Bin 0 -> 3201 bytes .../images/default/32/twitter.png | Bin 0 -> 1941 bytes .../images/default/32/ustream.png | Bin 0 -> 1764 bytes .../images/default/32/vimeo.png | Bin 0 -> 2449 bytes .../images/default/32/wordpress.png | Bin 0 -> 2846 bytes .../images/default/32/yelp.png | Bin 0 -> 2588 bytes .../images/default/32/youtube.png | Bin 0 -> 2911 bytes .../images/default/64/asmallworld.png | Bin 0 -> 9744 bytes .../images/default/64/bandcamp.png | Bin 0 -> 3056 bytes .../images/default/64/bbb.png | Bin 0 -> 5244 bytes .../images/default/64/blogger.png | Bin 0 -> 3349 bytes .../images/default/64/buzz.png | Bin 0 -> 4863 bytes .../images/default/64/delicious.png | Bin 0 -> 2288 bytes .../images/default/64/deviantart.png | Bin 0 -> 6344 bytes .../images/default/64/digg.png | Bin 0 -> 4462 bytes .../images/default/64/digitaltunes.png | Bin 0 -> 7206 bytes .../images/default/64/ebay.png | Bin 0 -> 3299 bytes .../images/default/64/email.png | Bin 0 -> 9050 bytes .../images/default/64/etsy.png | Bin 0 -> 5303 bytes .../images/default/64/facebook.png | Bin 0 -> 4318 bytes .../images/default/64/flickr.png | Bin 0 -> 3145 bytes .../images/default/64/flixter.png | Bin 0 -> 8568 bytes .../images/default/64/foursquare.png | Bin 0 -> 8955 bytes .../images/default/64/friendfeed.png | Bin 0 -> 4422 bytes .../images/default/64/hulu.png | Bin 0 -> 5045 bytes .../images/default/64/hyves.png | Bin 0 -> 3981 bytes .../images/default/64/imdb.png | Bin 0 -> 4862 bytes .../images/default/64/lastfm.png | Bin 0 -> 4215 bytes .../images/default/64/linkedin.png | Bin 0 -> 3581 bytes .../images/default/64/live365.png | Bin 0 -> 11119 bytes .../images/default/64/meetup.png | Bin 0 -> 9243 bytes .../images/default/64/merchantcircle.png | Bin 0 -> 5873 bytes .../images/default/64/myspace.png | Bin 0 -> 3790 bytes .../images/default/64/orkut.png | Bin 0 -> 7037 bytes .../images/default/64/pandora.png | Bin 0 -> 4996 bytes .../images/default/64/picasa.png | Bin 0 -> 5904 bytes .../images/default/64/ping.png | Bin 0 -> 8477 bytes .../images/default/64/plancast.png | Bin 0 -> 5326 bytes .../images/default/64/reddit.png | Bin 0 -> 8339 bytes .../images/default/64/rss.png | Bin 0 -> 7299 bytes .../images/default/64/skype.png | Bin 0 -> 6411 bytes .../images/default/64/slideshare.png | Bin 0 -> 7097 bytes .../images/default/64/soundcloud.png | Bin 0 -> 6309 bytes .../images/default/64/steam.png | Bin 0 -> 2658 bytes .../images/default/64/stumble.png | Bin 0 -> 6760 bytes .../images/default/64/talk.png | Bin 0 -> 4789 bytes .../images/default/64/tumblr.png | Bin 0 -> 6457 bytes .../images/default/64/tungle.png | Bin 0 -> 9525 bytes .../images/default/64/twitter.png | Bin 0 -> 7617 bytes .../images/default/64/ustream.png | Bin 0 -> 3982 bytes .../images/default/64/vimeo.png | Bin 0 -> 3684 bytes .../images/default/64/wordpress.png | Bin 0 -> 5104 bytes .../images/default/64/yelp.png | Bin 0 -> 3982 bytes .../images/default/64/youtube.png | Bin 0 -> 7853 bytes .../images/default/readme.txt | 11 + .../images/heart/16/asmallworld.png | Bin 0 -> 1036 bytes .../images/heart/16/bandcamp.png | Bin 0 -> 803 bytes .../images/heart/16/bbb.png | Bin 0 -> 1058 bytes .../images/heart/16/blogger.png | Bin 0 -> 3507 bytes .../images/heart/16/buzz.png | Bin 0 -> 3556 bytes .../images/heart/16/delicious.png | Bin 0 -> 3435 bytes .../images/heart/16/deviantart.png | Bin 0 -> 872 bytes .../images/heart/16/digg.png | Bin 0 -> 3682 bytes .../images/heart/16/digitaltunes.png | Bin 0 -> 978 bytes .../images/heart/16/ebay.png | Bin 0 -> 900 bytes .../images/heart/16/email.png | Bin 0 -> 3708 bytes .../images/heart/16/etsy.png | Bin 0 -> 1062 bytes .../images/heart/16/facebook.png | Bin 0 -> 3515 bytes .../images/heart/16/flickr.png | Bin 0 -> 3511 bytes .../images/heart/16/flixster.png | Bin 0 -> 993 bytes .../images/heart/16/foursquare.png | Bin 0 -> 1151 bytes .../images/heart/16/friendfeed.png | Bin 0 -> 391 bytes .../images/heart/16/hulu.png | Bin 0 -> 885 bytes .../images/heart/16/hyves.png | Bin 0 -> 933 bytes .../images/heart/16/imdb.png | Bin 0 -> 931 bytes .../images/heart/16/lastfm.png | Bin 0 -> 948 bytes .../images/heart/16/linkedin.png | Bin 0 -> 3608 bytes .../images/heart/16/live365.png | Bin 0 -> 1106 bytes .../images/heart/16/meetup.png | Bin 0 -> 1057 bytes .../images/heart/16/merchantcircle.png | Bin 0 -> 1052 bytes .../images/heart/16/myspace.png | Bin 0 -> 3549 bytes .../images/heart/16/orkut.png | Bin 0 -> 3523 bytes .../images/heart/16/pandora.png | Bin 0 -> 931 bytes .../images/heart/16/picasa.png | Bin 0 -> 885 bytes .../images/heart/16/ping.png | Bin 0 -> 938 bytes .../images/heart/16/plancast.png | Bin 0 -> 1029 bytes .../images/heart/16/reddit.png | Bin 0 -> 3602 bytes .../images/heart/16/rss.png | Bin 0 -> 3591 bytes .../images/heart/16/skype.png | Bin 0 -> 1002 bytes .../images/heart/16/slideshare.png | Bin 0 -> 1131 bytes .../images/heart/16/soundcloud.png | Bin 0 -> 1010 bytes .../images/heart/16/steam.png | Bin 0 -> 783 bytes .../images/heart/16/stumble.png | Bin 0 -> 3590 bytes .../images/heart/16/talk.png | Bin 0 -> 958 bytes .../images/heart/16/tumblr.png | Bin 0 -> 810 bytes .../images/heart/16/tungle.png | Bin 0 -> 1139 bytes .../images/heart/16/twitter.png | Bin 0 -> 3553 bytes .../images/heart/16/ustream.png | Bin 0 -> 874 bytes .../images/heart/16/vimeo.png | Bin 0 -> 3592 bytes .../images/heart/16/wordpress.png | Bin 0 -> 3624 bytes .../images/heart/16/yelp.png | Bin 0 -> 1167 bytes .../images/heart/16/youtube.png | Bin 0 -> 3573 bytes .../images/heart/32/asmallworld.png | Bin 0 -> 3100 bytes .../images/heart/32/bandcamp.png | Bin 0 -> 1940 bytes .../images/heart/32/bbb.png | Bin 0 -> 2773 bytes .../images/heart/32/blogger.png | Bin 0 -> 4709 bytes .../images/heart/32/buzz.png | Bin 0 -> 5065 bytes .../images/heart/32/delicious.png | Bin 0 -> 4385 bytes .../images/heart/32/deviantart.png | Bin 0 -> 2031 bytes .../images/heart/32/digg.png | Bin 0 -> 4861 bytes .../images/heart/32/digitaltunes.png | Bin 0 -> 2604 bytes .../images/heart/32/ebay.png | Bin 0 -> 2336 bytes .../images/heart/32/email.png | Bin 0 -> 5132 bytes .../images/heart/32/etsy.png | Bin 0 -> 2828 bytes .../images/heart/32/facebook.png | Bin 0 -> 4733 bytes .../images/heart/32/flickr.png | Bin 0 -> 4782 bytes .../images/heart/32/flixster.png | Bin 0 -> 3147 bytes .../images/heart/32/foursquare.png | Bin 0 -> 3163 bytes .../images/heart/32/friendfeed.png | Bin 0 -> 1906 bytes .../images/heart/32/hulu.png | Bin 0 -> 2452 bytes .../images/heart/32/hyves.png | Bin 0 -> 2401 bytes .../images/heart/32/imdb.png | Bin 0 -> 2457 bytes .../images/heart/32/lastfm.png | Bin 0 -> 2306 bytes .../images/heart/32/linkedin.png | Bin 0 -> 5022 bytes .../images/heart/32/live365.png | Bin 0 -> 3145 bytes .../images/heart/32/meetup.png | Bin 0 -> 2600 bytes .../images/heart/32/merchantcircle.png | Bin 0 -> 2828 bytes .../images/heart/32/myspace.png | Bin 0 -> 4974 bytes .../images/heart/32/orkut.png | Bin 0 -> 4917 bytes .../images/heart/32/pandora.png | Bin 0 -> 2443 bytes .../images/heart/32/picasa.png | Bin 0 -> 2158 bytes .../images/heart/32/ping.png | Bin 0 -> 2567 bytes .../images/heart/32/plancast.png | Bin 0 -> 2854 bytes .../images/heart/32/reddit.png | Bin 0 -> 5421 bytes .../images/heart/32/rss.png | Bin 0 -> 5019 bytes .../images/heart/32/skype.png | Bin 0 -> 4952 bytes .../images/heart/32/slideshare.png | Bin 0 -> 3159 bytes .../images/heart/32/soundcloud.png | Bin 0 -> 2716 bytes .../images/heart/32/steam.png | Bin 0 -> 1993 bytes .../images/heart/32/stumble.png | Bin 0 -> 5054 bytes .../images/heart/32/talk.png | Bin 0 -> 2639 bytes .../images/heart/32/tumblr.png | Bin 0 -> 2230 bytes .../images/heart/32/tungle.png | Bin 0 -> 3307 bytes .../images/heart/32/twitter.png | Bin 0 -> 4805 bytes .../images/heart/32/ustream.png | Bin 0 -> 2246 bytes .../images/heart/32/vimeo.png | Bin 0 -> 5103 bytes .../images/heart/32/wordpress.png | Bin 0 -> 5320 bytes .../images/heart/32/yelp.png | Bin 0 -> 3702 bytes .../images/heart/32/youtube.png | Bin 0 -> 5082 bytes .../images/heart/64/asmallworld.png | Bin 0 -> 9458 bytes .../images/heart/64/bandcamp.png | Bin 0 -> 4598 bytes .../images/heart/64/bbb.png | Bin 0 -> 7450 bytes .../images/heart/64/blogger.png | Bin 0 -> 5320 bytes .../images/heart/64/buzz.png | Bin 0 -> 6436 bytes .../images/heart/64/delicious.png | Bin 0 -> 4667 bytes .../images/heart/64/deviantart.png | Bin 0 -> 4771 bytes .../images/heart/64/digg.png | Bin 0 -> 5512 bytes .../images/heart/64/digitaltunes.png | Bin 0 -> 6706 bytes .../images/heart/64/ebay.png | Bin 0 -> 5574 bytes .../images/heart/64/email.png | Bin 0 -> 8220 bytes .../images/heart/64/etsy.png | Bin 0 -> 7024 bytes .../images/heart/64/facebook.png | Bin 0 -> 5553 bytes .../images/heart/64/flickr.png | Bin 0 -> 5415 bytes .../images/heart/64/flixter.png | Bin 0 -> 9838 bytes .../images/heart/64/foursquare.png | Bin 0 -> 9206 bytes .../images/heart/64/friendfeed.png | Bin 0 -> 3826 bytes .../images/heart/64/hulu.png | Bin 0 -> 6137 bytes .../images/heart/64/hyves.png | Bin 0 -> 5279 bytes .../images/heart/64/imdb.png | Bin 0 -> 5776 bytes .../images/heart/64/lastfm.png | Bin 0 -> 5462 bytes .../images/heart/64/linkedin.png | Bin 0 -> 6196 bytes .../images/heart/64/live365.png | Bin 0 -> 9794 bytes .../images/heart/64/meetup.png | Bin 0 -> 6309 bytes .../images/heart/64/merchantcircle.png | Bin 0 -> 6648 bytes .../images/heart/64/myspace.png | Bin 0 -> 6603 bytes .../images/heart/64/orkut.png | Bin 0 -> 6593 bytes .../images/heart/64/pandora.png | Bin 0 -> 6240 bytes .../images/heart/64/picasa.png | Bin 0 -> 4484 bytes .../images/heart/64/ping.png | Bin 0 -> 6902 bytes .../images/heart/64/plancast.png | Bin 0 -> 7212 bytes .../images/heart/64/reddit.png | Bin 0 -> 8152 bytes .../images/heart/64/rss.png | Bin 0 -> 5532 bytes .../images/heart/64/skype.png | Bin 0 -> 6307 bytes .../images/heart/64/slideshare.png | Bin 0 -> 8368 bytes .../images/heart/64/soundcloud.png | Bin 0 -> 7187 bytes .../images/heart/64/steam.png | Bin 0 -> 4622 bytes .../images/heart/64/stumble.png | Bin 0 -> 5567 bytes .../images/heart/64/talk.png | Bin 0 -> 6581 bytes .../images/heart/64/tumblr.png | Bin 0 -> 5548 bytes .../images/heart/64/tungle.png | Bin 0 -> 9818 bytes .../images/heart/64/twitter.png | Bin 0 -> 5370 bytes .../images/heart/64/ustream.png | Bin 0 -> 5476 bytes .../images/heart/64/vimeo.png | Bin 0 -> 6136 bytes .../images/heart/64/wordpress.png | Bin 0 -> 8297 bytes .../images/heart/64/yelp.png | Bin 0 -> 10841 bytes .../images/heart/64/youtube.png | Bin 0 -> 7092 bytes .../images/heart/readme.txt | 4 + .../images/sketch/16/asmallworld.png | Bin 0 -> 1143 bytes .../images/sketch/16/bandcamp.png | Bin 0 -> 706 bytes .../images/sketch/16/bbb.png | Bin 0 -> 1093 bytes .../images/sketch/16/blogger.png | Bin 0 -> 1076 bytes .../images/sketch/16/buzz.png | Bin 0 -> 3837 bytes .../images/sketch/16/delicious.png | Bin 0 -> 767 bytes .../images/sketch/16/deviantart.png | Bin 0 -> 1128 bytes .../images/sketch/16/digg.png | Bin 0 -> 3801 bytes .../images/sketch/16/digitaltunes.png | Bin 0 -> 1153 bytes .../images/sketch/16/ebay.png | Bin 0 -> 830 bytes .../images/sketch/16/email.png | Bin 0 -> 827 bytes .../images/sketch/16/etsy.png | Bin 0 -> 1048 bytes .../images/sketch/16/facebook.png | Bin 0 -> 3715 bytes .../images/sketch/16/flickr.png | Bin 0 -> 850 bytes .../images/sketch/16/flixster.png | Bin 0 -> 897 bytes .../images/sketch/16/foursquare.png | Bin 0 -> 1128 bytes .../images/sketch/16/friendfeed.png | Bin 0 -> 1438 bytes .../images/sketch/16/hulu.png | Bin 0 -> 907 bytes .../images/sketch/16/hyves.png | Bin 0 -> 1041 bytes .../images/sketch/16/imdb.png | Bin 0 -> 880 bytes .../images/sketch/16/lastfm.png | Bin 0 -> 1144 bytes .../images/sketch/16/linkedin.png | Bin 0 -> 889 bytes .../images/sketch/16/live365.png | Bin 0 -> 1154 bytes .../images/sketch/16/meetup.png | Bin 0 -> 914 bytes .../images/sketch/16/merchantcircle.png | Bin 0 -> 1111 bytes .../images/sketch/16/myspace.png | Bin 0 -> 3820 bytes .../images/sketch/16/orkut.png | Bin 0 -> 3734 bytes .../images/sketch/16/pandora.png | Bin 0 -> 886 bytes .../images/sketch/16/picasa.png | Bin 0 -> 1006 bytes .../images/sketch/16/ping.png | Bin 0 -> 953 bytes .../images/sketch/16/plancast.png | Bin 0 -> 989 bytes .../images/sketch/16/reddit.png | Bin 0 -> 3796 bytes .../images/sketch/16/rss.png | Bin 0 -> 3782 bytes .../images/sketch/16/skype.png | Bin 0 -> 1148 bytes .../images/sketch/16/slideshare.png | Bin 0 -> 1097 bytes .../images/sketch/16/soundcloud.png | Bin 0 -> 1033 bytes .../images/sketch/16/steam.png | Bin 0 -> 679 bytes .../images/sketch/16/stumble.png | Bin 0 -> 1024 bytes .../images/sketch/16/talk.png | Bin 0 -> 779 bytes .../images/sketch/16/tumblr.png | Bin 0 -> 1092 bytes .../images/sketch/16/tungle.png | Bin 0 -> 1138 bytes .../images/sketch/16/twitter.png | Bin 0 -> 3713 bytes .../images/sketch/16/ustream.png | Bin 0 -> 884 bytes .../images/sketch/16/vimeo.png | Bin 0 -> 1118 bytes .../images/sketch/16/wordpress.png | Bin 0 -> 1187 bytes .../images/sketch/16/yelp.png | Bin 0 -> 1017 bytes .../images/sketch/16/youtube.png | Bin 0 -> 3668 bytes .../images/sketch/32/asmallworld.png | Bin 0 -> 3119 bytes .../images/sketch/32/bandcamp.png | Bin 0 -> 1525 bytes .../images/sketch/32/bbb.png | Bin 0 -> 3008 bytes .../images/sketch/32/blogger.png | Bin 0 -> 2507 bytes .../images/sketch/32/buzz.png | Bin 0 -> 2818 bytes .../images/sketch/32/delicious.png | Bin 0 -> 1783 bytes .../images/sketch/32/deviantart.png | Bin 0 -> 3481 bytes .../images/sketch/32/digg.png | Bin 0 -> 1981 bytes .../images/sketch/32/digitaltunes.png | Bin 0 -> 3456 bytes .../images/sketch/32/ebay.png | Bin 0 -> 1904 bytes .../images/sketch/32/email.png | Bin 0 -> 2048 bytes .../images/sketch/32/etsy.png | Bin 0 -> 2875 bytes .../images/sketch/32/facebook.png | Bin 0 -> 2036 bytes .../images/sketch/32/flickr.png | Bin 0 -> 2170 bytes .../images/sketch/32/flixster.png | Bin 0 -> 2839 bytes .../images/sketch/32/foursquare.png | Bin 0 -> 3374 bytes .../images/sketch/32/friendfeed.png | Bin 0 -> 2645 bytes .../images/sketch/32/hulu.png | Bin 0 -> 2737 bytes .../images/sketch/32/hyves.png | Bin 0 -> 2728 bytes .../images/sketch/32/imdb.png | Bin 0 -> 2543 bytes .../images/sketch/32/lastfm.png | Bin 0 -> 2969 bytes .../images/sketch/32/linkedin.png | Bin 0 -> 2708 bytes .../images/sketch/32/live365.png | Bin 0 -> 3520 bytes .../images/sketch/32/meetup.png | Bin 0 -> 2614 bytes .../images/sketch/32/merchantcircle.png | Bin 0 -> 3238 bytes .../images/sketch/32/myspace.png | Bin 0 -> 2810 bytes .../images/sketch/32/orkut.png | Bin 0 -> 5730 bytes .../images/sketch/32/pandora.png | Bin 0 -> 2516 bytes .../images/sketch/32/picasa.png | Bin 0 -> 2726 bytes .../images/sketch/32/ping.png | Bin 0 -> 2888 bytes .../images/sketch/32/plancast.png | Bin 0 -> 2580 bytes .../images/sketch/32/reddit.png | Bin 0 -> 2724 bytes .../images/sketch/32/rss.png | Bin 0 -> 2908 bytes .../images/sketch/32/skype.png | Bin 0 -> 2797 bytes .../images/sketch/32/slideshare.png | Bin 0 -> 3053 bytes .../images/sketch/32/soundcloud.png | Bin 0 -> 2857 bytes .../images/sketch/32/steam.png | Bin 0 -> 1614 bytes .../images/sketch/32/stumble.png | Bin 0 -> 2960 bytes .../images/sketch/32/talk.png | Bin 0 -> 1818 bytes .../images/sketch/32/tumblr.png | Bin 0 -> 3111 bytes .../images/sketch/32/tungle.png | Bin 0 -> 3258 bytes .../images/sketch/32/twitter.png | Bin 0 -> 2225 bytes .../images/sketch/32/ustream.png | Bin 0 -> 2380 bytes .../images/sketch/32/vimeo.png | Bin 0 -> 2586 bytes .../images/sketch/32/wordpress.png | Bin 0 -> 3034 bytes .../images/sketch/32/yelp.png | Bin 0 -> 2545 bytes .../images/sketch/32/youtube.png | Bin 0 -> 2109 bytes .../images/sketch/64/asmallworld.png | Bin 0 -> 10189 bytes .../images/sketch/64/bandcamp.png | Bin 0 -> 3809 bytes .../images/sketch/64/bbb.png | Bin 0 -> 8144 bytes .../images/sketch/64/blogger.png | Bin 0 -> 7835 bytes .../images/sketch/64/buzz.png | Bin 0 -> 8260 bytes .../images/sketch/64/delicious.png | Bin 0 -> 4669 bytes .../images/sketch/64/deviantart.png | Bin 0 -> 10931 bytes .../images/sketch/64/digg.png | Bin 0 -> 5212 bytes .../images/sketch/64/digitaltunes.png | Bin 0 -> 10020 bytes .../images/sketch/64/ebay.png | Bin 0 -> 3938 bytes .../images/sketch/64/email.png | Bin 0 -> 9222 bytes .../images/sketch/64/etsy.png | Bin 0 -> 7858 bytes .../images/sketch/64/facebook.png | Bin 0 -> 5177 bytes .../images/sketch/64/flickr.png | Bin 0 -> 6028 bytes .../images/sketch/64/flixster.png | Bin 0 -> 9155 bytes .../images/sketch/64/foursquare.png | Bin 0 -> 10305 bytes .../images/sketch/64/friendfeed.png | Bin 0 -> 7910 bytes .../images/sketch/64/hulu.png | Bin 0 -> 8397 bytes .../images/sketch/64/hyves.png | Bin 0 -> 7337 bytes .../images/sketch/64/imdb.png | Bin 0 -> 8235 bytes .../images/sketch/64/lastfm.png | Bin 0 -> 9265 bytes .../images/sketch/64/linkedin.png | Bin 0 -> 8612 bytes .../images/sketch/64/live365.png | Bin 0 -> 11303 bytes .../images/sketch/64/meetup.png | Bin 0 -> 7143 bytes .../images/sketch/64/merchantcircle.png | Bin 0 -> 9750 bytes .../images/sketch/64/myspace.png | Bin 0 -> 8783 bytes .../images/sketch/64/orkut.png | Bin 0 -> 11882 bytes .../images/sketch/64/pandora.png | Bin 0 -> 7353 bytes .../images/sketch/64/picasa.png | Bin 0 -> 7590 bytes .../images/sketch/64/ping.png | Bin 0 -> 9493 bytes .../images/sketch/64/plancast.png | Bin 0 -> 6822 bytes .../images/sketch/64/reddit.png | Bin 0 -> 8091 bytes .../images/sketch/64/rss.png | Bin 0 -> 9317 bytes .../images/sketch/64/skype.png | Bin 0 -> 8177 bytes .../images/sketch/64/slideshare.png | Bin 0 -> 9828 bytes .../images/sketch/64/soundcloud.png | Bin 0 -> 8477 bytes .../images/sketch/64/steam.png | Bin 0 -> 3749 bytes .../images/sketch/64/stumble.png | Bin 0 -> 8489 bytes .../images/sketch/64/talk.png | Bin 0 -> 4425 bytes .../images/sketch/64/tumblr.png | Bin 0 -> 8674 bytes .../images/sketch/64/tungle.png | Bin 0 -> 9654 bytes .../images/sketch/64/twitter.png | Bin 0 -> 6148 bytes .../images/sketch/64/ustream.png | Bin 0 -> 7165 bytes .../images/sketch/64/vimeo.png | Bin 0 -> 7668 bytes .../images/sketch/64/wordpress.png | Bin 0 -> 8486 bytes .../images/sketch/64/yelp.png | Bin 0 -> 5530 bytes .../images/sketch/64/youtube.png | Bin 0 -> 5492 bytes .../images/sketch/readme.txt | 4 + .../plugins/social-media-widget/readme.txt | 328 +++++ .../social-media-widget/screenshot-1.png | Bin 0 -> 64993 bytes .../social-media-widget/screenshot-2.png | Bin 0 -> 64133 bytes .../social-media-widget/screenshot-3.png | Bin 0 -> 68943 bytes .../social-media-widget/screenshot-4.png | Bin 0 -> 79375 bytes .../social-media-widget/screenshot-5.png | Bin 0 -> 97011 bytes .../social-media-widget/screenshot-6.png | Bin 0 -> 87597 bytes .../social-media-widget/screenshot-7.png | Bin 0 -> 63457 bytes .../social-media-widget/social-widget.php | 1257 +++++++++++++++++ .../social-media-widget/social_widget.css | 80 ++ .../plugins/wp-swfobject/1.5/swfobject.js | 8 + .../plugins/wp-swfobject/2.0/swfobject.js | 5 + src/wp-content/plugins/wp-swfobject/gpl.txt | 339 +++++ .../plugins/wp-swfobject/loading.gif | Bin 0 -> 2711 bytes .../plugins/wp-swfobject/readme.txt | 62 + .../plugins/wp-swfobject/screenshot-1.gif | Bin 0 -> 22040 bytes .../plugins/wp-swfobject/screenshot-2.gif | Bin 0 -> 15444 bytes .../plugins/wp-swfobject/wp-swfobject.php | 444 ++++++ .../wp-twitter-sidebar-widget/readme.txt | 106 ++ .../wp-twitter-sidebar-widget/twitter.php | 283 ++++ .../0186bfae5ba87c5b826e581e26548f15.jpg | Bin 0 -> 13058 bytes .../292006fb0a09ca8aea01a0aff0642339.jpg | Bin 0 -> 13058 bytes .../29fb065470b59024f40aee2b9b42d0f9.jpg | Bin 4298 -> 0 bytes .../4dc4584747b1cbe42f1e35513dbf940a.jpg | Bin 16314 -> 0 bytes .../4faf0e734f0a48cb003e394e8ac97021.jpg | Bin 72356 -> 0 bytes .../6273a5275bafea140050d5380059f323.jpg | Bin 12582 -> 0 bytes .../b0a5bc3aad803bb22ae81115f0bc0c16.jpg | Bin 65157 -> 0 bytes .../d0586b7f1865a6311aed94edf09a9b9e.jpg | Bin 78943 -> 0 bytes src/wp-content/themes/Sabuy/contact.php | 8 +- src/wp-content/themes/Sabuy/css/lqdvi.css | 40 + src/wp-content/themes/Sabuy/index.php | 5 + .../themes/Sabuy/template-webcam.php | 80 ++ 629 files changed, 8915 insertions(+), 4 deletions(-) create mode 100644 src/webcam/images/1371C581-8C6D-45D9-D9EF-77BD16F352C8.jpg create mode 100644 src/webcam/images/23017F7E-D698-FABC-62D3-C7F2A64C4BF4.jpg create mode 100644 src/webcam/images/ABE23EE8-8E8F-ED31-B224-E8AADD996AA2.jpg create mode 100644 src/wp-content/plugins/google-calendar-events/admin/add.php create mode 100644 src/wp-content/plugins/google-calendar-events/admin/delete.php create mode 100644 src/wp-content/plugins/google-calendar-events/admin/edit.php create mode 100644 src/wp-content/plugins/google-calendar-events/admin/main.php create mode 100644 src/wp-content/plugins/google-calendar-events/admin/refresh.php create mode 100644 src/wp-content/plugins/google-calendar-events/admin/timezone-choices.php create mode 100644 src/wp-content/plugins/google-calendar-events/css/gce-old-style.css create mode 100644 src/wp-content/plugins/google-calendar-events/css/gce-style.css create mode 100644 src/wp-content/plugins/google-calendar-events/google-calendar-events.php create mode 100644 src/wp-content/plugins/google-calendar-events/inc/gce-event.php create mode 100644 src/wp-content/plugins/google-calendar-events/inc/gce-feed.php create mode 100644 src/wp-content/plugins/google-calendar-events/inc/gce-parser.php create mode 100644 src/wp-content/plugins/google-calendar-events/inc/php-calendar.php create mode 100644 src/wp-content/plugins/google-calendar-events/js/gce-admin-script.js create mode 100644 src/wp-content/plugins/google-calendar-events/js/gce-script.js create mode 100644 src/wp-content/plugins/google-calendar-events/js/jquery-qtip.js create mode 100644 src/wp-content/plugins/google-calendar-events/languages/google-calendar-events-hu_HU.mo create mode 100644 src/wp-content/plugins/google-calendar-events/languages/google-calendar-events-hu_HU.po create mode 100644 src/wp-content/plugins/google-calendar-events/languages/google-calendar-events.pot create mode 100644 src/wp-content/plugins/google-calendar-events/license.txt create mode 100644 src/wp-content/plugins/google-calendar-events/readme.txt create mode 100644 src/wp-content/plugins/google-calendar-events/screenshot-1.jpg create mode 100644 src/wp-content/plugins/google-calendar-events/screenshot-2.jpg create mode 100644 src/wp-content/plugins/google-calendar-events/screenshot-3.jpg create mode 100644 src/wp-content/plugins/google-calendar-events/uninstall.php create mode 100644 src/wp-content/plugins/google-calendar-events/widget/gce-widget.php create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/16/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/32/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/64/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/cutout/readme.txt create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/16/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/32/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/flixter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/64/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/default/readme.txt create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/16/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/32/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/flixter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/64/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/heart/readme.txt create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/16/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/32/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/asmallworld.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/bandcamp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/bbb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/blogger.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/buzz.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/delicious.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/deviantart.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/digg.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/digitaltunes.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/ebay.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/email.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/etsy.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/facebook.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/flickr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/flixster.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/foursquare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/friendfeed.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/hulu.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/hyves.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/imdb.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/lastfm.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/linkedin.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/live365.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/meetup.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/merchantcircle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/myspace.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/orkut.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/pandora.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/picasa.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/ping.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/plancast.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/reddit.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/rss.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/skype.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/slideshare.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/soundcloud.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/steam.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/stumble.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/talk.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/tumblr.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/tungle.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/twitter.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/ustream.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/vimeo.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/wordpress.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/yelp.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/64/youtube.png create mode 100644 src/wp-content/plugins/social-media-widget/images/sketch/readme.txt create mode 100644 src/wp-content/plugins/social-media-widget/readme.txt create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-1.png create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-2.png create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-3.png create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-4.png create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-5.png create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-6.png create mode 100644 src/wp-content/plugins/social-media-widget/screenshot-7.png create mode 100644 src/wp-content/plugins/social-media-widget/social-widget.php create mode 100644 src/wp-content/plugins/social-media-widget/social_widget.css create mode 100644 src/wp-content/plugins/wp-swfobject/1.5/swfobject.js create mode 100644 src/wp-content/plugins/wp-swfobject/2.0/swfobject.js create mode 100644 src/wp-content/plugins/wp-swfobject/gpl.txt create mode 100644 src/wp-content/plugins/wp-swfobject/loading.gif create mode 100644 src/wp-content/plugins/wp-swfobject/readme.txt create mode 100644 src/wp-content/plugins/wp-swfobject/screenshot-1.gif create mode 100644 src/wp-content/plugins/wp-swfobject/screenshot-2.gif create mode 100644 src/wp-content/plugins/wp-swfobject/wp-swfobject.php create mode 100644 src/wp-content/plugins/wp-twitter-sidebar-widget/readme.txt create mode 100644 src/wp-content/plugins/wp-twitter-sidebar-widget/twitter.php create mode 100644 src/wp-content/themes/Sabuy/cache/0186bfae5ba87c5b826e581e26548f15.jpg create mode 100644 src/wp-content/themes/Sabuy/cache/292006fb0a09ca8aea01a0aff0642339.jpg delete mode 100644 src/wp-content/themes/Sabuy/cache/29fb065470b59024f40aee2b9b42d0f9.jpg delete mode 100644 src/wp-content/themes/Sabuy/cache/4dc4584747b1cbe42f1e35513dbf940a.jpg delete mode 100644 src/wp-content/themes/Sabuy/cache/4faf0e734f0a48cb003e394e8ac97021.jpg delete mode 100644 src/wp-content/themes/Sabuy/cache/6273a5275bafea140050d5380059f323.jpg delete mode 100644 src/wp-content/themes/Sabuy/cache/b0a5bc3aad803bb22ae81115f0bc0c16.jpg delete mode 100644 src/wp-content/themes/Sabuy/cache/d0586b7f1865a6311aed94edf09a9b9e.jpg create mode 100644 src/wp-content/themes/Sabuy/template-webcam.php diff --git a/src/webcam/images/1371C581-8C6D-45D9-D9EF-77BD16F352C8.jpg b/src/webcam/images/1371C581-8C6D-45D9-D9EF-77BD16F352C8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13f668c618b6d8aaf22030e914fc8bcd27f90e50 GIT binary patch literal 15219 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 Fe*hI_*DL@4 literal 0 HcmV?d00001 diff --git a/src/webcam/images/23017F7E-D698-FABC-62D3-C7F2A64C4BF4.jpg b/src/webcam/images/23017F7E-D698-FABC-62D3-C7F2A64C4BF4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c429f673ffc861a98b4845165f8ecdbb61875051 GIT binary patch literal 7746 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 a*-}W=Qp`vt*8rVlzplGS&ddIO`#%6@U9p(} literal 0 HcmV?d00001 diff --git a/src/webcam/images/ABE23EE8-8E8F-ED31-B224-E8AADD996AA2.jpg b/src/webcam/images/ABE23EE8-8E8F-ED31-B224-E8AADD996AA2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd0573db378805b4c2a41b2e2a73b52a51f4e766 GIT binary patch literal 14086 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 irn +

+ + + + + +
+ + + http://www.google.com/calendar/feeds/your-email@gmail.com/public/basic. +
+ http://www.google.com/calendar/feeds/your-email@gmail.com/private-d65741b037h695ff274247f90746b2ty/basic. +
+ + + + + + + +
+ + + + +
+ + + + +
+ + + PHP date format. Leave this blank if you\'d rather stick with the default format for your blog.', GCE_TEXT_DOMAIN ); ?> +
+ + + PHP date format. Again, leave this blank to stick with the default.', GCE_TEXT_DOMAIN ); ?> +
+ + Default', '', $timezone_list ); + ?> + +
+ + + +
+ + + +
+ +

+ +

+ + +
+ + +

+ + +

+ + +
+

+ + ) +

+

+
    +
  • [event-title] - html, markdown)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [start-time] -
  • +
  • [start-date] -
  • +
  • [start-custom] - format attribute (possible attributes: format)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [start-human] - precision)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [end-time] -
  • +
  • [end-date] -
  • +
  • [end-custom] - format attribute (possible attributes: format)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [end-human] - precision)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [location] - html, markdown)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [maps-link]…[/maps-link] - newwindow)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [description] - html, markdown, limit)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [link]…[/link] - newwindow)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [url] -
  • +
  • [length] - precision)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [event-num] -
  • +
  • [event-id] -
  • +
+

+
    +
  • [feed-title] -
  • +
  • [feed-id] -
  • +
  • [cal-id] -
  • +
+

+

+
    +
  • [if-all-day]…[/if-all-day] -
  • +
  • [if-not-all-day]…[/if-not-all-day] -
  • +
  • [if-title]…[/if-title] -
  • +
  • [if-description]…[/if-description] -
  • +
  • [if-location]…[/if-location] -
  • +
  • [if-tooltip]…[/if-tooltip] -
  • +
  • [if-list]…[/if-list] -
  • +
  • [if-now]…[/if-now] -
  • +
  • [if-not-now]…[/if-not-now] -
  • +
  • [if-started]…[/if-started] -
  • +
  • [if-not-started]…[/if-not-started] -
  • +
  • [if-ended]…[/if-ended] -
  • +
  • [if-not-ended]…[/if-not-ended] -
  • +
  • [if-first]…[/if-first] -
  • +
  • [if-not-first]…[/if-not-first] -
  • +
  • [if-multi-day]…[/if-multi-day] -
  • +
  • [if-single-day]…[/if-single-day] -
  • +
+

+

+
    +
  • html - true or false', GCE_TEXT_DOMAIN ); ?>
  • +
  • markdown - Markdown that has been entered in the relevant field. PHP Markdown must be installed for this to work. Can be true or false', GCE_TEXT_DOMAIN ); ?>
  • +
  • limit -
  • +
  • format - PHP date format string', GCE_TEXT_DOMAIN ); ?>
  • +
  • newwindow - true or false', GCE_TEXT_DOMAIN ); ?>
  • +
  • precision -
  • +
  • offset -
  • +
  • autolink - true or false', GCE_TEXT_DOMAIN ); ?>
  • +
+ +

+ + +
+ +

+ +
+ + + +
+ +

+ +
+ + + +
+ + + + +

+ +
+ + + + +

+ +
+ +

+ +
+ + + + +
+ + +

+ +
+ + \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/admin/delete.php b/src/wp-content/plugins/google-calendar-events/admin/delete.php new file mode 100644 index 00000000..1e43e734 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/admin/delete.php @@ -0,0 +1,39 @@ + +

+ + + + + + \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/admin/edit.php b/src/wp-content/plugins/google-calendar-events/admin/edit.php new file mode 100644 index 00000000..c90a5428 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/admin/edit.php @@ -0,0 +1,389 @@ + +

+ + + + + +
+ + + http://www.google.com/calendar/feeds/your-email@gmail.com/public/full.', GCE_TEXT_DOMAIN); ?> +
+ http://www.google.com/calendar/feeds/your-email@gmail.com/private-d65741b037h695ff274247f90746b2ty/basic.', GCE_TEXT_DOMAIN); ?> +
+ + + UNIX timestamp in the text-box.', GCE_TEXT_DOMAIN); ?> +
+ + + + +
+ + + + +
+ + + PHP date format. Leave this blank if you\'d rather stick with the default format for your blog.', GCE_TEXT_DOMAIN); ?> +
+ + + PHP date format. Again, leave this blank to stick with the default.', GCE_TEXT_DOMAIN); ?> +
+ + + +
+ + + +
+ + + +
+ /> +

+ +

+ + +
+ + +

event display builder guide.', GCE_TEXT_DOMAIN); ?>

+ + +
+

event display builder guide)', GCE_TEXT_DOMAIN); ?>

+

+
    +
  • [event-title] - html, markdown)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [start-time] -
  • +
  • [start-date] -
  • +
  • [start-custom] - format attribute (possible attributes: format)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [start-human] - precision)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [end-time] -
  • +
  • [end-date] -
  • +
  • [end-custom] - format attribute (possible attributes: format)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [end-human] - precision)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [location] - html, markdown)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [maps-link]…[/maps-link] - newwindow)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [description] - html, markdown, limit)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [link]…[/link] - newwindow)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [url] -
  • +
  • [length] - precision)', GCE_TEXT_DOMAIN ); ?>
  • +
  • [event-num] -
  • +
  • [event-id] -
  • +
+

+
    +
  • [feed-title] -
  • +
  • [feed-id] -
  • +
  • [cal-id] -
  • +
+

+

+
    +
  • [if-all-day]…[/if-all-day] -
  • +
  • [if-not-all-day]…[/if-not-all-day] -
  • +
  • [if-title]…[/if-title] -
  • +
  • [if-description]…[/if-description] -
  • +
  • [if-location]…[/if-location] -
  • +
  • [if-tooltip]…[/if-tooltip] -
  • +
  • [if-list]…[/if-list] -
  • +
  • [if-now]…[/if-now] -
  • +
  • [if-not-now]…[/if-not-now] -
  • +
  • [if-started]…[/if-started] -
  • +
  • [if-not-started]…[/if-not-started] -
  • +
  • [if-ended]…[/if-ended] -
  • +
  • [if-not-ended]…[/if-not-ended] -
  • +
  • [if-first]…[/if-first] -
  • +
  • [if-not-first]…[/if-not-first] -
  • +
  • [if-multi-day]…[/if-multi-day] -
  • +
  • [if-single-day]…[/if-single-day] -
  • +
+

+

+
    +
  • html - true or false', GCE_TEXT_DOMAIN ); ?>
  • +
  • markdown - Markdown that has been entered in the relevant field. PHP Markdown must be installed for this to work. Can be true or false', GCE_TEXT_DOMAIN ); ?>
  • +
  • limit -
  • +
  • format - PHP date format string', GCE_TEXT_DOMAIN ); ?>
  • +
  • newwindow - true or false', GCE_TEXT_DOMAIN ); ?>
  • +
  • precision -
  • +
  • offset -
  • +
  • autolink - true or false', GCE_TEXT_DOMAIN ); ?>
  • +
+ +

+ + +
+ +

+ +
+ + + +
+ +

+ +
+ + + +
+ + + value="on" /> + +

+ +
+ + + value="on" /> + +

+ +
+ +

+ +
+ + + value="on" /> + +
+ value="on" /> + +

+ +
+ + \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/admin/main.php b/src/wp-content/plugins/google-calendar-events/admin/main.php new file mode 100644 index 00000000..4c2bcf0f --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/admin/main.php @@ -0,0 +1,112 @@ +
+

+ + + +

+

+ + + +

+ + + + + + + + + + + + + + + + + + + + + + + + $event){ ?> + + + + + + + + + +
+  |  |  +
+ + + +
+

+ + + + + + + + + + + + + + + + + + + + + +
+ google-calendar-events directory) and then enter its URL below.', GCE_TEXT_DOMAIN); ?> +
+ +
+ +
+ value="on" /> +
+ +
+ +
+ +
+ +
+ +
+ value="on" /> +
+ +
+ value="on" /> +
+ +
+ + +
\ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/admin/refresh.php b/src/wp-content/plugins/google-calendar-events/admin/refresh.php new file mode 100644 index 00000000..b74c32a5 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/admin/refresh.php @@ -0,0 +1,40 @@ + +

+

+ + + + + + \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/admin/timezone-choices.php b/src/wp-content/plugins/google-calendar-events/admin/timezone-choices.php new file mode 100644 index 00000000..cc3d6132 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/admin/timezone-choices.php @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '; +} +?> \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/css/gce-old-style.css b/src/wp-content/plugins/google-calendar-events/css/gce-old-style.css new file mode 100644 index 00000000..75e343dd --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/css/gce-old-style.css @@ -0,0 +1,28 @@ +.gce-page-grid .gce-calendar th{ + padding:0 !important; +} + +.gce-page-grid .gce-calendar th abbr, +.gce-widget-grid .gce-calendar th abbr{ + border-bottom:none !important; +} + +.gce-page-list .gce-list p{ + margin:0 !important; +} + +.gce-page-list .gce-list ul, +.gce-widget-list .gce-list ul{ + margin:0 !important; + padding:0 !important; +} + +.gce-event-info .gce-tooltip-title{ + margin:5px !important; +} + +.gce-event-info ul{ + padding:0 !important; + margin:5px !important; + list-style-type:none !important; +} \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/css/gce-style.css b/src/wp-content/plugins/google-calendar-events/css/gce-style.css new file mode 100644 index 00000000..fd363609 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/css/gce-style.css @@ -0,0 +1,203 @@ +/* PAGE GRID */ + +.gce-page-grid .gce-calendar .gce-caption{ /* Caption at top of calendar */ + color:#333333; + text-align:center; +} + +.gce-page-grid .gce-calendar{ /* Main calendar table */ + width:100%; + border-collapse:collapse; + border:1px solid #CCCCCC; + color:#CCCCCC; +} + +.gce-page-grid .gce-calendar th{ /* Day headings (S, M etc.) */ + border:1px solid #CCCCCC; + text-align:center; + width:14.29%; + padding:0; +} + +.gce-page-grid .gce-calendar td{ /* Day table cells */ + border:1px solid #CCCCCC; + text-align:center; + height:80px; + vertical-align:middle; + padding:0; +} + +.gce-page-grid .gce-calendar .gce-has-events{ /* Table cells with events */ + color:#333333; + cursor:pointer; +} + +.gce-page-grid .gce-calendar .gce-event-info{ /* Event information */ + display:none; /* Important! */ +} + +.gce-page-grid .gce-calendar .gce-day-number{ /* Day number span */ + font-size:2em; +} + +.gce-page-grid .gce-calendar .gce-today{ /* Table cell that represents today */ + background-color:#DDDDDD; +} + +.gce-page-grid .gce-calendar .gce-next, +.gce-page-grid .gce-calendar .gce-prev{ /* Previous and next month links */ + cursor:pointer; + display:inline-block; + width:3%; +} + +.gce-page-grid .gce-calendar .gce-month-title{ /* Month title */ + display:inline-block; + width:90%; +} + +.gce-page-grid .gce-calendar th abbr{ /* Day letter abbreviation */ + border-bottom:none; +} + +/* PAGE LIST */ + +.gce-page-list .gce-list p{ /* Each piece of information in the list */ + margin:0; +} + +.gce-page-list .gce-list p span, +.gce-page-list .gce-list div span{ /* The text displayed before each piece of info, 'Starts:' for example */ + color:#999999; +} + +.gce-page-list .gce-list .gce-list-event{ /* The event title */ + background-color:#DDDDDD; +} + +.gce-page-list .gce-list .gce-list-title{ /* The title (not the same as event title) */ + font-weight:bold; +} + +.gce-page-list .gce-list ul{ + list-style-type:none; + margin:0; + padding:0; +} + +/* WIDGET GRID */ + +.gce-widget-grid .gce-calendar .gce-caption{ + text-align:center; +} + +.gce-widget-grid .gce-calendar{ /* Main calendar table */ + width:100%; + border:1px solid #CCCCCC; + border-collapse:collapse; +} + +.gce-widget-grid .gce-calendar th{ /* Day headings (S, M etc.) */ + width:14.29%; + border:1px solid #CCCCCC; + text-align:center; +} + +.gce-widget-grid .gce-calendar td{ /* Day table cells */ + color:#CCCCCC; + width:14.29%; + border:1px solid #CCCCCC; + text-align:center; +} + +.gce-widget-grid .gce-calendar .gce-has-events{ /* Table cells with events */ + cursor:pointer; + color:#666666; +} + +.gce-widget-grid .gce-calendar .gce-today{ /* Table cell that represents today */ + background-color:#DDDDDD; +} + +.gce-widget-grid .gce-calendar .gce-event-info{ /* Event information */ + display:none; /* Important! */ +} + +.gce-widget-grid .gce-calendar .gce-next, +.gce-widget-grid .gce-calendar .gce-prev{ /* Prev and next month links */ + cursor:pointer; + display:inline-block; + width:5%; +} + +.gce-widget-grid .gce-calendar .gce-month-title{ /* Month title in caption at top of table */ + display:inline-block; + width:80%; +} + +.gce-widget-grid .gce-calendar th abbr{ /* Day name abbreviations */ + border-bottom:none; +} + +/* WIDGET LIST */ + +.gce-widget-list .gce-list p{ /* Each piece of information in the list */ + margin:0; +} + +.gce-widget-list .gce-list p span, +.gce-widget-list .gce-list div span{ /* The text displayed before each piece of info, 'Starts:' for example */ + color:#999999; +} + +.gce-widget-list .gce-list .gce-list-event{ /* The event title */ + background-color:#DDDDDD; +} + +.gce-widget-list .gce-list .gce-list-title{ /* The title (not the same as event title) */ + font-weight:bold; +} + +.gce-widget-list .gce-list ul{ + list-style-type:none; + margin:0; + padding:0; +} + +/* TOOLTIP */ + +.gce-event-info{ /* Tooltip container */ + background-color:#FFFFFF; + border:1px solid #333333; + max-width:300px; +} + +.gce-event-info .gce-tooltip-title{ /* 'Events on...' text */ + margin:5px; + font-weight:bold; + font-size:1.2em; +} + +.gce-event-info ul{ /* Events list */ + padding:0; + margin:5px; + list-style-type:none; +} + +.gce-event-info ul li{ /* Event list item */ + margin:10px 0 0 0; +} + +.gce-event-info ul li p{ /* Each piece of information */ + margin:0; +} + +.gce-event-info ul li p span, +.gce-event-info ul li div span{ /* The text displayed before each piece of info, 'Starts:' for example */ + color:#999999; +} + +.gce-event-info .gce-tooltip-event{ /* The event title */ + background-color:#DDDDDD; + font-weight:bold; +} \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/google-calendar-events.php b/src/wp-content/plugins/google-calendar-events/google-calendar-events.php new file mode 100644 index 00000000..13c7cb24 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/google-calendar-events.php @@ -0,0 +1,689 @@ +have this requirement. You should get in touch with your web hosting provider and ask them to update PHP.

Back to Plugins' ); + } + } + } + + //If any new options have been added between versions, this will update any saved feeds with defaults for new options (shouldn't overwrite anything saved) + function update_settings() { + //If there are some plugin options in the database, but no version info, then this must be an upgrade from version 0.5 or below, so add flag that will provide user with option to clear old transients + if ( get_option( GCE_OPTIONS_NAME ) && ! get_option( 'gce_version' ) ) + add_option( 'gce_clear_old_transients', true ); + + add_option( 'gce_version', GCE_VERSION ); + + add_option( GCE_OPTIONS_NAME ); + add_option( GCE_GENERAL_OPTIONS_NAME ); + + //Get feed options + $options = get_option( GCE_OPTIONS_NAME ); + + if ( ! empty( $options ) ) { + foreach ( $options as $key => $saved_feed_options ) { + $defaults = array( + 'id' => 1, + 'title' => '', + 'url' => '', + 'retrieve_from' => 'today', + 'retrieve_from_value' => 0, + 'retrieve_until' => 'any', + 'retrieve_until_value' => 0, + 'max_events' => 25, + 'date_format' => '', + 'time_format' => '', + 'timezone' => 'default', + 'cache_duration' => 43200, + 'multiple_day' => 'false', + 'display_start' => 'time', + 'display_end' => 'time-date', + 'display_location' => '', + 'display_desc' => '', + 'display_link' => 'on', + 'display_start_text' => 'Starts:', + 'display_end_text' => 'Ends:', + 'display_location_text' => 'Location:', + 'display_desc_text' => 'Description:', + 'display_desc_limit' => '', + 'display_link_text' => 'More details', + 'display_link_target' => '', + 'display_separator' => ', ', + 'use_builder' => 'false', + 'builder' => '' + ); + + //If necessary, copy saved behaviour of old show_past_events and day_limit options into the new from / until options + if ( isset( $saved_feed_options['show_past_events'] ) ) { + if ( 'true' == $saved_feed_options['show_past_events'] ) { + $saved_feed_options['retrieve_from'] = 'month-start'; + } else { + $saved_feed_options['retrieve_from'] = 'today'; + } + } + + if ( isset( $saved_feed_options['day_limit'] ) && '' != $saved_feed_options['day_limit'] ) { + $saved_feed_options['retrieve_until'] = 'today'; + $saved_feed_options['retrieve_until_value'] = (int) $saved_feed_options['day_limit'] * 86400; + } + + //Update old display_start / display_end values + if ( ! isset( $saved_feed_options['display_start'] ) ) + $saved_feed_options['display_start'] = 'none'; + elseif ( 'on' == $saved_feed_options['display_start'] ) + $saved_feed_options['display_start'] = 'time'; + + if( ! isset( $saved_feed_options['display_end'] ) ) + $saved_feed_options['display_end'] = 'none'; + elseif ( 'on' == $saved_feed_options['display_end'] ) + $saved_feed_options['display_end'] = 'time-date'; + + //Merge saved options with defaults + foreach ( $saved_feed_options as $option_name => $option ) { + $defaults[$option_name] = $saved_feed_options[$option_name]; + } + + $options[$key] = $defaults; + } + } + + //Save feed options + update_option( GCE_OPTIONS_NAME, $options ); + + //Get general options + $options = get_option( GCE_GENERAL_OPTIONS_NAME ); + + $defaults = array( + 'stylesheet' => '', + 'javascript' => false, + 'loading' => 'Loading...', + 'error' => 'Events cannot currently be displayed, sorry! Please check back later.', + 'fields' => true, + 'old_stylesheet' => false + ); + + $old_stylesheet_option = get_option( 'gce_stylesheet' ); + + //If old custom stylesheet option was set, add it to general options, then delete old option + if( false !== $old_stylesheet_option ) { + $defaults['stylesheet'] = $old_stylesheet_option; + delete_option( 'gce_stylesheet' ); + } elseif ( isset($options['stylesheet'] ) ) { + $defaults['stylesheet'] = $options['stylesheet']; + } + + if ( isset($options['javascript'] ) ) + $defaults['javascript'] = $options['javascript']; + + if ( isset( $options['loading'] ) ) + $defaults['loading'] = $options['loading']; + + if ( isset($options['error'] ) ) + $defaults['error'] = $options['error']; + + if ( isset($options['fields'] ) ) + $defaults['fields'] = $options['fields']; + + if( isset( $options['old_stylesheet'] ) ) + $defaults['old_stylesheet'] = $options['old_stylesheet']; + + //Save general options + update_option( GCE_GENERAL_OPTIONS_NAME, $defaults ); + } + + function init_plugin() { + //Load text domain for i18n + load_plugin_textdomain( GCE_TEXT_DOMAIN, false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); + } + + //Adds 'Settings' link to main WordPress Plugins page + function add_settings_link( $links ) { + array_unshift( $links, '' . __( 'Settings', GCE_TEXT_DOMAIN ) . '' ); + return $links; + } + + //Setup admin settings page + function setup_admin(){ + if ( function_exists( 'add_options_page' ) ) + add_options_page( 'Google Calendar Events', 'Google Calendar Events', 'manage_options', basename( __FILE__ ), array( $this, 'admin_page' ) ); + } + + //Prints admin settings page + function admin_page() { + ?> +
+

+ +

+ + +
+

+

+

+

+
+ + +
+

+

+

+

+

+
+
+ update_settings(); + + //If the message about old transients was displayed, check authority and intention, and then either clear transients or clear flag + if ( isset( $_GET['gce_action'] ) && current_user_can( 'manage_options' ) ) { + switch ( $_GET['gce_action'] ) { + case 'clear_old_transients': + check_admin_referer( 'gce_action_clear_old_transients' ); + $this->clear_old_transients(); + add_settings_error( 'gce_options', 'gce_cleared_old_transients', __( 'Old cached data cleared.', GCE_TEXT_DOMAIN ), 'updated' ); + break; + case 'ignore_old_transients': + check_admin_referer( 'gce_action_ignore_old_transients' ); + delete_option( 'gce_clear_old_transients' ); + } + } + + register_setting( 'gce_options', 'gce_options', array( $this, 'validate_feed_options' ) ); + register_setting( 'gce_general', 'gce_general', array( $this, 'validate_general_options' ) ); + + require_once 'admin/add.php'; + require_once 'admin/edit.php'; + require_once 'admin/delete.php'; + require_once 'admin/refresh.php'; + } + + //Clears any expired transients from the database + function clear_old_transients() { + global $wpdb; + + //Retrieve names of all transients + $transients = $wpdb->get_results( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE '%transient%' AND option_name NOT LIKE '%transient_timeout%'" ); + + if ( ! empty( $transients ) ) { + foreach ( $transients as $transient ) { + //Attempt to retrieve the transient. If it has expired, it will be deleted + get_transient( str_replace( '_transient_', '', $transient->option_name ) ); + } + } + + //Remove the flag + delete_option( 'gce_clear_old_transients' ); + } + + //Register the widget + function add_widget() { + require_once 'widget/gce-widget.php'; + return register_widget( 'GCE_Widget' ); + } + + //Check / validate submitted feed options data before being stored + function validate_feed_options( $input ) { + //Get saved options + $options = get_option( GCE_OPTIONS_NAME ); + + if ( isset( $input['submit_delete'] ) ) { + //If delete button was clicked, delete feed from options array and remove associated transients + unset( $options[$input['id']] ); + $this->delete_feed_transients( (int) $input['id'] ); + add_settings_error( 'gce_options', 'gce_deleted', __( sprintf('Feed %s deleted.', absint( $input['id'] ) ), GCE_TEXT_DOMAIN ), 'updated' ); + } elseif ( isset($input['submit_refresh'] ) ) { + //If refresh button was clicked, delete transients associated with feed + $this->delete_feed_transients( (int) $input['id'] ); + add_settings_error( 'gce_options', 'gce_refreshed', __( sprintf('Cached data for feed %s cleared.', absint( $input['id'] ) ), GCE_TEXT_DOMAIN ), 'updated' ); + } else { + //Otherwise, validate options and add / update them + + //Check id is positive integer + $id = absint( $input['id'] ); + //Escape title text + $title = esc_html( $input['title'] ); + //Escape feed url + $url = esc_url( $input['url'] ); + + //Array of valid options for retrieve_from and retrieve_until settings + $valid_retrieve_options = array( 'now', 'today', 'week', 'month-start', 'month-end', 'any', 'date' ); + + $retrieve_from = 'today'; + $retrieve_from_value = 0; + + //Ensure retrieve_from is valid + if( in_array( $input['retrieve_from'], $valid_retrieve_options ) ) { + $retrieve_from = $input['retrieve_from']; + $retrieve_from_value = (int) $input['retrieve_from_value']; + } + + $retrieve_until = 'any'; + $retrieve_until_value = 0; + + //Ensure retrieve_until is valid + if ( in_array( $input['retrieve_until'], $valid_retrieve_options ) ) { + $retrieve_until = $input['retrieve_until']; + $retrieve_until_value = (int) $input['retrieve_until_value']; + } + + //Check max events is a positive integer. If absint returns 0, reset to default (25) + $max_events = ( 0 == absint($input['max_events'] ) ) ? 25 : absint( $input['max_events'] ); + + $date_format = wp_filter_kses( $input['date_format'] ); + $time_format = wp_filter_kses( $input['time_format'] ); + + //Escape timezone + $timezone = esc_html( $input['timezone'] ); + + //Make sure cache duration is a positive integer or 0. If user has typed 0, leave as 0 but if 0 is returned from absint, set to default (43200) + $cache_duration = $input['cache_duration']; + if ( '0' != $cache_duration ) + $cache_duration = ( 0 == absint( $cache_duration ) ) ? 43200 : absint( $cache_duration ); + + $multiple_day = ( isset( $input['multiple_day'] ) ) ? 'true' : 'false'; + + $display_start = esc_html( $input['display_start'] ); + $display_end = esc_html( $input['display_end'] ); + + //Display options must be 'on' or null + $display_location = ( isset( $input['display_location'] ) ) ? 'on' : null; + $display_desc = ( isset( $input['display_desc'] ) ) ? 'on' : null; + $display_link = ( isset( $input['display_link'] ) ) ? 'on' : null; + $display_link_target = ( isset( $input['display_link_target'] ) ) ? 'on' : null; + + //Filter display text + $display_start_text = wp_filter_kses( $input['display_start_text'] ); + $display_end_text = wp_filter_kses( $input['display_end_text'] ); + $display_location_text = wp_filter_kses( $input['display_location_text'] ); + $display_desc_text = wp_filter_kses( $input['display_desc_text'] ); + $display_link_text = wp_filter_kses( $input['display_link_text'] ); + + $display_separator = wp_filter_kses( $input['display_separator'] ); + + $display_desc_limit = ( 0 == absint( $input['display_desc_limit'] ) ) ? '' : absint( $input['display_desc_limit'] ); + + $use_builder = ( 'false' == $input['use_builder'] ) ? 'false' : 'true'; + $builder = wp_kses_post( $input['builder'] ); + + //Fill options array with validated values + $options[$id] = array( + 'id' => $id, + 'title' => $title, + 'url' => $url, + 'retrieve_from' => $retrieve_from, + 'retrieve_until' => $retrieve_until, + 'retrieve_from_value' => $retrieve_from_value, + 'retrieve_until_value' => $retrieve_until_value, + 'max_events' => $max_events, + 'date_format' => $date_format, + 'time_format' => $time_format, + 'timezone' => $timezone, + 'cache_duration' => $cache_duration, + 'multiple_day' => $multiple_day, + 'display_start' => $display_start, + 'display_end' => $display_end, + 'display_location' => $display_location, + 'display_desc' => $display_desc, + 'display_link' => $display_link, + 'display_start_text' => $display_start_text, + 'display_end_text' => $display_end_text, + 'display_location_text' => $display_location_text, + 'display_desc_text' => $display_desc_text, + 'display_desc_limit' => $display_desc_limit, + 'display_link_text' => $display_link_text, + 'display_link_target' => $display_link_target, + 'display_separator' => $display_separator, + 'use_builder' => $use_builder, + 'builder' => $builder + ); + + if ( isset( $input['submit_add'] ) ) + add_settings_error( 'gce_options', 'gce_added', __( sprintf( 'Feed %s added.', absint( $input['id'] ) ), GCE_TEXT_DOMAIN ), 'updated' ); + else + add_settings_error( 'gce_options', 'gce_edited', __( sprintf( 'Settings for feed %s updated.', absint( $input['id'] ) ), GCE_TEXT_DOMAIN ), 'updated' ); + } + + return $options; + } + + //Validate submitted general options + function validate_general_options( $input ) { + $options = get_option(GCE_GENERAL_OPTIONS_NAME); + + $options['stylesheet'] = esc_url( $input['stylesheet'] ); + $options['javascript'] = ( isset( $input['javascript'] ) ) ? true : false; + $options['loading'] = esc_html( $input['loading'] ); + $options['error'] = wp_filter_kses( $input['error'] ); + $options['fields'] = ( isset( $input['fields'] ) ) ? true : false; + $options['old_stylesheet'] = ( isset( $input['old_stylesheet'] ) ) ? true : false; + + add_settings_error( 'gce_general', 'gce_general_updated', __( 'General options updated.', GCE_TEXT_DOMAIN ), 'updated' ); + + return $options; + } + + //Delete all transients (cached feed data) associated with feed specified + function delete_feed_transients( $id ) { + delete_transient( 'gce_feed_' . $id ); + delete_transient( 'gce_feed_' . $id . '_url' ); + } + + //Handles the shortcode stuff + function shortcode_handler( $atts ) { + $options = get_option( GCE_OPTIONS_NAME ); + + //Check that any feeds have been added + if ( is_array( $options ) && ! empty( $options ) ) { + extract( shortcode_atts( array( + 'id' => '', + 'type' => 'grid', + 'title' => false, + 'max' => 0, + 'order' => 'asc' + ), $atts ) ); + + $no_feeds_exist = true; + $feed_ids = array(); + + if ( '' != $id ) { + //Break comma delimited list of feed ids into array + $feed_ids = explode( ',', str_replace( ' ', '', $id ) ); + + //Check each id is an integer, if not, remove it from the array + foreach ( $feed_ids as $key => $feed_id ) { + if ( 0 == absint( $feed_id ) ) + unset( $feed_ids[$key] ); + } + + //If at least one of the feed ids entered exists, set no_feeds_exist to false + foreach ( $feed_ids as $feed_id ) { + if ( isset($options[$feed_id] ) ) + $no_feeds_exist = false; + } + } else { + foreach ( $options as $feed ) { + $feed_ids[] = $feed['id']; + } + + $no_feeds_exist = false; + } + + //Ensure max events is a positive integer + $max_events = absint( $max ); + + //Ensure sort order is asc or desc + $sort_order = ( 'desc' == $order ) ? 'desc' : 'asc'; + + //Check that at least one valid feed id has been entered + if ( empty( $feed_ids ) || $no_feeds_exist ) { + return __( 'No valid Feed IDs have been entered for this shortcode. Please check that you have entered the IDs correctly and that the Feeds have not been deleted.', GCE_TEXT_DOMAIN ); + } else { + //Turns feed_ids back into string of feed ids delimited by '-' ('1-2-3-4' for example) + $feed_ids = implode( '-', $feed_ids ); + + //If title has been omitted from shortcode, set title_text to null, otherwise set to title (even if empty string) + $title_text = ( false === $title ) ? null : $title; + + switch ( $type ) { + case 'grid': + return gce_print_grid( $feed_ids, $title_text, $max_events ); + case 'ajax': + return gce_print_grid( $feed_ids, $title_text, $max_events, true ); + case 'list': + return gce_print_list( $feed_ids, $title_text, $max_events, $sort_order ); + case 'list-grouped': + return gce_print_list( $feed_ids, $title_text, $max_events, $sort_order, true ); + } + } + } else { + return __( 'No feeds have been added yet. You can add a feed in the Google Calendar Events settings.', GCE_TEXT_DOMAIN ); + } + } + + //Adds the required CSS + function add_styles() { + //Don't add styles if on admin screens + if( ! is_admin() ) { + wp_enqueue_style( 'gce_styles', WP_PLUGIN_URL . '/' . GCE_PLUGIN_NAME . '/css/gce-style.css' ); + + $options = get_option( GCE_GENERAL_OPTIONS_NAME ); + + //If old stylesheet option is enabled, enqueue old styles + if ( $options['old_stylesheet'] ) + wp_enqueue_style( 'gce_old_styles', WP_PLUGIN_URL . '/' . GCE_PLUGIN_NAME . '/css/gce-old-style.css' ); + + //If user has entered a URL to a custom stylesheet, enqueue it too + if( '' != $options['stylesheet'] ) + wp_enqueue_style( 'gce_custom_styles', $options['stylesheet'] ); + } + } + + //Adds the required scripts + function add_scripts() { + //Don't add scripts if on admin screens + if ( ! is_admin() ) { + $options = get_option( GCE_GENERAL_OPTIONS_NAME ); + $add_to_footer = (bool) $options['javascript']; + + wp_enqueue_script( 'jquery' ); + wp_enqueue_script( 'gce_jquery_qtip', WP_PLUGIN_URL . '/' . GCE_PLUGIN_NAME . '/js/jquery-qtip.js', array( 'jquery' ), null, $add_to_footer ); + wp_enqueue_script( 'gce_scripts', WP_PLUGIN_URL . '/' . GCE_PLUGIN_NAME . '/js/gce-script.js', array( 'jquery' ), null, $add_to_footer ); + wp_localize_script( 'gce_scripts', 'GoogleCalendarEvents', array( + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'loading' => $options['loading'] + ) ); + } else { + wp_enqueue_script( 'gce_scripts', WP_PLUGIN_URL . '/' . GCE_PLUGIN_NAME . '/js/gce-admin-script.js', array( 'jquery' ) ); + } + } + + //AJAX stuffs + function gce_ajax() { + if ( isset( $_GET['gce_feed_ids'] ) ) { + $ids = esc_html( $_GET['gce_feed_ids'] ); + $title = esc_html( $_GET['gce_title_text'] ); + $max = absint( $_GET['gce_max_events'] ); + $month = absint( $_GET['gce_month'] ); + $year = absint( $_GET['gce_year'] ); + + if ( 'page' == $_GET['gce_type'] ) { + //The page grid markup to be returned via AJAX + echo gce_print_grid( $ids, $title, $max, true, $month, $year ); + } elseif ( 'widget' == $_GET['gce_type'] ) { + $widget = esc_html( $_GET['gce_widget_id'] ); + + //The widget grid markup to be returned via AJAX + gce_widget_content_grid( $ids, $title, $max, $widget, true, $month, $year ); + } + } + die(); + } + } +} + +function gce_print_list( $feed_ids, $title_text, $max_events, $sort_order, $grouped = false ) { + require_once 'inc/gce-parser.php'; + + $ids = explode( '-', $feed_ids ); + + //Create new GCE_Parser object, passing array of feed id(s) + $list = new GCE_Parser( $ids, $title_text, $max_events, $sort_order ); + + $num_errors = $list->get_num_errors(); + + //If there are less errors than feeds parsed, at least one feed must have parsed successfully so continue to display the list + if ( $num_errors < count( $ids ) ) { + $markup = '
' . $list->get_list( $grouped ) . '
'; + + //If there was at least one error, return the list markup with error messages (for admins only) + if ( $num_errors > 0 && current_user_can( 'manage_options' ) ) + return $list->error_messages() . $markup; + + //Otherwise just return the list markup + return $markup; + } else { + //If current user is an admin, display an error message explaining problem(s). Otherwise, display a 'nice' error messsage + if ( current_user_can( 'manage_options' ) ) { + return $list->error_messages(); + } else { + $options = get_option( GCE_GENERAL_OPTIONS_NAME ); + return $options['error']; + } + } +} + +function gce_print_grid( $feed_ids, $title_text, $max_events, $ajaxified = false, $month = null, $year = null ) { + require_once 'inc/gce-parser.php'; + + $ids = explode( '-', $feed_ids ); + + //Create new GCE_Parser object, passing array of feed id(s) returned from gce_get_feed_ids() + $grid = new GCE_Parser( $ids, $title_text, $max_events ); + + $num_errors = $grid->get_num_errors(); + + //If there are less errors than feeds parsed, at least one feed must have parsed successfully so continue to display the grid + if ( $num_errors < count( $ids ) ) { + $markup = '
'; + + //Add AJAX script if required + if ( $ajaxified ) + $markup .= ''; + + $markup .= $grid->get_grid( $year, $month, $ajaxified ) . '
'; + + //If there was at least one error, return the grid markup with an error message (for admins only) + if ( $num_errors > 0 && current_user_can( 'manage_options' ) ) + return $grid->error_messages() . $markup; + + //Otherwise just return the grid markup + return $markup; + } else { + //If current user is an admin, display an error message explaining problem. Otherwise, display a 'nice' error messsage + if ( current_user_can( 'manage_options' ) ) { + return $grid->error_messages(); + } else { + $options = get_option( GCE_GENERAL_OPTIONS_NAME ); + return $options['error']; + } + } +} + +$gce = new Google_Calendar_Events(); +?> \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/inc/gce-event.php b/src/wp-content/plugins/google-calendar-events/inc/gce-event.php new file mode 100644 index 00000000..15c86c9b --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/inc/gce-event.php @@ -0,0 +1,536 @@ +id = $id; + $this->title = $title; + $this->description = $description; + $this->location = $location; + $this->start_time = $start_time; + $this->end_time = $end_time; + $this->link = $link; + + //Calculate which day type this event is (SWD = single whole day, SPD = single part day, MWD = multiple whole day, MPD = multiple part day) + if ( ( $start_time + 86400 ) <= $end_time ) { + if ( ( $start_time + 86400 ) == $end_time ) { + $this->day_type = 'SWD'; + } else { + if ( ( '12:00 am' == date( 'g:i a', $start_time ) ) && ( '12:00 am' == date( 'g:i a', $end_time ) ) ) { + $this->day_type = 'MWD'; + } else { + $this->day_type = 'MPD'; + } + } + } else { + $this->day_type = 'SPD'; + } + } + + function set_feed( $feed ) { + $this->feed = $feed; + } + + function get_feed() { + return $this->feed; + } + + function get_start_time() { + return $this->start_time; + } + + function get_end_time() { + return $this->end_time; + } + + function get_day_type() { + return $this->day_type; + } + + //Returns an array of days (as UNIX timestamps) that this events spans + function get_days() { + //Round start date to nearest day + $start_time = mktime( 0, 0, 0, date( 'm', $this->start_time ), date( 'd', $this->start_time ) , date( 'Y', $this->start_time ) ); + + $days = array(); + + //If multiple day events should be handled, and this event is a multi-day event, add multiple day event to required days + if ( $this->feed->get_multi_day() && ( $this->day_type == 'MPD' || $this->day_type == 'MWD' ) ) { + $on_next_day = true; + $next_day = $start_time; + + while ( $on_next_day ) { + //If the end time of the event is after 00:00 on the next day (therefore, not doesn't end on this day) + if ( $this->end_time > $next_day ) { + //If $next_day is within the event retrieval date range (specified by retrieve events from / until settings) + if ( $next_day >= $this->feed->get_feed_start() && $next_day < $this->feed->get_feed_end() ) { + $days[] = $next_day; + } + } else { + $on_next_day = false; + } + $next_day += 86400; + } + } else { + //Add event into array of events for that day + $days[] = $start_time; + } + + return $days; + } + + //Returns the markup for this event, so that it can be used in the construction of a grid / list + function get_event_markup( $display_type, $num_in_day, $num ) { + //Set the display type (either tooltip or list) + $this->type = $display_type; + + //Set which number event this is in day (first in day etc) + $this->num_in_day = $num_in_day; + + //Set the position of this event in array of events currently being processed + $this->pos = $num; + + //Use the builder or the old display options to create the markup, depending on user choice + if ( $this->feed->get_use_builder() ) + return $this->use_builder(); + + return $this->use_old_display_options(); + } + + //Return the event markup using the builder + function use_builder() { + //Array of valid shortcodes + $shortcodes = array( + //Event / feed information shortcodes + + 'event-title', //The event title + 'start-time', //The start time of the event (uses the time format from the feed options, if it is set. Otherwise uses the default WordPress time format) + 'start-date', //The start date of the event (uses the date format from the feed options, if it is set. Otherwise uses the default WordPress date format) + 'start-custom', //The start time / date of the event (uses a custom PHP date format, specified in the 'format' attribute) + 'start-human', //The difference between the start time of the event and the time now, in human-readable format, such as '1 hour', '4 days', '15 mins' + 'end-time', //The end time of the event (uses the time format from the feed options, if it is set. Otherwise uses the default WordPress time format) + 'end-date', //The end date of the event (uses the date format from the feed options, if it is set. Otherwise uses the default WordPress date format) + 'end-custom', //The end time / date of the event (uses a custom PHP date format, specified in the 'format' attribute) + 'end-human', //The difference between the end time of the event and the time now, in human-readable format, such as '1 hour', '4 days', '15 mins' + 'location', //The event location + 'description', //The event deescription (number of words can be limited by the 'limit' attribute) + 'link', //Anything within this shortcode (including further shortcodes) will be linked to the Google Calendar page for this event + 'url', //The raw link URL to the Google Calendar page for this event (can be used to construct more customized links) + 'feed-id', //The ID of this feed (Can be useful for constructing feed specific CSS classes) + 'feed-title', //The feed title + 'maps-link', //Anything within this shortcode (including further shortcodes) will be linked to a Google Maps page based on whatever is specified for the event location + 'length', //How long the events lasts, in human-readable format + 'event-num', //The position of the event in the current list, or the position of the event in the current month (for grids) + 'event-id', //The event UID (unique identifier assigned by Google) + 'cal-id', //The calendar ID + + //Anything between the opening and closing tags of the following logical shortcodes (including further shortcodes) will only be displayed if: + + 'if-all-day', //This is an all-day event + 'if-not-all-day', //This is not an all-day event + 'if-title', //The event has a title + 'if-description', //The event has a description + 'if-location', //The event has a location + 'if-tooltip', //The current display type is 'tooltip' + 'if-list', //The current display type is 'list' + 'if-now', //The event is taking place now (after the start time, but before the end time) + 'if-not-now', //The event is not taking place now (may have ended or not yet started) + 'if-started', //The event has started (and even if it has ended) + 'if-not-started', //The event has not yet started + 'if-ended', //The event has ended + 'if-not-ended', //The event has not ended (and even if it hasn't started) + 'if-first', //The event is the first in the day + 'if-not-first', //The event is not the first in the day + 'if-multi-day', //The event spans multiple days + 'if-single-day' //The event does not span multiple days + ); + + $shortcodes = implode( '|', $shortcodes ); + + $markup = $this->feed->get_builder(); + + $count = 0; + + //Go through the builder text looking for valid shortcodes. If one is found, send it to parse_shortcodes(). Once $count reaches 0, there are no un-parsed shortcodes + //left, so return the markup (which now contains all the appropriate event information) + do { + $markup = preg_replace_callback( + '/(.?)\[(' . $shortcodes . ')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s', + array( $this, 'parse_shortcode' ), + $markup, + -1, + $count + ); + } while ( $count > 0 ); + + return $markup; + } + + //Parse a shortcode, returning the appropriate event information + //Much of this code is 'borrowed' from WordPress' own shortcode handling stuff! + function parse_shortcode( $m ) { + if ( '[' == $m[1] && ']' == $m[6] ) + return substr( $m[0], 1, -1 ); + + //Extract any attributes contained in the shortcode + extract( shortcode_atts( array( + 'newwindow' => 'false', + 'format' => '', + 'limit' => '0', + 'html' => 'false', + 'markdown' => 'false', + 'precision' => '1', + 'offset' => '0', + 'autolink' => 'true' + ), shortcode_parse_atts( $m[3] ) ) ); + + //Sanitize the attributes + $newwindow = ( 'true' === $newwindow ); + $format = esc_attr( $format ); + $limit = absint( $limit ); + $html = ( 'true' === $html ); + $markdown = ( 'true' === $markdown ); + $precision = absint( $precision ); + $offset = intval( $offset ); + $autolink = ( 'true' === $autolink ); + + $time_now = current_time( 'timestamp' ); + + //Do the appropriate stuff depending on which shortcode we're looking at. See valid shortcode list (above) for explanation of each shortcode + switch ( $m[2] ) { + case 'event-title': + $title = esc_html( trim( $this->title ) ); + + if ( $markdown && function_exists( 'Markdown' ) ) + $title = Markdown( $title ); + + if ( $html ) + $title = wp_kses_post( html_entity_decode( $title ) ); + + return $m[1] . $title . $m[6]; + + case 'start-time': + return $m[1] . date_i18n( $this->feed->get_time_format(), $this->start_time + $offset ) . $m[6]; + + case 'start-date': + return $m[1] . date_i18n( $this->feed->get_date_format(), $this->start_time + $offset ) . $m[6]; + + case 'start-custom': + return $m[1] . date_i18n( $format, $this->start_time + $offset ) . $m[6]; + + case 'start-human': + return $m[1] . $this->gce_human_time_diff( $this->start_time + $offset, $time_now, $precision ) . $m[6]; + + case 'end-time': + return $m[1] . date_i18n( $this->feed->get_time_format(), $this->end_time + $offset ) . $m[6]; + + case 'end-date': + return $m[1] . date_i18n( $this->feed->get_date_format(), $this->end_time + $offset ) . $m[6]; + + case 'end-custom': + return $m[1] . date_i18n( $format, $this->end_time + $offset ) . $m[6]; + + case 'end-human': + return $m[1] . $this->gce_human_time_diff( $this->end_time + $offset, $time_now, $precision ) . $m[6]; + + case 'location': + $location = esc_html( trim( $this->location ) ); + + if ( $markdown && function_exists( 'Markdown' ) ) + $location = Markdown( $location ); + + if ( $html ) + $location = wp_kses_post( html_entity_decode( $location ) ); + + return $m[1] . $location . $m[6]; + + case 'description': + $description = esc_html( trim( $this->description ) ); + + //If a word limit has been set, trim the description to the required length + if ( 0 != $limit ) { + preg_match( '/([\S]+\s*){0,' . $limit . '}/', esc_html( $this->description ), $description ); + $description = trim( $description[0] ); + } + + if ( $markdown || $html ) { + if ( $markdown && function_exists( 'Markdown' ) ) + $description = Markdown( $description ); + + if ( $html ) + $description = wp_kses_post( html_entity_decode( $description ) ); + }else{ + //Otherwise, preserve line breaks + $description = nl2br( $description ); + + //Make URLs clickable if required + if ( $autolink ) + $description = make_clickable( $description ); + } + + return $m[1] . $description . $m[6]; + + case 'link': + $new_window = ( $newwindow ) ? ' target="_blank"' : ''; + return $m[1] . '' . $m[5] . '' . $m[6]; + + case 'url': + return $m[1] . $this->link . '&ctz=' . $this->feed->get_timezone() . $m[6]; + + case 'feed-id': + return $m[1] . $this->feed->get_feed_id() . $m[6]; + + case 'feed-title': + return $m[1] . $this->feed->get_feed_title() . $m[6]; + + case 'maps-link': + $new_window = ( $newwindow ) ? ' target="_blank"' : ''; + return $m[1] . '' . $m[5] . '' . $m[6]; + + case 'length': + return $m[1] . $this->gce_human_time_diff( $this->start_time, $this->end_time, $precision ) . $m[6]; + + case 'event-num': + return $m[1] . $this->pos . $m[6]; + + case 'event-id': + return $m[1] . $this->id . $m[6]; + + case 'cal-id': + $cal_id = explode( '/', $this->feed->get_feed_url() ); + return $m[1] . $cal_id[5] . $m[6]; + + case 'if-all-day': + if ( 'SWD' == $this->day_type || 'MWD' == $this->day_type ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-not-all-day': + if ( 'SPD' == $this->day_type || 'MPD' == $this->day_type ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-title': + if ( '' != $this->title ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-description': + if ( '' != $this->description ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-location': + if ( '' != $this->location ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-tooltip': + if ( 'tooltip' == $this->type ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-list': + if ( 'list' == $this->type ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-now': + if ( $time_now >= $this->start_time && $time_now < $this->end_time ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-not-now': + if ( $this->end_time < $time_now || $this->start_time > $time_now ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-started': + if ( $this->start_time < $time_now ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-not-started': + if ( $this->start_time > $time_now ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-ended': + if ( $this->end_time < $time_now ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-not-ended': + if ( $this->end_time > $time_now ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-first': + if ( 0 == $this->num_in_day ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-not-first': + if ( 0 != $this->num_in_day ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-multi-day': + if ( 'MPD' == $this->day_type || 'MWD' == $this->day_type ) + return $m[1] . $m[5] . $m[6]; + + return ''; + + case 'if-single-day': + if ( 'SPD' == $this->day_type || 'SWD' == $this->day_type ) + return $m[1] . $m[5] . $m[6]; + + return ''; + } + } + + //Return the event markup using the old display options + function use_old_display_options() { + $display_options = $this->feed->get_display_options(); + + $markup = '

' . esc_html( $this->title ) . '

'; + + $start_end = array(); + + //If start date / time should be displayed, set up array of start date and time + if ( 'none' != $display_options['display_start'] ) { + $sd = $this->start_time; + $start_end['start'] = array( + 'time' => date_i18n( $this->feed->get_time_format(), $sd ), + 'date' => date_i18n( $this->feed->get_date_format(), $sd ) + ); + } + + //If end date / time should be displayed, set up array of end date and time + if ( 'none' != $display_options['display_end'] ) { + $ed = $this->end_time; + $start_end['end'] = array( + 'time' => date_i18n( $this->feed->get_time_format(), $ed ), + 'date' => date_i18n( $this->feed->get_date_format(), $ed ) + ); + } + + //Add the correct start / end, date / time information to $markup + foreach ( $start_end as $start_or_end => $info ) { + $markup .= '

' . $display_options['display_' . $start_or_end . '_text'] . ' '; + + switch ( $display_options['display_' . $start_or_end] ) { + case 'time': $markup .= $info['time']; + break; + case 'date': $markup .= $info['date']; + break; + case 'time-date': $markup .= $info['time'] . $display_options['display_separator'] . $info['date']; + break; + case 'date-time': $markup .= $info['date'] . $display_options['display_separator'] . $info['time']; + } + + $markup .= '

'; + } + + //If location should be displayed (and is not empty) add to $markup + if ( isset( $display_options['display_location'] ) ) { + $event_location = $this->location; + if ( '' != $event_location ) + $markup .= '

' . $display_options['display_location_text'] . ' ' . esc_html( $event_location ) . '

'; + } + + //If description should be displayed (and is not empty) add to $markup + if ( isset($display_options['display_desc'] ) ) { + $event_desc = $this->description; + + if ( '' != $event_desc ) { + //Limit number of words of description to display, if required + if ( '' != $display_options['display_desc_limit'] ) { + preg_match( '/([\S]+\s*){0,' . $display_options['display_desc_limit'] . '}/', $this->description, $event_desc ); + $event_desc = trim( $event_desc[0] ); + } + + $markup .= '

' . $display_options['display_desc_text'] . ' ' . make_clickable( nl2br( esc_html( $event_desc ) ) ) . '

'; + } + } + + //If link should be displayed add to $markup + if ( isset($display_options['display_link'] ) ) //Below: add target="_blank" if required + $markup .= ''; + + return $markup; + } + + //Returns the difference between two times in human-readable format. Based on a patch for human_time_diff posted in the WordPress trac (http://core.trac.wordpress.org/ticket/9272) by Viper007Bond + function gce_human_time_diff( $from, $to = '', $limit = 1 ) { + $units = array( + 31556926 => array( __( '%s year', GCE_TEXT_DOMAIN ), __( '%s years', GCE_TEXT_DOMAIN ) ), + 2629744 => array( __( '%s month', GCE_TEXT_DOMAIN ), __( '%s months', GCE_TEXT_DOMAIN ) ), + 604800 => array( __( '%s week', GCE_TEXT_DOMAIN ), __( '%s weeks', GCE_TEXT_DOMAIN ) ), + 86400 => array( __( '%s day', GCE_TEXT_DOMAIN ), __( '%s days', GCE_TEXT_DOMAIN ) ), + 3600 => array( __( '%s hour', GCE_TEXT_DOMAIN ), __( '%s hours', GCE_TEXT_DOMAIN ) ), + 60 => array( __( '%s min', GCE_TEXT_DOMAIN ), __( '%s mins', GCE_TEXT_DOMAIN ) ), + ); + + if ( empty( $to ) ) + $to = time(); + + $from = (int) $from; + $to = (int) $to; + $diff = (int) abs( $to - $from ); + + $items = 0; + $output = array(); + + foreach ( $units as $unitsec => $unitnames ) { + if ( $items >= $limit ) + break; + + if ( $diff < $unitsec ) + continue; + + $numthisunits = floor( $diff / $unitsec ); + $diff = $diff - ( $numthisunits * $unitsec ); + $items++; + + if ( $numthisunits > 0 ) + $output[] = sprintf( _n( $unitnames[0], $unitnames[1], $numthisunits ), $numthisunits ); + } + + $seperator = _x( ', ', 'human_time_diff' ); + + if ( ! empty( $output ) ) { + return implode( $seperator, $output ); + } else { + $smallest = array_pop( $units ); + return sprintf( $smallest[0], 1 ); + } + } +} +?> \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/inc/gce-feed.php b/src/wp-content/plugins/google-calendar-events/inc/gce-feed.php new file mode 100644 index 00000000..85797750 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/inc/gce-feed.php @@ -0,0 +1,244 @@ +feed_url ); + + $scheme_and_host = $url_parts['scheme'] . '://' . $url_parts['host']; + + //Remove the exisitng projection from the path, and replace it with '/full-noattendees' + $path = substr( $url_parts['path'], 0, strrpos( $url_parts['path'], '/' ) ) . '/full-noattendees'; + + //Add the default parameters to the querystring (retrieving JSON, not XML) + $query = '?alt=json&singleevents=true&sortorder=ascending&orderby=starttime'; + + //Append the feed specific parameters to the querystring + $query .= '&start-min=' . date( 'Y-m-d\TH:i:s', $this->feed_start ); + $query .= '&start-max=' . date( 'Y-m-d\TH:i:s', $this->feed_end ); + $query .= '&max-results=' . $this->max_events; + + if ( ! empty( $this->timezone ) ) + $query .= '&ctz=' . $this->timezone; + + //If enabled, use experimental 'fields' parameter of Google Data API, so that only necessary data is retrieved. This *significantly* reduces amount of data to retrieve and process + $general_options = get_option( GCE_GENERAL_OPTIONS_NAME ); + if ( $general_options['fields'] ) + $query .= '&fields=entry(title,link[@rel="alternate"],content,gd:where,gd:when,gCal:uid)'; + + //Put the URL back together + $url = $scheme_and_host . $path . $query; + + //Attempt to retrieve the cached feed data + $this->events = get_transient( 'gce_feed_' . $this->feed_id ); + + //If the cached feed data isn't valid any more (has expired), or the URL has changed (settings have changed), then the feed data needs to be retrieved and decoded again + if ( false === $this->events || get_transient( 'gce_feed_' . $this->feed_id . '_url' ) != $url ) { + $this->events = array(); + + //Retrieve the feed data + $raw_data = wp_remote_get( $url, array( + 'sslverify' => false, //sslverify is set to false to ensure https URLs work reliably. Data source is Google's servers, so is trustworthy + 'timeout' => 10 //Increase timeout from the default 5 seconds to ensure even large feeds are retrieved successfully + ) ); + + //If $raw_data is a WP_Error, something went wrong + if ( ! is_wp_error( $raw_data ) ) { + //If response code isn't 200, something went wrong + if ( 200 == $raw_data['response']['code'] ) { + //Attempt to convert the returned JSON into an array + $raw_data = json_decode( $raw_data['body'], true ); + + //If decoding was successful + if ( ! empty( $raw_data ) ) { + //If there are some entries (events) to process + if ( isset( $raw_data['feed']['entry'] ) ) { + //Loop through each event, extracting the relevant information + foreach ( $raw_data['feed']['entry'] as $event ) { + $id = esc_html( substr( $event['gCal$uid']['value'], 0, strpos( $event['gCal$uid']['value'], '@' ) ) ); + $title = esc_html( $event['title']['$t'] ); + $description = esc_html( $event['content']['$t'] ); + $link = esc_url( $event['link'][0]['href'] ); + $location = esc_html( $event['gd$where'][0]['valueString'] ); + $start_time = $this->iso_to_ts( $event['gd$when'][0]['startTime'] ); + $end_time = $this->iso_to_ts( $event['gd$when'][0]['endTime'] ); + + //Create a GCE_Event using the above data. Add it to the array of events + $this->events[] = new GCE_Event( $id, $title, $description, $location, $start_time, $end_time, $link ); + } + + //Cache the feed data + set_transient( 'gce_feed_' . $this->feed_id, $this->events, $this->cache_duration ); + set_transient( 'gce_feed_' . $this->feed_id . '_url', $url, $this->cache_duration ); + } + } else { + //json_decode failed + $this->error = __( 'Some data was retrieved, but could not be parsed successfully. Please ensure your feed URL is correct.', GCE_TEXT_DOMAIN ); + } + } else { + //The response code wasn't 200, so generate a helpful(ish) error message depending on error code + switch ( $raw_data['response']['code'] ) { + case 404: + $this->error = __( 'The feed could not be found (404). Please ensure your feed URL is correct.', GCE_TEXT_DOMAIN ); + break; + case 403: + $this->error = __( 'Access to this feed was denied (403). Please ensure you have public sharing enabled for your calendar.', GCE_TEXT_DOMAIN ); + break; + default: + $this->error = sprintf( __( 'The feed data could not be retrieved. Error code: %s. Please ensure your feed URL is correct.', GCE_TEXT_DOMAIN ), $raw_data['response']['code'] ); + } + } + }else{ + //Generate an error message from the returned WP_Error + $this->error = $raw_data->get_error_message() . ' Please ensure your feed URL is correct.'; + } + } + + //Makes sure each event knows it came from this feed + foreach ( $this->events as $event ) { + $event->set_feed( $this ); + } + } + + //Convert an ISO date/time to a UNIX timestamp + function iso_to_ts( $iso ) { + sscanf( $iso, "%u-%u-%uT%u:%u:%uZ", $year, $month, $day, $hour, $minute, $second ); + return mktime( $hour, $minute, $second, $month, $day, $year ); + } + + //Return error message, or false if no error occurred + function error() { + return $this->error; + } + + //Setters + + function set_feed_id( $v ) { + $this->feed_id = $v; + } + + function set_feed_title( $v ) { + $this->feed_title = $v; + } + + function set_feed_url( $v ) { + $this->feed_url = $v; + } + + function set_max_events( $v ) { + $this->max_events = $v; + } + + function set_cache_duration( $v ) { + $this->cache_duration = $v; + } + + function set_date_format( $v ) { + $this->date_format = $v; + } + + function set_time_format( $v ) { + $this->time_format = $v; + } + + function set_timezone( $v ) { + $this->timezone = $v; + } + + function set_display_options( $v ) { + $this->display_opts = $v; + } + + function set_multi_day( $v ) { + $this->multi_day = $v; + } + + function set_feed_start( $v ) { + $this->feed_start = $v; + } + + function set_feed_end( $v ) { + $this->feed_end = $v; + } + + function set_use_builder( $v ) { + $this->use_builder = $v; + } + + function set_builder( $v ) { + $this->builder = $v; + } + + //Getters + + function get_events() { + return $this->events; + } + + function get_feed_id() { + return $this->feed_id; + } + + function get_feed_title() { + return $this->feed_title; + } + + function get_feed_url() { + return $this->feed_url; + } + + function get_date_format() { + return $this->date_format; + } + + function get_time_format() { + return $this->time_format; + } + + function get_display_options() { + return $this->display_opts; + } + + function get_multi_day() { + return $this->multi_day; + } + + function get_feed_start() { + return $this->feed_start; + } + + function get_feed_end() { + return $this->feed_end; + } + + function get_timezone() { + return $this->timezone; + } + + function get_use_builder() { + return $this->use_builder; + } + + function get_builder() { + return $this->builder; + } +} +?> \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/inc/gce-parser.php b/src/wp-content/plugins/google-calendar-events/inc/gce-parser.php new file mode 100644 index 00000000..645e3e91 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/inc/gce-parser.php @@ -0,0 +1,357 @@ +title = $title_text; + $this->max_events_display = $max_events; + $this->sort_order = $sort_order; + + //Get the feed options + $options = get_option( GCE_OPTIONS_NAME ); + + $this->start_of_week = get_option( 'start_of_week' ); + + foreach ( $feed_ids as $single_feed ) { + //Get the options for this particular feed + if ( isset( $options[$single_feed] ) ) { + $feed_options = $options[$single_feed]; + + $feed = new GCE_Feed(); + + $feed->set_feed_id( $feed_options['id'] ); + $feed->set_feed_title( $feed_options['title'] ); + $feed->set_feed_url( $feed_options['url'] ); + $feed->set_max_events( $feed_options['max_events'] ); + $feed->set_cache_duration( $feed_options['cache_duration'] ); + + //Set the timezone if anything other than default + if ( 'default' != $feed_options['timezone'] ) + $feed->set_timezone( $feed_options['timezone'] ); + + $gmt_offset = get_option( 'gmt_offset' ) * 3600; + + //Set the start date to the appropriate value based on the retrieve_from option + switch ( $feed_options['retrieve_from'] ) { + //Don't just use time() for 'now', as this will effectively make cache duration 1 second. Instead set to previous minute. Events in Google Calendar cannot be set to precision of seconds anyway + case 'now': + $feed->set_feed_start( mktime( date( 'H' ), date( 'i' ), 0, date( 'm' ), date( 'j' ), date( 'Y' ) ) + $feed_options['retrieve_from_value'] + $gmt_offset ); + break; + case 'today': + $feed->set_feed_start( mktime( 0, 0, 0, date( 'm' ), date( 'j' ), date( 'Y' ) ) + $feed_options['retrieve_from_value'] + $gmt_offset ); + break; + case 'week': + $feed->set_feed_start( mktime( 0, 0, 0, date( 'm' ), ( date( 'j' ) - date( 'w' ) + $this->start_of_week ), date( 'Y' ) ) + $feed_options['retrieve_from_value'] + $gmt_offset ); + break; + case 'month-start': + $feed->set_feed_start( mktime( 0, 0, 0, date( 'm' ), 1, date( 'Y' ) ) + $feed_options['retrieve_from_value'] + $gmt_offset ); + break; + case 'month-end': + $feed->set_feed_start( mktime( 0, 0, 0, date( 'm' ) + 1, 1, date( 'Y' ) ) + $feed_options['retrieve_from_value'] + $gmt_offset ); + break; + case 'date': + $feed->set_feed_start( $feed_options['retrieve_from_value'] ); + break; + default: + $feed->set_feed_start( 0 ); //any - 1970-01-01 00:00 + } + + //Set the end date to the appropriate value based on the retrieve_until option + switch ( $feed_options['retrieve_until'] ) { + case 'now': + $feed->set_feed_end( mktime( date( 'H' ), date( 'i' ), 0, date( 'm' ), date( 'j' ), date( 'Y' ) ) + $feed_options['retrieve_until_value'] + $gmt_offset ); + break; + case 'today': + $feed->set_feed_end( mktime( 0, 0, 0, date( 'm' ), date( 'j' ), date( 'Y' ) ) + $feed_options['retrieve_until_value'] + $gmt_offset ); + break; + case 'week': + $feed->set_feed_end( mktime( 0, 0, 0, date( 'm' ), ( date( 'j' ) - date( 'w' ) + $this->start_of_week ), date( 'Y' ) ) + $feed_options['retrieve_until_value'] + $gmt_offset ); + break; + case 'month-start': + $feed->set_feed_end( mktime( 0, 0, 0, date( 'm' ), 1, date( 'Y' ) ) + $feed_options['retrieve_until_value'] + $gmt_offset ); + break; + case 'month-end': + $feed->set_feed_end( mktime( 0, 0, 0, date( 'm' ) + 1, 1, date( 'Y' ) ) + $feed_options['retrieve_until_value'] + $gmt_offset ); + break; + case 'date': + $feed->set_feed_end( $feed_options['retrieve_until_value'] ); + break; + case 'any': + $feed->set_feed_end( 2145916800 ); //any - 2038-01-01 00:00 + } + + //Set date and time formats. If they have not been set by user, set to global WordPress formats + $feed->set_date_format( ( empty( $feed_options['date_format'] ) ) ? get_option( 'date_format' ) : $feed_options['date_format'] ); + $feed->set_time_format( ( empty( $feed_options['time_format'] ) ) ? get_option( 'time_format' ) : $feed_options['time_format'] ); + //Set whether to handle multiple day events + $feed->set_multi_day( ( 'true' == $feed_options['multiple_day'] ) ? true : false ); + + //Sets all display options + $feed->set_display_options( array( + 'display_start' => $feed_options['display_start'], + 'display_end' => $feed_options['display_end'], + 'display_location' => $feed_options['display_location'], + 'display_desc' => $feed_options['display_desc'], + 'display_link' => $feed_options['display_link'], + 'display_start_text' => $feed_options['display_start_text'], + 'display_end_text' => $feed_options['display_end_text'], + 'display_location_text' => $feed_options['display_location_text'], + 'display_desc_text' => $feed_options['display_desc_text'], + 'display_desc_limit' => $feed_options['display_desc_limit'], + 'display_link_text' => $feed_options['display_link_text'], + 'display_link_target' => $feed_options['display_link_target'], + 'display_separator' => $feed_options['display_separator'] + ) ); + + $feed->set_use_builder( ( 'true' == $feed_options['use_builder'] ) ? true : false ); + $feed->set_builder( $feed_options['builder'] ); + + //Parse the feed + $feed->init(); + + //Add feed object to array of feeds + $this->feeds[$single_feed] = $feed; + } + } + + $this->merged_feed_data = array(); + + //Merge the feeds together into one array of events + foreach ( $this->feeds as $feed_id => $feed ) { + $errors_occurred = $feed->error(); + + if ( false === $errors_occurred ) + $this->merged_feed_data = array_merge( $this->merged_feed_data, $feed->get_events() ); + else + $this->errors[$feed_id] = $errors_occurred; + } + + //Sort the items into date order + if ( ! empty( $this->merged_feed_data ) ) + usort( $this->merged_feed_data, array( $this, 'compare' ) ); + } + + //Comparison function for use when sorting merged feed data (with usort) + function compare( $event1, $event2 ) { + //Sort ascending or descending + if ( 'asc' == $this->sort_order ) + return $event1->get_start_time() - $event2->get_start_time(); + + return $event2->get_start_time() - $event1->get_start_time(); + } + + //Returns number of errors that have occurred + function get_num_errors() { + return count( $this->errors ); + } + + //Outputs a message describing each error that has occurred + function error_messages() { + $message = '

' . __( '1 or more of your feeds could not be displayed. The following errors occurred:', GCE_TEXT_DOMAIN ) . '

    '; + + foreach ( $this->errors as $feed_id => $error ) { + $message .= '
  • ' . sprintf( __( 'Feed %s:', GCE_TEXT_DOMAIN ), $feed_id ) . ' ' . $error . '
  • '; + } + + return $message . '
'; + } + + //Returns array of days with events, with sub-arrays of events for that day + function get_event_days() { + $event_days = array(); + + //Total number of events retrieved + $count = count( $this->merged_feed_data ); + + //If maximum events to display is 0 (unlimited) set $max to 1, otherwise use maximum of events specified by user + $max = ( 0 == $this->max_events_display ) ? 1 : $this->max_events_display; + + //Loop through entire array of events, or until maximum number of events to be displayed has been reached + for ( $i = 0; $i < $count && $max > 0; $i++ ) { + $event = $this->merged_feed_data[$i]; + + //Check that event end time isn't before start time of feed (ignores events from before start time that may have been inadvertently retrieved) + if ( $event->get_end_time() > $event->get_feed()->get_feed_start() ) { + foreach ( $event->get_days() as $day ) { + $event_days[$day][] = $event; + } + + //If maximum events to display isn't 0 (unlimited) decrement $max counter + if ( 0 != $this->max_events_display ) + $max--; + } + } + + return $event_days; + } + + //Returns grid markup + function get_grid ( $year = null, $month = null, $ajaxified = false ) { + require_once 'php-calendar.php'; + + $time_now = current_time( 'timestamp' ); + + //If year and month have not been passed as paramaters, use current month and year + if( ! isset( $year ) ) + $year = date( 'Y', $time_now ); + + if( ! isset( $month ) ) + $month = date( 'm', $time_now ); + + //Get timestamps for the start and end of current month + $current_month_start = mktime( 0, 0, 0, date( 'm', $time_now ), 1, date( 'Y', $time_now ) ); + $current_month_end = mktime( 0, 0, 0, date( 'm', $time_now ) + 1, 1, date( 'Y', $time_now ) ); + + //Get timestamps for the start and end of the month to be displayed in the grid + $display_month_start = mktime( 0, 0, 0, $month, 1, $year ); + $display_month_end = mktime( 0, 0, 0, $month + 1, 1, $year ); + + //It should always be possible to navigate to the current month, even if it doesn't have any events + //So, if the display month is before the current month, set $nav_next to true, otherwise false + //If the display month is after the current month, set $nav_prev to true, otherwise false + $nav_next = ( $display_month_start < $current_month_start ); + $nav_prev = ( $display_month_start >= $current_month_end ); + + //Get events data + $event_days = $this->get_event_days(); + + //If event_days is empty, then there are no events in the feed(s), so set ajaxified to false (Prevents AJAX calendar from allowing to endlessly click through months with no events) + if ( empty( $event_days ) ) + $ajaxified = false; + + $today = mktime( 0, 0, 0, date( 'm', $time_now ), date( 'd', $time_now ), date( 'Y', $time_now ) ); + + $i = 1; + + foreach ( $event_days as $key => $event_day ) { + //If event day is in the month and year specified (by $month and $year) + if ( $key >= $display_month_start && $key < $display_month_end ) { + //Create array of CSS classes. Add gce-has-events + $css_classes = array( 'gce-has-events' ); + + //Create markup for display + $markup = '
'; + + //If title option has been set for display, add it + if ( isset( $this->title ) ) + $markup .= '
' . $this->title . ' ' . date_i18n( $event_day[0]->get_feed()->get_date_format(), $key ) . '
'; + + $markup .= '
    '; + + foreach ( $event_day as $num_in_day => $event ) { + $feed_id = $event->get_feed()->get_feed_id(); + $markup .= '
  • ' . $event->get_event_markup( 'tooltip', $num_in_day, $i ) . '
  • '; + + //Add CSS class for the feed from which this event comes. If there are multiple events from the same feed on the same day, the CSS class will only be added once. + $css_classes['feed-' . $feed_id] = 'gce-feed-' . $feed_id; + + $i++; + } + + $markup .= '
'; + + //If number of CSS classes is greater than 2 ('gce-has-events' plus one specific feed class) then there must be events from multiple feeds on this day, so add gce-multiple CSS class + if ( count( $css_classes ) > 2 ) + $css_classes[] = 'gce-multiple'; + + //If event day is today, add gce-today CSS class, otherwise add past or future class + if ( $key == $today ) + $css_classes[] = 'gce-today gce-today-has-events'; + elseif ( $key < $today ) + $css_classes[] = 'gce-day-past'; + else + $css_classes[] = 'gce-day-future'; + + //Change array entry to array of link href, CSS classes, and markup for use in gce_generate_calendar (below) + $event_days[$key] = array( null, implode( ' ', $css_classes ), $markup ); + } elseif ( $key < $display_month_start ) { + //This day is before the display month, so set $nav_prev to true. Remove the day from $event_days, as it's no use for displaying this month + $nav_prev = true; + unset( $event_days[$key] ); + } else { + //This day is after the display month, so set $nav_next to true. Remove the day from $event_days, as it's no use for displaying this month + $nav_next = true; + unset( $event_days[$key] ); + } + } + + //Ensures that gce-today CSS class is added even if there are no events for 'today'. A bit messy :( + if ( ! isset( $event_days[$today] ) ) + $event_days[$today] = array( null, 'gce-today gce-today-no-events', null ); + + $pn = array(); + + //Only add previous / next functionality if AJAX grid is enabled + if ( $ajaxified ) { + //If there are events to display in a previous month, add previous month link + $prev_key = ( $nav_prev ) ? '«' : ' '; + $prev = ( $nav_prev ) ? date( 'm-Y', mktime( 0, 0, 0, $month - 1, 1, $year ) ) : null; + + //If there are events to display in a future month, add next month link + $next_key = ( $nav_next ) ? '»' : ' '; + $next = ( $nav_next ) ? date( 'm-Y', mktime( 0, 0, 0, $month + 1, 1, $year ) ) : null; + + //Array of previous and next link stuff for use in gce_generate_calendar (below) + $pn = array( $prev_key => $prev, $next_key => $next ); + } + + //Generate the calendar markup and return it + return gce_generate_calendar( $year, $month, $event_days, 1, null, $this->start_of_week, $pn ); + } + + function get_list( $grouped = false ) { + $time_now = current_time( 'timestamp' ); + + $event_days = $this->get_event_days(); + + //If event_days is empty, there are no events in the feed(s), so return a message indicating this + if( empty( $event_days) ) + return '

' . __( 'There are currently no events to display.', GCE_TEXT_DOMAIN ) . '

'; + + $today = mktime( 0, 0, 0, date( 'm', $time_now ), date( 'd', $time_now ), date( 'Y', $time_now ) ); + + $i = 1; + + $markup = '
    '; + + foreach ( $event_days as $key => $event_day ) { + //If this is a grouped list, add the date title and begin the nested list for this day + if ( $grouped ) { + $markup .= + '' . + '
    ' . $this->title . ' ' . date_i18n( $event_day[0]->get_feed()->get_date_format(), $key ) . '
    ' . + '
      '; + } + + foreach ( $event_day as $num_in_day => $event ) { + //Create the markup for this event + $markup .= + '
    • ' . + //If this isn't a grouped list and a date title should be displayed, add the date title + ( ( ! $grouped && isset( $this->title ) ) ? '
      ' . $this->title . ' ' . date_i18n( $event->get_feed()->get_date_format(), $key ) . '
      ' : '' ) . + //Add the event markup + $event->get_event_markup( 'list', $num_in_day, $i ) . + '
    • '; + + $i++; + } + + //If this is a grouped list, close the nested list for this day + if ( $grouped ) + $markup .= '
    '; + } + + $markup .= '
'; + + return $markup; + } +} +?> \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/inc/php-calendar.php b/src/wp-content/plugins/google-calendar-events/inc/php-calendar.php new file mode 100644 index 00000000..87fc9468 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/inc/php-calendar.php @@ -0,0 +1,83 @@ +get_weekday_initial( date_i18n( 'l', $t, true ) ); + } + + list( $month, $year, $month_name, $weekday ) = explode( ',', date_i18n( 'm, Y, F, w', $first_of_month ) ); + $weekday = ( $weekday + 7 - $first_day ) % 7; #adjust for $first_day + $title = esc_html( $month_name ) . ' ' . $year; #note that some locales don't capitalize month and day names + + #Begin calendar. Uses a real . See http://diveintomark.org/archives/2002/07/03 + list( $p, $pl ) = each( $pn ); + list( $n, $nl ) = each( $pn ); #previous and next links, if applicable + + if ( $p ) + $p = '' . ( ( $pl ) ? ( '' . $p . '' ) : $p ) . ' '; + if ( $n ) + $n = ' ' . ( ( $nl ) ? ( '' . $n . '' ) : $n ) . ''; + + $calendar = '' . "\n" . '\n"; + + if ( $day_name_length ) { #if the day names should be shown ($day_name_length > 0) + #if day_name_length is >3, the full name of the day will be printed + foreach ( $day_names as $d ) { + $calendar .= ''; + } + + $calendar .= "\n"; + } + + $time_now = current_time( 'timestamp' ); + $today = mktime( 0, 0, 0, date( 'm', $time_now ), date( 'd', $time_now ), date( 'Y', $time_now ) ); + + if ( $weekday > 0 ) $calendar .= ''; #initial 'empty' days + for ( $day = 1, $days_in_month = date( 't', $first_of_month ); $day <= $days_in_month; $day++, $weekday++ ) { + if ( 7 == $weekday ) { + $weekday = 0; #start a new week + $calendar .= "\n"; + } + + $timestamp = mktime( 0, 0, 0, $month, $day, $year ); + + if ( isset( $days[$timestamp] ) && is_array( $days[$timestamp] ) ) { + list( $link, $classes, $content ) = $days[$timestamp]; + $calendar .= '' ) : '>' ) . ( ( $link ) ? ( '' . $day . '' . $content ) : '' . $day . '' . $content ) . ''; + }else{ + $css_class = ( $timestamp < $time_now ) ? 'gce-day-past' : 'gce-day-future'; + $calendar .= ''; + } + } + + if ( 7 != $weekday ) $calendar .= ''; #remaining "empty" days + + return $calendar . "\n
' . $p . '' . ( ( $month_href ) ? ( '' . $title . '' ) : $title ) . '' . $n . "
' . esc_html( $d['initial'] ) . '
 
' . $day . ' 
\n"; +} +?> \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/js/gce-admin-script.js b/src/wp-content/plugins/google-calendar-events/js/gce-admin-script.js new file mode 100644 index 00000000..94ecd1d8 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/js/gce-admin-script.js @@ -0,0 +1,29 @@ +function correct_options(){ + val = jQuery('select[name="gce_options[use_builder]"]').val(); + + if(val == 'true'){ + jQuery('.gce-simple-display-options').next('.form-table').hide(); + jQuery('.gce-simple-display-options').hide(); + jQuery('.gce-simple-display-options').prev('h3').hide(); + + jQuery('.gce-event-builder').next('.form-table').show(); + jQuery('.gce-event-builder').show(); + jQuery('.gce-event-builder').prev('h3').show(); + }else{ + jQuery('.gce-simple-display-options').next('.form-table').show(); + jQuery('.gce-simple-display-options').show(); + jQuery('.gce-simple-display-options').prev('h3').show(); + + jQuery('.gce-event-builder').next('.form-table').hide(); + jQuery('.gce-event-builder').hide(); + jQuery('.gce-event-builder').prev('h3').hide(); + } +} + +jQuery(document).ready(function(){ + correct_options(); + + jQuery('select[name="gce_options[use_builder]"]').change(function(e){ + correct_options(); + }); +}); \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/js/gce-script.js b/src/wp-content/plugins/google-calendar-events/js/gce-script.js new file mode 100644 index 00000000..5f5ae870 --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/js/gce-script.js @@ -0,0 +1,45 @@ +function gce_ajaxify(target, feed_ids, max_events, title_text, type){ + //Add click event to change month links + jQuery('#' + target + ' .gce-change-month').click(function(){ + //Extract month and year + var month_year = jQuery(this).attr('name').split('-', 2); + //Add loading text to table caption + jQuery('#' + target + ' caption').html(GoogleCalendarEvents.loading); + //Send AJAX request + jQuery.get(GoogleCalendarEvents.ajaxurl,{ + action:'gce_ajax', + gce_type:type, + gce_feed_ids:feed_ids, + gce_title_text:title_text, + gce_widget_id:target, + gce_max_events:max_events, + gce_month:month_year[0], + gce_year:month_year[1] + }, function(data){ + //Replace existing data with returned AJAX data + if(type == 'widget'){ + jQuery('#' + target).html(data); + }else{ + jQuery('#' + target).replaceWith(data); + } + gce_tooltips('#' + target + ' .gce-has-events'); + }); + }); +} + +function gce_tooltips(target_items){ + jQuery(target_items).each(function(){ + //Add qtip to all target items + jQuery(this).qtip({ + content: jQuery(this).children('.gce-event-info'), + position: { corner: { target: 'center', tooltip: 'bottomLeft' }, adjust: { screen: true } }, + hide: { fixed: true, delay: 100, effect: { length: 0 } }, + show: { solo: true, delay: 0, effect: { length: 0 } }, + style: { padding: "0", classes: { tooltip: 'gce-qtip', tip: 'gce-qtip-tip', title: 'gce-qtip-title', content: 'gce-qtip-content', active: 'gce-qtip-active' }, border: { width: 0 } } + }); + }); +} + +jQuery(document).ready(function(){ + gce_tooltips('.gce-has-events'); +}); \ No newline at end of file diff --git a/src/wp-content/plugins/google-calendar-events/js/jquery-qtip.js b/src/wp-content/plugins/google-calendar-events/js/jquery-qtip.js new file mode 100644 index 00000000..26a8c77f --- /dev/null +++ b/src/wp-content/plugins/google-calendar-events/js/jquery-qtip.js @@ -0,0 +1,15 @@ +/*! + * jquery.qtip. The jQuery tooltip plugin + * + * Copyright (c) 2009 Craig Thompson + * http://craigsworks.com + * + * Licensed under MIT + * http://www.opensource.org/licenses/mit-license.php + * + * Launch : February 2009 + * Version : 1.0.0-rc3 + * Released: Tuesday 12th May, 2009 - 00:00 + * Debug: jquery.qtip.debug.js + */ +(function(f){f.fn.qtip=function(B,u){var y,t,A,s,x,w,v,z;if(typeof B=="string"){if(typeof f(this).data("qtip")!=="object"){f.fn.qtip.log.error.call(self,1,f.fn.qtip.constants.NO_TOOLTIP_PRESENT,false)}if(B=="api"){return f(this).data("qtip").interfaces[f(this).data("qtip").current]}else{if(B=="interfaces"){return f(this).data("qtip").interfaces}}}else{if(!B){B={}}if(typeof B.content!=="object"||(B.content.jquery&&B.content.length>0)){B.content={text:B.content}}if(typeof B.content.title!=="object"){B.content.title={text:B.content.title}}if(typeof B.position!=="object"){B.position={corner:B.position}}if(typeof B.position.corner!=="object"){B.position.corner={target:B.position.corner,tooltip:B.position.corner}}if(typeof B.show!=="object"){B.show={when:B.show}}if(typeof B.show.when!=="object"){B.show.when={event:B.show.when}}if(typeof B.show.effect!=="object"){B.show.effect={type:B.show.effect}}if(typeof B.hide!=="object"){B.hide={when:B.hide}}if(typeof B.hide.when!=="object"){B.hide.when={event:B.hide.when}}if(typeof B.hide.effect!=="object"){B.hide.effect={type:B.hide.effect}}if(typeof B.style!=="object"){B.style={name:B.style}}B.style=c(B.style);s=f.extend(true,{},f.fn.qtip.defaults,B);s.style=a.call({options:s},s.style);s.user=f.extend(true,{},B)}return f(this).each(function(){if(typeof B=="string"){w=B.toLowerCase();A=f(this).qtip("interfaces");if(typeof A=="object"){if(u===true&&w=="destroy"){while(A.length>0){A[A.length-1].destroy()}}else{if(u!==true){A=[f(this).qtip("api")]}for(y=0;y0))}if(typeof s.options.show.solo=="object"){z=f(s.options.show.solo)}else{if(s.options.show.solo===true){z=f("div.qtip").not(s.elements.tooltip)}}if(z){z.each(function(){if(f(this).qtip("api").status.rendered===true){f(this).qtip("api").hide()}})}if(typeof s.options.show.effect.type=="function"){s.options.show.effect.type.call(s.elements.tooltip,s.options.show.effect.length);s.elements.tooltip.queue(function(){w();f(this).dequeue()})}else{switch(s.options.show.effect.type.toLowerCase()){case"fade":s.elements.tooltip.fadeIn(s.options.show.effect.length,w);break;case"slide":s.elements.tooltip.slideDown(s.options.show.effect.length,function(){w();if(s.options.position.type!=="static"){s.updatePosition(y,true)}});break;case"grow":s.elements.tooltip.show(s.options.show.effect.length,w);break;default:s.elements.tooltip.show(null,w);break}s.elements.tooltip.addClass(s.options.style.classes.active)}return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_SHOWN,"show")},hide:function(y){var x;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"hide")}else{if(s.elements.tooltip.css("display")==="none"){return s}}clearTimeout(s.timers.show);s.elements.tooltip.stop(true,false);x=s.beforeHide.call(s,y);if(x===false){return s}function w(){s.onHide.call(s,y)}s.cache.toggle=0;if(typeof s.options.hide.effect.type=="function"){s.options.hide.effect.type.call(s.elements.tooltip,s.options.hide.effect.length);s.elements.tooltip.queue(function(){w();f(this).dequeue()})}else{switch(s.options.hide.effect.type.toLowerCase()){case"fade":s.elements.tooltip.fadeOut(s.options.hide.effect.length,w);break;case"slide":s.elements.tooltip.slideUp(s.options.hide.effect.length,w);break;case"grow":s.elements.tooltip.hide(s.options.hide.effect.length,w);break;default:s.elements.tooltip.hide(null,w);break}s.elements.tooltip.removeClass(s.options.style.classes.active)}return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_HIDDEN,"hide")},updatePosition:function(w,x){var C,G,L,J,H,E,y,I,B,D,K,A,F,z;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updatePosition")}else{if(s.options.position.type=="static"){return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.CANNOT_POSITION_STATIC,"updatePosition")}}G={position:{left:0,top:0},dimensions:{height:0,width:0},corner:s.options.position.corner.target};L={position:s.getPosition(),dimensions:s.getDimensions(),corner:s.options.position.corner.tooltip};if(s.options.position.target!=="mouse"){if(s.options.position.target.get(0).nodeName.toLowerCase()=="area"){J=s.options.position.target.attr("coords").split(",");for(C=0;CG.dimensions.width){G.dimensions.width=J[C]}if(J[C]G.dimensions.height){G.dimensions.height=J[C]}if(J[C]0){if(L.corner.search(/Left/)!==-1){y.left-=s.options.style.border.radius}else{if(L.corner.search(/Right/)!==-1){y.left+=s.options.style.border.radius}}if(L.corner.search(/Top/)!==-1){y.top-=s.options.style.border.radius}else{if(L.corner.search(/Bottom/)!==-1){y.top+=s.options.style.border.radius}}}if(I){if(L.corner.search(/top/)!==-1){y.top-=I}else{if(L.corner.search(/bottom/)!==-1){y.top+=I}}if(L.corner.search(/left/)!==-1){y.left-=I}else{if(L.corner.search(/right/)!==-1){y.left+=I}}if(L.corner.search(/leftMiddle|rightMiddle/)!==-1){y.top-=1}}if(s.options.position.adjust.screen===true){y=o.call(s,y,G,L)}if(s.options.position.target==="mouse"&&s.options.position.adjust.mouse===true){if(s.options.position.adjust.screen===true&&s.elements.tip){K=s.elements.tip.attr("rel")}else{K=s.options.position.corner.tooltip}y.left+=(K.search(/right/i)!==-1)?-6:6;y.top+=(K.search(/bottom/i)!==-1)?-6:6}if(!s.elements.bgiframe&&f.browser.msie&&parseInt(f.browser.version.charAt(0))==6){f("select, object").each(function(){A=f(this).offset();A.bottom=A.top+f(this).height();A.right=A.left+f(this).width();if(y.top+L.dimensions.height>=A.top&&y.left+L.dimensions.width>=A.left){k.call(s)}})}y.left+=s.options.position.adjust.x;y.top+=s.options.position.adjust.y;F=s.getPosition();if(y.left!=F.left||y.top!=F.top){z=s.beforePositionUpdate.call(s,w);if(z===false){return s}s.cache.position=y;if(x===true){s.status.animated=true;s.elements.tooltip.animate(y,200,"swing",function(){s.status.animated=false})}else{s.elements.tooltip.css(y)}s.onPositionUpdate.call(s,w);if(typeof w!=="undefined"&&w.type&&w.type!=="mousemove"){f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_POSITION_UPDATED,"updatePosition")}}return s},updateWidth:function(w){var x;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updateWidth")}else{if(w&&typeof w!=="number"){return f.fn.qtip.log.error.call(s,2,"newWidth must be of type number","updateWidth")}}x=s.elements.contentWrapper.siblings().add(s.elements.tip).add(s.elements.button);if(!w){if(typeof s.options.style.width.value=="number"){w=s.options.style.width.value}else{s.elements.tooltip.css({width:"auto"});x.hide();if(f.browser.msie){s.elements.wrapper.add(s.elements.contentWrapper.children()).css({zoom:"normal"})}w=s.getDimensions().width+1;if(!s.options.style.width.value){if(w>s.options.style.width.max){w=s.options.style.width.max}if(w").get(0).getContext){z=s.elements.tooltip.find(".qtip-tip canvas:first");x=z.get(0).getContext("2d");x.clearRect(0,0,300,300);y=z.parent("div[rel]:first").attr("rel");B=b(y,s.options.style.tip.size.width,s.options.style.tip.size.height);h.call(s,z,B,s.options.style.tip.color||s.options.style.border.color)}else{if(f.browser.msie){z=s.elements.tooltip.find('.qtip-tip [nodeName="shape"]');z.attr("fillcolor",s.options.style.tip.color||s.options.style.border.color)}}}if(s.options.style.border.radius>0){s.elements.tooltip.find(".qtip-betweenCorners").css({backgroundColor:s.options.style.border.color});if(f("").get(0).getContext){A=g(s.options.style.border.radius);s.elements.tooltip.find(".qtip-wrapper canvas").each(function(){x=f(this).get(0).getContext("2d");x.clearRect(0,0,300,300);y=f(this).parent("div[rel]:first").attr("rel");r.call(s,f(this),A[y],s.options.style.border.radius,s.options.style.border.color)})}else{if(f.browser.msie){s.elements.tooltip.find('.qtip-wrapper [nodeName="arc"]').each(function(){f(this).attr("fillcolor",s.options.style.border.color)})}}}return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_STYLE_UPDATED,"updateStyle")},updateContent:function(A,y){var z,x,w;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updateContent")}else{if(!A){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.NO_CONTENT_PROVIDED,"updateContent")}}z=s.beforeContentUpdate.call(s,A);if(typeof z=="string"){A=z}else{if(z===false){return}}if(f.browser.msie){s.elements.contentWrapper.children().css({zoom:"normal"})}if(A.jquery&&A.length>0){A.clone(true).appendTo(s.elements.content).show()}else{s.elements.content.html(A)}x=s.elements.content.find("img[complete=false]");if(x.length>0){w=0;x.each(function(C){f('').load(function(){if(++w==x.length){B()}})})}else{B()}function B(){s.updateWidth();if(y!==false){if(s.options.position.type!=="static"){s.updatePosition(s.elements.tooltip.is(":visible"),true)}if(s.options.style.tip.corner!==false){n.call(s)}}}s.onContentUpdate.call(s);return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_CONTENT_UPDATED,"loadContent")},loadContent:function(w,z,A){var y;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"loadContent")}y=s.beforeContentLoad.call(s);if(y===false){return s}if(A=="post"){f.post(w,z,x)}else{f.get(w,z,x)}function x(B){s.onContentLoad.call(s);f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_CONTENT_LOADED,"loadContent");s.updateContent(B)}return s},updateTitle:function(w){if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"updateTitle")}else{if(!w){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.NO_CONTENT_PROVIDED,"updateTitle")}}returned=s.beforeTitleUpdate.call(s);if(returned===false){return s}if(s.elements.button){s.elements.button=s.elements.button.clone(true)}s.elements.title.html(w);if(s.elements.button){s.elements.title.prepend(s.elements.button)}s.onTitleUpdate.call(s);return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_TITLE_UPDATED,"updateTitle")},focus:function(A){var y,x,w,z;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"focus")}else{if(s.options.position.type=="static"){return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.CANNOT_FOCUS_STATIC,"focus")}}y=parseInt(s.elements.tooltip.css("z-index"));x=6000+f("div.qtip[qtip]").length-1;if(!s.status.focused&&y!==x){z=s.beforeFocus.call(s,A);if(z===false){return s}f("div.qtip[qtip]").not(s.elements.tooltip).each(function(){if(f(this).qtip("api").status.rendered===true){w=parseInt(f(this).css("z-index"));if(typeof w=="number"&&w>-1){f(this).css({zIndex:parseInt(f(this).css("z-index"))-1})}f(this).qtip("api").status.focused=false}});s.elements.tooltip.css({zIndex:x});s.status.focused=true;s.onFocus.call(s,A);f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_FOCUSED,"focus")}return s},disable:function(w){if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"disable")}if(w){if(!s.status.disabled){s.status.disabled=true;f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_DISABLED,"disable")}else{f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.TOOLTIP_ALREADY_DISABLED,"disable")}}else{if(s.status.disabled){s.status.disabled=false;f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_ENABLED,"disable")}else{f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.TOOLTIP_ALREADY_ENABLED,"disable")}}return s},destroy:function(){var w,x,y;x=s.beforeDestroy.call(s);if(x===false){return s}if(s.status.rendered){s.options.show.when.target.unbind("mousemove.qtip",s.updatePosition);s.options.show.when.target.unbind("mouseout.qtip",s.hide);s.options.show.when.target.unbind(s.options.show.when.event+".qtip");s.options.hide.when.target.unbind(s.options.hide.when.event+".qtip");s.elements.tooltip.unbind(s.options.hide.when.event+".qtip");s.elements.tooltip.unbind("mouseover.qtip",s.focus);s.elements.tooltip.remove()}else{s.options.show.when.target.unbind(s.options.show.when.event+".qtip-create")}if(typeof s.elements.target.data("qtip")=="object"){y=s.elements.target.data("qtip").interfaces;if(typeof y=="object"&&y.length>0){for(w=0;w0){s.elements.target.data("qtip").current=y.length-1}else{s.elements.target.removeData("qtip")}s.onDestroy.call(s);f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_DESTROYED,"destroy");return s.elements.target},getPosition:function(){var w,x;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"getPosition")}w=(s.elements.tooltip.css("display")!=="none")?false:true;if(w){s.elements.tooltip.css({visiblity:"hidden"}).show()}x=s.elements.tooltip.offset();if(w){s.elements.tooltip.css({visiblity:"visible"}).hide()}return x},getDimensions:function(){var w,x;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"getDimensions")}w=(!s.elements.tooltip.is(":visible"))?true:false;if(w){s.elements.tooltip.css({visiblity:"hidden"}).show()}x={height:s.elements.tooltip.outerHeight(),width:s.elements.tooltip.outerWidth()};if(w){s.elements.tooltip.css({visiblity:"visible"}).hide()}return x}})}function p(){var s,w,u,t,v,y,x;s=this;s.beforeRender.call(s);s.status.rendered=true;s.elements.tooltip='';s.elements.tooltip=f(s.elements.tooltip);s.elements.tooltip.appendTo(s.options.position.container);s.elements.tooltip.data("qtip",{current:0,interfaces:[s]});s.elements.wrapper=s.elements.tooltip.children("div:first");s.elements.contentWrapper=s.elements.wrapper.children("div:first").css({background:s.options.style.background});s.elements.content=s.elements.contentWrapper.children("div:first").css(q(s.options.style));if(f.browser.msie){s.elements.wrapper.add(s.elements.content).css({zoom:1})}if(s.options.hide.when.event=="unfocus"){s.elements.tooltip.attr("unfocus",true)}if(typeof s.options.style.width.value=="number"){s.updateWidth()}if(f("").get(0).getContext||f.browser.msie){if(s.options.style.border.radius>0){m.call(s)}else{s.elements.contentWrapper.css({border:s.options.style.border.width+"px solid "+s.options.style.border.color})}if(s.options.style.tip.corner!==false){e.call(s)}}else{s.elements.contentWrapper.css({border:s.options.style.border.width+"px solid "+s.options.style.border.color});s.options.style.border.radius=0;s.options.style.tip.corner=false;f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.CANVAS_VML_NOT_SUPPORTED,"render")}if((typeof s.options.content.text=="string"&&s.options.content.text.length>0)||(s.options.content.text.jquery&&s.options.content.text.length>0)){u=s.options.content.text}else{if(typeof s.elements.target.attr("title")=="string"&&s.elements.target.attr("title").length>0){u=s.elements.target.attr("title").replace("\\n","
");s.elements.target.attr("title","")}else{if(typeof s.elements.target.attr("alt")=="string"&&s.elements.target.attr("alt").length>0){u=s.elements.target.attr("alt").replace("\\n","
");s.elements.target.attr("alt","")}else{u=" ";f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.NO_VALID_CONTENT,"render")}}}if(s.options.content.title.text!==false){j.call(s)}s.updateContent(u);l.call(s);if(s.options.show.ready===true){s.show()}if(s.options.content.url!==false){t=s.options.content.url;v=s.options.content.data;y=s.options.content.method||"get";s.loadContent(t,v,y)}s.onRender.call(s);f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_RENDERED,"render")}function m(){var F,z,t,B,x,E,u,G,D,y,w,C,A,s,v;F=this;F.elements.wrapper.find(".qtip-borderBottom, .qtip-borderTop").remove();t=F.options.style.border.width;B=F.options.style.border.radius;x=F.options.style.border.color||F.options.style.tip.color;E=g(B);u={};for(z in E){u[z]='
';if(f("").get(0).getContext){u[z]+=''}else{if(f.browser.msie){G=B*2+3;u[z]+=''}}u[z]+="
"}D=F.getDimensions().width-(Math.max(t,B)*2);y='
';w='
'+u.topLeft+u.topRight+y;F.elements.wrapper.prepend(w);C='
'+u.bottomLeft+u.bottomRight+y;F.elements.wrapper.append(C);if(f("").get(0).getContext){F.elements.wrapper.find("canvas").each(function(){A=E[f(this).parent("[rel]:first").attr("rel")];r.call(F,f(this),A,B,x)})}else{if(f.browser.msie){F.elements.tooltip.append('')}}s=Math.max(B,(B+(t-B)));v=Math.max(t-B,0);F.elements.contentWrapper.css({border:"0px solid "+x,borderWidth:v+"px "+s+"px"})}function r(u,w,s,t){var v=u.get(0).getContext("2d");v.fillStyle=t;v.beginPath();v.arc(w[0],w[1],s,0,Math.PI*2,false);v.fill()}function e(v){var t,s,x,u,w;t=this;if(t.elements.tip!==null){t.elements.tip.remove()}s=t.options.style.tip.color||t.options.style.border.color;if(t.options.style.tip.corner===false){return}else{if(!v){v=t.options.style.tip.corner}}x=b(v,t.options.style.tip.size.width,t.options.style.tip.size.height);t.elements.tip='
';if(f("").get(0).getContext){t.elements.tip+=''}else{if(f.browser.msie){u=t.options.style.tip.size.width+","+t.options.style.tip.size.height;w="m"+x[0][0]+","+x[0][1];w+=" l"+x[1][0]+","+x[1][1];w+=" "+x[2][0]+","+x[2][1];w+=" xe";t.elements.tip+='';t.elements.tip+='';t.elements.contentWrapper.css("position","relative")}}t.elements.tooltip.prepend(t.elements.tip+"
");t.elements.tip=t.elements.tooltip.find("."+t.options.style.classes.tip).eq(0);if(f("").get(0).getContext){h.call(t,t.elements.tip.find("canvas:first"),x,s)}if(v.search(/top/)!==-1&&f.browser.msie&&parseInt(f.browser.version.charAt(0))===6){t.elements.tip.css({marginTop:-4})}n.call(t,v)}function h(t,v,s){var u=t.get(0).getContext("2d");u.fillStyle=s;u.beginPath();u.moveTo(v[0][0],v[0][1]);u.lineTo(v[1][0],v[1][1]);u.lineTo(v[2][0],v[2][1]);u.fill()}function n(u){var t,w,s,x,v;t=this;if(t.options.style.tip.corner===false||!t.elements.tip){return}if(!u){u=t.elements.tip.attr("rel")}w=positionAdjust=(f.browser.msie)?1:0;t.elements.tip.css(u.match(/left|right|top|bottom/)[0],0);if(u.search(/top|bottom/)!==-1){if(f.browser.msie){if(parseInt(f.browser.version.charAt(0))===6){positionAdjust=(u.search(/top/)!==-1)?-3:1}else{positionAdjust=(u.search(/top/)!==-1)?1:2}}if(u.search(/Middle/)!==-1){t.elements.tip.css({left:"50%",marginLeft:-(t.options.style.tip.size.width/2)})}else{if(u.search(/Left/)!==-1){t.elements.tip.css({left:t.options.style.border.radius-w})}else{if(u.search(/Right/)!==-1){t.elements.tip.css({right:t.options.style.border.radius+w})}}}if(u.search(/top/)!==-1){t.elements.tip.css({top:-positionAdjust})}else{t.elements.tip.css({bottom:positionAdjust})}}else{if(u.search(/left|right/)!==-1){if(f.browser.msie){positionAdjust=(parseInt(f.browser.version.charAt(0))===6)?1:((u.search(/left/)!==-1)?1:2)}if(u.search(/Middle/)!==-1){t.elements.tip.css({top:"50%",marginTop:-(t.options.style.tip.size.height/2)})}else{if(u.search(/Top/)!==-1){t.elements.tip.css({top:t.options.style.border.radius-w})}else{if(u.search(/Bottom/)!==-1){t.elements.tip.css({bottom:t.options.style.border.radius+w})}}}if(u.search(/left/)!==-1){t.elements.tip.css({left:-positionAdjust})}else{t.elements.tip.css({right:positionAdjust})}}}s="padding-"+u.match(/left|right|top|bottom/)[0];x=t.options.style.tip.size[(s.search(/left|right/)!==-1)?"width":"height"];t.elements.tooltip.css("padding",0);t.elements.tooltip.css(s,x);if(f.browser.msie&&parseInt(f.browser.version.charAt(0))==6){v=parseInt(t.elements.tip.css("margin-top"))||0;v+=parseInt(t.elements.content.css("margin-top"))||0;t.elements.tip.css({marginTop:v})}}function j(){var s=this;if(s.elements.title!==null){s.elements.title.remove()}s.elements.title=f('
').css(q(s.options.style.title,true)).css({zoom:(f.browser.msie)?1:0}).prependTo(s.elements.contentWrapper);if(s.options.content.title.text){s.updateTitle.call(s,s.options.content.title.text)}if(s.options.content.title.button!==false&&typeof s.options.content.title.button=="string"){s.elements.button=f('').css(q(s.options.style.button,true)).html(s.options.content.title.button).prependTo(s.elements.title).click(function(t){if(!s.status.disabled){s.hide(t)}})}}function l(){var t,v,u,s;t=this;v=t.options.show.when.target;u=t.options.hide.when.target;if(t.options.hide.fixed){u=u.add(t.elements.tooltip)}if(t.options.hide.when.event=="inactive"){s=["click","dblclick","mousedown","mouseup","mousemove","mouseout","mouseenter","mouseleave","mouseover"];function y(z){if(t.status.disabled===true){return}clearTimeout(t.timers.inactive);t.timers.inactive=setTimeout(function(){f(s).each(function(){u.unbind(this+".qtip-inactive");t.elements.content.unbind(this+".qtip-inactive")});t.hide(z)},t.options.hide.delay)}}else{if(t.options.hide.fixed===true){t.elements.tooltip.bind("mouseover.qtip",function(){if(t.status.disabled===true){return}clearTimeout(t.timers.hide)})}}function x(z){if(t.status.disabled===true){return}if(t.options.hide.when.event=="inactive"){f(s).each(function(){u.bind(this+".qtip-inactive",y);t.elements.content.bind(this+".qtip-inactive",y)});y()}clearTimeout(t.timers.show);clearTimeout(t.timers.hide);t.timers.show=setTimeout(function(){t.show(z)},t.options.show.delay)}function w(z){if(t.status.disabled===true){return}if(t.options.hide.fixed===true&&t.options.hide.when.event.search(/mouse(out|leave)/i)!==-1&&f(z.relatedTarget).parents("div.qtip[qtip]").length>0){z.stopPropagation();z.preventDefault();clearTimeout(t.timers.hide);return false}clearTimeout(t.timers.show);clearTimeout(t.timers.hide);t.elements.tooltip.stop(true,true);t.timers.hide=setTimeout(function(){t.hide(z)},t.options.hide.delay)}if((t.options.show.when.target.add(t.options.hide.when.target).length===1&&t.options.show.when.event==t.options.hide.when.event&&t.options.hide.when.event!=="inactive")||t.options.hide.when.event=="unfocus"){t.cache.toggle=0;v.bind(t.options.show.when.event+".qtip",function(z){if(t.cache.toggle==0){x(z)}else{w(z)}})}else{v.bind(t.options.show.when.event+".qtip",x);if(t.options.hide.when.event!=="inactive"){u.bind(t.options.hide.when.event+".qtip",w)}}if(t.options.position.type.search(/(fixed|absolute)/)!==-1){t.elements.tooltip.bind("mouseover.qtip",t.focus)}if(t.options.position.target==="mouse"&&t.options.position.type!=="static"){v.bind("mousemove.qtip",function(z){t.cache.mouse={x:z.pageX,y:z.pageY};if(t.status.disabled===false&&t.options.position.adjust.mouse===true&&t.options.position.type!=="static"&&t.elements.tooltip.css("display")!=="none"){t.updatePosition(z)}})}}function o(u,v,A){var z,s,x,y,t,w;z=this;if(A.corner=="center"){return v.position}s=f.extend({},u);y={x:false,y:false};t={left:(s.left=f.fn.qtip.cache.screen.width+f.fn.qtip.cache.screen.scroll.left),top:(s.top=f.fn.qtip.cache.screen.height+f.fn.qtip.cache.screen.scroll.top)};x={left:(t.left&&(A.corner.search(/right/i)!=-1||(A.corner.search(/right/i)==-1&&!t.right))),right:(t.right&&(A.corner.search(/left/i)!=-1||(A.corner.search(/left/i)==-1&&!t.left))),top:(t.top&&A.corner.search(/top/i)==-1),bottom:(t.bottom&&A.corner.search(/bottom/i)==-1)};if(x.left){if(z.options.position.target!=="mouse"){s.left=v.position.left+v.dimensions.width}else{s.left=z.cache.mouse.x}y.x="Left"}else{if(x.right){if(z.options.position.target!=="mouse"){s.left=v.position.left-A.dimensions.width}else{s.left=z.cache.mouse.x-A.dimensions.width}y.x="Right"}}if(x.top){if(z.options.position.target!=="mouse"){s.top=v.position.top+v.dimensions.height}else{s.top=z.cache.mouse.y}y.y="top"}else{if(x.bottom){if(z.options.position.target!=="mouse"){s.top=v.position.top-A.dimensions.height}else{s.top=z.cache.mouse.y-A.dimensions.height}y.y="bottom"}}if(s.left<0){s.left=u.left;y.x=false}if(s.top<0){s.top=u.top;y.y=false}if(z.options.style.tip.corner!==false){s.corner=new String(A.corner);if(y.x!==false){s.corner=s.corner.replace(/Left|Right|Middle/,y.x)}if(y.y!==false){s.corner=s.corner.replace(/top|bottom/,y.y)}if(s.corner!==z.elements.tip.attr("rel")){e.call(z,s.corner)}}return s}function q(u,t){var v,s;v=f.extend(true,{},u);for(s in v){if(t===true&&s.search(/(tip|classes)/i)!==-1){delete v[s]}else{if(!t&&s.search(/(width|border|tip|title|classes|user)/i)!==-1){delete v[s]}}}return v}function c(s){if(typeof s.tip!=="object"){s.tip={corner:s.tip}}if(typeof s.tip.size!=="object"){s.tip.size={width:s.tip.size,height:s.tip.size}}if(typeof s.border!=="object"){s.border={width:s.border}}if(typeof s.width!=="object"){s.width={value:s.width}}if(typeof s.width.max=="string"){s.width.max=parseInt(s.width.max.replace(/([0-9]+)/i,"$1"))}if(typeof s.width.min=="string"){s.width.min=parseInt(s.width.min.replace(/([0-9]+)/i,"$1"))}if(typeof s.tip.size.x=="number"){s.tip.size.width=s.tip.size.x;delete s.tip.size.x}if(typeof s.tip.size.y=="number"){s.tip.size.height=s.tip.size.y;delete s.tip.size.y}return s}function a(){var s,t,u,x,v,w;s=this;u=[true,{}];for(t=0;t0){v.tip.size.width+=1}if(v.tip.size.height%2>0){v.tip.size.height+=1}if(v.tip.corner===true){v.tip.corner=(s.options.position.corner.tooltip==="center")?false:s.options.position.corner.tooltip}return v}function b(v,u,t){var s={bottomRight:[[0,0],[u,t],[u,0]],bottomLeft:[[0,0],[u,0],[0,t]],topRight:[[0,t],[u,0],[u,t]],topLeft:[[0,0],[0,t],[u,t]],topMiddle:[[0,t],[u/2,0],[u,t]],bottomMiddle:[[0,0],[u,0],[u/2,t]],rightMiddle:[[0,0],[u,t/2],[0,t]],leftMiddle:[[u,0],[u,t],[0,t/2]]};s.leftTop=s.bottomRight;s.rightTop=s.bottomLeft;s.leftBottom=s.topRight;s.rightBottom=s.topLeft;return s[v]}function g(s){var t;if(f("").get(0).getContext){t={topLeft:[s,s],topRight:[0,s],bottomLeft:[s,0],bottomRight:[0,0]}}else{if(f.browser.msie){t={topLeft:[-90,90,0],topRight:[-90,90,-s],bottomLeft:[90,270,0],bottomRight:[90,270,-s]}}}return t}function k(){var s,t,u;s=this;u=s.getDimensions();t='