Version Description
- 08.09.2013 =
- NEW: New resource manager that fixes many plugin and theme incompatibilities
- NEW: Styles (custom stylesheets) should reside in wp-content/ngg_styles
- NEW: Added option to "Other Options -> Misc" to control maximum images returned
- Secured: Removed default connector for jQuery FileTree library
- Changed: Updated the simplehtmldom library to version 1.5
- Changed: jQuery is now enqueued at the beginning of every request
- Fixed: Incompatibilities with BuddyPress
- Fixed: Incompatibilities with Events+, bbPress, Custom Permalinks, and many other plugins
- Fixed: Incompcatibilities with Member Access, AMember, Magic Fields, and More Fields
- Fixed: Incompatibilities with Elegant Themes, Oxygen, Responsive, and many other themes
- Fixed: Ensure that gallery images don't have a border by default
- Fixed: Conflict between imagebrowser and album urls
- Fixed: Reverted default gallerypath to wp-content/gallery/
- Fixed: Upgrade-safe way of overriding Styles
- Fixed: Generation of AJAX url is now based on slug
- Fixed: Restore nggShowGallery and nggShowSlideshow as wrappers to new API
- Fixed: Always use domain as specified by WordPress Site URL
- Fixed: Use WordPress Home URL over Site URL when appropriate
- Fixed: Numerous pagination issues
- Fixed: Adjusted our forms to comply with WordPress Firewalls
- Fixed: Correct use of select2 DOM selector for maximum compatibility
- Fixed: Path and URL calculations for Windows and UNIX environments
- Fixed: Ensure that pluggable.php is loaded at the start of every request
- Fixed: Fancybox: adjust CSS for further box-sizing protection from themes
- Fixed: Use PHP 5.2.1 compatible named pattern matching syntax
- Fixed: Remove usage of DIR constant not supported by PHP 5.2.x
- Fixed: Removed dependency on mb_string PHP module
- Fixed: Allow "No Lightbox" as an option for Lightbox Effects
- Fixed: Warning: "Invalid CRT parameters detected" for Windows environments
Download this release
Release Info
Developer | photocrati |
Plugin | NextGEN Gallery – WordPress Gallery Plugin |
Version | 2.0.7 |
Comparing to | |
See all releases |
Code changes from version 2.0.40 to 2.0.7
- changelog.txt +0 -157
- nggallery.php +19 -163
- non_pope/class.nextgen_settings.php +8 -12
- non_pope/class.nextgen_shortcode_manager.php +0 -125
- non_pope/class.nextgen_style_manager.php +7 -19
- non_pope/class.photocrati_cache.php +12 -53
- non_pope/class.photocrati_installer.php +10 -93
- non_pope/class.photocrati_resource_manager.php +33 -122
- non_pope/class.photocrati_settings_manager.php +5 -53
- pope/lib/autoload.php +1 -1
- pope/lib/class.base_module.php +1 -1
- pope/lib/class.base_product.php +2 -2
- pope/lib/class.component_factory.php +2 -2
- pope/lib/class.extensibleobject.php +4 -42
- products/photocrati_nextgen/modules/ajax/class.ajax_controller.php +7 -7
- products/photocrati_nextgen/modules/ajax/class.ajax_installer.php +22 -5
- products/photocrati_nextgen/modules/ajax/class.ajax_option_handler.php +0 -29
- products/photocrati_nextgen/modules/ajax/module.ajax.php +6 -12
- products/photocrati_nextgen/modules/attach_to_post/adapter.attach_to_post_ajax.php +3 -3
- products/photocrati_nextgen/modules/attach_to_post/adapter.gallery_storage_frame_event.php +6 -14
- products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php +5 -82
- products/photocrati_nextgen/modules/attach_to_post/class.attach_to_post_installer.php +26 -5
- products/photocrati_nextgen/modules/attach_to_post/class.attach_to_post_option_handler.php +0 -28
- products/photocrati_nextgen/modules/attach_to_post/mixin.attach_to_post_display_tab.php +2 -15
- products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php +80 -57
- products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.js +21 -19
- products/photocrati_nextgen/modules/attach_to_post/static/iframely.js +10 -50
- products/photocrati_nextgen/modules/attach_to_post/static/ngg_attach_to_post_tinymce_plugin.js +1 -0
- products/photocrati_nextgen/modules/attach_to_post/templates/display_tab_js.php +3 -38
- products/photocrati_nextgen/modules/cache/class.cache.php +2 -2
- products/photocrati_nextgen/modules/cache/module.cache.php +1 -1
- products/photocrati_nextgen/modules/datamapper/class.custompost_datamapper_driver.php +12 -25
- products/photocrati_nextgen/modules/datamapper/class.customtable_datamapper_driver.php +56 -45
- products/photocrati_nextgen/modules/datamapper/class.datamapper_driver_base.php +12 -127
- products/photocrati_nextgen/modules/datamapper/class.datamapper_installer.php +1 -1
- products/photocrati_nextgen/modules/datamapper/class.datamapper_model.php +10 -8
- products/photocrati_nextgen/modules/datamapper/module.datamapper.php +13 -30
- products/photocrati_nextgen/modules/dynamic_stylesheet/class.dynamic_stylesheet_controller.php +2 -2
- products/photocrati_nextgen/modules/dynamic_stylesheet/class.dynamic_stylesheet_installer.php +1 -1
- products/photocrati_nextgen/modules/dynamic_stylesheet/module.dynamic_stylesheet.php +1 -1
- products/photocrati_nextgen/modules/dynamic_thumbnails/adapter.dynamic_thumbnails_storage_driver.php +3 -10
- products/photocrati_nextgen/modules/dynamic_thumbnails/class.dynamic_thumbnails_installer.php +1 -1
- products/photocrati_nextgen/modules/dynamic_thumbnails/class.dynamic_thumbnails_manager.php +1 -1
- products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php +1 -1
- products/photocrati_nextgen/modules/frame_communication/class.frame_communication_installer.php +1 -1
- products/photocrati_nextgen/modules/frame_communication/class.frame_event_publisher.php +2 -10
- products/photocrati_nextgen/modules/frame_communication/module.frame_communication.php +3 -5
- products/photocrati_nextgen/modules/fs/class.fs.php +5 -8
- products/photocrati_nextgen/modules/fs/module.fs.php +1 -1
- products/photocrati_nextgen/modules/lightbox/adapter.lightbox_factory.php +4 -4
- products/photocrati_nextgen/modules/lightbox/class.lightbox_installer.php +2 -2
- products/photocrati_nextgen/modules/lightbox/class.lightbox_library.php +1 -12
- products/photocrati_nextgen/modules/lightbox/module.lightbox.php +2 -152
- products/photocrati_nextgen/modules/lightbox/static/fancybox/nextgen_fancybox_init.js +7 -13
- products/photocrati_nextgen/modules/lightbox/static/highslide/nextgen_highslide_init.js +20 -41
- products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/nextgen_lightbox_init.js +10 -20
- products/photocrati_nextgen/modules/lightbox/static/lightbox_context.js +0 -27
- products/photocrati_nextgen/modules/lightbox/static/shutter/nextgen_shutter.js +0 -3
- products/photocrati_nextgen/modules/lightbox/static/shutter_reloaded/nextgen_shutter_reloaded.js +1 -4
- products/photocrati_nextgen/modules/lightbox/static/thickbox/nextgen_thickbox_init.js +2 -7
- products/photocrati_nextgen/modules/mediarss/class.mediarss_controller.php +2 -2
- products/photocrati_nextgen/modules/mediarss/module.mediarss.php +1 -1
- products/photocrati_nextgen/modules/mediarss/templates/mediarss_feed.php +6 -6
- products/photocrati_nextgen/modules/mediarss/templates/playlist_feed.php +3 -3
- products/photocrati_nextgen/modules/mvc/adapter.mvc_fs.php +1 -1
- products/photocrati_nextgen/modules/mvc/class.mvc_controller.php +1 -1
- products/photocrati_nextgen/modules/mvc/class.mvc_installer.php +3 -2
- products/photocrati_nextgen/modules/mvc/class.mvc_option_handler.php +0 -9
- products/photocrati_nextgen/modules/mvc/class.mvc_view.php +3 -3
- products/photocrati_nextgen/modules/mvc/module.mvc.php +2 -7
- products/photocrati_nextgen/modules/mvc/template_helper.php +2 -20
- products/photocrati_nextgen/modules/mvc/templates/index.php +1 -1
- products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php +19 -24
- products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_forms.php +9 -7
- products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php +4 -8
- products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php +1 -1
- products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php +5 -6
- products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php +23 -45
- products/photocrati_nextgen/modules/nextgen_admin/class.form.php +14 -28
- products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_installer.php +16 -19
- products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_option_handler.php +0 -29
- products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_page_controller.php +1 -13
- products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php +2 -9
- products/photocrati_nextgen/modules/nextgen_admin/templates/field_generator/nextgen_settings_field_color.php +2 -1
- products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php +1 -1
- products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_album_controller.php +33 -74
- products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_album_mapper.php +1 -13
- products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_album_routes.php +9 -10
- products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_compact_album_form.php +1 -27
- products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_extended_album_form.php +0 -26
- products/photocrati_nextgen/modules/nextgen_basic_album/mixin.nextgen_basic_album_form.php +1 -0
- products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php +18 -22
- products/photocrati_nextgen/modules/nextgen_basic_album/static/compact_settings.js +0 -7
- products/photocrati_nextgen/modules/nextgen_basic_album/static/extended_settings.js +0 -7
- products/photocrati_nextgen/modules/nextgen_basic_album/static/nextgen_basic_album.css +12 -37
- products/photocrati_nextgen/modules/nextgen_basic_album/templates/compact.php +6 -13
- products/photocrati_nextgen/modules/nextgen_basic_album/templates/extended.php +3 -3
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.ajax_pagination_actions.php +1 -2
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_gallery_mapper.php +6 -10
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_gallery_routes.php +7 -7
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_gallery_urls.php +1 -2
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_slideshow_controller.php +2 -3
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_slideshow_form.php +1 -5
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_thumbnail_form.php +1 -17
- products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_thumbnails_controller.php +17 -42
- products/photocrati_nextgen/modules/nextgen_basic_gallery/hook.nextgen_basic_gallery_integration.php +3 -9
- products/photocrati_nextgen/modules/nextgen_basic_gallery/mixin.nextgen_basic_gallery_controller.php +2 -2
- products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php +27 -31
- products/photocrati_nextgen/modules/nextgen_basic_gallery/static/slideshow/nextgen_basic_slideshow.css +1 -1
- products/photocrati_nextgen/modules/nextgen_basic_gallery/static/slideshow/nextgen_basic_slideshow.js +0 -1
- products/photocrati_nextgen/modules/nextgen_basic_gallery/static/thumbnails/ajax_pagination.js +2 -6
- products/photocrati_nextgen/modules/nextgen_basic_gallery/static/thumbnails/nextgen_basic_thumbnails.css +0 -6
- products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/slideshow/index.php +2 -2
- products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/index.php +17 -21
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_controller.php +3 -8
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_form.php +1 -4
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_mapper.php +1 -1
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_routes.php +2 -2
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/hook.nextgen_basic_imagebrowser_alt_urls.php +0 -45
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php +15 -17
- products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php +4 -17
- products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_controller.php +4 -34
- products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_mapper.php +1 -1
- products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php +15 -16
- products/photocrati_nextgen/modules/nextgen_basic_singlepic/templates/nextgen_basic_singlepic.php +3 -8
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_form.php +0 -1
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_mapper.php +1 -1
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_routes.php +2 -2
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_urls.php +1 -1
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/class.taxonomy_controller.php +0 -127
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/interface.taxonomy_controller.php +0 -8
- products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php +16 -32
- products/photocrati_nextgen/modules/nextgen_basic_templates/adapter.nextgen_basic_template_form.php +16 -23
- products/photocrati_nextgen/modules/nextgen_basic_templates/class.legacy_template_locator.php +5 -6
- products/photocrati_nextgen/modules/nextgen_basic_templates/module.nextgen_basic_templates.php +1 -1
- products/photocrati_nextgen/modules/nextgen_data/adapter.nextgen_data_factory.php +5 -10
- products/photocrati_nextgen/modules/nextgen_data/class.album.php +9 -10
- products/photocrati_nextgen/modules/nextgen_data/class.album_mapper.php +45 -21
- products/photocrati_nextgen/modules/nextgen_data/class.gallery.php +6 -15
- products/photocrati_nextgen/modules/nextgen_data/class.gallery_mapper.php +4 -15
- products/photocrati_nextgen/modules/nextgen_data/class.gallery_storage.php +1 -1
- products/photocrati_nextgen/modules/nextgen_data/class.gallerystorage_driver_base.php +47 -169
- products/photocrati_nextgen/modules/nextgen_data/class.image.php +2 -3
- products/photocrati_nextgen/modules/nextgen_data/class.image_mapper.php +26 -30
- products/photocrati_nextgen/modules/nextgen_data/class.image_wrapper.php +23 -42
- products/photocrati_nextgen/modules/nextgen_data/class.nextgen_data_installer.php +14 -21
- products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php +2 -2
- products/photocrati_nextgen/modules/nextgen_data/class.ngglegacy_gallerystorage_driver.php +31 -51
- products/photocrati_nextgen/modules/nextgen_data/class.ngglegacy_thumbnail.php +3 -3
- products/photocrati_nextgen/modules/nextgen_data/mixin.nextgen_table_extras.php +0 -195
- products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php +1 -20
- products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.displayed_gallery_related_element.php +114 -0
- products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.gallery_display_ajax.php +0 -24
- products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.gallery_display_factory.php +6 -6
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.display_type.php +2 -2
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.display_type_controller.php +3 -7
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.display_type_mapper.php +4 -11
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery.php +68 -120
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_mapper.php +2 -3
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_renderer.php +26 -87
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_source.php +2 -2
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_source_mapper.php +2 -4
- products/photocrati_nextgen/modules/nextgen_gallery_display/class.gallery_display_installer.php +3 -7
- products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php +27 -155
- products/photocrati_nextgen/modules/nextgen_gallery_display/static/common.js +1 -85
- products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_related_images.css +0 -22
- products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php +27 -31
- products/photocrati_nextgen/modules/nextgen_other_options/adapter.lightbox_manager_form.php +15 -23
- products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php +0 -1
- products/photocrati_nextgen/modules/nextgen_other_options/adapter.other_options_forms.php +2 -14
- products/photocrati_nextgen/modules/nextgen_other_options/adapter.reset_form.php +5 -24
- products/photocrati_nextgen/modules/nextgen_other_options/class.settings_model.php +1 -1
- products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php +1 -1
- products/photocrati_nextgen/modules/nextgen_other_options/templates/image_options_tab.php +34 -47
- products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php +2 -20
- products/photocrati_nextgen/modules/nextgen_other_options/templates/reset_tab.php +0 -2
- products/photocrati_nextgen/modules/nextgen_pagination/mixin.nextgen_basic_pagination.php +1 -19
- products/photocrati_nextgen/modules/nextgen_settings/class.nextgen_settings_installer.php +17 -47
- products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php +1 -1
- products/photocrati_nextgen/modules/nextgen_xmlrpc/module.nextgen_xmlrpc.php +0 -632
- products/photocrati_nextgen/modules/ngglegacy/admin/admin.php +2 -2
- products/photocrati_nextgen/modules/ngglegacy/admin/album.php +69 -78
- products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php +3 -3
- products/photocrati_nextgen/modules/ngglegacy/admin/functions.php +1 -1
- products/photocrati_nextgen/modules/ngglegacy/admin/install.php +52 -8
- products/photocrati_nextgen/modules/ngglegacy/admin/js/ngg.ajax.js +2 -2
- products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php +4 -4
- products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php +3 -3
- products/photocrati_nextgen/modules/ngglegacy/admin/manage.php +5 -15
- products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php +6 -20
- products/photocrati_nextgen/modules/ngglegacy/admin/overview.php +292 -16
- products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php +1 -1
- products/photocrati_nextgen/modules/ngglegacy/admin/wpmu.php +5 -5
- products/photocrati_nextgen/modules/ngglegacy/changelog.txt +718 -0
- products/photocrati_nextgen/modules/ngglegacy/class.ngglegacy_installer.php +1 -91
- products/photocrati_nextgen/modules/ngglegacy/lang/nggallery.pot +2 -2
- products/photocrati_nextgen/modules/ngglegacy/lib/media-rss.php +2 -2
- products/photocrati_nextgen/modules/ngglegacy/lib/meta.php +15 -29
- products/photocrati_nextgen/modules/ngglegacy/lib/ngg-db.php +3 -3
- products/photocrati_nextgen/modules/ngglegacy/lib/post-thumbnail.php +2 -2
- products/photocrati_nextgen/modules/ngglegacy/lib/shortcodes.php +2 -6
- products/photocrati_nextgen/modules/ngglegacy/lib/sitemap.php +5 -5
- products/photocrati_nextgen/modules/ngglegacy/lib/xmlrpc.php +882 -0
- products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php +1 -1
- products/photocrati_nextgen/modules/ngglegacy/nggallery.php +101 -5
- products/photocrati_nextgen/modules/ngglegacy/view/album-compact.php +3 -15
- products/photocrati_nextgen/modules/ngglegacy/view/album-extend.php +3 -3
- products/photocrati_nextgen/modules/ngglegacy/view/gallery-caption.php +6 -13
- products/photocrati_nextgen/modules/ngglegacy/view/gallery-carousel.php +7 -7
- products/photocrati_nextgen/modules/ngglegacy/view/gallery.php +4 -11
- products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php +3 -3
- products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php +2 -2
- products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php +4 -4
- products/photocrati_nextgen/modules/ngglegacy/view/singlepic.php +4 -14
- products/photocrati_nextgen/modules/router/class.router.php +1 -5
- products/photocrati_nextgen/modules/router/class.router_installer.php +2 -2
- products/photocrati_nextgen/modules/router/class.routing_app.php +16 -20
- products/photocrati_nextgen/modules/router/mixin.url_manipulation.php +3 -10
- products/photocrati_nextgen/modules/router/module.router.php +1 -1
- products/photocrati_nextgen/modules/security/class.wordpress_security_actor.php +0 -13
- products/photocrati_nextgen/modules/security/class.wordpress_security_manager.php +0 -13
- products/photocrati_nextgen/modules/security/module.security.php +1 -5
- products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php +0 -117
- products/photocrati_nextgen/modules/widget/class.widget.php +6 -0
- products/photocrati_nextgen/modules/widget/class.widget_gallery.php +48 -64
- products/photocrati_nextgen/modules/widget/class.widget_slideshow.php +2 -7
- products/photocrati_nextgen/modules/widget/module.widget.php +1 -1
- products/photocrati_nextgen/modules/widget/templates/display_gallery.php +2 -2
- products/photocrati_nextgen/modules/wordpress_routing/adapter.wordpress_router.php +14 -20
- products/photocrati_nextgen/modules/wordpress_routing/adapter.wordpress_routing_app.php +3 -17
- products/photocrati_nextgen/modules/wordpress_routing/module.wordpress_routing.php +1 -1
- products/photocrati_nextgen/product.photocrati_nextgen.php +9 -11
- readme.txt +4 -160
changelog.txt
CHANGED
@@ -1,163 +1,6 @@
|
|
1 |
NextGEN Gallery
|
2 |
by Photocrati Media
|
3 |
|
4 |
-
= V2.0.40 - 11.26.2013 =
|
5 |
-
* NEW: Added the ability to apply lightbox effects to non-NGG images
|
6 |
-
* NEW: Added NGG_HIDE_STRICT_ERRORS constant. Define and set to TRUE to hide strict errors
|
7 |
-
* NEW: Added NEXTGEN_GALLERY_IMPORT_ROOT constant. Define and set to TRUE to browse from a custom directory
|
8 |
-
* NEW: Added NGG_DEBUG constant. Define and set to TRUE to display helpful messages for debugging
|
9 |
-
* NEW: Each custom table record will have an associated custom post record for expansion
|
10 |
-
* NEW: Display helpful error messages when there's a problem uploading images
|
11 |
-
* NEW: Add data-(src|thumbnail|image-id|title|description) attribute to gallery image anchors
|
12 |
-
* NEW: Variant support for displayed gallery sources. Random images is limited to 5 variations
|
13 |
-
* Fixed: Excessive creation of transients for random galleries
|
14 |
-
* Fixed: Many issues prohibiting the ability to upload images
|
15 |
-
* Fixed: Compatibility with NextGEN Gallery Export Plugin for Adobe Lightroom (thanks Vladimir!)
|
16 |
-
* Fixed: Sorting in the Attach to Post interface
|
17 |
-
* Fixed: HTML allowed in gallery/album descriptions
|
18 |
-
* Fixed: Requests for galleries within albums that have numeric names are broken
|
19 |
-
* Fixed: Call to a non-member function get() on WP_Query
|
20 |
-
* Fixed: Ability to sort by Image ID in the Attach to Post interface
|
21 |
-
* Fixed: Isolate the Attach to Post from implicit third-party script inclusion
|
22 |
-
* Fixed: Check for the existance of thumbnails when generating urls, and if missing, generate new ones
|
23 |
-
* Fixed: Compatibility with NextGEN Facebook OpenGraph+ plugin
|
24 |
-
* Fixed: Various XML-RPC issues
|
25 |
-
* Fixed: Widgets stylesheet not included
|
26 |
-
* Fixed: Issue with color not being pre-selected when previewing Watermark
|
27 |
-
* Fixed: E_NOTICE emitted when cleaning up cached image files
|
28 |
-
* Fixed: E_NOTICE emitted when viewing display type settings
|
29 |
-
* Fixed: Typo adjusting pcre.backtrack_limit for shortcodes
|
30 |
-
* Fixed: Content within the tabs of the Attach to Post interface cut-off
|
31 |
-
* Fixed: Routing problem which would cause conflicts with different display types on the same page
|
32 |
-
* Fixed: Broken Dynamic CSS links on GoDaddy
|
33 |
-
* Fixed: Ability to use HTML in gallery/album descriptions
|
34 |
-
* Fixed: Sub-album requests conflicting with paginated galleries on the same page
|
35 |
-
* Merged: Pull request from andreasE (https://bitbucket.org/photocrati/nextgen-gallery/pull-request/6/)
|
36 |
-
|
37 |
-
= V2.0.33 - 10.21.2013 =
|
38 |
-
* NEW: Requests /ngg_tag/[tagname] will create a displayed gallery
|
39 |
-
* NEW: Option added to "Import Gallery" tab to use original images
|
40 |
-
* Fixed: Links are broken on the ngg_tags-sitemap.xml file by WordPress SEO
|
41 |
-
* Fixed: PHP notice: Attempt to assign property of non-object
|
42 |
-
* Fixed: Undefined property warnings when using NextGEN Basic Thumbnails
|
43 |
-
* Fixed: Detect if an applying a transient to a displayed gallery was successful
|
44 |
-
* Fixed: Compatibility issues with BJ-Lazy-Load and Colorbox
|
45 |
-
* Fixed: Pagination conflicts for multiple Imagebrowsers on the same page
|
46 |
-
* Fixed: Ability to display previous exception with debug mode
|
47 |
-
* Fixed: Tagclouds not working in multisite instances
|
48 |
-
* Fixed: Load widgets.css when a widget is being used
|
49 |
-
* Fixed: Installer should remove all instances of the component factory
|
50 |
-
* Fixed: Widget settings interface not intuitive
|
51 |
-
* Fixed: Inability to upload images in some Windows host environments
|
52 |
-
* Fixed: Sorting images/galleries using the Attach To Post interface
|
53 |
-
* Fixed: Fix detection of HTTPS (pull request by Leonhardt Wille)
|
54 |
-
* Fixed: Compilation errors of regular expressions
|
55 |
-
* Fixed: Pro galleries wouldn't display in environments using PHP 5.3.3 or less
|
56 |
-
* Fixed: Scanning of router slug is now limited to the uri, not the url
|
57 |
-
* Fixed: Show slideshow link isn't required for thumbnail/imagebrowser integration
|
58 |
-
* Fixed: WordPress media-upload with 'singlepic' image size
|
59 |
-
* Fixed: Use target=_blank when the link setting is provided for NextGEN Basic Singlepic
|
60 |
-
* Fixed: Only display rendering errors if WP_DEBUG is enabled
|
61 |
-
|
62 |
-
|
63 |
-
= V2.0.31 - 10.03.2013 =
|
64 |
-
* NEW: Restored AJAX pagination for NextGEN Basic ImageBrowser display type
|
65 |
-
* Fixed: Compatibility with WordPress Local SEO by Yoast
|
66 |
-
* Fixed: Inability to upload images if image_slug field was missing in database
|
67 |
-
* Fixed: Integration of NextGEN Basic Thumbnail and NextGEN Basic Slideshow display types
|
68 |
-
* Fixed: Photocrati Resource Manager further adjusted to be third-party friendly
|
69 |
-
* Fixed: Added the ability to find legacy templates in both the child/parent theme directories
|
70 |
-
* Fixed: JavaScript errors in Attach to Post interface
|
71 |
-
* Fixed: Router can handle port numbers in urls
|
72 |
-
* Fixed: Carousel template was linking to NextGEN Basic ImageBrowser view
|
73 |
-
* Fixed: SQL query generated for displayed galleries using tags as source
|
74 |
-
* Fixed: 3rd party compat: raise & never lower pcre.backtrack_limit
|
75 |
-
|
76 |
-
= V2.0.30 - 09.25.2013 =
|
77 |
-
* NEW: Restored the ability to use imagebrowser display type instead of a lightbox effect
|
78 |
-
* Changed: Displayed galleries are no longer rendered in RSS feeds
|
79 |
-
* Changed: Removed "Plugin Check" widget from overview page
|
80 |
-
* Fixed: Silence PHP warnings/errors in an output buffer for AJAX actions
|
81 |
-
* Fixed: Compatibility issue with WordPress SEO and broken site maps (and large error_logs)
|
82 |
-
* Fixed: Compatibility issue with AJAX Event Calendar (and possibly others)
|
83 |
-
* Fixed: Adjusted Photocrati Resource Manager to be third-party friendly
|
84 |
-
* Fixed: Fixed empty result set for displayed galleries selecting 'All' tags
|
85 |
-
* Fixed: URL generation for imagebrowser pagination links
|
86 |
-
* Fixed: Ensure that image meta is imported on creation
|
87 |
-
* Fixed: Ensure that transients are removed when an external object cache is used
|
88 |
-
* Fixed: Don't load pluggable.php. This will fix plugin conflicts
|
89 |
-
* Fixed: In Attach to Post interface, galleries created in one tab weren't showing in another
|
90 |
-
* Fixed: Don't output frame events cookie for XML-RPC requests
|
91 |
-
|
92 |
-
= V2.0.27 - 09.18.2013 =
|
93 |
-
* Fixed: Reduce performance impact of purging displayed gallery transients
|
94 |
-
|
95 |
-
= V2.0.25 - 09.18.2013 =
|
96 |
-
* Changed: Reverting to the 2.0.21 codebase, due to major performance issues in 2.0.23 and 2.0.24
|
97 |
-
|
98 |
-
= V2.0.24 - 09.18.2013 =
|
99 |
-
* WARNING: Broken release. Uses wp_clear_scheduled_hooks() to purge cron records
|
100 |
-
|
101 |
-
= V2.0.23 - 09.12.2013 =
|
102 |
-
* WARNING: Broken release. Major bug creates redundant cron jobs
|
103 |
-
* NEW: WP-Cron job to periodically clean-up displayed gallery transients
|
104 |
-
* NEW: Added "excluded_container_ids" as parameter for ngg_images shortcode
|
105 |
-
* Fixed: Lightbox effect is honoured by all display types
|
106 |
-
* Fixed: Highslide displays images from the correct displayed galleries
|
107 |
-
* Fixed: Ensure that sub-albums display correctly when the word "album" is part of a slug
|
108 |
-
* Fixed: Ensure that sub-albums display correctly when numerical slugs are used
|
109 |
-
* Fixed: Related images heading only added when Related Images functionality is enabled
|
110 |
-
* Fixed: PHP Warning about undefined index when viewing basic albums
|
111 |
-
* Fixed: AJAX handling is third-party compatible
|
112 |
-
* Fixed: Image date is no longer overwritten when an image is modified
|
113 |
-
* Fixed: Fixed issue with displayed galleries using source='tags'
|
114 |
-
* Fixed: Problem with transient cache not getting flushed properly from Other Options page
|
115 |
-
* Fixed: Use correct gallery/transient ID when ajax pagination is used
|
116 |
-
|
117 |
-
= V2.0.21 - 09.09.2013 =
|
118 |
-
* NEW: Multisite support
|
119 |
-
* Changed: Default image quality set to 100 for generated images
|
120 |
-
* Changed: Removed dependence on simplehtmldom library
|
121 |
-
* Fixed: Related images functionality works as it did in 1.9.x
|
122 |
-
* Fixed: Don't compress inline JavaScript in post/page content
|
123 |
-
* Fixed: Click-to-advance slideshow behavior for slideshows
|
124 |
-
* Fixed: Security warnings from VaultPress
|
125 |
-
* Fixed: View as Slideshow link works with AJAX pagination
|
126 |
-
* Fixed: Broken links on Overview page
|
127 |
-
* Fixed: Backup images option
|
128 |
-
* Fixed: Stylesheet url generated correctly for Windows hosts
|
129 |
-
* Fixed: Compatibility with NextGen Custom Fields plugin
|
130 |
-
* Fixed: Compatibility with Adsense Explosion plugin
|
131 |
-
* Fixed: Suppress wp_footer notices unless WP_DEBUG is set to TRUE
|
132 |
-
|
133 |
-
= V2.0.17 - 08.30.2013 =
|
134 |
-
Fixed: Match legacy behaviour when changing gallery path, i.e. don't move files
|
135 |
-
|
136 |
-
= V2.0.14 - 08.27.2013 =
|
137 |
-
* NEW: Added the ability to override thumbnail settings for NextGEN Basic Albums
|
138 |
-
* NEW: Shortcode Manager API, which ensures that shortcodes are outputted as intended
|
139 |
-
* Changed: Re-added the ability to select the original image size for widgets
|
140 |
-
* Fixed: Ensure that stylesheet url returned is correct for Windows hosts
|
141 |
-
* Fixed: Broken links and lightbox effects with AJAX pagination
|
142 |
-
* Fixed: Try to ensure that third party plugins don't add content to our dynamic JS
|
143 |
-
* Fixed: Improved reliability of iframely.js
|
144 |
-
* Fixed: Ensure that urls are generated correctly in HTTPs environments
|
145 |
-
* Fixed: Datamapper works correctly in environments where temporary tables aren't supported
|
146 |
-
* Fixed: Fixed an issue with thickbox loading animation when home url differs from site url
|
147 |
-
|
148 |
-
= V2.0.11 - 08.19.2013 =
|
149 |
-
* NEW: Added "run_ngg_resource_manager" hook to by-pass our resource manager
|
150 |
-
* Changed: Removed "Reset & Uninstall" tab, for now
|
151 |
-
* Fixed: Compatibility with W3 Total Cache. Please flush cache after updating.
|
152 |
-
* Fixed: Conflicts with Photocrati Theme Galleries
|
153 |
-
* Fixed: Blank Attach to Post interface window
|
154 |
-
* Fixed: Fixed ability to change Lightbox Effect settings
|
155 |
-
* Fixed: Implemented techniques to ensure WP_Query variables aren't overwritten
|
156 |
-
* Fixed: Enqueuing AJAX JS libraries twice in wp-admin
|
157 |
-
* Fixed: Encoding issues
|
158 |
-
* Fixed: PHP warnings caused by accessing unserialized data as array
|
159 |
-
* Fixed: Fixed installer issues
|
160 |
-
|
161 |
= V2.0.7 - 08.09.2013 =
|
162 |
* NEW: New resource manager that fixes many plugin and theme incompatibilities
|
163 |
* NEW: Styles (custom stylesheets) should reside in wp-content/ngg_styles
|
1 |
NextGEN Gallery
|
2 |
by Photocrati Media
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
= V2.0.7 - 08.09.2013 =
|
5 |
* NEW: New resource manager that fixes many plugin and theme incompatibilities
|
6 |
* NEW: Styles (custom stylesheets) should reside in wp-content/ngg_styles
|
nggallery.php
CHANGED
@@ -4,7 +4,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
4 |
/**
|
5 |
* Plugin Name: NextGEN Gallery by Photocrati
|
6 |
* Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 7 million downloads.
|
7 |
-
* Version: 2.0.
|
8 |
* Author: Photocrati Media
|
9 |
* Plugin URI: http://www.nextgen-gallery.com
|
10 |
* Author URI: http://www.photocrati.com
|
@@ -12,49 +12,6 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
12 |
*/
|
13 |
|
14 |
if (!class_exists('E_Clean_Exit')) { class E_Clean_Exit extends RuntimeException {} }
|
15 |
-
if (!class_exists('E_NggErrorException')) { class E_NggErrorException extends RuntimeException {} }
|
16 |
-
|
17 |
-
// This is a temporary function to replace the use of WP's esc_url which strips spaces away from URLs
|
18 |
-
if (!function_exists('nextgen_esc_url')) {
|
19 |
-
function nextgen_esc_url( $url, $protocols = null, $_context = 'display' ) {
|
20 |
-
$original_url = $url;
|
21 |
-
|
22 |
-
if ( '' == $url )
|
23 |
-
return $url;
|
24 |
-
$url = preg_replace('|[^a-z0-9 \\-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
|
25 |
-
$strip = array('%0d', '%0a', '%0D', '%0A');
|
26 |
-
$url = _deep_replace($strip, $url);
|
27 |
-
$url = str_replace(';//', '://', $url);
|
28 |
-
/* If the URL doesn't appear to contain a scheme, we
|
29 |
-
* presume it needs http:// appended (unless a relative
|
30 |
-
* link starting with /, # or ? or a php file).
|
31 |
-
*/
|
32 |
-
|
33 |
-
if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&
|
34 |
-
! preg_match('/^[a-z0-9-]+?\.php/i', $url) )
|
35 |
-
$url = 'http://' . $url;
|
36 |
-
|
37 |
-
// Replace ampersands and single quotes only when displaying.
|
38 |
-
if ( 'display' == $_context ) {
|
39 |
-
$url = wp_kses_normalize_entities( $url );
|
40 |
-
$url = str_replace( ' ', '%20', $url );
|
41 |
-
$url = str_replace( '&', '&', $url );
|
42 |
-
$url = str_replace( "'", ''', $url );
|
43 |
-
}
|
44 |
-
|
45 |
-
if ( '/' === $url[0] ) {
|
46 |
-
$good_protocol_url = $url;
|
47 |
-
} else {
|
48 |
-
if ( ! is_array( $protocols ) )
|
49 |
-
$protocols = wp_allowed_protocols();
|
50 |
-
$good_protocol_url = wp_kses_bad_protocol( $url, $protocols );
|
51 |
-
if ( strtolower( $good_protocol_url ) != strtolower( $url ) )
|
52 |
-
return '';
|
53 |
-
}
|
54 |
-
|
55 |
-
return apply_filters('clean_url', $good_protocol_url, $original_url, $_context);
|
56 |
-
}
|
57 |
-
}
|
58 |
|
59 |
/**
|
60 |
* NextGEN Gallery is built on top of the Photocrati Pope Framework:
|
@@ -95,42 +52,15 @@ class C_NextGEN_Bootstrap
|
|
95 |
$klass = get_class($exception);
|
96 |
echo "<h1>{$klass} thrown</h1>";
|
97 |
echo "<p>{$exception->getMessage()}</p>";
|
98 |
-
if (self::$debug OR (defined('
|
99 |
echo "<h3>Where:</h3>";
|
100 |
echo "<p>On line <strong>{$exception->getLine()}</strong> of <strong>{$exception->getFile()}</strong></p>";
|
101 |
echo "<h3>Trace:</h3>";
|
102 |
echo "<pre>{$exception->getTraceAsString()}</pre>";
|
103 |
-
|
104 |
-
|
105 |
-
self::print_exception($previous);
|
106 |
-
}
|
107 |
-
}
|
108 |
-
}
|
109 |
-
}
|
110 |
-
|
111 |
-
static function get_backtrace($objects=FALSE, $remove_dynamic_calls=TRUE)
|
112 |
-
{
|
113 |
-
$trace = debug_backtrace($objects);
|
114 |
-
if ($remove_dynamic_calls) {
|
115 |
-
$skip_methods = array(
|
116 |
-
'_exec_cached_method',
|
117 |
-
'__call',
|
118 |
-
'get_method_property',
|
119 |
-
'set_method_property',
|
120 |
-
'call_method'
|
121 |
-
);
|
122 |
-
foreach ($trace as $key => &$value) {
|
123 |
-
if (isset($value['class']) && isset($value['function'])) {
|
124 |
-
if ($value['class'] == 'ReflectionMethod' && $value['function'] == 'invokeArgs')
|
125 |
-
unset($trace[$key]);
|
126 |
-
|
127 |
-
else if ($value['class'] == 'ExtensibleObject' && in_array($value['function'], $skip_methods))
|
128 |
-
unset($trace[$key]);
|
129 |
-
}
|
130 |
}
|
131 |
}
|
132 |
-
|
133 |
-
return $trace;
|
134 |
}
|
135 |
|
136 |
function __construct()
|
@@ -147,26 +77,22 @@ class C_NextGEN_Bootstrap
|
|
147 |
|
148 |
function _load_non_pope()
|
149 |
{
|
|
|
|
|
|
|
150 |
// Load caching component
|
151 |
include_once('non_pope/class.photocrati_cache.php');
|
152 |
-
C_Photocrati_Cache
|
153 |
-
C_Photocrati_Cache::get_instance('displayed_galleries');
|
154 |
-
C_Photocrati_Cache::get_instance('displayed_gallery_rendering');
|
155 |
-
C_Photocrati_Cache::$enabled = PHOTOCRATI_CACHE;
|
156 |
|
157 |
if (isset($_REQUEST['ngg_flush'])) {
|
158 |
C_Photocrati_Cache::flush('all');
|
159 |
-
|
160 |
}
|
161 |
elseif (isset($_REQUEST['ngg_force_update'])) {
|
162 |
C_Photocrati_Cache::$do_not_lookup = TRUE;
|
163 |
C_Photocrati_Cache::$force_update = TRUE;
|
164 |
$_SERVER['QUERY_STRING'] = str_replace('ngg_force_update=1', '', $_SERVER['QUERY_STRING']);
|
165 |
}
|
166 |
-
elseif (isset($_REQUEST['ngg_flush_expired'])) {
|
167 |
-
C_Photocrati_Cache::flush('all', TRUE);
|
168 |
-
die("Flushed all expired items from the cache");
|
169 |
-
}
|
170 |
|
171 |
// Load Settings Manager
|
172 |
include_once('non_pope/class.photocrati_settings_manager.php');
|
@@ -183,9 +109,6 @@ class C_NextGEN_Bootstrap
|
|
183 |
|
184 |
// Load the style manager
|
185 |
include_once('non_pope/class.nextgen_style_manager.php');
|
186 |
-
|
187 |
-
// Load the shortcode manager
|
188 |
-
include_once('non_pope/class.nextgen_shortcode_manager.php');
|
189 |
}
|
190 |
|
191 |
/**
|
@@ -197,8 +120,8 @@ class C_NextGEN_Bootstrap
|
|
197 |
if ($this->_pope_loaded) return;
|
198 |
|
199 |
// Pope requires a a higher limit
|
200 |
-
|
201 |
-
|
202 |
|
203 |
// Include pope framework
|
204 |
require_once(path_join(NEXTGEN_GALLERY_PLUGIN_DIR, implode(
|
@@ -216,9 +139,9 @@ class C_NextGEN_Bootstrap
|
|
216 |
$this->_registry->add_module_path(NEXTGEN_GALLERY_PRODUCT_DIR, true, false);
|
217 |
$this->_registry->load_all_products();
|
218 |
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
|
223 |
// Initializes all loaded modules
|
224 |
$this->_registry->initialize_all_modules();
|
@@ -257,31 +180,18 @@ class C_NextGEN_Bootstrap
|
|
257 |
add_filter('pre_update_site_option_'.$this->_settings_option_name, array(&$this, 'persist_settings'));
|
258 |
|
259 |
// This plugin uses jQuery extensively
|
260 |
-
add_action('
|
261 |
-
add_action('wp_print_scripts', array(&$this, 'fix_jquery'));
|
262 |
-
add_action('admin_print_scripts', array(&$this, 'fix_jquery'));
|
263 |
|
264 |
// If the selected stylesheet is using an unsafe path, then notify the user
|
265 |
if (C_NextGen_Style_Manager::get_instance()->is_directory_unsafe()) {
|
266 |
add_action('all_admin_notices', array(&$this, 'display_stylesheet_notice'));
|
267 |
}
|
268 |
|
269 |
-
// Delete displayed gallery transients periodically
|
270 |
-
add_action('ngg_delete_expired_transients', array(&$this, 'delete_expired_transients'));
|
271 |
-
if (!wp_next_scheduled('ngg_delete_expired_transients')) {
|
272 |
-
wp_schedule_event(time(), 'hourly', 'ngg_delete_expired_transients');
|
273 |
-
}
|
274 |
-
|
275 |
// Update modules
|
276 |
-
add_action('init', array(&$this, 'update'), PHP_INT_MAX
|
277 |
|
278 |
// Start the plugin!
|
279 |
-
add_action('init', array(&$this, 'route'),
|
280 |
-
}
|
281 |
-
|
282 |
-
function delete_expired_transients()
|
283 |
-
{
|
284 |
-
C_Photocrati_Cache::flush('displayed_galleries', TRUE);
|
285 |
}
|
286 |
|
287 |
/**
|
@@ -305,27 +215,6 @@ class C_NextGEN_Bootstrap
|
|
305 |
wp_enqueue_script('jquery');
|
306 |
}
|
307 |
|
308 |
-
/**
|
309 |
-
* Ensures that the latest version of jQuery bundled with WordPress is used
|
310 |
-
*/
|
311 |
-
function fix_jquery()
|
312 |
-
{
|
313 |
-
global $wp_scripts;
|
314 |
-
|
315 |
-
if (isset($wp_scripts->registered['jquery'])) {
|
316 |
-
$jquery = $wp_scripts->registered['jquery'];
|
317 |
-
if (!isset($jquery->ver) OR version_compare('1.8', $jquery->ver) == 1) {
|
318 |
-
ob_start();
|
319 |
-
wp_deregister_script('jquery');
|
320 |
-
ob_end_clean();
|
321 |
-
wp_register_script('jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.10.0' );
|
322 |
-
}
|
323 |
-
}
|
324 |
-
else wp_register_script( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.10.0' );
|
325 |
-
|
326 |
-
wp_enqueue_script('jquery');
|
327 |
-
}
|
328 |
-
|
329 |
/**
|
330 |
* Displays a notice to the user that the current stylesheet location is unsafe
|
331 |
*/
|
@@ -334,7 +223,7 @@ class C_NextGEN_Bootstrap
|
|
334 |
$styles = C_NextGen_Style_Manager::get_instance();
|
335 |
$filename = $styles->get_selected_stylesheet();
|
336 |
$abspath = $styles->find_selected_stylesheet_abspath();
|
337 |
-
$newpath = $styles->
|
338 |
|
339 |
echo "<div class='updated error'>
|
340 |
<h3>WARNING: NextGEN Gallery Stylesheet NOT Upgrade-safe</h3>
|
@@ -350,8 +239,6 @@ class C_NextGEN_Bootstrap
|
|
350 |
function update()
|
351 |
{
|
352 |
$this->_load_pope();
|
353 |
-
|
354 |
-
// Try updating all modules
|
355 |
C_Photocrati_Installer::update();
|
356 |
}
|
357 |
|
@@ -402,38 +289,7 @@ class C_NextGEN_Bootstrap
|
|
402 |
define('NEXTGEN_GALLERY_MODULE_URL', path_join(NEXTGEN_GALLERY_PRODUCT_URL, 'photocrati_nextgen/modules'));
|
403 |
define('NEXTGEN_GALLERY_PLUGIN_CLASS', path_join(NEXTGEN_GALLERY_PLUGIN_DIR, 'module.NEXTGEN_GALLERY_PLUGIN.php'));
|
404 |
define('NEXTGEN_GALLERY_PLUGIN_STARTED_AT', microtime());
|
405 |
-
define('NEXTGEN_GALLERY_PLUGIN_VERSION', '2.0.
|
406 |
-
|
407 |
-
if (!defined('NGG_HIDE_STRICT_ERRORS')) {
|
408 |
-
define('NGG_HIDE_STRICT_ERRORS', TRUE);
|
409 |
-
}
|
410 |
-
|
411 |
-
// Should we display E_STRICT errors?
|
412 |
-
if (NGG_HIDE_STRICT_ERRORS) {
|
413 |
-
$level = error_reporting();
|
414 |
-
if ($level != 0) error_reporting($level & ~E_STRICT);
|
415 |
-
}
|
416 |
-
|
417 |
-
// Should we display NGG debugging information?
|
418 |
-
if (!defined('NGG_DEBUG')) {
|
419 |
-
define('NGG_DEBUG', FALSE);
|
420 |
-
}
|
421 |
-
self::$debug = NGG_DEBUG;
|
422 |
-
|
423 |
-
// User definable constants
|
424 |
-
if (!defined('NEXTGEN_GALLERY_IMPORT_ROOT')) {
|
425 |
-
$path = WP_CONTENT_DIR;
|
426 |
-
if (is_multisite()) {
|
427 |
-
$uploads = wp_upload_dir();
|
428 |
-
$path = $uploads['path'];
|
429 |
-
}
|
430 |
-
define('NEXTGEN_GALLERY_IMPORT_ROOT', $path);
|
431 |
-
}
|
432 |
-
|
433 |
-
// Should the Photocrati cache be enabled
|
434 |
-
if (!defined('PHOTOCRATI_CACHE')) {
|
435 |
-
define('PHOTOCRATI_CACHE', TRUE);
|
436 |
-
}
|
437 |
}
|
438 |
|
439 |
|
4 |
/**
|
5 |
* Plugin Name: NextGEN Gallery by Photocrati
|
6 |
* Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 7 million downloads.
|
7 |
+
* Version: 2.0.7
|
8 |
* Author: Photocrati Media
|
9 |
* Plugin URI: http://www.nextgen-gallery.com
|
10 |
* Author URI: http://www.photocrati.com
|
12 |
*/
|
13 |
|
14 |
if (!class_exists('E_Clean_Exit')) { class E_Clean_Exit extends RuntimeException {} }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
/**
|
17 |
* NextGEN Gallery is built on top of the Photocrati Pope Framework:
|
52 |
$klass = get_class($exception);
|
53 |
echo "<h1>{$klass} thrown</h1>";
|
54 |
echo "<p>{$exception->getMessage()}</p>";
|
55 |
+
if (self::$debug OR (defined('NEXTGEN_GALLERY_DEBUG') AND NEXTGEN_GALLERY_DEBUG == TRUE)) {
|
56 |
echo "<h3>Where:</h3>";
|
57 |
echo "<p>On line <strong>{$exception->getLine()}</strong> of <strong>{$exception->getFile()}</strong></p>";
|
58 |
echo "<h3>Trace:</h3>";
|
59 |
echo "<pre>{$exception->getTraceAsString()}</pre>";
|
60 |
+
while (($previous = $exception->getPrevious())) {
|
61 |
+
self::print_exception($previous);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
}
|
|
|
|
|
64 |
}
|
65 |
|
66 |
function __construct()
|
77 |
|
78 |
function _load_non_pope()
|
79 |
{
|
80 |
+
// Load WordPress pluggables for plugin compatibility
|
81 |
+
include_once(path_join(ABSPATH, 'wp-includes/pluggable.php'));
|
82 |
+
|
83 |
// Load caching component
|
84 |
include_once('non_pope/class.photocrati_cache.php');
|
85 |
+
C_Photocrati_Cache::$enabled = TRUE;
|
|
|
|
|
|
|
86 |
|
87 |
if (isset($_REQUEST['ngg_flush'])) {
|
88 |
C_Photocrati_Cache::flush('all');
|
89 |
+
$_SERVER['QUERY_STRING'] = str_replace('ngg_flush=1', '', $_SERVER['QUERY_STRING']);
|
90 |
}
|
91 |
elseif (isset($_REQUEST['ngg_force_update'])) {
|
92 |
C_Photocrati_Cache::$do_not_lookup = TRUE;
|
93 |
C_Photocrati_Cache::$force_update = TRUE;
|
94 |
$_SERVER['QUERY_STRING'] = str_replace('ngg_force_update=1', '', $_SERVER['QUERY_STRING']);
|
95 |
}
|
|
|
|
|
|
|
|
|
96 |
|
97 |
// Load Settings Manager
|
98 |
include_once('non_pope/class.photocrati_settings_manager.php');
|
109 |
|
110 |
// Load the style manager
|
111 |
include_once('non_pope/class.nextgen_style_manager.php');
|
|
|
|
|
|
|
112 |
}
|
113 |
|
114 |
/**
|
120 |
if ($this->_pope_loaded) return;
|
121 |
|
122 |
// Pope requires a a higher limit
|
123 |
+
$tmp = ini_get('xdebug.max_nesting_level');
|
124 |
+
if ($tmp && (int)$tmp <= 300) @ini_set('xdebug.max_nesting_level', 300);
|
125 |
|
126 |
// Include pope framework
|
127 |
require_once(path_join(NEXTGEN_GALLERY_PLUGIN_DIR, implode(
|
139 |
$this->_registry->add_module_path(NEXTGEN_GALLERY_PRODUCT_DIR, true, false);
|
140 |
$this->_registry->load_all_products();
|
141 |
|
142 |
+
// Give third-party plugins that opportunity to include their own products
|
143 |
+
// and modules
|
144 |
+
do_action('load_nextgen_gallery_modules', $this->_registry);
|
145 |
|
146 |
// Initializes all loaded modules
|
147 |
$this->_registry->initialize_all_modules();
|
180 |
add_filter('pre_update_site_option_'.$this->_settings_option_name, array(&$this, 'persist_settings'));
|
181 |
|
182 |
// This plugin uses jQuery extensively
|
183 |
+
add_action('wp_enqueue_scripts', array(&$this, 'enqueue_jquery'));
|
|
|
|
|
184 |
|
185 |
// If the selected stylesheet is using an unsafe path, then notify the user
|
186 |
if (C_NextGen_Style_Manager::get_instance()->is_directory_unsafe()) {
|
187 |
add_action('all_admin_notices', array(&$this, 'display_stylesheet_notice'));
|
188 |
}
|
189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
// Update modules
|
191 |
+
add_action('init', array(&$this, 'update'), PHP_INT_MAX);
|
192 |
|
193 |
// Start the plugin!
|
194 |
+
add_action('init', array(&$this, 'route'), PHP_INT_MAX);
|
|
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
|
197 |
/**
|
215 |
wp_enqueue_script('jquery');
|
216 |
}
|
217 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
/**
|
219 |
* Displays a notice to the user that the current stylesheet location is unsafe
|
220 |
*/
|
223 |
$styles = C_NextGen_Style_Manager::get_instance();
|
224 |
$filename = $styles->get_selected_stylesheet();
|
225 |
$abspath = $styles->find_selected_stylesheet_abspath();
|
226 |
+
$newpath = $styles->get_selected_stylesheet_saved_abspath();
|
227 |
|
228 |
echo "<div class='updated error'>
|
229 |
<h3>WARNING: NextGEN Gallery Stylesheet NOT Upgrade-safe</h3>
|
239 |
function update()
|
240 |
{
|
241 |
$this->_load_pope();
|
|
|
|
|
242 |
C_Photocrati_Installer::update();
|
243 |
}
|
244 |
|
289 |
define('NEXTGEN_GALLERY_MODULE_URL', path_join(NEXTGEN_GALLERY_PRODUCT_URL, 'photocrati_nextgen/modules'));
|
290 |
define('NEXTGEN_GALLERY_PLUGIN_CLASS', path_join(NEXTGEN_GALLERY_PLUGIN_DIR, 'module.NEXTGEN_GALLERY_PLUGIN.php'));
|
291 |
define('NEXTGEN_GALLERY_PLUGIN_STARTED_AT', microtime());
|
292 |
+
define('NEXTGEN_GALLERY_PLUGIN_VERSION', '2.0.7');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
293 |
}
|
294 |
|
295 |
|
non_pope/class.nextgen_settings.php
CHANGED
@@ -5,25 +5,21 @@ if (!class_exists('C_NextGen_Settings')) {
|
|
5 |
class C_NextGen_Settings {
|
6 |
static function get_instance()
|
7 |
{
|
8 |
-
|
9 |
-
}
|
10 |
-
|
11 |
-
static function add_option_handler($klass, $options=array())
|
12 |
-
{
|
13 |
-
$instance = self::get_instance();
|
14 |
-
return $instance->add_option_handler($klass, $options);
|
15 |
}
|
16 |
}
|
17 |
}
|
18 |
|
19 |
if (!class_exists('C_NextGen_Global_Settings')) {
|
20 |
-
class C_NextGen_Global_Settings
|
21 |
static function get_instance()
|
22 |
{
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
|
|
|
|
27 |
}
|
28 |
}
|
29 |
}
|
5 |
class C_NextGen_Settings {
|
6 |
static function get_instance()
|
7 |
{
|
8 |
+
return C_Photocrati_Settings_Manager::get_instance();
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
}
|
10 |
}
|
11 |
}
|
12 |
|
13 |
if (!class_exists('C_NextGen_Global_Settings')) {
|
14 |
+
class C_NextGen_Global_Settings {
|
15 |
static function get_instance()
|
16 |
{
|
17 |
+
if (is_multisite()) {
|
18 |
+
return C_Photocrati_Global_Settings_Manager::get_instance();
|
19 |
+
}
|
20 |
+
else {
|
21 |
+
return C_Photocrati_Settings_Manager::get_instance();
|
22 |
+
}
|
23 |
}
|
24 |
}
|
25 |
}
|
non_pope/class.nextgen_shortcode_manager.php
DELETED
@@ -1,125 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class C_NextGen_Shortcode_Manager
|
4 |
-
{
|
5 |
-
private static $_instance = NULL;
|
6 |
-
private $_shortcodes = array();
|
7 |
-
|
8 |
-
/**
|
9 |
-
* Gets an instance of the class
|
10 |
-
* @return C_NextGen_Shortcode_Manager
|
11 |
-
*/
|
12 |
-
static function get_instance()
|
13 |
-
{
|
14 |
-
if (is_null(self::$_instance)) {
|
15 |
-
$klass = get_class();
|
16 |
-
self::$_instance = new $klass;
|
17 |
-
}
|
18 |
-
return self::$_instance;
|
19 |
-
}
|
20 |
-
|
21 |
-
/**
|
22 |
-
* Adds a shortcode
|
23 |
-
* @param $name
|
24 |
-
* @param $callback
|
25 |
-
*/
|
26 |
-
static function add($name, $callback)
|
27 |
-
{
|
28 |
-
$manager = self::get_instance();
|
29 |
-
$manager->add_shortcode($name, $callback);
|
30 |
-
}
|
31 |
-
|
32 |
-
/**
|
33 |
-
* Removes a previously added shortcode
|
34 |
-
* @param $name
|
35 |
-
*/
|
36 |
-
static function remove($name)
|
37 |
-
{
|
38 |
-
$manager = self::get_instance();
|
39 |
-
$manager->remove_shortcode($name);
|
40 |
-
}
|
41 |
-
|
42 |
-
/**
|
43 |
-
* Constructor
|
44 |
-
*/
|
45 |
-
private function __construct()
|
46 |
-
{
|
47 |
-
add_filter('the_content', array(&$this, 'deactivate_all'), 1);
|
48 |
-
add_filter('the_content', array(&$this, 'parse_content'), PHP_INT_MAX-1);
|
49 |
-
}
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Deactivates all shortcodes
|
53 |
-
*/
|
54 |
-
function deactivate_all($content)
|
55 |
-
{
|
56 |
-
foreach (array_keys($this->_shortcodes) as $shortcode) {
|
57 |
-
$this->deactivate($shortcode);
|
58 |
-
}
|
59 |
-
|
60 |
-
return $content;
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Activates all registered shortcodes
|
65 |
-
*/
|
66 |
-
function activate_all()
|
67 |
-
{
|
68 |
-
foreach (array_keys($this->_shortcodes) as $shortcode) {
|
69 |
-
$this->activate($shortcode);
|
70 |
-
}
|
71 |
-
}
|
72 |
-
|
73 |
-
/**
|
74 |
-
* Parses the content for shortcodes and returns the substituted content
|
75 |
-
* @param $content
|
76 |
-
* @return string
|
77 |
-
*/
|
78 |
-
function parse_content($content)
|
79 |
-
{
|
80 |
-
$this->activate_all();
|
81 |
-
return do_shortcode($content);
|
82 |
-
}
|
83 |
-
|
84 |
-
/**
|
85 |
-
* Adds a shortcode
|
86 |
-
* @param $name
|
87 |
-
* @param $callback
|
88 |
-
*/
|
89 |
-
function add_shortcode($name, $callback)
|
90 |
-
{
|
91 |
-
$this->_shortcodes[$name] = $callback;
|
92 |
-
$this->activate($name);
|
93 |
-
}
|
94 |
-
|
95 |
-
/**
|
96 |
-
* Activates a particular shortcode
|
97 |
-
* @param $shortcode
|
98 |
-
*/
|
99 |
-
function activate($shortcode)
|
100 |
-
{
|
101 |
-
if (isset($this->_shortcodes[$shortcode])) {
|
102 |
-
add_shortcode($shortcode, $this->_shortcodes[$shortcode]);
|
103 |
-
}
|
104 |
-
}
|
105 |
-
|
106 |
-
/**
|
107 |
-
* Removes a shortcode
|
108 |
-
* @param $name
|
109 |
-
*/
|
110 |
-
function remove_shortcode($name)
|
111 |
-
{
|
112 |
-
unset($this->_shortcodes[$name]);
|
113 |
-
$this->deactivate($name);
|
114 |
-
}
|
115 |
-
|
116 |
-
/**
|
117 |
-
* De-activates a shortcode
|
118 |
-
* @param $shortcode
|
119 |
-
*/
|
120 |
-
function deactivate($shortcode)
|
121 |
-
{
|
122 |
-
if (isset($this->_shortcodes[$shortcode]))
|
123 |
-
remove_shortcode($shortcode);
|
124 |
-
}
|
125 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
non_pope/class.nextgen_style_manager.php
CHANGED
@@ -135,7 +135,7 @@ class C_NextGen_Style_Manager
|
|
135 |
$abspath = $this->get_selected_stylesheet_saved_abspath($selected);
|
136 |
|
137 |
wp_mkdir_p(dirname($abspath));
|
138 |
-
if (is_writable($abspath) OR (
|
139 |
$retval = file_put_contents($abspath, $contents);
|
140 |
}
|
141 |
return $retval;
|
@@ -147,14 +147,7 @@ class C_NextGen_Style_Manager
|
|
147 |
*/
|
148 |
function get_selected_stylesheet()
|
149 |
{
|
150 |
-
|
151 |
-
|
152 |
-
// use the same css resource for all subsites when wpmuStyle=true
|
153 |
-
if (!is_multisite() || (is_multisite() && $settings->get('wpmuStyle')))
|
154 |
-
return $settings->get('CSSfile', 'nggallery.css');
|
155 |
-
else
|
156 |
-
return C_Nextgen_Global_Settings::get_instance()->get('wpmuCSSfile');
|
157 |
-
|
158 |
}
|
159 |
|
160 |
/**
|
@@ -175,7 +168,7 @@ class C_NextGen_Style_Manager
|
|
175 |
$selected
|
176 |
));
|
177 |
|
178 |
-
if (
|
179 |
$retval = $path;
|
180 |
break;
|
181 |
}
|
@@ -192,29 +185,24 @@ class C_NextGen_Style_Manager
|
|
192 |
{
|
193 |
if (!$selected) $selected = $this->get_selected_stylesheet();
|
194 |
|
195 |
-
|
196 |
trailingslashit(ABSPATH),
|
197 |
trailingslashit(site_url()),
|
198 |
$this->find_selected_stylesheet_abspath($selected)
|
199 |
);
|
200 |
-
|
201 |
-
return str_replace('\\', '/', $retval);
|
202 |
}
|
203 |
|
204 |
|
205 |
-
function find_all_stylesheets(
|
206 |
{
|
207 |
$retval = array();
|
208 |
-
if (!$dir)
|
209 |
-
$dir = $this->directories;
|
210 |
|
211 |
-
foreach (array_reverse($
|
212 |
$path = implode(DIRECTORY_SEPARATOR, array(
|
213 |
untrailingslashit($dir),
|
214 |
'*.css'
|
215 |
));
|
216 |
-
|
217 |
-
if (is_array($files)) foreach ($files as $abspath) {
|
218 |
if (($meta = $this->get_stylesheet_metadata($abspath))) {
|
219 |
$filename = $meta['filename'];
|
220 |
$retval[$filename] = $meta;
|
135 |
$abspath = $this->get_selected_stylesheet_saved_abspath($selected);
|
136 |
|
137 |
wp_mkdir_p(dirname($abspath));
|
138 |
+
if (is_writable($abspath) OR (!file_exists($abspath) && is_writable(dirname($abspath)))) {
|
139 |
$retval = file_put_contents($abspath, $contents);
|
140 |
}
|
141 |
return $retval;
|
147 |
*/
|
148 |
function get_selected_stylesheet()
|
149 |
{
|
150 |
+
return C_NextGen_Settings::get_instance()->get('CSSfile', 'nggallery.css');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
151 |
}
|
152 |
|
153 |
/**
|
168 |
$selected
|
169 |
));
|
170 |
|
171 |
+
if (file_exists($path)) {
|
172 |
$retval = $path;
|
173 |
break;
|
174 |
}
|
185 |
{
|
186 |
if (!$selected) $selected = $this->get_selected_stylesheet();
|
187 |
|
188 |
+
return str_replace(
|
189 |
trailingslashit(ABSPATH),
|
190 |
trailingslashit(site_url()),
|
191 |
$this->find_selected_stylesheet_abspath($selected)
|
192 |
);
|
|
|
|
|
193 |
}
|
194 |
|
195 |
|
196 |
+
function find_all_stylesheets()
|
197 |
{
|
198 |
$retval = array();
|
|
|
|
|
199 |
|
200 |
+
foreach (array_reverse($this->directories) as $dir) {
|
201 |
$path = implode(DIRECTORY_SEPARATOR, array(
|
202 |
untrailingslashit($dir),
|
203 |
'*.css'
|
204 |
));
|
205 |
+
foreach (glob($path) as $abspath) {
|
|
|
206 |
if (($meta = $this->get_stylesheet_metadata($abspath))) {
|
207 |
$filename = $meta['filename'];
|
208 |
$retval[$filename] = $meta;
|
non_pope/class.photocrati_cache.php
CHANGED
@@ -85,7 +85,7 @@ class C_Photocrati_Cache
|
|
85 |
/**
|
86 |
* Flush the entire cache
|
87 |
*/
|
88 |
-
static function flush($group=NULL
|
89 |
{
|
90 |
$retval = 0;
|
91 |
|
@@ -94,77 +94,36 @@ class C_Photocrati_Cache
|
|
94 |
// Delete all caches
|
95 |
if ($group == 'all') {
|
96 |
foreach (self::$_instances as $cache) {
|
97 |
-
$retval += self::flush($cache->group
|
98 |
}
|
99 |
}
|
100 |
|
101 |
// Delete items from a single cache in particular
|
102 |
else {
|
103 |
-
|
104 |
-
|
105 |
-
// Determine if the object cache is external, and not stored in the DB
|
106 |
-
// If it's external, we have to delete each transient, one by one
|
107 |
-
global $_wp_using_ext_object_cache, $wpdb;
|
108 |
-
if ($_wp_using_ext_object_cache) {
|
109 |
-
$keys = ($expired_only ? self::get_expired_key_list($group) : self::get_key_list($group));
|
110 |
-
foreach ($keys as $key) $cache->delete($key, FALSE);
|
111 |
-
$sql = $wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", "%%{$cache->group}%%");
|
112 |
-
if ($expired_only) $sql .= " AND option_value < ".time();
|
113 |
-
$retval = $wpdb->query($sql);
|
114 |
}
|
115 |
|
116 |
-
//
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
foreach ($keys as $value) {
|
122 |
-
$all_keys[] = "'{$cache->group}{$value}'";
|
123 |
-
$all_keys[] = "'_transient_timeout_{$value}'";
|
124 |
-
$all_keys[] = "'_transient_{$value}'";
|
125 |
-
}
|
126 |
-
unset($keys);
|
127 |
-
$all_keys = implode(',', $all_keys);
|
128 |
-
$sql = "DELETE FROM {$wpdb->options} WHERE option_name IN (". $all_keys. ')';
|
129 |
-
$retval = $wpdb->query($sql);
|
130 |
-
}
|
131 |
-
}
|
132 |
}
|
133 |
}
|
134 |
|
135 |
return $retval;
|
136 |
}
|
137 |
|
138 |
-
static function get_key_list($group=NULL
|
139 |
{
|
140 |
global $wpdb;
|
141 |
|
142 |
$cache = self::get_instance($group);
|
143 |
-
|
144 |
-
$sql = '';
|
145 |
-
if ($strip_group_name) {
|
146 |
-
$sql = $wpdb->prepare(
|
147 |
-
"SELECT REPLACE(option_name, %s, '') FROM {$wpdb->options} WHERE option_name LIKE %s",
|
148 |
-
$cache->group, '%'.$cache->group.'%'
|
149 |
-
);
|
150 |
-
}
|
151 |
-
else {
|
152 |
-
$sql = $wpdb->prepare(
|
153 |
-
"SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s",
|
154 |
-
'%'.$cache->group.'%'
|
155 |
-
);
|
156 |
-
}
|
157 |
-
|
158 |
-
if ($expired_only) $sql .= " AND option_value < ".time();
|
159 |
-
|
160 |
return $wpdb->get_col($sql);
|
161 |
}
|
162 |
|
163 |
-
static function get_expired_key_list($group=NULL, $strip_group_name=TRUE)
|
164 |
-
{
|
165 |
-
return self::get_key_list($group, $strip_group_name, TRUE);
|
166 |
-
}
|
167 |
-
|
168 |
|
169 |
/**
|
170 |
* Gets an item using a particular key
|
@@ -197,7 +156,7 @@ class C_Photocrati_Cache
|
|
197 |
if (is_array($key)) $key = self::generate_key($key);
|
198 |
if (self::$force_update OR $this->lookup($key, FALSE) === FALSE) {
|
199 |
set_transient($key, $value, $ttl);
|
200 |
-
update_option($this->group.$key,
|
201 |
$retval = $key;
|
202 |
}
|
203 |
}
|
85 |
/**
|
86 |
* Flush the entire cache
|
87 |
*/
|
88 |
+
static function flush($group=NULL)
|
89 |
{
|
90 |
$retval = 0;
|
91 |
|
94 |
// Delete all caches
|
95 |
if ($group == 'all') {
|
96 |
foreach (self::$_instances as $cache) {
|
97 |
+
$retval += self::flush($cache->group);
|
98 |
}
|
99 |
}
|
100 |
|
101 |
// Delete items from a single cache in particular
|
102 |
else {
|
103 |
+
foreach (self::get_key_list($group) as $key) {
|
104 |
+
self::delete($key, FALSE, $group);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
+
// Delete list of cached items
|
108 |
+
global $wpdb;
|
109 |
+
$cache = self::get_instance($group);
|
110 |
+
$sql = $wpdb->prepare("DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", '%'.$cache->group.'%');
|
111 |
+
$retval = $wpdb->query($sql);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
}
|
113 |
}
|
114 |
|
115 |
return $retval;
|
116 |
}
|
117 |
|
118 |
+
static function get_key_list($group=NULL)
|
119 |
{
|
120 |
global $wpdb;
|
121 |
|
122 |
$cache = self::get_instance($group);
|
123 |
+
$sql = $wpdb->prepare("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", '%'.$cache->group.'%');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
return $wpdb->get_col($sql);
|
125 |
}
|
126 |
|
|
|
|
|
|
|
|
|
|
|
127 |
|
128 |
/**
|
129 |
* Gets an item using a particular key
|
156 |
if (is_array($key)) $key = self::generate_key($key);
|
157 |
if (self::$force_update OR $this->lookup($key, FALSE) === FALSE) {
|
158 |
set_transient($key, $value, $ttl);
|
159 |
+
update_option($this->group.$key, 1);
|
160 |
$retval = $key;
|
161 |
}
|
162 |
}
|
non_pope/class.photocrati_installer.php
CHANGED
@@ -54,103 +54,39 @@ if (!class_exists('C_Photocrati_Installer'))
|
|
54 |
if (method_exists($handler, 'uninstall')) return $handler->uninstall($hard);
|
55 |
|
56 |
if ($hard) {
|
|
|
57 |
C_NextGen_Settings::get_instance()->destroy();
|
58 |
-
C_NextGen_Global_Settings::get_instance()->destroy();
|
59 |
}
|
60 |
}
|
61 |
|
62 |
static function update($reset=FALSE)
|
63 |
{
|
64 |
-
$
|
65 |
-
|
|
|
|
|
66 |
|
67 |
-
|
68 |
-
//
|
69 |
-
// NextGen 2x was not multisite compatible until 2.0.18. Users that upgraded before this
|
70 |
-
// will have nearly all of their settings stored globally (network wide) in wp_sitemeta. If
|
71 |
-
// pope_module_list (which should always be a local setting) exists site-wide we wipe the current
|
72 |
-
// global ngg_options and restore from defaults. This should only ever run once.
|
73 |
-
if (is_multisite() && isset($global_settings->pope_module_list))
|
74 |
-
{
|
75 |
-
// Setting this to TRUE will wipe current settings for display types, but also
|
76 |
-
// allows the display type installer to run correctly
|
77 |
-
$reset = TRUE;
|
78 |
|
79 |
-
|
80 |
-
$global_defaults = $settings_installer->get_global_defaults();
|
81 |
|
82 |
-
// Preserve the network options we honor by restoring them after calling $global_settings->reset()
|
83 |
-
$global_settings_to_keep = array();
|
84 |
-
foreach ($global_defaults as $key => $val) {
|
85 |
-
$global_settings_to_keep[$key] = $global_settings->$key;
|
86 |
-
}
|
87 |
-
|
88 |
-
// Resets internal options to an empty array
|
89 |
-
$global_settings->reset();
|
90 |
-
|
91 |
-
// Restore the defaults, then our saved values. This must be done again later because
|
92 |
-
// we've set $reset to TRUE.
|
93 |
-
$settings_installer->install_global_settings();
|
94 |
-
foreach ($global_settings_to_keep as $key => $val) {
|
95 |
-
$global_settings->$key = $val;
|
96 |
-
}
|
97 |
-
}
|
98 |
-
|
99 |
-
$last_module_list = $reset ? array() : $local_settings->get('pope_module_list', array());
|
100 |
-
$current_module_list = self::_generate_module_info();
|
101 |
-
|
102 |
-
if (count(($modules = array_diff($current_module_list, $last_module_list))) > 0)
|
103 |
-
{
|
104 |
// The cache should be flushed
|
105 |
C_Photocrati_Cache::flush();
|
106 |
|
107 |
-
// Remove all NGG created cron jobs
|
108 |
-
self::refresh_cron();
|
109 |
-
|
110 |
// Delete auto-update cache
|
111 |
update_option('photocrati_auto_update_admin_update_list', null);
|
112 |
update_option('photocrati_auto_update_admin_check_date', '');
|
113 |
|
114 |
-
// Other Pope applications might be loaded, and therefore
|
115 |
-
// all singletons should be destroyed, so that they can be
|
116 |
-
// adapted as necessary. For now, we'll just assume that the factory
|
117 |
-
// is the only singleton that will be used by other Pope applications
|
118 |
-
C_Component_Factory::$_instances = array();
|
119 |
-
|
120 |
foreach ($modules as $module_name) {
|
121 |
if (($handler = self::get_handler_instance(array_shift(explode('|', $module_name))))) {
|
122 |
-
if (method_exists($handler, 'install'))
|
123 |
-
$handler->install($reset);
|
124 |
}
|
125 |
}
|
126 |
|
127 |
-
// Update the module list
|
128 |
-
$local_settings->set('pope_module_list', $current_module_list);
|
129 |
-
|
130 |
-
// NOTE & TODO: if the above section that declares $global_settings_to_keep is removed this should also
|
131 |
-
// Since a hard-reset of the settings was forced we must again re-apply our previously saved values
|
132 |
-
if (isset($global_settings_to_keep)) {
|
133 |
-
foreach ($global_settings_to_keep as $key => $val) {
|
134 |
-
$global_settings->$key = $val;
|
135 |
-
}
|
136 |
-
}
|
137 |
-
|
138 |
// Save any changes settings
|
139 |
$global_settings->save();
|
140 |
$local_settings->save();
|
141 |
-
|
142 |
-
|
143 |
-
// Another workaround to an issue caused by NextGen's lack of multisite compatibility. It's possible
|
144 |
-
// the string substitation wasn't performed, so if a '%' symbol exists in gallerypath we reset it. It's
|
145 |
-
// another db call, but again this should only ever run once.
|
146 |
-
//
|
147 |
-
// Remove this when removing the above reset-global-settings code
|
148 |
-
if (strpos($local_settings->gallerypath, '%'))
|
149 |
-
{
|
150 |
-
$settings_installer = new C_NextGen_Settings_Installer();
|
151 |
-
$local_settings->gallerypath = $settings_installer->gallerypath_replace($global_settings->gallerypath);
|
152 |
-
$local_settings->save();
|
153 |
-
}
|
154 |
}
|
155 |
|
156 |
static function _generate_module_info()
|
@@ -159,28 +95,9 @@ if (!class_exists('C_Photocrati_Installer'))
|
|
159 |
$registry = C_Component_Registry::get_instance();
|
160 |
foreach ($registry->get_module_list() as $module_id) {
|
161 |
$module_version = $registry->get_module($module_id)->module_version;
|
162 |
-
$retval[
|
163 |
}
|
164 |
return $retval;
|
165 |
}
|
166 |
-
|
167 |
-
static function refresh_cron()
|
168 |
-
{
|
169 |
-
@ini_set('memory_limit', -1);
|
170 |
-
|
171 |
-
// Remove all cron jobs created by NextGEN Gallery
|
172 |
-
$cron = _get_cron_array();
|
173 |
-
if (is_array($cron)) {
|
174 |
-
foreach ($cron as $timestamp => $job) {
|
175 |
-
if (is_array($job)) {
|
176 |
-
unset($cron[$timestamp]['ngg_delete_expired_transients']);
|
177 |
-
if (empty($cron[$timestamp])) {
|
178 |
-
unset($cron[$timestamp]);
|
179 |
-
}
|
180 |
-
}
|
181 |
-
}
|
182 |
-
}
|
183 |
-
_set_cron_array($cron);
|
184 |
-
}
|
185 |
}
|
186 |
}
|
54 |
if (method_exists($handler, 'uninstall')) return $handler->uninstall($hard);
|
55 |
|
56 |
if ($hard) {
|
57 |
+
C_NextGen_Global_Settings::get_instance()->destroy();
|
58 |
C_NextGen_Settings::get_instance()->destroy();
|
|
|
59 |
}
|
60 |
}
|
61 |
|
62 |
static function update($reset=FALSE)
|
63 |
{
|
64 |
+
$global_settings = C_NextGen_Global_Settings::get_instance();
|
65 |
+
$local_settings = C_NextGen_Settings::get_instance();
|
66 |
+
$last_module_list = $reset ? array() : $global_settings->get('pope_module_list', array());
|
67 |
+
$current_module_list = self::_generate_module_info();
|
68 |
|
69 |
+
$global_settings->set('pope_module_list', $current_module_list);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
|
71 |
+
if (count(($modules = array_diff($current_module_list, $last_module_list)))>0) {
|
|
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
// The cache should be flushed
|
74 |
C_Photocrati_Cache::flush();
|
75 |
|
|
|
|
|
|
|
76 |
// Delete auto-update cache
|
77 |
update_option('photocrati_auto_update_admin_update_list', null);
|
78 |
update_option('photocrati_auto_update_admin_check_date', '');
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
foreach ($modules as $module_name) {
|
81 |
if (($handler = self::get_handler_instance(array_shift(explode('|', $module_name))))) {
|
82 |
+
if (method_exists($handler, 'install')) $handler->install($reset);
|
|
|
83 |
}
|
84 |
}
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
// Save any changes settings
|
87 |
$global_settings->save();
|
88 |
$local_settings->save();
|
89 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
}
|
91 |
|
92 |
static function _generate_module_info()
|
95 |
$registry = C_Component_Registry::get_instance();
|
96 |
foreach ($registry->get_module_list() as $module_id) {
|
97 |
$module_version = $registry->get_module($module_id)->module_version;
|
98 |
+
$retval[] = "{$module_id}|{$module_version}";
|
99 |
}
|
100 |
return $retval;
|
101 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
}
|
103 |
}
|
non_pope/class.photocrati_resource_manager.php
CHANGED
@@ -3,14 +3,12 @@
|
|
3 |
class C_Photocrati_Resource_Manager
|
4 |
{
|
5 |
static $instance = NULL;
|
6 |
-
|
7 |
var $buffer = '';
|
8 |
var $styles = '';
|
9 |
var $scripts = '';
|
10 |
var $other_output = '';
|
11 |
-
var $wrote_footer =
|
12 |
-
|
13 |
-
var $valid_request = TRUE;
|
14 |
|
15 |
/**
|
16 |
* Start buffering all generated output. We'll then do two things with the buffer
|
@@ -19,49 +17,12 @@ class C_Photocrati_Resource_Manager
|
|
19 |
*/
|
20 |
function __construct()
|
21 |
{
|
22 |
-
//
|
23 |
-
$
|
24 |
-
|
25 |
-
add_action('init',array(&$this, 'start_buffer'), 1);
|
26 |
-
}
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Determines if the resource manager should perform it's routines for this request
|
30 |
-
* @return bool
|
31 |
-
*/
|
32 |
-
function validate_request()
|
33 |
-
{
|
34 |
-
$retval = TRUE;
|
35 |
-
|
36 |
-
if (is_admin()) {
|
37 |
-
if (isset($_REQUEST['page']) && !preg_match("#^(ngg|nextgen)#", $_REQUEST['page'])) $retval = FALSE;
|
38 |
-
}
|
39 |
-
|
40 |
-
if (strpos($_SERVER['REQUEST_URI'], 'wp-admin/update') !== FALSE) $retval = FALSE;
|
41 |
-
else if (isset($_GET['display_gallery_iframe'])) $retval = FALSE;
|
42 |
-
else if (defined('WP_ADMIN') && WP_ADMIN && defined('DOING_AJAX') && DOING_AJAX) $retval = FALSE;
|
43 |
-
else if (preg_match("/(js|css|xsl|xml|kml)$/", $_SERVER['REQUEST_URI'])) $retval = FALSE;
|
44 |
-
elseif (preg_match("/\\.(\\w{3,4})$/", $_SERVER['REQUEST_URI'], $match)) {
|
45 |
-
if (!in_array($match[1], array('htm', 'html', 'php'))) {
|
46 |
-
$retval = FALSE;
|
47 |
-
}
|
48 |
-
}
|
49 |
-
|
50 |
-
$this->valid_request = $retval;
|
51 |
-
}
|
52 |
-
|
53 |
-
/**
|
54 |
-
* Start the output buffers
|
55 |
-
*/
|
56 |
-
function start_buffer()
|
57 |
-
{
|
58 |
-
if (apply_filters('run_ngg_resource_manager', $this->valid_request)) {
|
59 |
-
ob_start(array(&$this, 'output_buffer_handler'));
|
60 |
ob_start(array(&$this, 'get_buffer'));
|
61 |
-
|
62 |
add_action('wp_print_footer_scripts', array(&$this, 'get_resources'), 1);
|
63 |
add_action('admin_print_footer_scripts', array(&$this, 'get_resources'), 1);
|
64 |
-
add_action('shutdown', array(&$this, 'shutdown'));
|
65 |
}
|
66 |
}
|
67 |
|
@@ -84,16 +45,6 @@ class C_Photocrati_Resource_Manager
|
|
84 |
$this->wrote_footer = TRUE;
|
85 |
}
|
86 |
|
87 |
-
/**
|
88 |
-
* Output the buffer after PHP execution has ended (but before shutdown)
|
89 |
-
* @param $content
|
90 |
-
* @return string
|
91 |
-
*/
|
92 |
-
function output_buffer_handler($content)
|
93 |
-
{
|
94 |
-
return $this->output_buffer();
|
95 |
-
}
|
96 |
-
|
97 |
/**
|
98 |
* Removes the closing </html> tag from the output buffer. We'll then write our own closing tag
|
99 |
* in the shutdown function after running wp_print_footer_scripts()
|
@@ -111,84 +62,44 @@ class C_Photocrati_Resource_Manager
|
|
111 |
*/
|
112 |
function move_resources()
|
113 |
{
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
$this->buffer = str_replace('</body>', $this->other_output.'</body>', $this->buffer);
|
127 |
-
}
|
128 |
}
|
129 |
}
|
130 |
|
131 |
-
|
132 |
-
* When PHP has finished, we output the footer scripts and closing tags
|
133 |
-
*/
|
134 |
-
function output_buffer($in_shutdown=FALSE)
|
135 |
{
|
136 |
-
// If the footer scripts haven't been outputted, then
|
137 |
-
// we need to take action - as they're required
|
138 |
if (!$this->wrote_footer) {
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
if (defined('W3TC') && defined('WP_DEBUG') && WP_DEBUG) {
|
143 |
-
if (defined('DONOTCACHEPAGE')) define('DONOTCACHEPAGE', TRUE);
|
144 |
-
if (!did_action('wp_footer')) {
|
145 |
-
error_log("We're sorry, but your theme's page template didn't make a call to wp_footer(), which is required by NextGEN Gallery. Please add this call to your page templates.");
|
146 |
-
}
|
147 |
-
else {
|
148 |
-
error_log("We're sorry, but your theme's page template didn't make a call to wp_print_footer_scripts(), which is required by NextGEN Gallery. Please add this call to your page templates.");
|
149 |
-
}
|
150 |
-
}
|
151 |
-
|
152 |
-
// We don't want to manipulate the buffer if it doesn't contain HTML
|
153 |
-
elseif (strpos($this->buffer, '</body>') === FALSE) {
|
154 |
-
$this->valid_request = FALSE;
|
155 |
-
}
|
156 |
-
|
157 |
-
// The output_buffer() function has been called in the PHP shutdown callback
|
158 |
-
// This will allow us to print the scripts ourselves and manipulate the buffer
|
159 |
-
if ($in_shutdown === TRUE) {
|
160 |
-
ob_start();
|
161 |
-
if (!did_action('wp_footer')) {
|
162 |
-
wp_footer();
|
163 |
-
}
|
164 |
-
else {
|
165 |
-
wp_print_footer_scripts();
|
166 |
-
}
|
167 |
-
$this->other_output = ob_get_clean();
|
168 |
-
|
169 |
-
}
|
170 |
-
|
171 |
-
// W3TC isn't activated and we're not in the shutdown callback.
|
172 |
-
// We'll therefore add a shutdown callback to print the scripts
|
173 |
-
else {
|
174 |
-
$this->run_shutdown = TRUE;
|
175 |
-
return '';
|
176 |
-
}
|
177 |
}
|
178 |
-
|
179 |
-
// Once we have the footer scripts, we can modify the buffer and
|
180 |
-
// move the resources around
|
181 |
-
if ($this->wrote_footer) $this->move_resources();
|
182 |
-
|
183 |
-
return $this->buffer;
|
184 |
}
|
185 |
|
|
|
186 |
/**
|
187 |
-
* PHP
|
188 |
*/
|
189 |
-
function
|
190 |
{
|
191 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
}
|
193 |
|
194 |
static function init()
|
@@ -196,4 +107,4 @@ class C_Photocrati_Resource_Manager
|
|
196 |
$klass = get_class();
|
197 |
return self::$instance = new $klass;
|
198 |
}
|
199 |
-
}
|
3 |
class C_Photocrati_Resource_Manager
|
4 |
{
|
5 |
static $instance = NULL;
|
|
|
6 |
var $buffer = '';
|
7 |
var $styles = '';
|
8 |
var $scripts = '';
|
9 |
var $other_output = '';
|
10 |
+
var $wrote_footer = FALSE;
|
11 |
+
|
|
|
12 |
|
13 |
/**
|
14 |
* Start buffering all generated output. We'll then do two things with the buffer
|
17 |
*/
|
18 |
function __construct()
|
19 |
{
|
20 |
+
// We use this everywhere EXCEPT on wp-admin/update
|
21 |
+
if (!strpos($_SERVER['REQUEST_URI'], 'wp-admin/update')) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
ob_start(array(&$this, 'get_buffer'));
|
23 |
+
add_action('shutdown', array(&$this, 'output_buffer'));
|
24 |
add_action('wp_print_footer_scripts', array(&$this, 'get_resources'), 1);
|
25 |
add_action('admin_print_footer_scripts', array(&$this, 'get_resources'), 1);
|
|
|
26 |
}
|
27 |
}
|
28 |
|
45 |
$this->wrote_footer = TRUE;
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
/**
|
49 |
* Removes the closing </html> tag from the output buffer. We'll then write our own closing tag
|
50 |
* in the shutdown function after running wp_print_footer_scripts()
|
62 |
*/
|
63 |
function move_resources()
|
64 |
{
|
65 |
+
// Move stylesheets to head
|
66 |
+
if ($this->styles) {
|
67 |
+
$this->buffer = str_ireplace('</head>', $this->styles.'</head>', $this->buffer);
|
68 |
+
}
|
69 |
+
|
70 |
+
// Move the scripts to the bottom of the page
|
71 |
+
if ($this->scripts) {
|
72 |
+
$this->buffer = str_ireplace('</body>', $this->scripts.'</body>', $this->buffer);
|
73 |
+
}
|
74 |
+
|
75 |
+
if ($this->other_output) {
|
76 |
+
$this->buffer = str_replace('</body>', $this->other_output.'</body>', $this->buffer);
|
|
|
|
|
77 |
}
|
78 |
}
|
79 |
|
80 |
+
function print_footer_scripts_if_missing()
|
|
|
|
|
|
|
81 |
{
|
|
|
|
|
82 |
if (!$this->wrote_footer) {
|
83 |
+
ob_start();
|
84 |
+
wp_print_footer_scripts();
|
85 |
+
$this->other_output = ob_get_clean();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
}
|
88 |
|
89 |
+
|
90 |
/**
|
91 |
+
* When PHP has finished, we output the footer scripts and closing tags
|
92 |
*/
|
93 |
+
function output_buffer()
|
94 |
{
|
95 |
+
// Ensure that footer scripts are always generated
|
96 |
+
$this->print_footer_scripts_if_missing();
|
97 |
+
|
98 |
+
// Move resources
|
99 |
+
$this->move_resources();
|
100 |
+
|
101 |
+
// Output the buffer
|
102 |
+
echo $this->buffer;
|
103 |
}
|
104 |
|
105 |
static function init()
|
107 |
$klass = get_class();
|
108 |
return self::$instance = new $klass;
|
109 |
}
|
110 |
+
}
|
non_pope/class.photocrati_settings_manager.php
CHANGED
@@ -7,10 +7,9 @@ if (!class_exists('C_Photocrati_Settings_Manager_Base')) {
|
|
7 |
*/
|
8 |
abstract class C_Photocrati_Settings_Manager_Base implements ArrayAccess
|
9 |
{
|
10 |
-
static $option_name
|
11 |
-
protected $_options
|
12 |
-
protected $_defaults
|
13 |
-
protected $_option_handlers = array();
|
14 |
|
15 |
abstract function save();
|
16 |
abstract function destroy();
|
@@ -21,39 +20,6 @@ if (!class_exists('C_Photocrati_Settings_Manager_Base')) {
|
|
21 |
$this->load();
|
22 |
}
|
23 |
|
24 |
-
/**
|
25 |
-
* Adds a class to handle dynamic options
|
26 |
-
* @param string $klass
|
27 |
-
* @param array $options
|
28 |
-
*/
|
29 |
-
function add_option_handler($klass, $options=array())
|
30 |
-
{
|
31 |
-
if (!is_array($options)) $options = array($options);
|
32 |
-
foreach ($options as $option_name) {
|
33 |
-
$this->_option_handlers[$option_name] = $klass;
|
34 |
-
}
|
35 |
-
}
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Gets a handler used to provide a dynamic option
|
39 |
-
* @param string $option_name
|
40 |
-
* @return null|mixed
|
41 |
-
*/
|
42 |
-
protected function _get_option_handler($option_name, $method='get')
|
43 |
-
{
|
44 |
-
$retval = NULL;
|
45 |
-
|
46 |
-
if (isset($this->_option_handlers[$option_name])) {
|
47 |
-
if (!is_object($this->_option_handlers[$option_name])) {
|
48 |
-
$klass = $this->_option_handlers[$option_name];
|
49 |
-
$this->_option_handlers[$option_name] = new $klass;
|
50 |
-
}
|
51 |
-
$retval = $this->_option_handlers[$option_name];
|
52 |
-
if (!method_exists($retval, $method)) $retval = NULL;
|
53 |
-
}
|
54 |
-
return $retval;
|
55 |
-
}
|
56 |
-
|
57 |
/**
|
58 |
* Gets the value of a particular setting
|
59 |
* @param $key
|
@@ -66,9 +32,6 @@ if (!class_exists('C_Photocrati_Settings_Manager_Base')) {
|
|
66 |
|
67 |
if (isset($this->_options[$key]))
|
68 |
$retval = $this->_options[$key];
|
69 |
-
elseif (($handler = $this->_get_option_handler($key, 'get'))) {
|
70 |
-
$retval = $handler->get($key, $default);
|
71 |
-
}
|
72 |
|
73 |
// In case a stdObject has been passed in as a value, we
|
74 |
// want to only return scalar values or arrays
|
@@ -83,16 +46,13 @@ if (!class_exists('C_Photocrati_Settings_Manager_Base')) {
|
|
83 |
* @param mixed $value
|
84 |
* @return mixed
|
85 |
*/
|
86 |
-
function set($key, $value=NULL
|
87 |
{
|
88 |
if (is_object($value)) $value = (array) $value;
|
89 |
|
90 |
if (is_array($key)) {
|
91 |
foreach ($key as $k=>$v) $this->set($k, $v);
|
92 |
}
|
93 |
-
elseif (!$skip_handlers && ($handler = $this->_get_option_handler($key, 'set'))) {
|
94 |
-
$handler->set($key, $value);
|
95 |
-
}
|
96 |
else $this->_options[$key] = $value;
|
97 |
|
98 |
return $this;
|
@@ -104,12 +64,7 @@ if (!class_exists('C_Photocrati_Settings_Manager_Base')) {
|
|
104 |
*/
|
105 |
function delete($key)
|
106 |
{
|
107 |
-
|
108 |
-
$handler->delete($key);
|
109 |
-
}
|
110 |
-
else {
|
111 |
-
unset($this->_options[$key]);
|
112 |
-
}
|
113 |
}
|
114 |
|
115 |
/**
|
@@ -242,7 +197,6 @@ if (!class_exists('C_Photocrati_Global_Settings_Manager')) {
|
|
242 |
{
|
243 |
$this->_options = get_site_option(self::$option_name, $this->to_array());
|
244 |
if (!$this->_options) $this->_options = array();
|
245 |
-
else if (is_string($this->_options)) $this->_options = unserialize($this->_options);
|
246 |
}
|
247 |
|
248 |
function destroy()
|
@@ -284,8 +238,6 @@ if (!class_exists('C_Photocrati_Settings_Manager')) {
|
|
284 |
function load()
|
285 |
{
|
286 |
$this->_options = get_option(self::$option_name, array());
|
287 |
-
if (!$this->_options) $this->_options = array();
|
288 |
-
else if (is_string($this->_options)) $this->_options = unserialize($this->_options);
|
289 |
}
|
290 |
|
291 |
function destroy()
|
7 |
*/
|
8 |
abstract class C_Photocrati_Settings_Manager_Base implements ArrayAccess
|
9 |
{
|
10 |
+
static $option_name = 'pope_settings';
|
11 |
+
protected $_options = array();
|
12 |
+
protected $_defaults = array();
|
|
|
13 |
|
14 |
abstract function save();
|
15 |
abstract function destroy();
|
20 |
$this->load();
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* Gets the value of a particular setting
|
25 |
* @param $key
|
32 |
|
33 |
if (isset($this->_options[$key]))
|
34 |
$retval = $this->_options[$key];
|
|
|
|
|
|
|
35 |
|
36 |
// In case a stdObject has been passed in as a value, we
|
37 |
// want to only return scalar values or arrays
|
46 |
* @param mixed $value
|
47 |
* @return mixed
|
48 |
*/
|
49 |
+
function set($key, $value=NULL)
|
50 |
{
|
51 |
if (is_object($value)) $value = (array) $value;
|
52 |
|
53 |
if (is_array($key)) {
|
54 |
foreach ($key as $k=>$v) $this->set($k, $v);
|
55 |
}
|
|
|
|
|
|
|
56 |
else $this->_options[$key] = $value;
|
57 |
|
58 |
return $this;
|
64 |
*/
|
65 |
function delete($key)
|
66 |
{
|
67 |
+
unset($this->_options[$key]);
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
|
70 |
/**
|
197 |
{
|
198 |
$this->_options = get_site_option(self::$option_name, $this->to_array());
|
199 |
if (!$this->_options) $this->_options = array();
|
|
|
200 |
}
|
201 |
|
202 |
function destroy()
|
238 |
function load()
|
239 |
{
|
240 |
$this->_options = get_option(self::$option_name, array());
|
|
|
|
|
241 |
}
|
242 |
|
243 |
function destroy()
|
pope/lib/autoload.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
if (!defined('POPE_VERSION')) {
|
4 |
-
define('POPE_VERSION', '0.
|
5 |
require_once('class.extensibleobject.php');
|
6 |
require_once('interface.component.php');
|
7 |
require_once('class.component.php');
|
1 |
<?php
|
2 |
|
3 |
if (!defined('POPE_VERSION')) {
|
4 |
+
define('POPE_VERSION', '0.1');
|
5 |
require_once('class.extensibleobject.php');
|
6 |
require_once('interface.component.php');
|
7 |
require_once('class.component.php');
|
pope/lib/class.base_module.php
CHANGED
@@ -33,7 +33,7 @@ abstract class C_Base_Module extends C_Component
|
|
33 |
/**
|
34 |
* Defines the module
|
35 |
*/
|
36 |
-
function define($id
|
37 |
{
|
38 |
parent::define($context);
|
39 |
$this->implement('I_Pope_Module');
|
33 |
/**
|
34 |
* Defines the module
|
35 |
*/
|
36 |
+
function define($id, $name, $description='', $version='', $uri='', $author='', $author_uri='', $context=FALSE)
|
37 |
{
|
38 |
parent::define($context);
|
39 |
$this->implement('I_Pope_Module');
|
pope/lib/class.base_product.php
CHANGED
@@ -12,9 +12,9 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
12 |
*/
|
13 |
abstract class C_Base_Product extends C_Base_Module
|
14 |
{
|
15 |
-
function define($id
|
16 |
{
|
17 |
-
parent::define($id, $name, $description, $version, $uri, $author, $author_uri
|
18 |
|
19 |
$this->get_registry()->add_product($this->module_id, $this);
|
20 |
}
|
12 |
*/
|
13 |
abstract class C_Base_Product extends C_Base_Module
|
14 |
{
|
15 |
+
function define($id, $name, $description='', $version='', $uri='', $author='', $author_uri='')
|
16 |
{
|
17 |
+
parent::define($id, $name, $description, $version, $uri, $author, $author_uri);
|
18 |
|
19 |
$this->get_registry()->add_product($this->module_id, $this);
|
20 |
}
|
pope/lib/class.component_factory.php
CHANGED
@@ -7,9 +7,9 @@ class C_Component_Factory extends C_Component
|
|
7 |
{
|
8 |
static $_instances = array();
|
9 |
|
10 |
-
function define(
|
11 |
{
|
12 |
-
parent::define(
|
13 |
$this->implement('I_Component_Factory');
|
14 |
}
|
15 |
|
7 |
{
|
8 |
static $_instances = array();
|
9 |
|
10 |
+
function define()
|
11 |
{
|
12 |
+
parent::define();
|
13 |
$this->implement('I_Component_Factory');
|
14 |
}
|
15 |
|
pope/lib/class.extensibleobject.php
CHANGED
@@ -750,7 +750,7 @@ class ExtensibleObject extends PopeHelpers
|
|
750 |
*/
|
751 |
function __call($method, $args)
|
752 |
{
|
753 |
-
$this->
|
754 |
|
755 |
// Run pre hooks?
|
756 |
if ($this->are_pre_hooks_enabled($method) && $this->get_method_property($method, self::METHOD_PROPERTY_RUN_PRE_HOOKS)) {
|
@@ -833,10 +833,7 @@ class ExtensibleObject extends PopeHelpers
|
|
833 |
}
|
834 |
}
|
835 |
|
836 |
-
|
837 |
-
$retval = $this->get_method_property($method, self::METHOD_PROPERTY_RETURN_VALUE);
|
838 |
-
$this->remove_method_properties($method);
|
839 |
-
return $retval;
|
840 |
}
|
841 |
|
842 |
|
@@ -1184,7 +1181,7 @@ class ExtensibleObject extends PopeHelpers
|
|
1184 |
* before every method call (before pre-hooks)
|
1185 |
* @param string $method
|
1186 |
*/
|
1187 |
-
function
|
1188 |
{
|
1189 |
$this->_method_properties[$method] = array(
|
1190 |
'run' => TRUE,
|
@@ -1194,35 +1191,6 @@ class ExtensibleObject extends PopeHelpers
|
|
1194 |
);
|
1195 |
}
|
1196 |
|
1197 |
-
/**
|
1198 |
-
* Removes the cache of the method properties
|
1199 |
-
* @param $method
|
1200 |
-
*/
|
1201 |
-
function remove_method_properties($method)
|
1202 |
-
{
|
1203 |
-
unset($this->_method_properties[$method]);
|
1204 |
-
}
|
1205 |
-
|
1206 |
-
/**
|
1207 |
-
* Gets all method properties
|
1208 |
-
* @return array
|
1209 |
-
*/
|
1210 |
-
function get_method_properties($method)
|
1211 |
-
{
|
1212 |
-
return $this->_method_properties[$method];
|
1213 |
-
}
|
1214 |
-
|
1215 |
-
/**
|
1216 |
-
* Sets all method properties
|
1217 |
-
* @param $method
|
1218 |
-
* @param $props
|
1219 |
-
*/
|
1220 |
-
function set_method_properties($method, $props)
|
1221 |
-
{
|
1222 |
-
foreach ($props as $key => $value) {
|
1223 |
-
$this->set_method_property($method, $key, $value);
|
1224 |
-
}
|
1225 |
-
}
|
1226 |
|
1227 |
/**
|
1228 |
* Returns TRUE if the ExtensibleObject has decided to implement a
|
@@ -1323,9 +1291,6 @@ class Mixin extends PopeHelpers
|
|
1323 |
$backtrace = debug_backtrace();
|
1324 |
$klass = get_class($backtrace[0]['object']);
|
1325 |
|
1326 |
-
// Get the method properties. We'll store this afterwards.
|
1327 |
-
$props = $this->object->get_method_properties($method);
|
1328 |
-
|
1329 |
// Perform the routine described above...
|
1330 |
$this->object->disable_pre_hooks($method);
|
1331 |
$this->object->disable_post_hooks($method);
|
@@ -1343,9 +1308,6 @@ class Mixin extends PopeHelpers
|
|
1343 |
$this->object->enable_post_hooks($method);
|
1344 |
$this->object->enable_mixin($method, $klass);
|
1345 |
|
1346 |
-
// Re-set all method properties
|
1347 |
-
$this->object->set_method_properties($method, $props);
|
1348 |
-
|
1349 |
return $retval;
|
1350 |
}
|
1351 |
|
@@ -1404,7 +1366,7 @@ class Hook extends Mixin
|
|
1404 |
* Provides an alias for call_anchor, as there's no parent
|
1405 |
* to call in the context of a hook.
|
1406 |
*/
|
1407 |
-
function call_parent(
|
1408 |
{
|
1409 |
$args = func_get_args();
|
1410 |
return call_user_func_array(
|
750 |
*/
|
751 |
function __call($method, $args)
|
752 |
{
|
753 |
+
$this->clear_method_properties($method, $args);
|
754 |
|
755 |
// Run pre hooks?
|
756 |
if ($this->are_pre_hooks_enabled($method) && $this->get_method_property($method, self::METHOD_PROPERTY_RUN_PRE_HOOKS)) {
|
833 |
}
|
834 |
}
|
835 |
|
836 |
+
return $this->get_method_property($method, self::METHOD_PROPERTY_RETURN_VALUE);
|
|
|
|
|
|
|
837 |
}
|
838 |
|
839 |
|
1181 |
* before every method call (before pre-hooks)
|
1182 |
* @param string $method
|
1183 |
*/
|
1184 |
+
function clear_method_properties($method, $args=array())
|
1185 |
{
|
1186 |
$this->_method_properties[$method] = array(
|
1187 |
'run' => TRUE,
|
1191 |
);
|
1192 |
}
|
1193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1194 |
|
1195 |
/**
|
1196 |
* Returns TRUE if the ExtensibleObject has decided to implement a
|
1291 |
$backtrace = debug_backtrace();
|
1292 |
$klass = get_class($backtrace[0]['object']);
|
1293 |
|
|
|
|
|
|
|
1294 |
// Perform the routine described above...
|
1295 |
$this->object->disable_pre_hooks($method);
|
1296 |
$this->object->disable_post_hooks($method);
|
1308 |
$this->object->enable_post_hooks($method);
|
1309 |
$this->object->enable_mixin($method, $klass);
|
1310 |
|
|
|
|
|
|
|
1311 |
return $retval;
|
1312 |
}
|
1313 |
|
1366 |
* Provides an alias for call_anchor, as there's no parent
|
1367 |
* to call in the context of a hook.
|
1368 |
*/
|
1369 |
+
function call_parent()
|
1370 |
{
|
1371 |
$args = func_get_args();
|
1372 |
return call_user_func_array(
|
products/photocrati_nextgen/modules/ajax/class.ajax_controller.php
CHANGED
@@ -12,8 +12,10 @@ class C_Ajax_Controller extends C_MVC_Controller
|
|
12 |
|
13 |
function index_action()
|
14 |
{
|
15 |
-
|
16 |
-
|
|
|
|
|
17 |
|
18 |
// Inform the MVC framework what type of content we're returning
|
19 |
$this->set_content_type('json');
|
@@ -30,13 +32,11 @@ class C_Ajax_Controller extends C_MVC_Controller
|
|
30 |
if (!$retval)
|
31 |
$retval = array('error' => 'Not a valid AJAX action');
|
32 |
|
33 |
-
// Flush the buffer
|
34 |
-
while (ob_get_level() > 0) {
|
35 |
-
ob_end_clean();
|
36 |
-
}
|
37 |
-
|
38 |
// Return the JSON to the browser
|
39 |
echo json_encode($retval);
|
|
|
|
|
|
|
40 |
}
|
41 |
|
42 |
/**
|
12 |
|
13 |
function index_action()
|
14 |
{
|
15 |
+
$retval = FALSE;
|
16 |
+
$error_reporting = error_reporting(
|
17 |
+
E_CORE_ERROR|E_CORE_WARNING|E_COMPILE_ERROR|E_ERROR|E_PARSE|E_USER_ERROR|E_USER_WARNING|E_RECOVERABLE_ERROR
|
18 |
+
);
|
19 |
|
20 |
// Inform the MVC framework what type of content we're returning
|
21 |
$this->set_content_type('json');
|
32 |
if (!$retval)
|
33 |
$retval = array('error' => 'Not a valid AJAX action');
|
34 |
|
|
|
|
|
|
|
|
|
|
|
35 |
// Return the JSON to the browser
|
36 |
echo json_encode($retval);
|
37 |
+
|
38 |
+
// reset the reporting level
|
39 |
+
error_reporting($error_reporting);
|
40 |
}
|
41 |
|
42 |
/**
|
products/photocrati_nextgen/modules/ajax/class.ajax_installer.php
CHANGED
@@ -2,12 +2,29 @@
|
|
2 |
|
3 |
class C_Ajax_Installer
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
function install()
|
6 |
{
|
7 |
-
|
8 |
-
$
|
9 |
-
|
10 |
-
$settings->
|
11 |
-
$settings->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
}
|
2 |
|
3 |
class C_Ajax_Installer
|
4 |
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
+
}
|
9 |
+
|
10 |
+
function get_registry()
|
11 |
+
{
|
12 |
+
return C_Component_Registry::get_instance();
|
13 |
+
}
|
14 |
+
|
15 |
function install()
|
16 |
{
|
17 |
+
$slug = 'photocrati_ajax';
|
18 |
+
$router = $this->get_registry()->get_utility('I_Router');
|
19 |
+
|
20 |
+
$this->settings->set_default_value('ajax_slug', $slug);
|
21 |
+
$this->settings->set_default_value('ajax_url', $router->get_url($slug, FALSE));
|
22 |
+
$this->settings->set_default_value('ajax_js_url', $router->get_url($slug . '/js', FALSE));
|
23 |
+
}
|
24 |
+
|
25 |
+
function uninstall($hard=FALSE)
|
26 |
+
{
|
27 |
+
if ($hard) foreach (array('ajax_slug', 'ajax_url', 'ajax_js_url') as $key)
|
28 |
+
$this->settings->delete($key);
|
29 |
}
|
30 |
}
|
products/photocrati_nextgen/modules/ajax/class.ajax_option_handler.php
DELETED
@@ -1,29 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class C_Ajax_Option_Handler
|
4 |
-
{
|
5 |
-
private $slug = 'photocrati_ajax';
|
6 |
-
|
7 |
-
function get_router()
|
8 |
-
{
|
9 |
-
return C_Component_Registry::get_instance()->get_utility('I_Router');
|
10 |
-
}
|
11 |
-
|
12 |
-
function get($key, $default=NULL)
|
13 |
-
{
|
14 |
-
$retval = $default;
|
15 |
-
|
16 |
-
switch($key) {
|
17 |
-
case 'ajax_slug':
|
18 |
-
$retval = $this->slug;
|
19 |
-
break;
|
20 |
-
case 'ajax_url':
|
21 |
-
$retval = $this->get_router()->get_url($this->slug, FALSE);
|
22 |
-
break;
|
23 |
-
case 'ajax_js_url':
|
24 |
-
$retval = $this->get_router()->get_static_url('photocrati-ajax#ajax.js');
|
25 |
-
break;
|
26 |
-
}
|
27 |
-
return $retval;
|
28 |
-
}
|
29 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/ajax/module.ajax.php
CHANGED
@@ -14,19 +14,12 @@ class M_Ajax extends C_Base_Module
|
|
14 |
'photocrati-ajax',
|
15 |
'AJAX',
|
16 |
'Provides AJAX functionality',
|
17 |
-
'0.
|
18 |
'http://www.photocrati.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
21 |
);
|
22 |
|
23 |
-
include_once('class.ajax_option_handler.php');
|
24 |
-
C_NextGen_Settings::add_option_handler('C_Ajax_Option_Handler', array(
|
25 |
-
'ajax_slug',
|
26 |
-
'ajax_url',
|
27 |
-
'ajax_js_url'
|
28 |
-
));
|
29 |
-
|
30 |
include_once('class.ajax_installer.php');
|
31 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_Ajax_Installer');
|
32 |
}
|
@@ -47,7 +40,8 @@ class M_Ajax extends C_Base_Module
|
|
47 |
*/
|
48 |
function _register_hooks()
|
49 |
{
|
50 |
-
add_action('init', array(&$this, 'enqueue_scripts')
|
|
|
51 |
}
|
52 |
|
53 |
|
@@ -56,19 +50,19 @@ class M_Ajax extends C_Base_Module
|
|
56 |
*/
|
57 |
function enqueue_scripts()
|
58 |
{
|
59 |
-
$settings =
|
60 |
$router = $this->get_registry()->get_utility('I_Router');
|
61 |
|
62 |
$site_url = $router->get_base_url(TRUE);
|
63 |
$home_url = $router->get_base_url();
|
64 |
|
65 |
-
wp_register_script('photocrati_ajax', $
|
66 |
wp_enqueue_script('photocrati_ajax');
|
67 |
|
68 |
$vars = array(
|
69 |
'url' => $router->get_url($settings->ajax_slug, FALSE),
|
70 |
'wp_site_url' => $home_url,
|
71 |
-
'wp_site_static_url' => str_replace('/index.php', '',
|
72 |
);
|
73 |
wp_localize_script('photocrati_ajax', 'photocrati_ajax', $vars);
|
74 |
}
|
14 |
'photocrati-ajax',
|
15 |
'AJAX',
|
16 |
'Provides AJAX functionality',
|
17 |
+
'0.1',
|
18 |
'http://www.photocrati.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
21 |
);
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
include_once('class.ajax_installer.php');
|
24 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_Ajax_Installer');
|
25 |
}
|
40 |
*/
|
41 |
function _register_hooks()
|
42 |
{
|
43 |
+
add_action('init', array(&$this, 'enqueue_scripts'));
|
44 |
+
add_action('admin_init', array(&$this, 'enqueue_scripts'));
|
45 |
}
|
46 |
|
47 |
|
50 |
*/
|
51 |
function enqueue_scripts()
|
52 |
{
|
53 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
54 |
$router = $this->get_registry()->get_utility('I_Router');
|
55 |
|
56 |
$site_url = $router->get_base_url(TRUE);
|
57 |
$home_url = $router->get_base_url();
|
58 |
|
59 |
+
wp_register_script('photocrati_ajax', $router->get_static_url('photocrati-ajax#ajax.js'));
|
60 |
wp_enqueue_script('photocrati_ajax');
|
61 |
|
62 |
$vars = array(
|
63 |
'url' => $router->get_url($settings->ajax_slug, FALSE),
|
64 |
'wp_site_url' => $home_url,
|
65 |
+
'wp_site_static_url' => str_replace('/index.php', '', $site_url)
|
66 |
);
|
67 |
wp_localize_script('photocrati_ajax', 'photocrati_ajax', $vars);
|
68 |
}
|
products/photocrati_nextgen/modules/attach_to_post/adapter.attach_to_post_ajax.php
CHANGED
@@ -167,7 +167,7 @@ class A_Attach_To_Post_Ajax extends Mixin
|
|
167 |
}
|
168 |
|
169 |
// Get the thumbnail
|
170 |
-
$entity->thumb_url = $storage->get_image_url($image, 'thumb'
|
171 |
$entity->thumb_html = $storage->get_image_html($image, 'thumb');
|
172 |
$entity->max_width = $settings->thumbwidth;
|
173 |
$entity->max_height = $settings->thumbheight;
|
@@ -189,7 +189,7 @@ class A_Attach_To_Post_Ajax extends Mixin
|
|
189 |
$mapper = $this->object->get_registry()->get_utility('I_Displayed_Gallery_Mapper');
|
190 |
|
191 |
// Do we have fields to work with?
|
192 |
-
if ($this->object->validate_ajax_request(true) && ($params =
|
193 |
|
194 |
// Existing displayed gallery ?
|
195 |
if (($id = $this->object->param('id'))) {
|
@@ -200,7 +200,7 @@ class A_Attach_To_Post_Ajax extends Mixin
|
|
200 |
}
|
201 |
else {
|
202 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
203 |
-
$displayed_gallery = $factory->create('displayed_gallery', $
|
204 |
}
|
205 |
|
206 |
// Save the changes
|
167 |
}
|
168 |
|
169 |
// Get the thumbnail
|
170 |
+
$entity->thumb_url = $storage->get_image_url($image, 'thumb');
|
171 |
$entity->thumb_html = $storage->get_image_html($image, 'thumb');
|
172 |
$entity->max_width = $settings->thumbwidth;
|
173 |
$entity->max_height = $settings->thumbheight;
|
189 |
$mapper = $this->object->get_registry()->get_utility('I_Displayed_Gallery_Mapper');
|
190 |
|
191 |
// Do we have fields to work with?
|
192 |
+
if ($this->object->validate_ajax_request(true) && ($params = $this->object->param('displayed_gallery'))) {
|
193 |
|
194 |
// Existing displayed gallery ?
|
195 |
if (($id = $this->object->param('id'))) {
|
200 |
}
|
201 |
else {
|
202 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
203 |
+
$displayed_gallery = $factory->create('displayed_gallery', $mapper, $params);
|
204 |
}
|
205 |
|
206 |
// Save the changes
|
products/photocrati_nextgen/modules/attach_to_post/adapter.gallery_storage_frame_event.php
CHANGED
@@ -29,19 +29,11 @@ class A_Gallery_Storage_Frame_Event extends Mixin
|
|
29 |
$storage->get_thumb_url($image)
|
30 |
);
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
$events->add_event(
|
40 |
-
array(
|
41 |
-
'event' => 'thumbnail_modified',
|
42 |
-
'image' => $event,
|
43 |
-
)
|
44 |
-
);
|
45 |
-
}
|
46 |
}
|
47 |
}
|
29 |
$storage->get_thumb_url($image)
|
30 |
);
|
31 |
|
32 |
+
$events->add_event(
|
33 |
+
array(
|
34 |
+
'event' => 'thumbnail_modified',
|
35 |
+
'image' => $image,
|
36 |
+
)
|
37 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
}
|
products/photocrati_nextgen/modules/attach_to_post/class.attach_controller.php
CHANGED
@@ -4,8 +4,6 @@ class C_Attach_Controller extends C_NextGen_Admin_Page_Controller
|
|
4 |
{
|
5 |
static $_instances = array();
|
6 |
var $_displayed_gallery;
|
7 |
-
var $_marked_scripts;
|
8 |
-
var $_is_rendering;
|
9 |
|
10 |
static function &get_instance($context)
|
11 |
{
|
@@ -30,56 +28,6 @@ class C_Attach_Controller extends C_NextGen_Admin_Page_Controller
|
|
30 |
{
|
31 |
parent::initialize();
|
32 |
$this->_load_displayed_gallery();
|
33 |
-
|
34 |
-
$this->_marked_scripts = array();
|
35 |
-
|
36 |
-
if (did_action('wp_print_scripts')) {
|
37 |
-
$this->_handle_scripts();
|
38 |
-
}
|
39 |
-
else {
|
40 |
-
add_action('wp_print_scripts', array($this, '_handle_scripts'), 9999);
|
41 |
-
}
|
42 |
-
}
|
43 |
-
|
44 |
-
function _handle_scripts()
|
45 |
-
{
|
46 |
-
if (is_admin() && $this->_is_rendering)
|
47 |
-
{
|
48 |
-
global $wp_scripts;
|
49 |
-
|
50 |
-
$queue = $wp_scripts->queue;
|
51 |
-
$marked = $this->_marked_scripts;
|
52 |
-
|
53 |
-
foreach ($marked as $tag => $value) {
|
54 |
-
$this->_handle_script($tag, $queue);
|
55 |
-
}
|
56 |
-
|
57 |
-
foreach ($queue as $extra) {
|
58 |
-
wp_dequeue_script($extra);
|
59 |
-
}
|
60 |
-
}
|
61 |
-
}
|
62 |
-
|
63 |
-
function _handle_script($tag, &$queue)
|
64 |
-
{
|
65 |
-
global $wp_scripts;
|
66 |
-
|
67 |
-
$registered = $wp_scripts->registered;
|
68 |
-
|
69 |
-
$idx = array_search($tag, $queue);
|
70 |
-
if ($idx !== false) {
|
71 |
-
unset($queue[$idx]);
|
72 |
-
}
|
73 |
-
|
74 |
-
if (isset($registered[$tag])) {
|
75 |
-
$script = $registered[$tag];
|
76 |
-
|
77 |
-
if ($script->deps) {
|
78 |
-
foreach ($script->deps as $dep) {
|
79 |
-
$this->_handle_script($dep, $queue);
|
80 |
-
}
|
81 |
-
}
|
82 |
-
}
|
83 |
}
|
84 |
}
|
85 |
|
@@ -92,37 +40,26 @@ class Mixin_Attach_To_Post extends Mixin
|
|
92 |
$this->object->_displayed_gallery = $mapper->create();
|
93 |
}
|
94 |
}
|
95 |
-
|
96 |
-
function mark_script($script_tag)
|
97 |
-
{
|
98 |
-
$this->object->_marked_scripts[$script_tag] = true;
|
99 |
-
}
|
100 |
|
101 |
function enqueue_backend_resources()
|
102 |
{
|
103 |
$this->call_parent('enqueue_backend_resources');
|
|
|
104 |
// Enqueue frame event publishing
|
105 |
wp_enqueue_script('frame_event_publisher');
|
106 |
-
$this->object->mark_script('frame_event_publisher');
|
107 |
|
108 |
// Enqueue JQuery UI libraries
|
109 |
wp_enqueue_script('jquery-ui-tabs');
|
110 |
wp_enqueue_script('jquery-ui-sortable');
|
111 |
-
|
112 |
wp_enqueue_script('ngg_tabs', $this->get_static_url('photocrati-attach_to_post#ngg_tabs.js'));
|
113 |
-
$this->object->mark_script('jquery-ui-tabs');
|
114 |
-
$this->object->mark_script('jquery-ui-sortable');
|
115 |
-
$this->object->mark_script('jquery-ui-tooltip');
|
116 |
-
$this->object->mark_script('ngg_tabs');
|
117 |
|
118 |
// Ensure select2
|
119 |
wp_enqueue_style('select2');
|
120 |
wp_enqueue_script('select2');
|
121 |
-
$this->object->mark_script('select2');
|
122 |
|
123 |
// Ensure that the Photocrati AJAX library is loaded
|
124 |
wp_enqueue_script('photocrati_ajax');
|
125 |
-
$this->object->mark_script('photocrati_ajax');
|
126 |
|
127 |
// Enqueue logic for the Attach to Post interface as a whole
|
128 |
wp_enqueue_script(
|
@@ -131,11 +68,9 @@ class Mixin_Attach_To_Post extends Mixin
|
|
131 |
wp_enqueue_style(
|
132 |
'ngg_attach_to_post', $this->get_static_url('photocrati-attach_to_post#attach_to_post.css')
|
133 |
);
|
134 |
-
$this->object->mark_script('ngg_attach_to_post');
|
135 |
|
136 |
// Enqueue backbone.js library, required by the Attach to Post display tab
|
137 |
wp_enqueue_script('backbone'); // provided by WP
|
138 |
-
$this->object->mark_script('backbone');
|
139 |
|
140 |
// Ensure underscore sting, a helper utility
|
141 |
wp_enqueue_script(
|
@@ -144,10 +79,9 @@ class Mixin_Attach_To_Post extends Mixin
|
|
144 |
array('underscore'),
|
145 |
'2.3.0'
|
146 |
);
|
147 |
-
$this->object->mark_script('underscore.string');
|
148 |
|
149 |
// Enqueue the backbone app for the display tab
|
150 |
-
$settings =
|
151 |
$preview_url = $settings->gallery_preview_url;
|
152 |
$display_tab_js_url = $settings->attach_to_post_display_tab_js_url;
|
153 |
if ($this->object->_displayed_gallery->id()) {
|
@@ -164,15 +98,6 @@ class Mixin_Attach_To_Post extends Mixin
|
|
164 |
'ngg_displayed_gallery_preview_url',
|
165 |
$settings->gallery_preview_url
|
166 |
);
|
167 |
-
$this->object->mark_script('ngg_display_tab');
|
168 |
-
|
169 |
-
// TODO: for now mark Pro scripts to ensure they are enqueued properly, remove this after Pro upgrade with tagging added
|
170 |
-
$display_types = array('photocrati-nextgen_pro_slideshow', 'photocrati-nextgen_pro_horizontal_filmstrip', 'photocrati-nextgen_pro_thumbnail_grid', 'photocrati-nextgen_pro_blog_gallery', 'photocrati-nextgen_pro_film');
|
171 |
-
foreach ($display_types as $display_type) {
|
172 |
-
$this->object->mark_script($display_type . '-js');
|
173 |
-
}
|
174 |
-
|
175 |
-
$this->object->mark_script('nextgen_pro_albums_settings_script');
|
176 |
}
|
177 |
|
178 |
/**
|
@@ -181,9 +106,7 @@ class Mixin_Attach_To_Post extends Mixin
|
|
181 |
function index_action($return=FALSE)
|
182 |
{
|
183 |
if ($this->object->_displayed_gallery->is_new()) $this->object->expires("+2 hour");
|
184 |
-
|
185 |
-
$this->object->_is_rendering = true;
|
186 |
-
|
187 |
// Enqueue resources
|
188 |
return $this->object->render_view('photocrati-attach_to_post#attach_to_post', array(
|
189 |
'page_title' => $this->object->_get_page_title(),
|
@@ -309,7 +232,7 @@ class Mixin_Attach_To_Post extends Mixin
|
|
309 |
function _render_ngg_page_in_frame($page, $tab_id = null)
|
310 |
{
|
311 |
$frame_url = admin_url("/admin.php?page={$page}&attach_to_post");
|
312 |
-
$frame_url =
|
313 |
|
314 |
if ($tab_id) {
|
315 |
$tab_id = " id='ngg-iframe-{$tab_id}'";
|
4 |
{
|
5 |
static $_instances = array();
|
6 |
var $_displayed_gallery;
|
|
|
|
|
7 |
|
8 |
static function &get_instance($context)
|
9 |
{
|
28 |
{
|
29 |
parent::initialize();
|
30 |
$this->_load_displayed_gallery();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
}
|
33 |
|
40 |
$this->object->_displayed_gallery = $mapper->create();
|
41 |
}
|
42 |
}
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
function enqueue_backend_resources()
|
45 |
{
|
46 |
$this->call_parent('enqueue_backend_resources');
|
47 |
+
|
48 |
// Enqueue frame event publishing
|
49 |
wp_enqueue_script('frame_event_publisher');
|
|
|
50 |
|
51 |
// Enqueue JQuery UI libraries
|
52 |
wp_enqueue_script('jquery-ui-tabs');
|
53 |
wp_enqueue_script('jquery-ui-sortable');
|
54 |
+
wp_enqueue_script('jquery-ui-tooltip');
|
55 |
wp_enqueue_script('ngg_tabs', $this->get_static_url('photocrati-attach_to_post#ngg_tabs.js'));
|
|
|
|
|
|
|
|
|
56 |
|
57 |
// Ensure select2
|
58 |
wp_enqueue_style('select2');
|
59 |
wp_enqueue_script('select2');
|
|
|
60 |
|
61 |
// Ensure that the Photocrati AJAX library is loaded
|
62 |
wp_enqueue_script('photocrati_ajax');
|
|
|
63 |
|
64 |
// Enqueue logic for the Attach to Post interface as a whole
|
65 |
wp_enqueue_script(
|
68 |
wp_enqueue_style(
|
69 |
'ngg_attach_to_post', $this->get_static_url('photocrati-attach_to_post#attach_to_post.css')
|
70 |
);
|
|
|
71 |
|
72 |
// Enqueue backbone.js library, required by the Attach to Post display tab
|
73 |
wp_enqueue_script('backbone'); // provided by WP
|
|
|
74 |
|
75 |
// Ensure underscore sting, a helper utility
|
76 |
wp_enqueue_script(
|
79 |
array('underscore'),
|
80 |
'2.3.0'
|
81 |
);
|
|
|
82 |
|
83 |
// Enqueue the backbone app for the display tab
|
84 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
85 |
$preview_url = $settings->gallery_preview_url;
|
86 |
$display_tab_js_url = $settings->attach_to_post_display_tab_js_url;
|
87 |
if ($this->object->_displayed_gallery->id()) {
|
98 |
'ngg_displayed_gallery_preview_url',
|
99 |
$settings->gallery_preview_url
|
100 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
102 |
|
103 |
/**
|
106 |
function index_action($return=FALSE)
|
107 |
{
|
108 |
if ($this->object->_displayed_gallery->is_new()) $this->object->expires("+2 hour");
|
109 |
+
|
|
|
|
|
110 |
// Enqueue resources
|
111 |
return $this->object->render_view('photocrati-attach_to_post#attach_to_post', array(
|
112 |
'page_title' => $this->object->_get_page_title(),
|
232 |
function _render_ngg_page_in_frame($page, $tab_id = null)
|
233 |
{
|
234 |
$frame_url = admin_url("/admin.php?page={$page}&attach_to_post");
|
235 |
+
$frame_url = esc_url($frame_url);
|
236 |
|
237 |
if ($tab_id) {
|
238 |
$tab_id = " id='ngg-iframe-{$tab_id}'";
|
products/photocrati_nextgen/modules/attach_to_post/class.attach_to_post_installer.php
CHANGED
@@ -2,12 +2,33 @@
|
|
2 |
|
3 |
class C_Attach_To_Post_Installer
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
function install()
|
6 |
{
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
}
|
2 |
|
3 |
class C_Attach_To_Post_Installer
|
4 |
{
|
5 |
+
function get_registry()
|
6 |
+
{
|
7 |
+
return C_Component_Registry::get_instance();
|
8 |
+
}
|
9 |
+
|
10 |
+
function __construct()
|
11 |
+
{
|
12 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
13 |
+
|
14 |
+
$router = $this->get_registry()->get_utility('I_Router');
|
15 |
+
$this->defaults = array(
|
16 |
+
'attach_to_post_url' => $router->get_url('/nextgen-attach_to_post', FALSE),
|
17 |
+
'gallery_preview_url' => $router->get_url('/nextgen-attach_to_post/preview', FALSE),
|
18 |
+
'attach_to_post_display_tab_js_url' => $router->get_url('/nextgen-attach_to_post/display_tab_js', FALSE)
|
19 |
+
);
|
20 |
+
}
|
21 |
+
|
22 |
function install()
|
23 |
{
|
24 |
+
foreach ($this->defaults as $key => $val) {
|
25 |
+
$this->settings->set_default_value($key, $val);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
function uninstall($hard=FALSE)
|
30 |
+
{
|
31 |
+
if ($hard) foreach (array_keys($this->defaults) as $key)
|
32 |
+
$this->settings->delete($key);
|
33 |
}
|
34 |
}
|
products/photocrati_nextgen/modules/attach_to_post/class.attach_to_post_option_handler.php
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class C_Attach_To_Post_Option_Handler
|
4 |
-
{
|
5 |
-
function get_router()
|
6 |
-
{
|
7 |
-
return C_Component_Registry::get_instance()->get_utility('I_Router');
|
8 |
-
}
|
9 |
-
|
10 |
-
function get($key, $default=NULL)
|
11 |
-
{
|
12 |
-
$retval = $default;
|
13 |
-
|
14 |
-
switch ($key) {
|
15 |
-
case 'attach_to_post_url':
|
16 |
-
$retval = $this->get_router()->get_url('/nextgen-attach_to_post', FALSE);
|
17 |
-
break;
|
18 |
-
case 'gallery_preview_url':
|
19 |
-
$retval = $this->get_router()->get_url('/nextgen-attach_to_post/preview', FALSE);
|
20 |
-
break;
|
21 |
-
case 'attach_to_post_display_tab_js_url':
|
22 |
-
$retval = $this->get_router()->get_url('/nextgen-attach_to_post/display_tab_js', FALSE);
|
23 |
-
break;
|
24 |
-
}
|
25 |
-
|
26 |
-
return $retval;
|
27 |
-
}
|
28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/attach_to_post/mixin.attach_to_post_display_tab.php
CHANGED
@@ -15,16 +15,11 @@ class Mixin_Attach_To_Post_Display_Tab extends Mixin
|
|
15 |
|
16 |
// Ensure that JS is returned
|
17 |
$this->object->set_content_type('javascript');
|
18 |
-
|
19 |
-
while (ob_get_level() > 0) {
|
20 |
-
ob_end_clean();
|
21 |
-
}
|
22 |
|
23 |
// Get all entities used by the display tab
|
24 |
$context = 'attach_to_post';
|
25 |
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper', $context);
|
26 |
$album_mapper = $this->get_registry()->get_utility('I_Album_Mapper', $context);
|
27 |
-
$image_mapper = $this->get_registry()->get_utility('I_Image_Mapper', $context);
|
28 |
$display_type_mapper= $this->get_registry()->get_utility('I_Display_Type_Mapper', $context);
|
29 |
$source_mapper = $this->get_registry()->get_utility('I_Displayed_Gallery_Source_Mapper', $context);
|
30 |
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
@@ -46,7 +41,7 @@ class Mixin_Attach_To_Post_Display_Tab extends Mixin
|
|
46 |
|
47 |
usort($display_types, array($this->object, '_display_type_list_sort'));
|
48 |
|
49 |
-
|
50 |
'displayed_gallery' => json_encode($this->object->_displayed_gallery->get_entity()),
|
51 |
'sources' => json_encode($source_mapper->select()->order_by('title')->run_query()),
|
52 |
'gallery_primary_key' => $gallery_mapper->get_primary_key_column(),
|
@@ -54,11 +49,8 @@ class Mixin_Attach_To_Post_Display_Tab extends Mixin
|
|
54 |
'albums' => json_encode($album_mapper->find_all()),
|
55 |
'tags' => json_encode($tags),
|
56 |
'display_types' => json_encode($display_types),
|
57 |
-
'sec_token' => $security->get_request_token('nextgen_edit_displayed_gallery')->get_json()
|
58 |
-
'image_primary_key' => $image_mapper->get_primary_key_column()
|
59 |
), $return);
|
60 |
-
|
61 |
-
return $output;
|
62 |
}
|
63 |
|
64 |
function _display_type_list_sort($type_1, $type_2)
|
@@ -91,11 +83,6 @@ class Mixin_Attach_To_Post_Display_Tab extends Mixin
|
|
91 |
*/
|
92 |
function _get_display_tabs()
|
93 |
{
|
94 |
-
// The ATP requires more memmory than some applications, somewhere around 60MB.
|
95 |
-
// Because it's such an important feature of NextGEN Gallery, we temporarily disable
|
96 |
-
// any memory limits
|
97 |
-
@ini_set('memory_limit', -1);
|
98 |
-
|
99 |
return array(
|
100 |
$this->object->_render_display_types_tab(),
|
101 |
$this->object->_render_display_source_tab(),
|
15 |
|
16 |
// Ensure that JS is returned
|
17 |
$this->object->set_content_type('javascript');
|
|
|
|
|
|
|
|
|
18 |
|
19 |
// Get all entities used by the display tab
|
20 |
$context = 'attach_to_post';
|
21 |
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper', $context);
|
22 |
$album_mapper = $this->get_registry()->get_utility('I_Album_Mapper', $context);
|
|
|
23 |
$display_type_mapper= $this->get_registry()->get_utility('I_Display_Type_Mapper', $context);
|
24 |
$source_mapper = $this->get_registry()->get_utility('I_Displayed_Gallery_Source_Mapper', $context);
|
25 |
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
41 |
|
42 |
usort($display_types, array($this->object, '_display_type_list_sort'));
|
43 |
|
44 |
+
return $this->object->render_view('photocrati-attach_to_post#display_tab_js', array(
|
45 |
'displayed_gallery' => json_encode($this->object->_displayed_gallery->get_entity()),
|
46 |
'sources' => json_encode($source_mapper->select()->order_by('title')->run_query()),
|
47 |
'gallery_primary_key' => $gallery_mapper->get_primary_key_column(),
|
49 |
'albums' => json_encode($album_mapper->find_all()),
|
50 |
'tags' => json_encode($tags),
|
51 |
'display_types' => json_encode($display_types),
|
52 |
+
'sec_token' => $security->get_request_token('nextgen_edit_displayed_gallery')->get_json()
|
|
|
53 |
), $return);
|
|
|
|
|
54 |
}
|
55 |
|
56 |
function _display_type_list_sort($type_1, $type_2)
|
83 |
*/
|
84 |
function _get_display_tabs()
|
85 |
{
|
|
|
|
|
|
|
|
|
|
|
86 |
return array(
|
87 |
$this->object->_render_display_types_tab(),
|
88 |
$this->object->_render_display_source_tab(),
|
products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php
CHANGED
@@ -23,28 +23,15 @@ class M_Attach_To_Post extends C_Base_Module
|
|
23 |
'photocrati-attach_to_post',
|
24 |
'Attach To Post',
|
25 |
'Provides the "Attach to Post" interface for displaying galleries and albums',
|
26 |
-
'0.
|
27 |
'http://www.nextgen-gallery.com',
|
28 |
'Photocrati Media',
|
29 |
'http://www.photocrati.com',
|
30 |
$context
|
31 |
);
|
32 |
|
33 |
-
include_once('class.attach_to_post_option_handler.php');
|
34 |
-
C_NextGen_Settings::add_option_handler('C_Attach_To_Post_Option_Handler', array(
|
35 |
-
'attach_to_post_url',
|
36 |
-
'gallery_preview_url',
|
37 |
-
'attach_to_post_display_tab_js_url'
|
38 |
-
));
|
39 |
-
|
40 |
include_once('class.attach_to_post_installer.php');
|
41 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_Attach_To_Post_Installer');
|
42 |
-
|
43 |
-
$uri = strtolower($_SERVER['REQUEST_URI']);
|
44 |
-
|
45 |
-
if (strpos($uri, '/nextgen-attach_to_post') !== false) {
|
46 |
-
define('WP_ADMIN', true);
|
47 |
-
}
|
48 |
}
|
49 |
|
50 |
/**
|
@@ -120,7 +107,7 @@ class M_Attach_To_Post extends C_Base_Module
|
|
120 |
add_action('after_delete_post', array(&$this, 'cleanup_displayed_galleries'));
|
121 |
|
122 |
// Add hook to subsitute displayed gallery placeholders
|
123 |
-
add_filter('the_content', array(&$this, 'substitute_placeholder_imgs'),
|
124 |
|
125 |
// Emit frame communication events
|
126 |
add_action('ngg_created_new_gallery', array(&$this, 'new_gallery_event'));
|
@@ -136,42 +123,72 @@ class M_Attach_To_Post extends C_Base_Module
|
|
136 |
*/
|
137 |
function substitute_placeholder_imgs($content)
|
138 |
{
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
|
151 |
-
$alt_preview_url = parse_url($router->join_paths(
|
152 |
-
$router->remove_url_segment('index.php', $router->get_base_url()),
|
153 |
-
'index.php/nextgen-attach_to_post/preview'
|
154 |
-
));
|
155 |
-
$alt_preview_url = preg_quote($alt_preview_url['host'] . $alt_preview_url['path'], '#');
|
156 |
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
$retval = $renderer->render($displayed_gallery, TRUE);
|
169 |
-
}
|
170 |
-
$content = str_replace($match[0], $retval, $content);
|
171 |
-
}
|
172 |
-
}
|
173 |
-
|
174 |
-
return $content;
|
175 |
}
|
176 |
|
177 |
/**
|
@@ -184,6 +201,13 @@ class M_Attach_To_Post extends C_Base_Module
|
|
184 |
// Enqueue resources needed at post/page level
|
185 |
if (preg_match("/\/wp-admin\/(post|post-new)\.php$/", $_SERVER['SCRIPT_NAME'])) {
|
186 |
$this->_enqueue_tinymce_resources();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
187 |
wp_enqueue_style(
|
188 |
'ngg_attach_to_post_dialog', $router->get_static_url('photocrati-attach_to_post#attach_to_post_dialog.css')
|
189 |
);
|
@@ -205,7 +229,7 @@ class M_Attach_To_Post extends C_Base_Module
|
|
205 |
wp_localize_script(
|
206 |
'media-editor',
|
207 |
'nextgen_gallery_attach_to_post_url',
|
208 |
-
|
209 |
);
|
210 |
|
211 |
// Registers our tinymce button and plugin for attaching galleries
|
@@ -303,13 +327,12 @@ class M_Attach_To_Post extends C_Base_Module
|
|
303 |
function new_gallery_event($gallery_id)
|
304 |
{
|
305 |
$gallery = $this->get_registry()->get_utility('I_Gallery_Mapper')->find($gallery_id);
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
}
|
313 |
}
|
314 |
|
315 |
/**
|
23 |
'photocrati-attach_to_post',
|
24 |
'Attach To Post',
|
25 |
'Provides the "Attach to Post" interface for displaying galleries and albums',
|
26 |
+
'0.3',
|
27 |
'http://www.nextgen-gallery.com',
|
28 |
'Photocrati Media',
|
29 |
'http://www.photocrati.com',
|
30 |
$context
|
31 |
);
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
include_once('class.attach_to_post_installer.php');
|
34 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_Attach_To_Post_Installer');
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
/**
|
107 |
add_action('after_delete_post', array(&$this, 'cleanup_displayed_galleries'));
|
108 |
|
109 |
// Add hook to subsitute displayed gallery placeholders
|
110 |
+
add_filter('the_content', array(&$this, 'substitute_placeholder_imgs'), 1000, 1);
|
111 |
|
112 |
// Emit frame communication events
|
113 |
add_action('ngg_created_new_gallery', array(&$this, 'new_gallery_event'));
|
123 |
*/
|
124 |
function substitute_placeholder_imgs($content)
|
125 |
{
|
126 |
+
// Load html into parser
|
127 |
+
$doc = new simple_html_dom();
|
128 |
+
if ($content) {
|
129 |
+
$doc->load($content);
|
130 |
+
|
131 |
+
// Find all placeholder images
|
132 |
+
$imgs = $doc->find("img[class='ngg_displayed_gallery']");
|
133 |
+
if ($imgs) {
|
134 |
+
|
135 |
+
// Get some utilities
|
136 |
+
$mapper = $this->get_registry()->get_utility('I_Displayed_Gallery_Mapper');
|
137 |
+
$router = $this->get_registry()->get_utility('I_Router');
|
138 |
+
|
139 |
+
// To match ATP entries we compare the stored url against a generic path
|
140 |
+
// We must check HTTP and HTTPS as well as permalink and non-permalink forms
|
141 |
+
$preview_url = parse_url($router->join_paths(
|
142 |
+
$router->remove_url_segment('index.php', $router->get_base_url()),
|
143 |
+
'/nextgen-attach_to_post/preview'
|
144 |
+
));
|
145 |
+
$preview_url = preg_quote($preview_url['host'] . $preview_url['path'], '#');
|
146 |
+
|
147 |
+
$alt_preview_url = parse_url($router->join_paths(
|
148 |
+
$router->remove_url_segment('index.php', $router->get_base_url()),
|
149 |
+
'index.php/nextgen-attach_to_post/preview'
|
150 |
+
));
|
151 |
+
$alt_preview_url = preg_quote($alt_preview_url['host'] . $alt_preview_url['path'], '#');
|
152 |
+
|
153 |
+
// Substitute each image for the gallery type frontent content
|
154 |
+
foreach ($imgs as $img) {
|
155 |
+
|
156 |
+
// The placeholder MUST have a gallery instance id
|
157 |
+
if (preg_match("#http(s)?://({$preview_url}|{$alt_preview_url})/id--(\d+)#", $img->src, $match)) {
|
158 |
+
|
159 |
+
// Find the displayed gallery
|
160 |
+
$displayed_gallery_id = $match[3];
|
161 |
+
$displayed_gallery = $mapper->find($displayed_gallery_id, TRUE);
|
162 |
+
|
163 |
+
// Get the content for the displayed gallery
|
164 |
+
$content = '<p>'._('Invalid Displayed Gallery').'</p>';
|
165 |
+
if ($displayed_gallery) {
|
166 |
+
$renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
167 |
+
$content = $renderer->render($displayed_gallery, TRUE);
|
168 |
+
}
|
169 |
+
|
170 |
+
// Replace the placeholder with the displayed gallery content
|
171 |
+
$img->outertext = $this->compress_html($content);
|
172 |
+
}
|
173 |
+
}
|
174 |
+
$content = (string)$doc->save();
|
175 |
+
}
|
176 |
+
return $content;
|
177 |
+
}
|
178 |
+
}
|
179 |
|
|
|
|
|
|
|
|
|
|
|
180 |
|
181 |
+
/**
|
182 |
+
* Removes any un-nessessary whitespace from the HTML
|
183 |
+
* @param string $html
|
184 |
+
* @return string
|
185 |
+
*/
|
186 |
+
function compress_html($html)
|
187 |
+
{
|
188 |
+
$html = preg_replace("/>\s+/", ">", $html);
|
189 |
+
$html = preg_replace("/\s+</", "<", $html);
|
190 |
+
$html = preg_replace("/<!--(?:(?!-->).)*-->/m", "", $html);
|
191 |
+
return $html;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
192 |
}
|
193 |
|
194 |
/**
|
201 |
// Enqueue resources needed at post/page level
|
202 |
if (preg_match("/\/wp-admin\/(post|post-new)\.php$/", $_SERVER['SCRIPT_NAME'])) {
|
203 |
$this->_enqueue_tinymce_resources();
|
204 |
+
|
205 |
+
# wp_enqueue_style(
|
206 |
+
# 'ngg_custom_scrollbar', $this->get_static_url('jquery.mCustomScrollbar.css')
|
207 |
+
# );
|
208 |
+
# wp_enqueue_script(
|
209 |
+
# 'ngg_custom_scrollbar', $this->get_static_url('jquery.mCustomScrollbar.concat.min.js'), array('jquery')
|
210 |
+
# );
|
211 |
wp_enqueue_style(
|
212 |
'ngg_attach_to_post_dialog', $router->get_static_url('photocrati-attach_to_post#attach_to_post_dialog.css')
|
213 |
);
|
229 |
wp_localize_script(
|
230 |
'media-editor',
|
231 |
'nextgen_gallery_attach_to_post_url',
|
232 |
+
C_NextGen_Global_Settings::get_instance()->attach_to_post_url
|
233 |
);
|
234 |
|
235 |
// Registers our tinymce button and plugin for attaching galleries
|
327 |
function new_gallery_event($gallery_id)
|
328 |
{
|
329 |
$gallery = $this->get_registry()->get_utility('I_Gallery_Mapper')->find($gallery_id);
|
330 |
+
|
331 |
+
$this->_get_frame_event_publisher()->add_event(array(
|
332 |
+
'event' => 'new_gallery',
|
333 |
+
'gallery_id'=> intval($gallery_id),
|
334 |
+
'gallery_title' => $gallery->title
|
335 |
+
));
|
|
|
336 |
}
|
337 |
|
338 |
/**
|
products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.js
CHANGED
@@ -6,33 +6,35 @@ function close_attach_to_post_window()
|
|
6 |
|
7 |
// Adjusts the height of a frame on the page, and then executes
|
8 |
// the specified callback
|
9 |
-
function adjust_height_for_frame(
|
10 |
{
|
11 |
// Adjust height of the frame
|
12 |
-
var $frame = jQuery(
|
13 |
-
var new_height = $frame.contents().height()
|
14 |
-
var
|
15 |
-
var parent_height = jQuery(parent_window.document).height();
|
16 |
var current_height = $frame.height();
|
17 |
|
18 |
-
|
|
|
19 |
if (new_height < parent_height) new_height = parent_height;
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
|
|
33 |
|
34 |
if (callback != undefined)
|
35 |
-
return callback(
|
36 |
else
|
37 |
return true;
|
38 |
}
|
6 |
|
7 |
// Adjusts the height of a frame on the page, and then executes
|
8 |
// the specified callback
|
9 |
+
function adjust_height_for_frame(frame, callback)
|
10 |
{
|
11 |
// Adjust height of the frame
|
12 |
+
var $frame = jQuery(frame);
|
13 |
+
var new_height = $frame.contents().find('#wpbody').height();
|
14 |
+
var parent_height = jQuery(parent.document).height();
|
|
|
15 |
var current_height = $frame.height();
|
16 |
|
17 |
+
// If the height is less than the parent window height, then use
|
18 |
+
// the parent window height instead
|
19 |
if (new_height < parent_height) new_height = parent_height;
|
20 |
|
21 |
+
// If the height has changed, then use the new height
|
22 |
+
if (current_height != new_height) {
|
23 |
+
var frame_id = $frame.attr('id');
|
24 |
+
|
25 |
+
$frame.height(new_height);
|
26 |
+
|
27 |
+
if (frame_id && frame_id.indexOf('ngg-iframe-') == 0) {
|
28 |
+
var tab_id = frame_id.substr(11);
|
29 |
+
|
30 |
+
if (tab_id) {
|
31 |
+
jQuery('#' + tab_id).height(new_height);
|
32 |
+
}
|
33 |
+
}
|
34 |
+
}
|
35 |
|
36 |
if (callback != undefined)
|
37 |
+
return callback.call(frame, new_height);
|
38 |
else
|
39 |
return true;
|
40 |
}
|
products/photocrati_nextgen/modules/attach_to_post/static/iframely.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
if (window.frameElement) {
|
2 |
document.getElementsByTagName('html')[0].id = 'iframely';
|
3 |
jQuery(function($){
|
|
|
4 |
$('#wpwrap').html($('#wpbody').html($('#wpbody-content').html($('#ngg_page_content'))));
|
5 |
|
6 |
// We need to ensure that any POST operation includes the "attach_to_post"
|
@@ -9,55 +10,14 @@ if (window.frameElement) {
|
|
9 |
$(this).append("<input type='hidden' name='attach_to_post' value='1'/>");
|
10 |
});
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
}
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
var recursive_check = true;
|
22 |
-
if (recursive_check) {
|
23 |
-
if (typeof(parent.adjust_height_for_frame) != "undefined") {
|
24 |
-
parent.adjust_height_for_frame(parent, window, iframely_callback);
|
25 |
-
}
|
26 |
-
}
|
27 |
-
else {
|
28 |
-
if (typeof(parent.adjust_height_for_frame) != "undefined") {
|
29 |
-
// Adjust the height of the frame
|
30 |
-
parent.adjust_height_for_frame(parent, window, function(){
|
31 |
-
$('#iframely').css({
|
32 |
-
position: 'static',
|
33 |
-
visibility: 'visible'
|
34 |
-
}).animate({
|
35 |
-
opacity: 1.0
|
36 |
-
});
|
37 |
-
});
|
38 |
-
}
|
39 |
-
}
|
40 |
});
|
41 |
}
|
42 |
-
|
43 |
-
function iframely_callback(parent_window, current_window, new_height)
|
44 |
-
{
|
45 |
-
var $current_window = jQuery(current_window);
|
46 |
-
|
47 |
-
if (typeof($current_window.data('iframely')) == 'undefined') $current_window.data('iframely', {attempts: 1});
|
48 |
-
var iframely = $current_window.data('iframely');
|
49 |
-
|
50 |
-
// After we've attempted to resize the frame 3 times, give up
|
51 |
-
if (iframely.attempts == 3) {
|
52 |
-
jQuery('#iframely').css({
|
53 |
-
position: 'static',
|
54 |
-
visibility: 'visible'
|
55 |
-
}).animate({ opacity: 1.0 });
|
56 |
-
}
|
57 |
-
else {
|
58 |
-
iframely.attempts += 1;
|
59 |
-
setTimeout(function(){
|
60 |
-
parent_window.adjust_height_for_frame(parent_window, current_window, iframely_callback);
|
61 |
-
}, 400);
|
62 |
-
}
|
63 |
-
}
|
1 |
if (window.frameElement) {
|
2 |
document.getElementsByTagName('html')[0].id = 'iframely';
|
3 |
jQuery(function($){
|
4 |
+
// Concentrate only on the content of the page
|
5 |
$('#wpwrap').html($('#wpbody').html($('#wpbody-content').html($('#ngg_page_content'))));
|
6 |
|
7 |
// We need to ensure that any POST operation includes the "attach_to_post"
|
10 |
$(this).append("<input type='hidden' name='attach_to_post' value='1'/>");
|
11 |
});
|
12 |
|
13 |
+
// Adjust the height of the frame
|
14 |
+
parent.adjust_height_for_frame(window.frameElement, function(){
|
15 |
+
$('#iframely').css({
|
16 |
+
position: 'static',
|
17 |
+
visibility: 'visible'
|
18 |
+
}).animate({
|
19 |
+
opacity: 1.0
|
20 |
+
});
|
21 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
});
|
23 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/attach_to_post/static/ngg_attach_to_post_tinymce_plugin.js
CHANGED
@@ -75,6 +75,7 @@
|
|
75 |
}
|
76 |
clearTimeout(click_timer);
|
77 |
drag_in_progress = false;
|
|
|
78 |
});
|
79 |
},
|
80 |
|
75 |
}
|
76 |
clearTimeout(click_timer);
|
77 |
drag_in_progress = false;
|
78 |
+
return false;
|
79 |
});
|
80 |
},
|
81 |
|
products/photocrati_nextgen/modules/attach_to_post/templates/display_tab_js.php
CHANGED
@@ -260,7 +260,7 @@ jQuery(function($){
|
|
260 |
* A collection that can fetch it's entities from the server
|
261 |
**/
|
262 |
Ngg.Models.Remote_Collection = Ngg.Models.SelectableItems.extend({
|
263 |
-
fetch_limit:
|
264 |
in_progress: false,
|
265 |
fetch_url: photocrati_ajax.url,
|
266 |
action: '',
|
@@ -808,9 +808,6 @@ jQuery(function($){
|
|
808 |
this.entities.remove(model, {silent: true});
|
809 |
this.entities.add(model, {at: model.changed.sortorder, silent: true});
|
810 |
this.displayed_gallery.set('sortorder', this.entities.entity_ids());
|
811 |
-
if (typeof(console) != 'undefined' && typeof(console.log) != 'undefined') {
|
812 |
-
console.log(this.entities.entity_ids());
|
813 |
-
}
|
814 |
this.displayed_gallery.set('order_by', 'sortorder');
|
815 |
}, this);
|
816 |
|
@@ -1017,8 +1014,6 @@ jQuery(function($){
|
|
1017 |
}
|
1018 |
]);
|
1019 |
this.sortdirection_options.on('change:selected', this.sortdirection_changed, this);
|
1020 |
-
this.displayed_gallery.on('change:order_by', this.displayed_gallery_order_changed, this);
|
1021 |
-
this.displayed_gallery.on('change.order_direction', this.displayed_gallery_order_dir_changed, this);
|
1022 |
},
|
1023 |
|
1024 |
populate_sorting_fields: function(){
|
@@ -1043,7 +1038,6 @@ jQuery(function($){
|
|
1043 |
|
1044 |
fill_image_sortorder_options: function(){
|
1045 |
this.sortorder_options.reset();
|
1046 |
-
this.sortorder_options.push(this.create_sortorder_option('', 'None'));
|
1047 |
this.sortorder_options.push(this.create_sortorder_option('sortorder', 'Custom'));
|
1048 |
this.sortorder_options.push(this.create_sortorder_option(Ngg.DisplayTab.instance.image_key, 'Image ID'));
|
1049 |
this.sortorder_options.push(this.create_sortorder_option('filename', 'Filename'));
|
@@ -1053,38 +1047,16 @@ jQuery(function($){
|
|
1053 |
|
1054 |
fill_gallery_sortorder_options: function(){
|
1055 |
this.sortorder_options.reset();
|
1056 |
-
this.sortorder_options.push(this.create_sortorder_option('', 'None'));
|
1057 |
this.sortorder_options.push(this.create_sortorder_option('sortorder' ,'Custom'));
|
1058 |
this.sortorder_options.push(this.create_sortorder_option('name', 'Name'));
|
1059 |
this.sortorder_options.push(this.create_sortorder_option('galdesc', 'Description'));
|
1060 |
},
|
1061 |
|
1062 |
-
displayed_gallery_order_changed: function(e){
|
1063 |
-
this.sortorder_options.findWhere({value: e.get('order_by')}).set('selected', true);
|
1064 |
-
},
|
1065 |
-
|
1066 |
-
|
1067 |
-
displayed_gallery_order_dir_changed: function(e){
|
1068 |
-
this.sortdirection_options.findWhere({value: e.get('order_direction')}).set('selected', true);
|
1069 |
-
},
|
1070 |
-
|
1071 |
sortoption_changed: function(model){
|
1072 |
this.sortorder_options.each(function(item){
|
1073 |
item.set('selected', model.get('value') == item.get('value') ? true : false, {silent: true});
|
1074 |
});
|
1075 |
-
|
1076 |
-
this.displayed_gallery.set('sortorder', []);
|
1077 |
-
|
1078 |
-
var sort_by = model.get('value');
|
1079 |
-
|
1080 |
-
// If "None" was selected, then clear the "sortorder" property
|
1081 |
-
if (model.get('value').length == 0) {
|
1082 |
-
sort_by = 'sortorder';
|
1083 |
-
}
|
1084 |
-
|
1085 |
-
// Change the "sort by" parameter
|
1086 |
-
this.displayed_gallery.set('order_by', sort_by);
|
1087 |
-
|
1088 |
this.entities.reset();
|
1089 |
this.$el.find('a.sortorder').each(function(){
|
1090 |
var $item = $(this);
|
@@ -1096,7 +1068,6 @@ jQuery(function($){
|
|
1096 |
},
|
1097 |
|
1098 |
sortdirection_changed: function(model){
|
1099 |
-
|
1100 |
this.sortdirection_options.each(function(item){
|
1101 |
item.set('selected', model.get('value') == item.get('value') ? true : false, {silent: true});
|
1102 |
});
|
@@ -1176,15 +1147,10 @@ jQuery(function($){
|
|
1176 |
this[key] = value;
|
1177 |
}, this);
|
1178 |
this.model.on('change', this.render, this);
|
1179 |
-
if (this.model.get('sortorder') == 0) {
|
1180 |
-
this.model.set('sortorder', -1, {silent: true});
|
1181 |
-
}
|
1182 |
this.id = this.model.get('id_field')+'_'+this.model.entity_id()
|
1183 |
},
|
1184 |
|
1185 |
item_dropped: function(e, index){
|
1186 |
-
Ngg.DisplayTab.instance.displayed_gallery.set('order_by', 'sortorder');
|
1187 |
-
//Ngg.DisplayTab.instance.displayed_gallery.set('order_direction', 'ASC');
|
1188 |
this.model.set('sortorder', index);
|
1189 |
},
|
1190 |
|
@@ -1394,7 +1360,7 @@ jQuery(function($){
|
|
1394 |
var request = <?php echo $sec_token?>;
|
1395 |
request = _.extend(request, {
|
1396 |
action: 'save_displayed_gallery',
|
1397 |
-
displayed_gallery:
|
1398 |
});
|
1399 |
|
1400 |
var self = this;
|
@@ -1495,7 +1461,6 @@ jQuery(function($){
|
|
1495 |
this.display_type_order_step = <?php echo NEXTGEN_DISPLAY_PRIORITY_STEP; ?>;
|
1496 |
this.entities = new Ngg.DisplayTab.Models.Entity_Collection();
|
1497 |
this.entities.extra_data.displayed_gallery = this.displayed_gallery;
|
1498 |
-
this.image_key = "<?php echo $image_primary_key ?>";
|
1499 |
|
1500 |
// Pre-select current displayed gallery values
|
1501 |
if (this.displayed_gallery.get('source')) {
|
260 |
* A collection that can fetch it's entities from the server
|
261 |
**/
|
262 |
Ngg.Models.Remote_Collection = Ngg.Models.SelectableItems.extend({
|
263 |
+
fetch_limit: 50,
|
264 |
in_progress: false,
|
265 |
fetch_url: photocrati_ajax.url,
|
266 |
action: '',
|
808 |
this.entities.remove(model, {silent: true});
|
809 |
this.entities.add(model, {at: model.changed.sortorder, silent: true});
|
810 |
this.displayed_gallery.set('sortorder', this.entities.entity_ids());
|
|
|
|
|
|
|
811 |
this.displayed_gallery.set('order_by', 'sortorder');
|
812 |
}, this);
|
813 |
|
1014 |
}
|
1015 |
]);
|
1016 |
this.sortdirection_options.on('change:selected', this.sortdirection_changed, this);
|
|
|
|
|
1017 |
},
|
1018 |
|
1019 |
populate_sorting_fields: function(){
|
1038 |
|
1039 |
fill_image_sortorder_options: function(){
|
1040 |
this.sortorder_options.reset();
|
|
|
1041 |
this.sortorder_options.push(this.create_sortorder_option('sortorder', 'Custom'));
|
1042 |
this.sortorder_options.push(this.create_sortorder_option(Ngg.DisplayTab.instance.image_key, 'Image ID'));
|
1043 |
this.sortorder_options.push(this.create_sortorder_option('filename', 'Filename'));
|
1047 |
|
1048 |
fill_gallery_sortorder_options: function(){
|
1049 |
this.sortorder_options.reset();
|
|
|
1050 |
this.sortorder_options.push(this.create_sortorder_option('sortorder' ,'Custom'));
|
1051 |
this.sortorder_options.push(this.create_sortorder_option('name', 'Name'));
|
1052 |
this.sortorder_options.push(this.create_sortorder_option('galdesc', 'Description'));
|
1053 |
},
|
1054 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1055 |
sortoption_changed: function(model){
|
1056 |
this.sortorder_options.each(function(item){
|
1057 |
item.set('selected', model.get('value') == item.get('value') ? true : false, {silent: true});
|
1058 |
});
|
1059 |
+
this.displayed_gallery.set('order_by', model.get('value'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1060 |
this.entities.reset();
|
1061 |
this.$el.find('a.sortorder').each(function(){
|
1062 |
var $item = $(this);
|
1068 |
},
|
1069 |
|
1070 |
sortdirection_changed: function(model){
|
|
|
1071 |
this.sortdirection_options.each(function(item){
|
1072 |
item.set('selected', model.get('value') == item.get('value') ? true : false, {silent: true});
|
1073 |
});
|
1147 |
this[key] = value;
|
1148 |
}, this);
|
1149 |
this.model.on('change', this.render, this);
|
|
|
|
|
|
|
1150 |
this.id = this.model.get('id_field')+'_'+this.model.entity_id()
|
1151 |
},
|
1152 |
|
1153 |
item_dropped: function(e, index){
|
|
|
|
|
1154 |
this.model.set('sortorder', index);
|
1155 |
},
|
1156 |
|
1360 |
var request = <?php echo $sec_token?>;
|
1361 |
request = _.extend(request, {
|
1362 |
action: 'save_displayed_gallery',
|
1363 |
+
displayed_gallery: this.displayed_gallery.toJSON()
|
1364 |
});
|
1365 |
|
1366 |
var self = this;
|
1461 |
this.display_type_order_step = <?php echo NEXTGEN_DISPLAY_PRIORITY_STEP; ?>;
|
1462 |
this.entities = new Ngg.DisplayTab.Models.Entity_Collection();
|
1463 |
this.entities.extra_data.displayed_gallery = this.displayed_gallery;
|
|
|
1464 |
|
1465 |
// Pre-select current displayed gallery values
|
1466 |
if (this.displayed_gallery.get('source')) {
|
products/photocrati_nextgen/modules/cache/class.cache.php
CHANGED
@@ -59,10 +59,10 @@ class Mixin_Cache extends Mixin
|
|
59 |
|
60 |
foreach ($iterator as $file) {
|
61 |
if ($file->isFile() || $file->isLink()) {
|
62 |
-
|
63 |
}
|
64 |
elseif ($file->isDir() && !$file->isDot() && $recursive) {
|
65 |
-
|
66 |
}
|
67 |
}
|
68 |
}
|
59 |
|
60 |
foreach ($iterator as $file) {
|
61 |
if ($file->isFile() || $file->isLink()) {
|
62 |
+
unlink($file->getPathname());
|
63 |
}
|
64 |
elseif ($file->isDir() && !$file->isDot() && $recursive) {
|
65 |
+
rmdir($file->getPathname());
|
66 |
}
|
67 |
}
|
68 |
}
|
products/photocrati_nextgen/modules/cache/module.cache.php
CHANGED
@@ -15,7 +15,7 @@ class M_Cache extends C_Base_Module
|
|
15 |
'photocrati-cache',
|
16 |
'Cache',
|
17 |
'Handles clearing of NextGen caches',
|
18 |
-
'0.
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
15 |
'photocrati-cache',
|
16 |
'Cache',
|
17 |
'Handles clearing of NextGen caches',
|
18 |
+
'0.1',
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/datamapper/class.custompost_datamapper_driver.php
CHANGED
@@ -30,7 +30,6 @@ class Mixin_CustomPost_DataMapper_Driver extends Mixin
|
|
30 |
'is_select' => TRUE,
|
31 |
'is_delete' => FALSE
|
32 |
);
|
33 |
-
|
34 |
return $this->object;
|
35 |
}
|
36 |
|
@@ -253,6 +252,7 @@ class Mixin_CustomPost_DataMapper_Driver extends Mixin
|
|
253 |
*/
|
254 |
function convert_post_to_entity($post, $model=FALSE)
|
255 |
{
|
|
|
256 |
$entity = new stdClass();
|
257 |
foreach ($post as $key => $value) {
|
258 |
if ($key == 'post_content') {
|
@@ -335,14 +335,7 @@ class Mixin_CustomPost_DataMapper_Driver extends Mixin
|
|
335 |
/* @var $wpdb wpdb */
|
336 |
global $wpdb;
|
337 |
if (!is_array($omit)) $omit = array($omit);
|
338 |
-
|
339 |
-
// By default, we omit creating meta values for columns in the posts table
|
340 |
-
$omit = array_merge($omit, $this->object->_table_columns);
|
341 |
-
|
342 |
-
// Delete the existing meta values
|
343 |
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->postmeta} WHERE post_id = %s", $post_id));
|
344 |
-
|
345 |
-
// Create query for new meta values
|
346 |
$sql_parts = array();
|
347 |
foreach($entity as $key => $value) {
|
348 |
if (in_array($key, $omit)) continue;
|
@@ -430,27 +423,17 @@ class Mixin_CustomPost_DataMapper_Driver extends Mixin
|
|
430 |
}
|
431 |
|
432 |
// Execute the query
|
433 |
-
$query = new WP_Query();
|
434 |
-
$query->query_vars = $this->object->_query_args;
|
435 |
-
add_action('pre_get_posts', array(&$this, 'set_query_args'), PHP_INT_MAX-1, 1);
|
436 |
foreach ($query->get_posts() as $row) {
|
437 |
-
$
|
|
|
|
|
|
|
438 |
}
|
439 |
-
remove_action('pre_get_posts', array(&$this, 'set_query_args'), PHP_INT_MAX-1, 1);
|
440 |
|
441 |
return $retval;
|
442 |
}
|
443 |
|
444 |
-
/**
|
445 |
-
* Ensure that the query args are set. We need to do this in case a third-party
|
446 |
-
* plugin overrides our query
|
447 |
-
* @param $query
|
448 |
-
*/
|
449 |
-
function set_query_args($query)
|
450 |
-
{
|
451 |
-
if ($query->get('datamapper')) $query->query_vars = $this->object->_query_args;
|
452 |
-
}
|
453 |
-
|
454 |
/**
|
455 |
* Fetches the last row
|
456 |
* @param array $conditions
|
@@ -526,13 +509,17 @@ class C_CustomPost_DataMapper_Driver extends C_DataMapper_Driver_Base
|
|
526 |
|
527 |
function define($object_name, $context=FALSE)
|
528 |
{
|
529 |
-
if (strlen($object_name) > 20) throw new Exception("The custom post name can be no longer than 20 characters long");
|
530 |
-
|
531 |
parent::define($object_name, $context);
|
532 |
$this->add_mixin('Mixin_CustomPost_DataMapper_Driver');
|
533 |
$this->implement('I_CustomPost_DataMapper');
|
534 |
}
|
535 |
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
|
537 |
/**
|
538 |
* Gets the name of the table
|
30 |
'is_select' => TRUE,
|
31 |
'is_delete' => FALSE
|
32 |
);
|
|
|
33 |
return $this->object;
|
34 |
}
|
35 |
|
252 |
*/
|
253 |
function convert_post_to_entity($post, $model=FALSE)
|
254 |
{
|
255 |
+
|
256 |
$entity = new stdClass();
|
257 |
foreach ($post as $key => $value) {
|
258 |
if ($key == 'post_content') {
|
335 |
/* @var $wpdb wpdb */
|
336 |
global $wpdb;
|
337 |
if (!is_array($omit)) $omit = array($omit);
|
|
|
|
|
|
|
|
|
|
|
338 |
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->postmeta} WHERE post_id = %s", $post_id));
|
|
|
|
|
339 |
$sql_parts = array();
|
340 |
foreach($entity as $key => $value) {
|
341 |
if (in_array($key, $omit)) continue;
|
423 |
}
|
424 |
|
425 |
// Execute the query
|
426 |
+
$query = new WP_Query($this->object->_query_args);
|
|
|
|
|
427 |
foreach ($query->get_posts() as $row) {
|
428 |
+
$row = $this->object->convert_post_to_entity($this->scrub_result($row), $model);
|
429 |
+
if (!$model)
|
430 |
+
$row->id_field = $this->object->get_primary_key_column();
|
431 |
+
$retval[] = $row;
|
432 |
}
|
|
|
433 |
|
434 |
return $retval;
|
435 |
}
|
436 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
437 |
/**
|
438 |
* Fetches the last row
|
439 |
* @param array $conditions
|
509 |
|
510 |
function define($object_name, $context=FALSE)
|
511 |
{
|
|
|
|
|
512 |
parent::define($object_name, $context);
|
513 |
$this->add_mixin('Mixin_CustomPost_DataMapper_Driver');
|
514 |
$this->implement('I_CustomPost_DataMapper');
|
515 |
}
|
516 |
|
517 |
+
function initialize($object_name)
|
518 |
+
{
|
519 |
+
if (strlen($object_name) > 20) throw new Exception("The custom post name can be no longer than 20 characters long");
|
520 |
+
parent::initialize($object_name);
|
521 |
+
}
|
522 |
+
|
523 |
|
524 |
/**
|
525 |
* Gets the name of the table
|
products/photocrati_nextgen/modules/datamapper/class.customtable_datamapper_driver.php
CHANGED
@@ -18,11 +18,10 @@ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin
|
|
18 |
* specify DB columns
|
19 |
* @param string $fields
|
20 |
*/
|
21 |
-
function select($fields=
|
22 |
{
|
23 |
// Create a fresh slate
|
24 |
$this->object->_init();
|
25 |
-
if (!$fields OR $fields == '*') $fields = $this->get_table_name().'.*';
|
26 |
$this->object->_select_clause = "SELECT {$fields}";
|
27 |
|
28 |
return $this->object;
|
@@ -183,8 +182,8 @@ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin
|
|
183 |
if ($where_clauses) $sql[] = 'WHERE '.implode(' AND ', $where_clauses);
|
184 |
|
185 |
if ($this->object->is_select_statement()) {
|
186 |
-
if ($this->object->_group_by_columns) $sql[] = 'GROUP BY '.implode(', ', $this->object->_group_by_columns);
|
187 |
if ($this->object->_order_clauses) $sql[] = 'ORDER BY '.implode(', ', $this->object->_order_clauses);
|
|
|
188 |
if ($this->object->_limit_clause) $sql[] = $this->object->_limit_clause;
|
189 |
}
|
190 |
return implode(' ', $sql);
|
@@ -207,9 +206,8 @@ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin
|
|
207 |
// If we have a SQL statement to execute, then heck, execute it!
|
208 |
if ($sql)
|
209 |
{
|
210 |
-
if ($this->object->debug)
|
211 |
-
|
212 |
-
}
|
213 |
|
214 |
$this->_wpdb()->query($sql);
|
215 |
|
@@ -222,19 +220,11 @@ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin
|
|
222 |
$retval = $this->_wpdb()->last_result;
|
223 |
}
|
224 |
else {
|
225 |
-
$id_field = $this->get_primary_key_column();
|
226 |
foreach ($this->_wpdb()->last_result as $row) {
|
227 |
-
|
228 |
-
if (isset($row->$id_field)) {
|
229 |
-
$retval[] = $this->object->_convert_to_entity($this->scrub_result($row));
|
230 |
-
}
|
231 |
-
}
|
232 |
}
|
233 |
}
|
234 |
}
|
235 |
-
elseif ($this->object->debug) {
|
236 |
-
var_dump("No entities returned from query");
|
237 |
-
}
|
238 |
}
|
239 |
|
240 |
return $retval;
|
@@ -250,7 +240,7 @@ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin
|
|
250 |
|
251 |
unset($entity->id_field);
|
252 |
$primary_key = $this->object->get_primary_key_column();
|
253 |
-
if (isset($entity->$primary_key)
|
254 |
if($this->object->_update($entity)) $retval = intval($entity->$primary_key);
|
255 |
}
|
256 |
else {
|
@@ -369,50 +359,70 @@ class C_CustomTable_DataMapper_Driver_Mixin extends Mixin
|
|
369 |
return $retval;
|
370 |
}
|
371 |
|
372 |
-
|
|
|
|
|
|
|
|
|
373 |
{
|
374 |
-
$
|
375 |
-
|
376 |
-
|
377 |
-
$
|
378 |
}
|
379 |
-
$this->object->
|
380 |
}
|
381 |
|
382 |
-
|
|
|
|
|
|
|
|
|
|
|
383 |
{
|
384 |
-
$
|
385 |
-
$this->object->
|
386 |
}
|
387 |
|
388 |
/**
|
389 |
-
*
|
|
|
|
|
390 |
*/
|
391 |
-
function
|
392 |
{
|
393 |
-
|
394 |
-
|
395 |
-
}
|
396 |
-
|
397 |
-
if ($lookup) $this->lookup_columns();
|
398 |
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
}
|
405 |
|
406 |
-
//
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
}
|
411 |
}
|
412 |
|
413 |
$this->object->lookup_columns();
|
414 |
}
|
415 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
416 |
|
417 |
function _init()
|
418 |
{
|
@@ -436,20 +446,21 @@ class C_CustomTable_DataMapper_Driver extends C_DataMapper_Driver_Base
|
|
436 |
var $_limit_clause = '';
|
437 |
var $_select_clause = '';
|
438 |
var $_delete_clause = '';
|
|
|
|
|
439 |
|
440 |
function define($object_name, $context=FALSE)
|
441 |
{
|
442 |
-
parent::define($
|
443 |
$this->add_mixin('C_CustomTable_DataMapper_Driver_Mixin');
|
444 |
$this->implement('I_CustomTable_DataMapper');
|
445 |
}
|
446 |
|
447 |
-
function initialize($object_name
|
448 |
{
|
449 |
parent::initialize($object_name);
|
450 |
if (!isset($this->_primary_key_column))
|
451 |
$this->_primary_key_column = $this->_lookup_primary_key_column();
|
452 |
-
$this->migrate(FALSE);
|
453 |
}
|
454 |
|
455 |
/**
|
18 |
* specify DB columns
|
19 |
* @param string $fields
|
20 |
*/
|
21 |
+
function select($fields='*')
|
22 |
{
|
23 |
// Create a fresh slate
|
24 |
$this->object->_init();
|
|
|
25 |
$this->object->_select_clause = "SELECT {$fields}";
|
26 |
|
27 |
return $this->object;
|
182 |
if ($where_clauses) $sql[] = 'WHERE '.implode(' AND ', $where_clauses);
|
183 |
|
184 |
if ($this->object->is_select_statement()) {
|
|
|
185 |
if ($this->object->_order_clauses) $sql[] = 'ORDER BY '.implode(', ', $this->object->_order_clauses);
|
186 |
+
if ($this->object->_group_by_columns) $sql[] = 'GROUP BY '.implode(', ', $this->object->_group_by_columns);
|
187 |
if ($this->object->_limit_clause) $sql[] = $this->object->_limit_clause;
|
188 |
}
|
189 |
return implode(' ', $sql);
|
206 |
// If we have a SQL statement to execute, then heck, execute it!
|
207 |
if ($sql)
|
208 |
{
|
209 |
+
if ($this->object->debug)
|
210 |
+
var_dump($sql);
|
|
|
211 |
|
212 |
$this->_wpdb()->query($sql);
|
213 |
|
220 |
$retval = $this->_wpdb()->last_result;
|
221 |
}
|
222 |
else {
|
|
|
223 |
foreach ($this->_wpdb()->last_result as $row) {
|
224 |
+
$retval[] = $this->_convert_to_entity($this->scrub_result($row));
|
|
|
|
|
|
|
|
|
225 |
}
|
226 |
}
|
227 |
}
|
|
|
|
|
|
|
228 |
}
|
229 |
|
230 |
return $retval;
|
240 |
|
241 |
unset($entity->id_field);
|
242 |
$primary_key = $this->object->get_primary_key_column();
|
243 |
+
if (isset($entity->$primary_key)) {
|
244 |
if($this->object->_update($entity)) $retval = intval($entity->$primary_key);
|
245 |
}
|
246 |
else {
|
359 |
return $retval;
|
360 |
}
|
361 |
|
362 |
+
|
363 |
+
/**
|
364 |
+
* Looks up using SQL the columns existing in the database
|
365 |
+
*/
|
366 |
+
function lookup_columns()
|
367 |
{
|
368 |
+
$this->object->_columns = array();
|
369 |
+
$sql = "SHOW COLUMNS FROM `{$this->object->get_table_name()}`";
|
370 |
+
foreach ($this->object->run_query($sql, TRUE) as $row) {
|
371 |
+
$this->object->_columns[] = $row->Field;
|
372 |
}
|
373 |
+
return $this->object->_columns;
|
374 |
}
|
375 |
|
376 |
+
/**
|
377 |
+
* Determines whether a column is present for the table
|
378 |
+
* @param string $column_name
|
379 |
+
* @return string
|
380 |
+
*/
|
381 |
+
function has_column($column_name)
|
382 |
{
|
383 |
+
if (empty($this->object->_columns)) $this->object->lookup_columns();
|
384 |
+
return array_search($column_name, $this->object->_columns);
|
385 |
}
|
386 |
|
387 |
/**
|
388 |
+
* Defines a column for this table
|
389 |
+
* @param string $column_name
|
390 |
+
* @param string $datatype
|
391 |
*/
|
392 |
+
function define_column($column_name, $datatype)
|
393 |
{
|
394 |
+
$this->object->_defined_columns[$column_name] = $datatype;
|
395 |
+
}
|
|
|
|
|
|
|
396 |
|
397 |
+
function add_column($column_name, $datatype=FALSE)
|
398 |
+
{
|
399 |
+
// If no datatype was specified, perhaps the column was already defined
|
400 |
+
if (!$datatype && isset($this->object->_defined_columns[$column_name])) {
|
401 |
+
$datatype = $this->object->_defined_columns[$column_name];
|
402 |
}
|
403 |
|
404 |
+
// Ensure that we have a datatype before continuing...
|
405 |
+
if ($datatype) {
|
406 |
+
$sql = "ALTER TABLE `{$this->get_table_name()}` ADD COLUMN ``{$column_name}` {$datatype}";
|
407 |
+
$this->object->run_query($sql);
|
|
|
408 |
}
|
409 |
|
410 |
$this->object->lookup_columns();
|
411 |
}
|
412 |
|
413 |
+
/**
|
414 |
+
* Migrates the schema of the database
|
415 |
+
*/
|
416 |
+
function migrate()
|
417 |
+
{
|
418 |
+
if (empty($this->object->_columns)) $this->object->lookup_columns();
|
419 |
+
foreach ($this->object->_columns as $column_name) {
|
420 |
+
if (!$this->object->has_column($column_name)) {
|
421 |
+
$this->object->add_column($column_name);
|
422 |
+
}
|
423 |
+
}
|
424 |
+
}
|
425 |
+
|
426 |
|
427 |
function _init()
|
428 |
{
|
446 |
var $_limit_clause = '';
|
447 |
var $_select_clause = '';
|
448 |
var $_delete_clause = '';
|
449 |
+
var $_columns = array();
|
450 |
+
var $_defined_columns = array();
|
451 |
|
452 |
function define($object_name, $context=FALSE)
|
453 |
{
|
454 |
+
parent::define($context);
|
455 |
$this->add_mixin('C_CustomTable_DataMapper_Driver_Mixin');
|
456 |
$this->implement('I_CustomTable_DataMapper');
|
457 |
}
|
458 |
|
459 |
+
function initialize($object_name)
|
460 |
{
|
461 |
parent::initialize($object_name);
|
462 |
if (!isset($this->_primary_key_column))
|
463 |
$this->_primary_key_column = $this->_lookup_primary_key_column();
|
|
|
464 |
}
|
465 |
|
466 |
/**
|
products/photocrati_nextgen/modules/datamapper/class.datamapper_driver_base.php
CHANGED
@@ -3,13 +3,7 @@
|
|
3 |
/**
|
4 |
* Thrown when an entity does not exist
|
5 |
*/
|
6 |
-
class E_EntityNotFoundException extends
|
7 |
-
{
|
8 |
-
|
9 |
-
}
|
10 |
-
|
11 |
-
|
12 |
-
class E_ColumnsNotDefinedException extends E_NggErrorException
|
13 |
{
|
14 |
|
15 |
}
|
@@ -19,7 +13,7 @@ class E_ColumnsNotDefinedException extends E_NggErrorException
|
|
19 |
* array which is not yet supported due to a problem with references and the
|
20 |
* call_user_func_array() function.
|
21 |
*/
|
22 |
-
class E_InvalidEntityException extends
|
23 |
{
|
24 |
function __construct($message_or_previous=FALSE, $code=0, $previous=NULL)
|
25 |
{
|
@@ -62,24 +56,6 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
62 |
);
|
63 |
}
|
64 |
|
65 |
-
/**
|
66 |
-
* Notes that a particular columns is serialized, and should be unserialized when converted to an entity
|
67 |
-
* @param $column
|
68 |
-
*/
|
69 |
-
function add_serialized_column($column)
|
70 |
-
{
|
71 |
-
$this->object->_serialized_columns[] = $column;
|
72 |
-
}
|
73 |
-
|
74 |
-
function unserialize_columns($object)
|
75 |
-
{
|
76 |
-
foreach ($this->object->_serialized_columns as $column) {
|
77 |
-
if (isset($object->$column) && is_string($object->$column)) {
|
78 |
-
$object->$column = $this->unserialize($object->$column);
|
79 |
-
}
|
80 |
-
}
|
81 |
-
}
|
82 |
-
|
83 |
/**
|
84 |
* Serializes the data
|
85 |
* @param mixed $value
|
@@ -100,7 +76,6 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
100 |
function unserialize($value)
|
101 |
{
|
102 |
$retval = NULL;
|
103 |
-
|
104 |
if (is_string($value))
|
105 |
{
|
106 |
$retval = stripcslashes($value);
|
@@ -292,10 +267,9 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
292 |
// A bind could be an array, used for the 'IN' operator
|
293 |
// or a simple scalar value. We need to convert arrays
|
294 |
// into scalar values
|
295 |
-
if (is_object($bind))
|
296 |
-
|
297 |
-
|
298 |
-
if (is_array($bind) && !empty($bind)) {
|
299 |
foreach ($bind as &$val) {
|
300 |
if (!is_numeric($val)) {
|
301 |
$val = '"'.addslashes($val).'"';
|
@@ -304,12 +278,7 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
304 |
}
|
305 |
$bind = implode(',', $bind);
|
306 |
}
|
307 |
-
|
308 |
-
$bind = 'NULL';
|
309 |
-
}
|
310 |
-
else if(!is_numeric($bind)) {
|
311 |
-
$numeric = FALSE;
|
312 |
-
}
|
313 |
}
|
314 |
$condition = $wpdb->prepare($condition, $binds);
|
315 |
|
@@ -368,12 +337,9 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
368 |
// Add name of the id_field to the entity, and convert
|
369 |
// the ID to an integer
|
370 |
$stdObject->id_field = $key = $this->object->get_primary_key_column();
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
// Unserialize columns
|
376 |
-
$this->unserialize_columns($stdObject);
|
377 |
|
378 |
// Set defaults for this entity
|
379 |
$this->object->set_defaults($stdObject);
|
@@ -414,7 +380,7 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
414 |
$entity = new stdClass;
|
415 |
foreach ($properties as $k=>$v) $entity->$k = $v;
|
416 |
}
|
417 |
-
return $factory->create($this->object->get_model_factory_method(), $
|
418 |
}
|
419 |
|
420 |
|
@@ -557,79 +523,24 @@ class Mixin_DataMapper_Driver_Base extends Mixin
|
|
557 |
return stripslashes($result);
|
558 |
}
|
559 |
}
|
560 |
-
|
561 |
-
function define_column($name, $type, $default_value=NULL)
|
562 |
-
{
|
563 |
-
$this->object->_columns[$name] = array(
|
564 |
-
'type' => $type,
|
565 |
-
'default_value' => $default_value
|
566 |
-
);
|
567 |
-
}
|
568 |
-
|
569 |
-
function has_defined_column($name)
|
570 |
-
{
|
571 |
-
$columns = $this->object->_columns;
|
572 |
-
return isset($columns[$name]);
|
573 |
-
}
|
574 |
-
|
575 |
-
function cast_columns($entity)
|
576 |
-
{
|
577 |
-
foreach ($this->object->_columns as $key => $properties) {
|
578 |
-
$value = isset($entity->$key) ? $entity->$key : NULL;
|
579 |
-
$default_value = $properties['default_value'];
|
580 |
-
if ($value && $value != $default_value) {
|
581 |
-
$column_type = $this->object->_columns[$key]['type'];
|
582 |
-
if (preg_match("/varchar|text/i", $column_type)) {
|
583 |
-
if (!is_array($value) && !is_object($value))
|
584 |
-
$entity->$key = strval($value);
|
585 |
-
}
|
586 |
-
else if (preg_match("/decimal|numeric|double/i", $column_type)) {
|
587 |
-
$entity->$key = doubleval($value);
|
588 |
-
}
|
589 |
-
else if (preg_match("/float/i", $column_type)) {
|
590 |
-
$entity->$key = floatval($value);
|
591 |
-
}
|
592 |
-
else if (preg_match("/int/i", $column_type)) {
|
593 |
-
$entity->$key = intval($value);
|
594 |
-
}
|
595 |
-
else if (preg_match("/bool/i", $column_type)) {
|
596 |
-
$entity->$key = ($value ? TRUE : FALSE);
|
597 |
-
}
|
598 |
-
}
|
599 |
-
|
600 |
-
// Add property and default value
|
601 |
-
else {
|
602 |
-
$entity->$key = $default_value;
|
603 |
-
}
|
604 |
-
}
|
605 |
-
return $entity;
|
606 |
-
}
|
607 |
}
|
608 |
|
609 |
class C_DataMapper_Driver_Base extends C_Component
|
610 |
{
|
611 |
var $_object_name;
|
612 |
var $_model_factory_method = FALSE;
|
613 |
-
var $_columns = array();
|
614 |
-
var $_table_columns = array();
|
615 |
-
var $_serialized_columns = array();
|
616 |
|
617 |
function define($object_name, $context=FALSE)
|
618 |
{
|
619 |
parent::define($context);
|
620 |
$this->add_mixin('Mixin_DataMapper_Driver_Base');
|
621 |
$this->implement('I_DataMapper_Driver');
|
622 |
-
$this->_object_name = $object_name;
|
623 |
-
|
624 |
-
if ($this->has_method('define_columns')) {
|
625 |
-
$this->define_columns();
|
626 |
-
}
|
627 |
}
|
628 |
|
629 |
-
function initialize()
|
630 |
{
|
631 |
parent::initialize();
|
632 |
-
$this->
|
633 |
}
|
634 |
|
635 |
/**
|
@@ -652,32 +563,6 @@ class C_DataMapper_Driver_Base extends C_Component
|
|
652 |
return $table_prefix.$this->_object_name;
|
653 |
}
|
654 |
|
655 |
-
|
656 |
-
/**
|
657 |
-
* Looks up using SQL the columns existing in the database
|
658 |
-
*/
|
659 |
-
function lookup_columns()
|
660 |
-
{
|
661 |
-
global $wpdb;
|
662 |
-
$this->_table_columns = array();
|
663 |
-
$sql = "SHOW COLUMNS FROM `{$this->get_table_name()}`";
|
664 |
-
foreach ($wpdb->get_results($sql) as $row) {
|
665 |
-
$this->_table_columns[] = $row->Field;
|
666 |
-
}
|
667 |
-
return $this->_table_columns;
|
668 |
-
}
|
669 |
-
|
670 |
-
/**
|
671 |
-
* Determines whether a column is present for the table
|
672 |
-
* @param string $column_name
|
673 |
-
* @return string
|
674 |
-
*/
|
675 |
-
function has_column($column_name)
|
676 |
-
{
|
677 |
-
if (empty($this->object->_table_columns)) $this->object->lookup_columns();
|
678 |
-
return array_search($column_name, $this->object->_table_columns) !== FALSE;
|
679 |
-
}
|
680 |
-
|
681 |
/**
|
682 |
* Sets the name of the factory method used to create a model for this entity
|
683 |
* @param string $method_name
|
3 |
/**
|
4 |
* Thrown when an entity does not exist
|
5 |
*/
|
6 |
+
class E_EntityNotFoundException extends RuntimeException
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
{
|
8 |
|
9 |
}
|
13 |
* array which is not yet supported due to a problem with references and the
|
14 |
* call_user_func_array() function.
|
15 |
*/
|
16 |
+
class E_InvalidEntityException extends RuntimeException
|
17 |
{
|
18 |
function __construct($message_or_previous=FALSE, $code=0, $previous=NULL)
|
19 |
{
|
56 |
);
|
57 |
}
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
/**
|
60 |
* Serializes the data
|
61 |
* @param mixed $value
|
76 |
function unserialize($value)
|
77 |
{
|
78 |
$retval = NULL;
|
|
|
79 |
if (is_string($value))
|
80 |
{
|
81 |
$retval = stripcslashes($value);
|
267 |
// A bind could be an array, used for the 'IN' operator
|
268 |
// or a simple scalar value. We need to convert arrays
|
269 |
// into scalar values
|
270 |
+
if (is_object($bind)) $bind = (array)$bind;
|
271 |
+
if (is_array($bind)) {
|
272 |
+
if (empty($bind)) return FALSE;
|
|
|
273 |
foreach ($bind as &$val) {
|
274 |
if (!is_numeric($val)) {
|
275 |
$val = '"'.addslashes($val).'"';
|
278 |
}
|
279 |
$bind = implode(',', $bind);
|
280 |
}
|
281 |
+
elseif(!is_numeric($bind)) $numeric = FALSE;
|
|
|
|
|
|
|
|
|
|
|
282 |
}
|
283 |
$condition = $wpdb->prepare($condition, $binds);
|
284 |
|
337 |
// Add name of the id_field to the entity, and convert
|
338 |
// the ID to an integer
|
339 |
$stdObject->id_field = $key = $this->object->get_primary_key_column();
|
340 |
+
if (isset($stdObject->$key)) {
|
341 |
+
$stdObject->$key = (int) $stdObject->$key;
|
342 |
+
}
|
|
|
|
|
|
|
343 |
|
344 |
// Set defaults for this entity
|
345 |
$this->object->set_defaults($stdObject);
|
380 |
$entity = new stdClass;
|
381 |
foreach ($properties as $k=>$v) $entity->$k = $v;
|
382 |
}
|
383 |
+
return $factory->create($this->object->get_model_factory_method(), $this->object, $entity, $context);
|
384 |
}
|
385 |
|
386 |
|
523 |
return stripslashes($result);
|
524 |
}
|
525 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
526 |
}
|
527 |
|
528 |
class C_DataMapper_Driver_Base extends C_Component
|
529 |
{
|
530 |
var $_object_name;
|
531 |
var $_model_factory_method = FALSE;
|
|
|
|
|
|
|
532 |
|
533 |
function define($object_name, $context=FALSE)
|
534 |
{
|
535 |
parent::define($context);
|
536 |
$this->add_mixin('Mixin_DataMapper_Driver_Base');
|
537 |
$this->implement('I_DataMapper_Driver');
|
|
|
|
|
|
|
|
|
|
|
538 |
}
|
539 |
|
540 |
+
function initialize($object_name)
|
541 |
{
|
542 |
parent::initialize();
|
543 |
+
$this->_object_name = $object_name;
|
544 |
}
|
545 |
|
546 |
/**
|
563 |
return $table_prefix.$this->_object_name;
|
564 |
}
|
565 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
566 |
/**
|
567 |
* Sets the name of the factory method used to create a model for this entity
|
568 |
* @param string $method_name
|
products/photocrati_nextgen/modules/datamapper/class.datamapper_installer.php
CHANGED
@@ -4,7 +4,7 @@ class C_DataMapper_Installer
|
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
-
$this->settings =
|
8 |
}
|
9 |
|
10 |
function install()
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
}
|
9 |
|
10 |
function install()
|
products/photocrati_nextgen/modules/datamapper/class.datamapper_model.php
CHANGED
@@ -8,7 +8,7 @@ class C_DataMapper_Model extends C_Component
|
|
8 |
/**
|
9 |
* Define the model
|
10 |
*/
|
11 |
-
function define($mapper
|
12 |
{
|
13 |
parent::define($context);
|
14 |
$this->add_mixin('Mixin_Validation');
|
@@ -23,7 +23,7 @@ class C_DataMapper_Model extends C_Component
|
|
23 |
* @param array|stdClass $properties
|
24 |
* @param string $context
|
25 |
*/
|
26 |
-
function initialize($mapper
|
27 |
{
|
28 |
$this->_mapper = $mapper;
|
29 |
$this->_stdObject = $properties ? (object)$properties : new stdClass();
|
@@ -105,7 +105,7 @@ class C_DataMapper_Model extends C_Component
|
|
105 |
*/
|
106 |
function destroy()
|
107 |
{
|
108 |
-
|
109 |
}
|
110 |
|
111 |
|
@@ -121,14 +121,16 @@ class C_DataMapper_Model extends C_Component
|
|
121 |
/**
|
122 |
* Gets/sets the primary key
|
123 |
*/
|
124 |
-
function id(
|
125 |
{
|
126 |
$key = $this->get_mapper()->get_primary_key_column();
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
130 |
}
|
131 |
-
return $this->__get($key);
|
132 |
}
|
133 |
}
|
134 |
|
8 |
/**
|
9 |
* Define the model
|
10 |
*/
|
11 |
+
function define($mapper, $properties, $context=FALSE)
|
12 |
{
|
13 |
parent::define($context);
|
14 |
$this->add_mixin('Mixin_Validation');
|
23 |
* @param array|stdClass $properties
|
24 |
* @param string $context
|
25 |
*/
|
26 |
+
function initialize($mapper, $properties=FALSE)
|
27 |
{
|
28 |
$this->_mapper = $mapper;
|
29 |
$this->_stdObject = $properties ? (object)$properties : new stdClass();
|
105 |
*/
|
106 |
function destroy()
|
107 |
{
|
108 |
+
$this->get_mapper()->destroy($this->_stdObject);
|
109 |
}
|
110 |
|
111 |
|
121 |
/**
|
122 |
* Gets/sets the primary key
|
123 |
*/
|
124 |
+
function id()
|
125 |
{
|
126 |
$key = $this->get_mapper()->get_primary_key_column();
|
127 |
+
$args = func_get_args();
|
128 |
+
if ($args) {
|
129 |
+
return $this->__set($key, $args[0]);
|
130 |
+
}
|
131 |
+
else {
|
132 |
+
return $this->__get($key);
|
133 |
}
|
|
|
134 |
}
|
135 |
}
|
136 |
|
products/photocrati_nextgen/modules/datamapper/module.datamapper.php
CHANGED
@@ -14,7 +14,7 @@ class M_DataMapper extends C_Base_Module
|
|
14 |
'photocrati-datamapper',
|
15 |
'DataMapper',
|
16 |
'Provides a database abstraction layer following the DataMapper pattern',
|
17 |
-
'0.
|
18 |
'http://www.photocrati.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
@@ -48,17 +48,14 @@ class M_DataMapper extends C_Base_Module
|
|
48 |
*/
|
49 |
function set_custom_wp_query($sql, &$wp_query)
|
50 |
{
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
$sql = $custom_sql;
|
56 |
-
}
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
}
|
62 |
}
|
63 |
|
64 |
return $sql;
|
@@ -72,13 +69,8 @@ class M_DataMapper extends C_Base_Module
|
|
72 |
*/
|
73 |
function set_custom_wp_query_fields($fields, &$wp_query)
|
74 |
{
|
75 |
-
|
76 |
-
|
77 |
-
$fields = $custom_fields;
|
78 |
-
}
|
79 |
-
}
|
80 |
-
|
81 |
-
return $fields;
|
82 |
}
|
83 |
|
84 |
|
@@ -90,11 +82,8 @@ class M_DataMapper extends C_Base_Module
|
|
90 |
*/
|
91 |
function set_custom_wp_query_where($where, &$wp_query)
|
92 |
{
|
93 |
-
|
94 |
-
|
95 |
-
$this->add_post_name_where_clauses($where, $wp_query);
|
96 |
-
}
|
97 |
-
|
98 |
return $where;
|
99 |
}
|
100 |
|
@@ -117,12 +106,6 @@ class M_DataMapper extends C_Base_Module
|
|
117 |
}
|
118 |
$retval = "GROUP BY ".implode(', ', $group_by_columns);
|
119 |
}
|
120 |
-
// Not all mysql servers allow access to create temporary tables which are used when doing GROUP BY
|
121 |
-
// statements; this can potentially ruin basic queries. If no group_by_columns is set AND the query originates
|
122 |
-
// within the datamapper we strip the "GROUP BY" clause entirely in this filter.
|
123 |
-
else if ($wp_query->get('datamapper')) {
|
124 |
-
$retval = '';
|
125 |
-
}
|
126 |
return $retval;
|
127 |
}
|
128 |
|
@@ -195,7 +178,7 @@ class M_DataMapper extends C_Base_Module
|
|
195 |
return array(
|
196 |
'A_Datamapper_Factory' => 'adapter.datamapper_factory.php',
|
197 |
'C_Datamapper_Installer' => 'class.datamapper_installer.php',
|
198 |
-
'C_Datamapper'
|
199 |
'C_Custompost_Datamapper_Driver' => 'class.custompost_datamapper_driver.php',
|
200 |
'C_Customtable_Datamapper_Driver' => 'class.customtable_datamapper_driver.php',
|
201 |
'C_Datamapper_Driver_Base' => 'class.datamapper_driver_base.php',
|
14 |
'photocrati-datamapper',
|
15 |
'DataMapper',
|
16 |
'Provides a database abstraction layer following the DataMapper pattern',
|
17 |
+
'0.1',
|
18 |
'http://www.photocrati.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
48 |
*/
|
49 |
function set_custom_wp_query($sql, &$wp_query)
|
50 |
{
|
51 |
+
// Set the custom query
|
52 |
+
if (($custom_sql = $wp_query->get('custom_sql'))) {
|
53 |
+
$sql = $custom_sql;
|
54 |
+
}
|
|
|
|
|
55 |
|
56 |
+
// Perhaps we're to initiate a delete query instead?
|
57 |
+
elseif ($wp_query->get('is_delete')) {
|
58 |
+
$sql = preg_replace("/^SELECT.*FROM/i", "DELETE FROM", $sql);
|
|
|
59 |
}
|
60 |
|
61 |
return $sql;
|
69 |
*/
|
70 |
function set_custom_wp_query_fields($fields, &$wp_query)
|
71 |
{
|
72 |
+
$custom_fields = $wp_query->get('fields');
|
73 |
+
return $custom_fields ? $custom_fields : $fields;
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
75 |
|
76 |
|
82 |
*/
|
83 |
function set_custom_wp_query_where($where, &$wp_query)
|
84 |
{
|
85 |
+
$this->add_post_title_where_clauses($where, $wp_query);
|
86 |
+
$this->add_post_name_where_clauses($where, $wp_query);
|
|
|
|
|
|
|
87 |
return $where;
|
88 |
}
|
89 |
|
106 |
}
|
107 |
$retval = "GROUP BY ".implode(', ', $group_by_columns);
|
108 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
return $retval;
|
110 |
}
|
111 |
|
178 |
return array(
|
179 |
'A_Datamapper_Factory' => 'adapter.datamapper_factory.php',
|
180 |
'C_Datamapper_Installer' => 'class.datamapper_installer.php',
|
181 |
+
'C_Datamapper' => 'class.datamapper.php',
|
182 |
'C_Custompost_Datamapper_Driver' => 'class.custompost_datamapper_driver.php',
|
183 |
'C_Customtable_Datamapper_Driver' => 'class.customtable_datamapper_driver.php',
|
184 |
'C_Datamapper_Driver_Base' => 'class.datamapper_driver_base.php',
|
products/photocrati_nextgen/modules/dynamic_stylesheet/class.dynamic_stylesheet_controller.php
CHANGED
@@ -17,7 +17,7 @@ class C_Dynamic_Stylesheet_Controller extends C_MVC_Controller
|
|
17 |
function initialize()
|
18 |
{
|
19 |
parent::initialize();
|
20 |
-
$this->_app =
|
21 |
}
|
22 |
|
23 |
static function &get_instance($context=FALSE)
|
@@ -76,7 +76,7 @@ class Mixin_Dynamic_Stylesheet_Instance_Methods extends Mixin
|
|
76 |
$data = $this->object->encode($data);
|
77 |
wp_enqueue_style(
|
78 |
'dyncss-' . $index . $data . '@dynamic',
|
79 |
-
$this->object->get_router()->get_url("/{$this->object->_app}", FALSE) . "
|
80 |
);
|
81 |
}
|
82 |
}
|
17 |
function initialize()
|
18 |
{
|
19 |
parent::initialize();
|
20 |
+
$this->_app = C_NextGen_Global_Settings::get_instance()->dynamic_stylesheet_slug;
|
21 |
}
|
22 |
|
23 |
static function &get_instance($context=FALSE)
|
76 |
$data = $this->object->encode($data);
|
77 |
wp_enqueue_style(
|
78 |
'dyncss-' . $index . $data . '@dynamic',
|
79 |
+
$this->object->get_router()->get_url("/{$this->object->_app}", FALSE) . "/{$index}/{$data}"
|
80 |
);
|
81 |
}
|
82 |
}
|
products/photocrati_nextgen/modules/dynamic_stylesheet/class.dynamic_stylesheet_installer.php
CHANGED
@@ -4,7 +4,7 @@ class C_Dynamic_Stylesheet_Installer
|
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
-
$this->settings =
|
8 |
}
|
9 |
|
10 |
function install()
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
}
|
9 |
|
10 |
function install()
|
products/photocrati_nextgen/modules/dynamic_stylesheet/module.dynamic_stylesheet.php
CHANGED
@@ -14,7 +14,7 @@ class M_Dynamic_Stylesheet extends C_Base_Module
|
|
14 |
'photocrati-dynamic_stylesheet',
|
15 |
'Dynamic Stylesheet',
|
16 |
'Provides the ability to generate and enqueue a dynamic stylesheet',
|
17 |
-
'0.
|
18 |
'http://www.nextgen-gallery.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com',
|
14 |
'photocrati-dynamic_stylesheet',
|
15 |
'Dynamic Stylesheet',
|
16 |
'Provides the ability to generate and enqueue a dynamic stylesheet',
|
17 |
+
'0.2',
|
18 |
'http://www.nextgen-gallery.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com',
|
products/photocrati_nextgen/modules/dynamic_thumbnails/adapter.dynamic_thumbnails_storage_driver.php
CHANGED
@@ -26,7 +26,7 @@ class A_Dynamic_Thumbnails_Storage_Driver extends Mixin
|
|
26 |
|
27 |
if ($check_existance)
|
28 |
{
|
29 |
-
if (
|
30 |
{
|
31 |
$retval = $image_path;
|
32 |
}
|
@@ -45,7 +45,7 @@ class A_Dynamic_Thumbnails_Storage_Driver extends Mixin
|
|
45 |
return $retval;
|
46 |
}
|
47 |
|
48 |
-
function get_image_url($image, $size='full'
|
49 |
{
|
50 |
$retval = NULL;
|
51 |
$dynthumbs = $this->object->get_registry()->get_utility('I_Dynamic_Thumbnails_Manager');
|
@@ -61,14 +61,7 @@ class A_Dynamic_Thumbnails_Storage_Driver extends Mixin
|
|
61 |
}
|
62 |
|
63 |
if ($retval == null) {
|
64 |
-
$retval = $this->call_parent('get_image_url', $image, $size
|
65 |
-
}
|
66 |
-
|
67 |
-
// Try generating the thumbnail
|
68 |
-
if ($retval == null) {
|
69 |
-
$params = array('watermark' => false, 'reflection' => false, 'crop' => true);
|
70 |
-
$result = $this->generate_thumbnail($image, $params);
|
71 |
-
if ($result) $retval = $this->call_parent('get_image_url', $image, $size, $check_existance);
|
72 |
}
|
73 |
|
74 |
return $retval;
|
26 |
|
27 |
if ($check_existance)
|
28 |
{
|
29 |
+
if (file_exists($image_path))
|
30 |
{
|
31 |
$retval = $image_path;
|
32 |
}
|
45 |
return $retval;
|
46 |
}
|
47 |
|
48 |
+
function get_image_url($image, $size='full')
|
49 |
{
|
50 |
$retval = NULL;
|
51 |
$dynthumbs = $this->object->get_registry()->get_utility('I_Dynamic_Thumbnails_Manager');
|
61 |
}
|
62 |
|
63 |
if ($retval == null) {
|
64 |
+
$retval = $this->call_parent('get_image_url', $image, $size);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
return $retval;
|
products/photocrati_nextgen/modules/dynamic_thumbnails/class.dynamic_thumbnails_installer.php
CHANGED
@@ -4,7 +4,7 @@ class C_Dynamic_Thumbnails_Installer
|
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
-
$this->settings =
|
8 |
}
|
9 |
|
10 |
function install()
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
}
|
9 |
|
10 |
function install()
|
products/photocrati_nextgen/modules/dynamic_thumbnails/class.dynamic_thumbnails_manager.php
CHANGED
@@ -4,7 +4,7 @@ class Mixin_Dynamic_Thumbnails_Manager extends Mixin
|
|
4 |
{
|
5 |
function get_route_name()
|
6 |
{
|
7 |
-
return
|
8 |
}
|
9 |
|
10 |
function _get_params_sanitized($params)
|
4 |
{
|
5 |
function get_route_name()
|
6 |
{
|
7 |
+
return C_NextGen_Global_Settings::get_instance()->get('dynamic_thumbnail_slug');
|
8 |
}
|
9 |
|
10 |
function _get_params_sanitized($params)
|
products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php
CHANGED
@@ -13,7 +13,7 @@ class M_Dynamic_Thumbnails extends C_Base_Module
|
|
13 |
'photocrati-dynamic_thumbnails',
|
14 |
'Dynamic Thumbnails',
|
15 |
'Adds support for dynamic thumbnails',
|
16 |
-
'0.
|
17 |
'http://www.nextgen-gallery.com',
|
18 |
'Photocrati Media',
|
19 |
'http://www.photocrati.com'
|
13 |
'photocrati-dynamic_thumbnails',
|
14 |
'Dynamic Thumbnails',
|
15 |
'Adds support for dynamic thumbnails',
|
16 |
+
'0.1',
|
17 |
'http://www.nextgen-gallery.com',
|
18 |
'Photocrati Media',
|
19 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/frame_communication/class.frame_communication_installer.php
CHANGED
@@ -4,7 +4,7 @@ class C_Frame_Communication_Installer
|
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
-
$this->settings =
|
8 |
}
|
9 |
|
10 |
function install()
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
}
|
9 |
|
10 |
function install()
|
products/photocrati_nextgen/modules/frame_communication/class.frame_event_publisher.php
CHANGED
@@ -15,7 +15,7 @@ class C_Frame_Event_Publisher extends C_Component
|
|
15 |
function initialize()
|
16 |
{
|
17 |
parent::initialize();
|
18 |
-
$this->setting_name =
|
19 |
}
|
20 |
|
21 |
/**
|
@@ -64,15 +64,7 @@ class Mixin_Frame_Event_Publisher extends Mixin
|
|
64 |
{
|
65 |
$id = md5(serialize($data));
|
66 |
$data['context'] = $this->object->context;
|
67 |
-
|
68 |
-
$write_cookie = TRUE;
|
69 |
-
if (defined('XMLRPC_REQUEST')) {
|
70 |
-
$write_cookie = XMLRPC_REQUEST == FALSE;
|
71 |
-
}
|
72 |
-
|
73 |
-
if ($write_cookie) {
|
74 |
-
setrawcookie($this->object->setting_name.'_'.$id,$this->object->_encode($data));
|
75 |
-
}
|
76 |
|
77 |
return $data;
|
78 |
}
|
15 |
function initialize()
|
16 |
{
|
17 |
parent::initialize();
|
18 |
+
$this->setting_name = C_NextGen_Global_Settings::get_instance()->frame_communication_option_name;
|
19 |
}
|
20 |
|
21 |
/**
|
64 |
{
|
65 |
$id = md5(serialize($data));
|
66 |
$data['context'] = $this->object->context;
|
67 |
+
setrawcookie($this->object->setting_name.'_'.$id,$this->object->_encode($data));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
return $data;
|
70 |
}
|
products/photocrati_nextgen/modules/frame_communication/module.frame_communication.php
CHANGED
@@ -15,7 +15,7 @@ class M_Frame_Communication extends C_Base_Module
|
|
15 |
'photocrati-frame_communication',
|
16 |
'Frame/iFrame Inter-Communication',
|
17 |
'Provides a means for HTML frames to share server-side events with each other',
|
18 |
-
'0.
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com',
|
@@ -35,7 +35,7 @@ class M_Frame_Communication extends C_Base_Module
|
|
35 |
|
36 |
function _register_hooks()
|
37 |
{
|
38 |
-
add_action('
|
39 |
|
40 |
}
|
41 |
|
@@ -48,9 +48,7 @@ class M_Frame_Communication extends C_Base_Module
|
|
48 |
$router->get_static_url('photocrati-frame_communication#frame_event_publisher.js'),
|
49 |
array('jquery')
|
50 |
);
|
51 |
-
|
52 |
-
if (is_admin())
|
53 |
-
wp_enqueue_script('frame_event_publisher');
|
54 |
}
|
55 |
|
56 |
function get_type_list()
|
15 |
'photocrati-frame_communication',
|
16 |
'Frame/iFrame Inter-Communication',
|
17 |
'Provides a means for HTML frames to share server-side events with each other',
|
18 |
+
'0.1',
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com',
|
35 |
|
36 |
function _register_hooks()
|
37 |
{
|
38 |
+
add_action('admin_enqueue_scripts', array(&$this, 'enqueue_admin_scripts'));
|
39 |
|
40 |
}
|
41 |
|
48 |
$router->get_static_url('photocrati-frame_communication#frame_event_publisher.js'),
|
49 |
array('jquery')
|
50 |
);
|
51 |
+
wp_enqueue_script('frame_event_publisher');
|
|
|
|
|
52 |
}
|
53 |
|
54 |
function get_type_list()
|
products/photocrati_nextgen/modules/fs/class.fs.php
CHANGED
@@ -286,23 +286,20 @@ class Mixin_Fs_Instance_Methods extends Mixin
|
|
286 |
|
287 |
foreach ($segments as $segment) {
|
288 |
$segment = trim($segment, '/\\');
|
289 |
-
$pieces = array_values(preg_split('/[\/\\\\]/', $segment));
|
290 |
|
291 |
// determine if each piece should be appended to $retval
|
292 |
foreach ($pieces as $ndx => $val) {
|
293 |
-
if ($val === '') continue;
|
294 |
$one = array_search($val, $retval);
|
295 |
$two = array_search($val, $pieces);
|
296 |
$one = (FALSE === $one ? 0 : count($one) + 1);
|
297 |
$two = (FALSE === $two ? 0 : count($two) + 1);
|
298 |
if (!empty($protocol)) {
|
299 |
-
|
300 |
-
if ($existing_val !== $val || $two >= $one)
|
301 |
$retval[] = $val;
|
302 |
}
|
303 |
else {
|
304 |
-
|
305 |
-
if ($existing_val !== $val && $two >= $one)
|
306 |
$retval[] = $val;
|
307 |
}
|
308 |
}
|
@@ -362,7 +359,7 @@ class Mixin_Fs_Instance_Methods extends Mixin
|
|
362 |
*/
|
363 |
function set_document_root($value)
|
364 |
{
|
365 |
-
|
366 |
-
return
|
367 |
}
|
368 |
}
|
286 |
|
287 |
foreach ($segments as $segment) {
|
288 |
$segment = trim($segment, '/\\');
|
289 |
+
$pieces = array_values(array_filter(preg_split('/[\/\\\\]/', $segment)));
|
290 |
|
291 |
// determine if each piece should be appended to $retval
|
292 |
foreach ($pieces as $ndx => $val) {
|
|
|
293 |
$one = array_search($val, $retval);
|
294 |
$two = array_search($val, $pieces);
|
295 |
$one = (FALSE === $one ? 0 : count($one) + 1);
|
296 |
$two = (FALSE === $two ? 0 : count($two) + 1);
|
297 |
if (!empty($protocol)) {
|
298 |
+
if (@$retval[$ndx] !== $val || $two >= $one)
|
|
|
299 |
$retval[] = $val;
|
300 |
}
|
301 |
else {
|
302 |
+
if (@$retval[$ndx] !== $val && $two >= $one)
|
|
|
303 |
$retval[] = $val;
|
304 |
}
|
305 |
}
|
359 |
*/
|
360 |
function set_document_root($value)
|
361 |
{
|
362 |
+
// Even for windows hosts we force '/' as the path separator
|
363 |
+
return $this->_document_root = untrailingslashit(str_replace('\\', '/', $value));
|
364 |
}
|
365 |
}
|
products/photocrati_nextgen/modules/fs/module.fs.php
CHANGED
@@ -12,7 +12,7 @@ class M_Fs extends C_Base_Module
|
|
12 |
'photocrati-fs',
|
13 |
'Filesystem',
|
14 |
'Provides a filesystem abstraction layer for Pope modules',
|
15 |
-
'0.
|
16 |
'http://www.photocrati.com',
|
17 |
'Photocrati Media',
|
18 |
'http://www.photocrati.com'
|
12 |
'photocrati-fs',
|
13 |
'Filesystem',
|
14 |
'Provides a filesystem abstraction layer for Pope modules',
|
15 |
+
'0.1',
|
16 |
'http://www.photocrati.com',
|
17 |
'Photocrati Media',
|
18 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/lightbox/adapter.lightbox_factory.php
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
|
3 |
class A_Lightbox_Factory extends Mixin
|
4 |
{
|
5 |
-
function lightbox_library($properties=array(), $
|
6 |
{
|
7 |
-
return new C_Lightbox_Library($
|
8 |
}
|
9 |
|
10 |
-
function lightbox($properties=array(), $
|
11 |
{
|
12 |
-
return $this->object->lightbox_library($
|
13 |
}
|
14 |
}
|
2 |
|
3 |
class A_Lightbox_Factory extends Mixin
|
4 |
{
|
5 |
+
function lightbox_library($mapper=FALSE, $properties=array(), $context=FALSE)
|
6 |
{
|
7 |
+
return new C_Lightbox_Library($mapper, $properties, $context);
|
8 |
}
|
9 |
|
10 |
+
function lightbox($mapper=FALSE, $properties=array(), $context=FALSE)
|
11 |
{
|
12 |
+
return $this->object->lightbox_library($mapper, $properties, $context);
|
13 |
}
|
14 |
}
|
products/photocrati_nextgen/modules/lightbox/class.lightbox_installer.php
CHANGED
@@ -128,7 +128,7 @@ class C_Lightbox_Installer
|
|
128 |
$this->install_lightbox(
|
129 |
'highslide',
|
130 |
'Highslide',
|
131 |
-
'class="highslide" onclick="return hs.expand(this,
|
132 |
array('photocrati-lightbox#highslide/highslide.css'),
|
133 |
array('photocrati-lightbox#highslide/highslide-full.packed.js', 'photocrati-lightbox#highslide/nextgen_highslide_init.js'),
|
134 |
array('nextgen_highslide_graphics_dir' => $this->router->get_static_url('photocrati-lightbox#highslide/graphics'))
|
@@ -171,6 +171,6 @@ class C_Lightbox_Installer
|
|
171 |
*/
|
172 |
function uninstall($hard = FALSE)
|
173 |
{
|
174 |
-
|
175 |
}
|
176 |
}
|
128 |
$this->install_lightbox(
|
129 |
'highslide',
|
130 |
'Highslide',
|
131 |
+
'class="highslide" onclick="return hs.expand(this, galleryOptions);"',
|
132 |
array('photocrati-lightbox#highslide/highslide.css'),
|
133 |
array('photocrati-lightbox#highslide/highslide-full.packed.js', 'photocrati-lightbox#highslide/nextgen_highslide_init.js'),
|
134 |
array('nextgen_highslide_graphics_dir' => $this->router->get_static_url('photocrati-lightbox#highslide/graphics'))
|
171 |
*/
|
172 |
function uninstall($hard = FALSE)
|
173 |
{
|
174 |
+
if ($hard) $this->mapper->delete()->run_query();
|
175 |
}
|
176 |
}
|
products/photocrati_nextgen/modules/lightbox/class.lightbox_library.php
CHANGED
@@ -11,23 +11,12 @@
|
|
11 |
*/
|
12 |
class C_Lightbox_Library extends C_DataMapper_Model
|
13 |
{
|
14 |
-
function define($
|
15 |
{
|
16 |
parent::define($mapper, $properties, $context);
|
17 |
$this->add_mixin('Mixin_Lightbox_Library_Validation');
|
18 |
$this->implement('I_Lightbox_Library');
|
19 |
}
|
20 |
-
|
21 |
-
function initialize($properties=array(), $mapper=FALSE, $context=FALSE)
|
22 |
-
{
|
23 |
-
// Get the mapper is not specified
|
24 |
-
if (!$mapper) {
|
25 |
-
$mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
26 |
-
}
|
27 |
-
|
28 |
-
// Initialize
|
29 |
-
parent::initialize($mapper, $properties);
|
30 |
-
}
|
31 |
}
|
32 |
|
33 |
class Mixin_Lightbox_Library_Validation extends Mixin
|
11 |
*/
|
12 |
class C_Lightbox_Library extends C_DataMapper_Model
|
13 |
{
|
14 |
+
function define($mapper, $properties, $context=FALSE)
|
15 |
{
|
16 |
parent::define($mapper, $properties, $context);
|
17 |
$this->add_mixin('Mixin_Lightbox_Library_Validation');
|
18 |
$this->implement('I_Lightbox_Library');
|
19 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
}
|
21 |
|
22 |
class Mixin_Lightbox_Library_Validation extends Mixin
|
products/photocrati_nextgen/modules/lightbox/module.lightbox.php
CHANGED
@@ -12,15 +12,13 @@ define('NEXTGEN_LIGHTBOX_ADVANCED_OPTIONS_SLUG', 'ngg_lightbox_advanced_options'
|
|
12 |
|
13 |
class M_Lightbox extends C_Base_Module
|
14 |
{
|
15 |
-
var $_registered_lightboxes;
|
16 |
-
|
17 |
function define()
|
18 |
{
|
19 |
parent::define(
|
20 |
'photocrati-lightbox',
|
21 |
'Lightbox',
|
22 |
_("Provides integration with JQuery's lightbox plugin"),
|
23 |
-
'0.
|
24 |
'http://leandrovieira.com/projects/jquery/lightbox/',
|
25 |
'Photocrati Media',
|
26 |
'http://www.photocrati.com'
|
@@ -33,9 +31,7 @@ class M_Lightbox extends C_Base_Module
|
|
33 |
function initialize()
|
34 |
{
|
35 |
parent::initialize();
|
36 |
-
|
37 |
-
add_action('admin_init', array(&$this, 'add_all_lightbox_forms'));
|
38 |
-
}
|
39 |
}
|
40 |
|
41 |
/**
|
@@ -66,152 +62,6 @@ class M_Lightbox extends C_Base_Module
|
|
66 |
// Provides an installer for lightbox libraries
|
67 |
$this->get_registry()->add_adapter('I_Installer', 'A_Lightbox_Installer');
|
68 |
}
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Registers hooks for the WordPress framework
|
72 |
-
*/
|
73 |
-
function _register_hooks()
|
74 |
-
{
|
75 |
-
add_action('wp_enqueue_scripts', array($this, '_register_resources'));
|
76 |
-
add_action('wp_footer', array($this, '_enqueue_resources'), 3);
|
77 |
-
add_action('init', array(&$this, '_register_custom_post_type'));
|
78 |
-
}
|
79 |
-
|
80 |
-
/**
|
81 |
-
* Registers the custom post type saved for lightbox libraries
|
82 |
-
*/
|
83 |
-
function _register_custom_post_type()
|
84 |
-
{
|
85 |
-
register_post_type('lightbox_library', array(
|
86 |
-
'label' => 'Lightbox Library',
|
87 |
-
'publicly_queryable' => FALSE,
|
88 |
-
'exclude_from_search' => TRUE,
|
89 |
-
));
|
90 |
-
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* Registers our static settings resources so the ATP module can find them later
|
94 |
-
*/
|
95 |
-
function _register_resources()
|
96 |
-
{
|
97 |
-
$router = $this->get_registry()->get_utility('I_Router');
|
98 |
-
$settings = C_NextGen_Settings::get_instance();
|
99 |
-
$thumbEffectContext = isset($settings->thumbEffectContext) ? $settings->thumbEffectContext : '';
|
100 |
-
|
101 |
-
wp_register_script(
|
102 |
-
'nextgen_lightbox_context',
|
103 |
-
$router->get_static_url('photocrati-lightbox#lightbox_context.js')
|
104 |
-
);
|
105 |
-
wp_enqueue_script('nextgen_lightbox_context');
|
106 |
-
|
107 |
-
if ($thumbEffectContext != null && $thumbEffectContext != 'nextgen_images') {
|
108 |
-
$mapper = $this->object->get_registry()->get_utility('I_Lightbox_Library_Mapper');
|
109 |
-
$library = $mapper->find_by_name($settings->thumbEffect);
|
110 |
-
|
111 |
-
// Make the path to the static resources available for libraries
|
112 |
-
// Shutter-Reloaded in particular depends on this
|
113 |
-
$this->_add_script_data(
|
114 |
-
'ngg_common',
|
115 |
-
'nextgen_lightbox_settings',
|
116 |
-
array('static_path' => $this->get_registry()->get_utility('I_Fs')->find_static_abspath('', 'photocrati-lightbox'), 'context' => $thumbEffectContext),
|
117 |
-
TRUE,
|
118 |
-
true
|
119 |
-
);
|
120 |
-
|
121 |
-
global $wp_scripts;
|
122 |
-
|
123 |
-
$i=0;
|
124 |
-
foreach (explode("\n", $library->scripts) as $script) {
|
125 |
-
wp_register_script(
|
126 |
-
|
127 |
-
$library->name.'-'.$i,
|
128 |
-
$script, array('ngg_common')
|
129 |
-
);
|
130 |
-
$this->_registered_lightboxes[] = $library->name.'-'.$i;
|
131 |
-
if ($i == 0 AND isset($library->values)) {
|
132 |
-
foreach ($library->values as $name => $value) {
|
133 |
-
$this->_add_script_data(
|
134 |
-
$library->name . '-0',
|
135 |
-
$name,
|
136 |
-
$value,
|
137 |
-
FALSE
|
138 |
-
);
|
139 |
-
}
|
140 |
-
}
|
141 |
-
$i+=1;
|
142 |
-
}
|
143 |
-
$i=0;
|
144 |
-
foreach (explode("\n", $library->css_stylesheets) as $style) {
|
145 |
-
wp_enqueue_style(
|
146 |
-
$library->name.'-'.$i,
|
147 |
-
$style
|
148 |
-
);
|
149 |
-
$i+=1;
|
150 |
-
}
|
151 |
-
}
|
152 |
-
}
|
153 |
-
|
154 |
-
function _enqueue_resources()
|
155 |
-
{
|
156 |
-
foreach (((array)$this->_registered_lightboxes) as $library) {
|
157 |
-
wp_enqueue_script($library);
|
158 |
-
}
|
159 |
-
}
|
160 |
-
|
161 |
-
/**
|
162 |
-
* Adds data to the DOM which is then accessible by a script -- borrowed from display type controller class
|
163 |
-
* @param string $handle
|
164 |
-
* @param string $object_name
|
165 |
-
* @param mixed $object_value
|
166 |
-
* @param bool $define
|
167 |
-
*/
|
168 |
-
function _add_script_data($handle, $object_name, $object_value, $define=TRUE, $override=FALSE)
|
169 |
-
{
|
170 |
-
$retval = FALSE;
|
171 |
-
|
172 |
-
// wp_localize_script allows you to add data to the DOM, associated
|
173 |
-
// with a particular script. You can even call wp_localize_script
|
174 |
-
// multiple times to add multiple objects to the DOM. However, there
|
175 |
-
// are a few problems with wp_localize_script:
|
176 |
-
//
|
177 |
-
// - If you call it with the same object_name more than once, you're
|
178 |
-
// overwritting the first call.
|
179 |
-
// - You cannot namespace your objects due to the "var" keyword always
|
180 |
-
// - being used.
|
181 |
-
//
|
182 |
-
// To circumvent the above issues, we're going to use the WP_Scripts
|
183 |
-
// object to workaround the above issues
|
184 |
-
global $wp_scripts;
|
185 |
-
|
186 |
-
// Has the script been registered or enqueued yet?
|
187 |
-
if (isset($wp_scripts->registered[$handle])) {
|
188 |
-
|
189 |
-
// Get the associated data with this script
|
190 |
-
$script = &$wp_scripts->registered[$handle];
|
191 |
-
$data = isset($script->extra['data']) ? $script->extra['data'] : '';
|
192 |
-
|
193 |
-
// Construct the addition
|
194 |
-
$addition = $define ? "\nvar {$object_name} = " . json_encode($object_value) . ';' :
|
195 |
-
"\n{$object_name} = " . json_encode($object_value) . ';';
|
196 |
-
|
197 |
-
// Add the addition
|
198 |
-
if ($override) {
|
199 |
-
$data .= $addition;
|
200 |
-
$retval = TRUE;
|
201 |
-
}
|
202 |
-
else if (strpos($data, $object_name) === FALSE) {
|
203 |
-
$data .= $addition;
|
204 |
-
$retval = TRUE;
|
205 |
-
}
|
206 |
-
|
207 |
-
$script->extra['data'] = $data;
|
208 |
-
|
209 |
-
unset($script);
|
210 |
-
}
|
211 |
-
|
212 |
-
return $retval;
|
213 |
-
}
|
214 |
-
|
215 |
|
216 |
function get_type_list()
|
217 |
{
|
12 |
|
13 |
class M_Lightbox extends C_Base_Module
|
14 |
{
|
|
|
|
|
15 |
function define()
|
16 |
{
|
17 |
parent::define(
|
18 |
'photocrati-lightbox',
|
19 |
'Lightbox',
|
20 |
_("Provides integration with JQuery's lightbox plugin"),
|
21 |
+
'0.1',
|
22 |
'http://leandrovieira.com/projects/jquery/lightbox/',
|
23 |
'Photocrati Media',
|
24 |
'http://www.photocrati.com'
|
31 |
function initialize()
|
32 |
{
|
33 |
parent::initialize();
|
34 |
+
add_action('init', array(&$this, 'add_all_lightbox_forms'));
|
|
|
|
|
35 |
}
|
36 |
|
37 |
/**
|
62 |
// Provides an installer for lightbox libraries
|
63 |
$this->get_registry()->add_adapter('I_Installer', 'A_Lightbox_Installer');
|
64 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
function get_type_list()
|
67 |
{
|
products/photocrati_nextgen/modules/lightbox/static/fancybox/nextgen_fancybox_init.js
CHANGED
@@ -1,15 +1,9 @@
|
|
1 |
jQuery(function($) {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
$('#fancybox-wrap').css('z-index', 10000);
|
10 |
-
}
|
11 |
-
});
|
12 |
-
};
|
13 |
-
$(this).bind('refreshed', nextgen_fancybox_init);
|
14 |
-
nextgen_fancybox_init();
|
15 |
});
|
1 |
jQuery(function($) {
|
2 |
+
$(".ngg-fancybox").fancybox({
|
3 |
+
titlePosition: 'inside',
|
4 |
+
// Needed for twenty eleven
|
5 |
+
onComplete: function(){
|
6 |
+
$('#fancybox-wrap').css('z-index', 10000);
|
7 |
+
}
|
8 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
});
|
products/photocrati_nextgen/modules/lightbox/static/highslide/nextgen_highslide_init.js
CHANGED
@@ -1,45 +1,24 @@
|
|
1 |
-
// Apply default settings
|
2 |
var galleryOptions = {
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
graphicsDir: nextgen_highslide_graphics_dir + '/'
|
13 |
};
|
14 |
|
15 |
-
hs.
|
16 |
-
hs.
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
jQuery(function($) {
|
27 |
-
var selector = nextgen_lightbox_filter_selector($, $([]));
|
28 |
-
selector.addClass('highslide');
|
29 |
-
selector.click(function () { return hs.expand(this) });
|
30 |
-
|
31 |
-
hs.updateAnchors();
|
32 |
-
|
33 |
-
// Enable slideshows
|
34 |
-
hs.addSlideshow({
|
35 |
-
fixedControls: true,
|
36 |
-
interval: 5000,
|
37 |
-
overlayOptions: {
|
38 |
-
hideOnMouseOut: true,
|
39 |
-
opacity: .6,
|
40 |
-
position: 'top center'
|
41 |
-
},
|
42 |
-
repeat: true,
|
43 |
-
useControls: true
|
44 |
-
});
|
45 |
});
|
|
|
1 |
var galleryOptions = {
|
2 |
+
align: 'center',
|
3 |
+
dimmingOpacity: 0.8,
|
4 |
+
fadeInOut: true,
|
5 |
+
marginBottom: 80,
|
6 |
+
marginLeft: 100,
|
7 |
+
numberPosition: 'caption',
|
8 |
+
slideshowGroup: 'gallery',
|
9 |
+
transitions: ['expand', 'crossfade'],
|
10 |
+
wrapperClassName: 'dark borderless floating-caption'
|
|
|
11 |
};
|
12 |
|
13 |
+
hs.graphicsDir = nextgen_highslide_graphics_dir + '/';
|
14 |
+
hs.addSlideshow({
|
15 |
+
fixedControls: true,
|
16 |
+
interval: 5000,
|
17 |
+
overlayOptions: {
|
18 |
+
hideOnMouseOut: true,
|
19 |
+
opacity: .6,
|
20 |
+
position: 'top center'
|
21 |
+
},
|
22 |
+
repeat: true,
|
23 |
+
useControls: true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
});
|
products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/nextgen_lightbox_init.js
CHANGED
@@ -5,10 +5,7 @@ jQuery(function($) {
|
|
5 |
*/
|
6 |
function insert_code_in_another_methods_scope(scope, method_name, callback)
|
7 |
{
|
8 |
-
var
|
9 |
-
do_that_name += 'a' + 'l';
|
10 |
-
var do_that = window[do_that_name];
|
11 |
-
var scope_code = do_that(scope).toString();
|
12 |
var callback_code = callback.toString().replace(/[^\{]*{/, '').replace(/\}$/, '');
|
13 |
var regex = new RegExp('(fu' + 'nc' + '' + 'tion '+method_name+'\\([^\\)]*\\)){');
|
14 |
scope_code = scope_code.replace(regex, function(str, match){
|
@@ -16,8 +13,8 @@ jQuery(function($) {
|
|
16 |
}).replace(/\$([\s\.\(=])/g, function(str, match){
|
17 |
return 'jQuery'+match;
|
18 |
});
|
19 |
-
|
20 |
-
return
|
21 |
};
|
22 |
|
23 |
// Adjusts the _resize_container_image_box() function to take into
|
@@ -45,18 +42,11 @@ jQuery(function($) {
|
|
45 |
});
|
46 |
});
|
47 |
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
imageBtnNext: nextgen_lightbox_btn_next_url,
|
56 |
-
imageBlank: nextgen_lightbox_blank_img_url
|
57 |
-
});
|
58 |
-
};
|
59 |
-
$(this).bind('refreshed', nextgen_jquery_lightbox_init);
|
60 |
-
nextgen_jquery_lightbox_init();
|
61 |
-
|
62 |
});
|
5 |
*/
|
6 |
function insert_code_in_another_methods_scope(scope, method_name, callback)
|
7 |
{
|
8 |
+
var scope_code = eval(scope).toString();
|
|
|
|
|
|
|
9 |
var callback_code = callback.toString().replace(/[^\{]*{/, '').replace(/\}$/, '');
|
10 |
var regex = new RegExp('(fu' + 'nc' + '' + 'tion '+method_name+'\\([^\\)]*\\)){');
|
11 |
scope_code = scope_code.replace(regex, function(str, match){
|
13 |
}).replace(/\$([\s\.\(=])/g, function(str, match){
|
14 |
return 'jQuery'+match;
|
15 |
});
|
16 |
+
window.eval(scope+" = "+scope_code);
|
17 |
+
return eval(scope);
|
18 |
};
|
19 |
|
20 |
// Adjusts the _resize_container_image_box() function to take into
|
42 |
});
|
43 |
});
|
44 |
|
45 |
+
$('.ngg_lightbox').lightBox({
|
46 |
+
imageLoading: nextgen_lightbox_loading_img_url,
|
47 |
+
imageBtnClose: nextgen_lightbox_close_btn_url,
|
48 |
+
imageBtnPrev: nextgen_lightbox_btn_prev_url,
|
49 |
+
imageBtnNext: nextgen_lightbox_btn_next_url,
|
50 |
+
imageBlank: nextgen_lightbox_blank_img_url
|
51 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
});
|
products/photocrati_nextgen/modules/lightbox/static/lightbox_context.js
DELETED
@@ -1,27 +0,0 @@
|
|
1 |
-
function nextgen_lightbox_filter_selector($, selector)
|
2 |
-
{
|
3 |
-
if (nextgen_lightbox_settings && nextgen_lightbox_settings.context) {
|
4 |
-
var context = nextgen_lightbox_settings.context;
|
5 |
-
|
6 |
-
if (context == 'all_images') {
|
7 |
-
selector = selector.add($('a > img').parent());
|
8 |
-
}
|
9 |
-
else if (context == 'all_images_direct') {
|
10 |
-
selector = selector.add($('a[href] > img').parent()
|
11 |
-
.filter(function() {
|
12 |
-
var href = $(this).attr('href').toLowerCase();
|
13 |
-
var ext = href.substring(href.length - 3);
|
14 |
-
var ext2 = href.substring(href.length - 4);
|
15 |
-
|
16 |
-
return (ext == 'jpg' || ext == 'gif' || ext == 'png' || ext2 == 'tiff' || ext2 == 'jpeg');
|
17 |
-
}));
|
18 |
-
}
|
19 |
-
else if (context == 'nextgen_and_wp_images') {
|
20 |
-
selector = selector.add($('a > img[class*="wp-image-"]').parent());
|
21 |
-
}
|
22 |
-
|
23 |
-
selector = selector.not('.gallery_link');
|
24 |
-
}
|
25 |
-
|
26 |
-
return selector;
|
27 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/lightbox/static/shutter/nextgen_shutter.js
CHANGED
@@ -1,8 +1,5 @@
|
|
1 |
jQuery(function($){
|
2 |
var callback = function(){
|
3 |
-
var selector = nextgen_lightbox_filter_selector($, $([]));
|
4 |
-
selector.addClass('shutterset');
|
5 |
-
|
6 |
var shutterLinks = {}, shutterSets = {}; shutterReloaded.init();
|
7 |
};
|
8 |
$(this).bind('refreshed', callback);
|
1 |
jQuery(function($){
|
2 |
var callback = function(){
|
|
|
|
|
|
|
3 |
var shutterLinks = {}, shutterSets = {}; shutterReloaded.init();
|
4 |
};
|
5 |
$(this).bind('refreshed', callback);
|
products/photocrati_nextgen/modules/lightbox/static/shutter_reloaded/nextgen_shutter_reloaded.js
CHANGED
@@ -1,8 +1,5 @@
|
|
1 |
jQuery(function($){
|
2 |
var callback = function(){
|
3 |
-
var selector = nextgen_lightbox_filter_selector($, $([]));
|
4 |
-
selector.addClass('shutterset');
|
5 |
-
|
6 |
var shutterLinks = {}, shutterSets = {}; shutterReloaded.Init();
|
7 |
};
|
8 |
$(this).bind('refreshed', callback);
|
@@ -13,4 +10,4 @@ jQuery(function($){
|
|
13 |
else return;
|
14 |
|
15 |
callback();
|
16 |
-
});
|
1 |
jQuery(function($){
|
2 |
var callback = function(){
|
|
|
|
|
|
|
3 |
var shutterLinks = {}, shutterSets = {}; shutterReloaded.Init();
|
4 |
};
|
5 |
$(this).bind('refreshed', callback);
|
10 |
else return;
|
11 |
|
12 |
callback();
|
13 |
+
});
|
products/photocrati_nextgen/modules/lightbox/static/thickbox/nextgen_thickbox_init.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
var thickboxL10n = {
|
2 |
-
loadingAnimation: photocrati_ajax.
|
3 |
-
closeImage: photocrati_ajax.
|
4 |
next: 'Next >',
|
5 |
prev: '< Prev',
|
6 |
image: 'Image',
|
@@ -8,8 +8,3 @@ var thickboxL10n = {
|
|
8 |
close: 'Close',
|
9 |
noiframes: 'This feature requires inline frames. You have iframes disabled or your browser does not support them.'
|
10 |
};
|
11 |
-
|
12 |
-
jQuery(function($) {
|
13 |
-
var selector = nextgen_lightbox_filter_selector($, $([]));
|
14 |
-
selector.addClass('thickbox');
|
15 |
-
});
|
1 |
var thickboxL10n = {
|
2 |
+
loadingAnimation: photocrati_ajax.wp_site_url + '/wp-includes/js/thickbox/loadingAnimation.gif',
|
3 |
+
closeImage: photocrati_ajax.wp_site_url + '/wp-includes/js/thickbox/tb-close.png',
|
4 |
next: 'Next >',
|
5 |
prev: '< Prev',
|
6 |
image: 'Image',
|
8 |
close: 'Close',
|
9 |
noiframes: 'This feature requires inline frames. You have iframes disabled or your browser does not support them.'
|
10 |
};
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/mediarss/class.mediarss_controller.php
CHANGED
@@ -50,7 +50,7 @@ class Mixin_MediaRSS_Controller extends Mixin
|
|
50 |
{
|
51 |
// retrieve by transient id
|
52 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
53 |
-
$displayed_gallery = $factory->create('displayed_gallery',
|
54 |
$displayed_gallery->apply_transient($transient_id);
|
55 |
}
|
56 |
elseif (($params = $this->object->param('params')))
|
@@ -58,7 +58,7 @@ class Mixin_MediaRSS_Controller extends Mixin
|
|
58 |
// Create the displayed gallery based on the URL parameters
|
59 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
60 |
$displayed_gallery = $factory->create(
|
61 |
-
'displayed_gallery', json_decode($params)
|
62 |
);
|
63 |
}
|
64 |
|
50 |
{
|
51 |
// retrieve by transient id
|
52 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
53 |
+
$displayed_gallery = $factory->create('displayed_gallery', $mapper);
|
54 |
$displayed_gallery->apply_transient($transient_id);
|
55 |
}
|
56 |
elseif (($params = $this->object->param('params')))
|
58 |
// Create the displayed gallery based on the URL parameters
|
59 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
60 |
$displayed_gallery = $factory->create(
|
61 |
+
'displayed_gallery', $mapper, json_decode($params)
|
62 |
);
|
63 |
}
|
64 |
|
products/photocrati_nextgen/modules/mediarss/module.mediarss.php
CHANGED
@@ -13,7 +13,7 @@ class M_MediaRss extends C_Base_Module
|
|
13 |
'photocrati-mediarss',
|
14 |
'MediaRss',
|
15 |
'Generates MediaRSS feeds of image collections',
|
16 |
-
'0.
|
17 |
'http://www.nextgen-gallery.com',
|
18 |
'Photocrati Media',
|
19 |
'http://www.photocrati.com'
|
13 |
'photocrati-mediarss',
|
14 |
'MediaRss',
|
15 |
'Generates MediaRSS feeds of image collections',
|
16 |
+
'0.1',
|
17 |
'http://www.nextgen-gallery.com',
|
18 |
'Photocrati Media',
|
19 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/mediarss/templates/mediarss_feed.php
CHANGED
@@ -4,11 +4,11 @@
|
|
4 |
<generator><![CDATA[<?php echo_h($generator)?>]]></generator>
|
5 |
<title><?php echo_h($feed_title) ?></title>
|
6 |
<description><?php echo_h($feed_description) ?></description>
|
7 |
-
<link><![CDATA[<?php echo
|
8 |
<?php foreach($images as $image): ?>
|
9 |
<?php
|
10 |
-
$image_url = $storage->get_image_url($image
|
11 |
-
$thumb_url = $storage->get_thumb_url($image
|
12 |
$thumb_size = $storage->get_thumb_dimensions($image);
|
13 |
$width = $thumb_size['width'];
|
14 |
$height = $thumb_size['height'];
|
@@ -16,14 +16,14 @@
|
|
16 |
<item>
|
17 |
<title><![CDATA[<?php echo_h($image->alttext)?>]]></title>
|
18 |
<description><![CDATA[<?php echo_h($image->description)?>]]></description>
|
19 |
-
<link><![CDATA[<?php echo
|
20 |
<guid>image-id:<?php echo_h($image->id_field)?></guid>
|
21 |
-
<media:content url="<?php echo
|
22 |
<media:title><![CDATA[<?php echo_h($image->alttext)?>]]></media:title>
|
23 |
<?php if (isset($description)): ?>
|
24 |
<media:description><![CDDATA[<?php echo_h($image->description)?>]]></media:description>
|
25 |
<?php endif ?>
|
26 |
-
<media:thumbnail width="<?php echo esc_attr($width)?>" height="<?php echo esc_attr($height)?>" url="<?php echo
|
27 |
<?php if (isset($tagnames)): ?>
|
28 |
<media:keywords><![CDATA[<?php echo_h($tagnames)?>]]></media:keywords>
|
29 |
<?php endif ?>
|
4 |
<generator><![CDATA[<?php echo_h($generator)?>]]></generator>
|
5 |
<title><?php echo_h($feed_title) ?></title>
|
6 |
<description><?php echo_h($feed_description) ?></description>
|
7 |
+
<link><![CDATA[<?php echo esc_url($feed_link)?>]]></link>
|
8 |
<?php foreach($images as $image): ?>
|
9 |
<?php
|
10 |
+
$image_url = $storage->get_image_url($image);
|
11 |
+
$thumb_url = $storage->get_thumb_url($image);
|
12 |
$thumb_size = $storage->get_thumb_dimensions($image);
|
13 |
$width = $thumb_size['width'];
|
14 |
$height = $thumb_size['height'];
|
16 |
<item>
|
17 |
<title><![CDATA[<?php echo_h($image->alttext)?>]]></title>
|
18 |
<description><![CDATA[<?php echo_h($image->description)?>]]></description>
|
19 |
+
<link><![CDATA[<?php echo esc_url($image_url)?>]]></link>
|
20 |
<guid>image-id:<?php echo_h($image->id_field)?></guid>
|
21 |
+
<media:content url="<?php echo esc_url($image_url)?>" medium="image" />
|
22 |
<media:title><![CDATA[<?php echo_h($image->alttext)?>]]></media:title>
|
23 |
<?php if (isset($description)): ?>
|
24 |
<media:description><![CDDATA[<?php echo_h($image->description)?>]]></media:description>
|
25 |
<?php endif ?>
|
26 |
+
<media:thumbnail width="<?php echo esc_attr($width)?>" height="<?php echo esc_attr($height)?>" url="<?php echo esc_url($thumb_url) ?>"/>
|
27 |
<?php if (isset($tagnames)): ?>
|
28 |
<media:keywords><![CDATA[<?php echo_h($tagnames)?>]]></media:keywords>
|
29 |
<?php endif ?>
|
products/photocrati_nextgen/modules/mediarss/templates/playlist_feed.php
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
<trackList>
|
3 |
<?php foreach($images as $image): ?>
|
4 |
<?php
|
5 |
-
$image_url = $storage->get_image_url($image
|
6 |
-
$thumb_url = $storage->get_thumb_url($image
|
7 |
$thumb_size = $storage->get_thumb_dimensions($image);
|
8 |
$width = $thumb_size['width'];
|
9 |
$height = $thumb_size['height'];
|
@@ -18,7 +18,7 @@
|
|
18 |
?>
|
19 |
<track>
|
20 |
<title><![CDATA[<?php echo_h($image_title)?>]]></title>
|
21 |
-
<location><![CDATA[<?php echo
|
22 |
</track>
|
23 |
<?php endforeach ?>
|
24 |
</trackList>
|
2 |
<trackList>
|
3 |
<?php foreach($images as $image): ?>
|
4 |
<?php
|
5 |
+
$image_url = $storage->get_image_url($image);
|
6 |
+
$thumb_url = $storage->get_thumb_url($image);
|
7 |
$thumb_size = $storage->get_thumb_dimensions($image);
|
8 |
$width = $thumb_size['width'];
|
9 |
$height = $thumb_size['height'];
|
18 |
?>
|
19 |
<track>
|
20 |
<title><![CDATA[<?php echo_h($image_title)?>]]></title>
|
21 |
+
<location><![CDATA[<?php echo esc_url($image_url)?>]]></location>
|
22 |
</track>
|
23 |
<?php endforeach ?>
|
24 |
</trackList>
|
products/photocrati_nextgen/modules/mvc/adapter.mvc_fs.php
CHANGED
@@ -20,7 +20,7 @@ class A_MVC_Fs extends Mixin
|
|
20 |
// Create the absolute path to the file
|
21 |
$path = $fs->join_paths(
|
22 |
$mod_dir,
|
23 |
-
|
24 |
$path
|
25 |
);
|
26 |
|
20 |
// Create the absolute path to the file
|
21 |
$path = $fs->join_paths(
|
22 |
$mod_dir,
|
23 |
+
C_NextGen_Global_Settings::get_instance()->get('mvc_static_dirname'),
|
24 |
$path
|
25 |
);
|
26 |
|
products/photocrati_nextgen/modules/mvc/class.mvc_controller.php
CHANGED
@@ -247,7 +247,7 @@ class Mixin_MVC_Controller_Instance_Methods extends Mixin
|
|
247 |
*/
|
248 |
function render()
|
249 |
{
|
250 |
-
if (!headers_sent()) header('Content-Type: '
|
251 |
}
|
252 |
|
253 |
|
247 |
*/
|
248 |
function render()
|
249 |
{
|
250 |
+
if (!headers_sent()) header('Content-Type: '.$this->object->_content_type);
|
251 |
}
|
252 |
|
253 |
|
products/photocrati_nextgen/modules/mvc/class.mvc_installer.php
CHANGED
@@ -4,12 +4,13 @@ class C_MVC_Installer
|
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
-
$this->settings =
|
8 |
}
|
9 |
|
10 |
function install()
|
11 |
{
|
12 |
-
$this->settings->
|
|
|
13 |
$this->settings->set_default_value('mvc_template_dirname', '/templates');
|
14 |
$this->settings->set_default_value('mvc_static_dirname', '/static');
|
15 |
}
|
4 |
{
|
5 |
function __construct()
|
6 |
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
}
|
9 |
|
10 |
function install()
|
11 |
{
|
12 |
+
$this->settings->set_default_value('mvc_module_dir', dirname(__FILE__));
|
13 |
+
$this->settings->set_default_value('mvc_template_dir', path_join($this->settings->get('mvc_module_dir'), 'templates'));
|
14 |
$this->settings->set_default_value('mvc_template_dirname', '/templates');
|
15 |
$this->settings->set_default_value('mvc_static_dirname', '/static');
|
16 |
}
|
products/photocrati_nextgen/modules/mvc/class.mvc_option_handler.php
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class C_Mvc_Option_Handler
|
4 |
-
{
|
5 |
-
function get($option, $default=NULL)
|
6 |
-
{
|
7 |
-
return path_join(dirname(__FILE__), 'templates');
|
8 |
-
}
|
9 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/mvc/class.mvc_view.php
CHANGED
@@ -59,7 +59,7 @@ class Mixin_Mvc_View_Instance_Methods extends Mixin
|
|
59 |
{
|
60 |
if (!$value) $value = $this->object->_template;
|
61 |
|
62 |
-
if ($value[0] == '/' &&
|
63 |
// key is already abspath
|
64 |
}
|
65 |
else $value = $this->object->find_template_abspath($value);
|
@@ -230,7 +230,7 @@ class Mixin_Mvc_View_Instance_Methods extends Mixin
|
|
230 |
function find_template_abspath($path, $module=FALSE)
|
231 |
{
|
232 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
233 |
-
$settings =
|
234 |
|
235 |
// We also accept module_name#path, which needs parsing.
|
236 |
if (!$module)
|
@@ -246,7 +246,7 @@ class Mixin_Mvc_View_Instance_Methods extends Mixin
|
|
246 |
$path
|
247 |
);
|
248 |
|
249 |
-
if (
|
250 |
throw new RuntimeException("{$retval} is not a valid MVC template");
|
251 |
|
252 |
return $retval;
|
59 |
{
|
60 |
if (!$value) $value = $this->object->_template;
|
61 |
|
62 |
+
if ($value[0] == '/' && file_exists($value)) {
|
63 |
// key is already abspath
|
64 |
}
|
65 |
else $value = $this->object->find_template_abspath($value);
|
230 |
function find_template_abspath($path, $module=FALSE)
|
231 |
{
|
232 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
233 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
234 |
|
235 |
// We also accept module_name#path, which needs parsing.
|
236 |
if (!$module)
|
246 |
$path
|
247 |
);
|
248 |
|
249 |
+
if (!file_exists($retval))
|
250 |
throw new RuntimeException("{$retval} is not a valid MVC template");
|
251 |
|
252 |
return $retval;
|
products/photocrati_nextgen/modules/mvc/module.mvc.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/***
|
4 |
{
|
5 |
Module: photocrati-mvc,
|
6 |
-
Depends: { photocrati-router
|
7 |
}
|
8 |
***/
|
9 |
|
@@ -21,7 +21,7 @@ class M_MVC extends C_Base_Module
|
|
21 |
"photocrati-mvc",
|
22 |
"MVC Framework",
|
23 |
"Provides an MVC architecture for the plugin to use",
|
24 |
-
"0.
|
25 |
"http://www.photocrati.com",
|
26 |
"Photocrati Media",
|
27 |
"http://www.photocrati.com"
|
@@ -29,11 +29,6 @@ class M_MVC extends C_Base_Module
|
|
29 |
|
30 |
include_once('class.mvc_installer.php');
|
31 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_Mvc_Installer');
|
32 |
-
|
33 |
-
include_once('class.mvc_option_handler.php');
|
34 |
-
C_NextGen_Settings::add_option_handler('C_Mvc_Option_Handler', array(
|
35 |
-
'mvc_template_dir'
|
36 |
-
));
|
37 |
}
|
38 |
|
39 |
function _register_utilities()
|
3 |
/***
|
4 |
{
|
5 |
Module: photocrati-mvc,
|
6 |
+
Depends: { photocrati-router }
|
7 |
}
|
8 |
***/
|
9 |
|
21 |
"photocrati-mvc",
|
22 |
"MVC Framework",
|
23 |
"Provides an MVC architecture for the plugin to use",
|
24 |
+
"0.1",
|
25 |
"http://www.photocrati.com",
|
26 |
"Photocrati Media",
|
27 |
"http://www.photocrati.com"
|
29 |
|
30 |
include_once('class.mvc_installer.php');
|
31 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_Mvc_Installer');
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
|
34 |
function _register_utilities()
|
products/photocrati_nextgen/modules/mvc/template_helper.php
CHANGED
@@ -8,12 +8,7 @@ if (strpos($_SERVER['REQUEST_URI'], 'adminer') === FALSE) {
|
|
8 |
if (!function_exists('h')) {
|
9 |
function h($str)
|
10 |
{
|
11 |
-
|
12 |
-
return str_replace("'", "'", htmlentities($str, ENT_COMPAT | ENT_HTML401, 'UTF-8'));
|
13 |
-
}
|
14 |
-
else {
|
15 |
-
return str_replace("'", "'", htmlentities($str, ENT_COMPAT, 'UTF-8'));
|
16 |
-
}
|
17 |
}
|
18 |
}
|
19 |
|
@@ -23,17 +18,4 @@ if (strpos($_SERVER['REQUEST_URI'], 'adminer') === FALSE) {
|
|
23 |
echo h($str);
|
24 |
}
|
25 |
}
|
26 |
-
|
27 |
-
if (!function_exists('echo_safe_html')) {
|
28 |
-
function echo_safe_html($html, $extra_tags = null)
|
29 |
-
{
|
30 |
-
$tags = array('<a>', '<abbr>', '<acronym>', '<address>', '<b>', '<base>', '<basefont>', '<big>', '<blockquote>', '<br>', '<br/>', '<caption>', '<center>', '<cite>', '<code>', '<col>', '<colgroup>', '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>', '<em>', '<fieldset>', '<font>', '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<hr>', '<i>', '<ins>', '<label>', '<legend>', '<li>', '<menu>', '<noframes>', '<noscript>', '<ol>', '<optgroup>', '<option>', '<p>', '<pre>', '<q>', '<s>', '<samp>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<sub>', '<sup>', '<table>', '<tbody>', '<td>', '<tfoot>', '<th>', '<thead>', '<tr>', '<tt>', '<u>', '<ul>');
|
31 |
-
|
32 |
-
$html = preg_replace('/\\s+on\\w+=(["\']).*?\\1/i', '', $html);
|
33 |
-
$html = preg_replace('/(<\/[^>]+?>)(<[^>\/][^>]*?>)/', '$1 $2', $html);
|
34 |
-
$html = strip_tags($html, implode('', $tags));
|
35 |
-
|
36 |
-
echo $html;
|
37 |
-
}
|
38 |
-
}
|
39 |
-
}
|
8 |
if (!function_exists('h')) {
|
9 |
function h($str)
|
10 |
{
|
11 |
+
return str_replace("'", "'", htmlentities($str));
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
}
|
14 |
|
18 |
echo h($str);
|
19 |
}
|
20 |
}
|
21 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/mvc/templates/index.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
$settings =
|
3 |
$obj = method_exists($this, 'get_class_definition_dir') ? $this : $this->object;
|
4 |
$template_dir = path_join($obj->get_class_definition_dir(), 'templates');
|
5 |
$default_template_dir = $settings->mvc_template_dir;
|
1 |
<?php
|
2 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
3 |
$obj = method_exists($this, 'get_class_definition_dir') ? $this : $this->object;
|
4 |
$template_dir = path_join($obj->get_class_definition_dir(), 'templates');
|
5 |
$default_template_dir = $settings->mvc_template_dir;
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_ajax.php
CHANGED
@@ -58,7 +58,7 @@ class A_NextGen_AddGallery_Ajax extends Mixin
|
|
58 |
$error = TRUE;
|
59 |
}
|
60 |
}
|
61 |
-
catch (
|
62 |
$retval['error'] = $ex->getMessage();
|
63 |
$error = TRUE;
|
64 |
}
|
@@ -68,14 +68,14 @@ class A_NextGen_AddGallery_Ajax extends Mixin
|
|
68 |
$error = TRUE;
|
69 |
}
|
70 |
}
|
71 |
-
|
72 |
-
|
73 |
-
$retval['error'] = "No permissions to upload images. Try refreshing the page
|
74 |
$error = TRUE;
|
75 |
-
|
76 |
|
77 |
-
if ($error)
|
78 |
-
else $retval['gallery_name'] =
|
79 |
|
80 |
return $retval;
|
81 |
}
|
@@ -90,18 +90,18 @@ class A_NextGen_AddGallery_Ajax extends Mixin
|
|
90 |
{
|
91 |
if (($dir = urldecode($this->param('dir')))) {
|
92 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
93 |
-
$root =
|
94 |
|
95 |
$browse_path = $fs->join_paths($root, $dir);
|
96 |
-
if (
|
97 |
$files = scandir($browse_path);
|
98 |
natcasesort($files);
|
99 |
if( count($files) > 2 ) { /* The 2 accounts for . and .. */
|
100 |
$html[] = "<ul class=\"jqueryFileTree\" style=\"display: none;\">";
|
101 |
foreach( $files as $file ) {
|
102 |
$file_path = path_join($browse_path, $file);
|
103 |
-
$rel_file_path = str_replace(
|
104 |
-
if(
|
105 |
$html[] = "<li class=\"directory collapsed\"><a href=\"#\" rel=\"" . htmlentities($rel_file_path) . "/\">" . htmlentities($file) . "</a></li>";
|
106 |
}
|
107 |
}
|
@@ -118,7 +118,7 @@ class A_NextGen_AddGallery_Ajax extends Mixin
|
|
118 |
}
|
119 |
}
|
120 |
else {
|
121 |
-
$retval['error'] = "No permissions to browse folders. Try refreshing the page
|
122 |
}
|
123 |
|
124 |
return $retval;
|
@@ -132,27 +132,22 @@ class A_NextGen_AddGallery_Ajax extends Mixin
|
|
132 |
if ($this->validate_ajax_request('nextgen_upload_image'))
|
133 |
{
|
134 |
if (($folder = $this->param('folder'))) {
|
135 |
-
$storage =
|
136 |
-
|
137 |
try {
|
138 |
-
|
139 |
-
$retval = $storage->import_gallery_from_fs($fs->join_paths(NEXTGEN_GALLERY_IMPORT_ROOT, $folder), false, !$keep_files);
|
140 |
if (!$retval) $retval = array('error' => "Could not import folder. No images found.");
|
141 |
}
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
catch (Exception $ex) {
|
146 |
-
$retval['error'] = "An unexpected error occured.";
|
147 |
-
$retval['error_details'] = $ex->getMessage();
|
148 |
-
}
|
149 |
}
|
150 |
else {
|
151 |
$retval['error'] = "No folder specified";
|
152 |
}
|
153 |
}
|
154 |
else {
|
155 |
-
$retval['error'] = "No permissions to import folders. Try refreshing the page
|
156 |
}
|
157 |
|
158 |
return $retval;
|
58 |
$error = TRUE;
|
59 |
}
|
60 |
}
|
61 |
+
catch (E_InsufficientWriteAccessException $ex) {
|
62 |
$retval['error'] = $ex->getMessage();
|
63 |
$error = TRUE;
|
64 |
}
|
68 |
$error = TRUE;
|
69 |
}
|
70 |
}
|
71 |
+
}
|
72 |
+
else {
|
73 |
+
$retval['error'] = "No permissions to upload images. Try refreshing the page.";
|
74 |
$error = TRUE;
|
75 |
+
}
|
76 |
|
77 |
+
if ($error) header('HTTP/1.1 400 Bad Request');
|
78 |
+
else $retval['gallery_name'] = $gallery_name;
|
79 |
|
80 |
return $retval;
|
81 |
}
|
90 |
{
|
91 |
if (($dir = urldecode($this->param('dir')))) {
|
92 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
93 |
+
$root = path_join($fs->get_document_root(), 'wp-content');
|
94 |
|
95 |
$browse_path = $fs->join_paths($root, $dir);
|
96 |
+
if (file_exists($browse_path)) {
|
97 |
$files = scandir($browse_path);
|
98 |
natcasesort($files);
|
99 |
if( count($files) > 2 ) { /* The 2 accounts for . and .. */
|
100 |
$html[] = "<ul class=\"jqueryFileTree\" style=\"display: none;\">";
|
101 |
foreach( $files as $file ) {
|
102 |
$file_path = path_join($browse_path, $file);
|
103 |
+
$rel_file_path = str_replace(WP_CONTENT_DIR, '', $file_path);
|
104 |
+
if( file_exists($file_path) && $file != '.' && $file != '..' && is_dir($file_path) ) {
|
105 |
$html[] = "<li class=\"directory collapsed\"><a href=\"#\" rel=\"" . htmlentities($rel_file_path) . "/\">" . htmlentities($file) . "</a></li>";
|
106 |
}
|
107 |
}
|
118 |
}
|
119 |
}
|
120 |
else {
|
121 |
+
$retval['error'] = "No permissions to browse folders. Try refreshing the page.";
|
122 |
}
|
123 |
|
124 |
return $retval;
|
132 |
if ($this->validate_ajax_request('nextgen_upload_image'))
|
133 |
{
|
134 |
if (($folder = $this->param('folder'))) {
|
135 |
+
$storage = $this->get_registry()->get_utility('I_Gallery_Storage');
|
136 |
+
$fs = $this->get_registry()->get_utility('I_Fs');
|
137 |
try {
|
138 |
+
$retval = $storage->import_gallery_from_fs($fs->join_paths($fs->get_document_root(), 'wp-content', $folder));
|
|
|
139 |
if (!$retval) $retval = array('error' => "Could not import folder. No images found.");
|
140 |
}
|
141 |
+
catch (Exception $ex) {
|
142 |
+
$retval['error'] = $ex->getMessage();
|
143 |
+
}
|
|
|
|
|
|
|
|
|
144 |
}
|
145 |
else {
|
146 |
$retval['error'] = "No folder specified";
|
147 |
}
|
148 |
}
|
149 |
else {
|
150 |
+
$retval['error'] = "No permissions to import folders. Try refreshing the page.";
|
151 |
}
|
152 |
|
153 |
return $retval;
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.nextgen_addgallery_forms.php
CHANGED
@@ -4,16 +4,18 @@ class A_NextGen_AddGallery_Forms extends Mixin
|
|
4 |
{
|
5 |
function initialize()
|
6 |
{
|
7 |
-
$
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
if (!is_multisite() || (is_multisite() && $settings->get('wpmuImportFolder')))
|
12 |
-
$forms['import_folder'] = 'A_Import_Folder_Form';
|
13 |
|
|
|
14 |
foreach ($forms as $form => $adapter) {
|
15 |
$registry->add_adapter('I_Form', $adapter, $form);
|
16 |
-
$this->object->add_form(
|
|
|
|
|
|
|
17 |
}
|
18 |
}
|
19 |
}
|
4 |
{
|
5 |
function initialize()
|
6 |
{
|
7 |
+
$forms = array(
|
8 |
+
'upload_images' => 'A_Upload_Images_Form',
|
9 |
+
'import_folder' => 'A_Import_Folder_Form'
|
10 |
+
);
|
|
|
|
|
11 |
|
12 |
+
$registry = $this->object->get_registry();
|
13 |
foreach ($forms as $form => $adapter) {
|
14 |
$registry->add_adapter('I_Form', $adapter, $form);
|
15 |
+
$this->object->add_form(
|
16 |
+
NEXTGEN_ADD_GALLERY_SLUG,
|
17 |
+
$form
|
18 |
+
);
|
19 |
}
|
20 |
}
|
21 |
}
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/adapter.upload_images_form.php
CHANGED
@@ -47,14 +47,10 @@ class A_Upload_Images_Form extends Mixin
|
|
47 |
$imgs->extensions = "jpg,jpeg,gif,png,JPG,JPEG,GIF,PNG";
|
48 |
$retval[] = $imgs;
|
49 |
|
50 |
-
$
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
$zips->title = "Zip files";
|
55 |
-
$zips->extensions = "zip,ZIP";
|
56 |
-
$retval[] = $zips;
|
57 |
-
}
|
58 |
|
59 |
return $retval;
|
60 |
}
|
47 |
$imgs->extensions = "jpg,jpeg,gif,png,JPG,JPEG,GIF,PNG";
|
48 |
$retval[] = $imgs;
|
49 |
|
50 |
+
$zips = new stdClass;
|
51 |
+
$zips->title = "Zip files";
|
52 |
+
$zips->extensions = "zip,ZIP";
|
53 |
+
$retval[] = $zips;
|
|
|
|
|
|
|
|
|
54 |
|
55 |
return $retval;
|
56 |
}
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php
CHANGED
@@ -15,7 +15,7 @@ class M_NextGen_AddGallery_Page extends C_Base_Module
|
|
15 |
'photocrati-nextgen_addgallery_page',
|
16 |
'NextGEN Add Gallery Page',
|
17 |
'Provides admin page for adding a gallery and uploading images',
|
18 |
-
'0.
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
15 |
'photocrati-nextgen_addgallery_page',
|
16 |
'NextGEN Add Gallery Page',
|
17 |
'Provides admin page for adding a gallery and uploading images',
|
18 |
+
'0.1',
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php
CHANGED
@@ -2,7 +2,6 @@
|
|
2 |
<div id="file_browser">
|
3 |
</div>
|
4 |
<p>
|
5 |
-
<input type="checkbox" id="import_keep_location" name="keep_location" value="on" /> <label for="import_keep_location"> <?php esc_html_e('Keep images in original location.', 'nggallery'); ?> <span style="font-size: 85%"><?php esc_html_e('Caution: If you keep images in the original folder and later delete the gallery, the images in that folder might be deleted depending on your settings.', 'nggallery'); ?></span></label><br/><br/>
|
6 |
<input type="button" id="import_button" name="import_folder" value="Import Folder" class="button-primary"/>
|
7 |
</p>
|
8 |
<script type="text/javascript">
|
@@ -44,19 +43,19 @@
|
|
44 |
// Start importing process
|
45 |
var post_params = {
|
46 |
action: 'import_folder',
|
47 |
-
folder: selected_folder
|
48 |
-
keep_location: $('#import_keep_location').is(":checked") ? 'on' : 'off'
|
49 |
};
|
50 |
$.post(photocrati_ajax.url, post_params, function(response){
|
51 |
if (typeof(response) != 'object') response = JSON.parse(response);
|
52 |
if (typeof(response.error) == 'string') {
|
53 |
-
progress_bar.set(
|
|
|
54 |
}
|
55 |
else {
|
56 |
progress_bar.set('Done! Successfully imported '+response.image_ids.length+' images.');
|
57 |
}
|
58 |
-
progress_bar.close(
|
59 |
});
|
60 |
})
|
61 |
});
|
62 |
-
</script>
|
2 |
<div id="file_browser">
|
3 |
</div>
|
4 |
<p>
|
|
|
5 |
<input type="button" id="import_button" name="import_folder" value="Import Folder" class="button-primary"/>
|
6 |
</p>
|
7 |
<script type="text/javascript">
|
43 |
// Start importing process
|
44 |
var post_params = {
|
45 |
action: 'import_folder',
|
46 |
+
folder: selected_folder
|
|
|
47 |
};
|
48 |
$.post(photocrati_ajax.url, post_params, function(response){
|
49 |
if (typeof(response) != 'object') response = JSON.parse(response);
|
50 |
if (typeof(response.error) == 'string') {
|
51 |
+
progress_bar.set("Error occurred");
|
52 |
+
alert(response.error);
|
53 |
}
|
54 |
else {
|
55 |
progress_bar.set('Done! Successfully imported '+response.image_ids.length+' images.');
|
56 |
}
|
57 |
+
progress_bar.close();
|
58 |
});
|
59 |
})
|
60 |
});
|
61 |
+
</script>
|
products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php
CHANGED
@@ -159,21 +159,11 @@
|
|
159 |
|
160 |
// Display message/notification
|
161 |
if (up.state == plupload.STOPPED) {
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
});
|
168 |
-
}
|
169 |
-
else {
|
170 |
-
$.gritter.add({
|
171 |
-
title: "Upload complete",
|
172 |
-
text: msg,
|
173 |
-
sticky: true
|
174 |
-
});
|
175 |
-
}
|
176 |
-
|
177 |
setTimeout(function(){
|
178 |
reinit_plupload(up);
|
179 |
}, 3000);
|
@@ -197,40 +187,28 @@
|
|
197 |
return;
|
198 |
}
|
199 |
}
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
});
|
207 |
-
|
208 |
-
else {
|
209 |
-
window.uploaded_image_ids = window.uploaded_image_ids.concat(response.image_ids);
|
210 |
-
up.settings.url = window.set_plupload_url(response.gallery_id, $gallery_name.val());
|
211 |
-
|
212 |
-
// If we created a new gallery, ensure it's now in the drop-down list, and select it
|
213 |
-
if ($gallery_id.find('option[value="'+response.gallery_id+'"]').length == 0) {
|
214 |
-
var option = $('<option/>').attr('value', response.gallery_id).text(response.gallery_name);
|
215 |
-
$gallery_id.append(option);
|
216 |
-
$gallery_id.val(response.gallery_id);
|
217 |
-
option.attr('selected', 'selected');
|
218 |
-
}
|
219 |
-
|
220 |
-
// our Frame-Event-Publisher hooks onto the jQuery ajaxComplete action which plupload
|
221 |
-
// of course does not honor. Tie them together here..
|
222 |
-
if (window.Frame_Event_Publisher) {
|
223 |
-
$.post(photocrati_ajax.url, {'action': 'cookie_dump'}, function(){
|
224 |
-
window.Frame_Event_Publisher.find_parent(window).broadcast();
|
225 |
-
});
|
226 |
-
}
|
227 |
-
}
|
228 |
},
|
229 |
|
230 |
Error: function(up, args){
|
231 |
-
|
232 |
-
up.error_msg = args.msg;
|
233 |
-
}{}
|
234 |
}
|
235 |
};
|
236 |
$("#uploader").pluploadQueue(plupload_options);
|
159 |
|
160 |
// Display message/notification
|
161 |
if (up.state == plupload.STOPPED) {
|
162 |
+
$.gritter.add({
|
163 |
+
title: "Upload complete",
|
164 |
+
text: msg,
|
165 |
+
sticky: true
|
166 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
setTimeout(function(){
|
168 |
reinit_plupload(up);
|
169 |
}, 3000);
|
187 |
return;
|
188 |
}
|
189 |
}
|
190 |
+
window.uploaded_image_ids = window.uploaded_image_ids.concat(response.image_ids);
|
191 |
+
up.settings.url = window.set_plupload_url(response.gallery_id, $gallery_name.val());
|
192 |
+
|
193 |
+
// If we created a new gallery, ensure it's now in the drop-down list, and select it
|
194 |
+
if ($gallery_id.find('option[value="'+response.gallery_id+'"]').length == 0) {
|
195 |
+
var option = $('<option/>').attr('value', response.gallery_id).text(response.gallery_name);
|
196 |
+
$gallery_id.append(option);
|
197 |
+
$gallery_id.val(response.gallery_id);
|
198 |
+
option.attr('selected', 'selected');
|
199 |
+
}
|
200 |
+
|
201 |
+
// our Frame-Event-Publisher hooks onto the jQuery ajaxComplete action which plupload
|
202 |
+
// of course does not honor. Tie them together here..
|
203 |
+
if (window.Frame_Event_Publisher) {
|
204 |
+
$.post(photocrati_ajax.url, {'action': 'cookie_dump'}, function(){
|
205 |
+
window.Frame_Event_Publisher.find_parent(window).broadcast();
|
206 |
});
|
207 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
},
|
209 |
|
210 |
Error: function(up, args){
|
211 |
+
if (typeof(window.console) != 'undefined') console.log(args);
|
|
|
|
|
212 |
}
|
213 |
};
|
214 |
$("#uploader").pluploadQueue(plupload_options);
|
products/photocrati_nextgen/modules/nextgen_admin/class.form.php
CHANGED
@@ -210,26 +210,14 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
210 |
True
|
211 |
);
|
212 |
}
|
213 |
-
|
214 |
-
function _render_ajax_pagination_field($display_type)
|
215 |
-
{
|
216 |
-
return $this->object->_render_radio_field(
|
217 |
-
$display_type,
|
218 |
-
'ajax_pagination',
|
219 |
-
_('Enable AJAX pagination'),
|
220 |
-
isset($display_type->settings['ajax_pagination']) ? $display_type->settings['ajax_pagination'] : FALSE
|
221 |
-
);
|
222 |
-
}
|
223 |
|
224 |
function _render_thumbnail_override_settings_field($display_type)
|
225 |
{
|
226 |
-
$hidden = !(isset($display_type->settings['override_thumbnail_settings']) ? $display_type->settings['override_thumbnail_settings'] : FALSE);
|
227 |
-
|
228 |
$override_field = $this->_render_radio_field(
|
229 |
$display_type,
|
230 |
'override_thumbnail_settings',
|
231 |
'Override thumbnail settings',
|
232 |
-
|
233 |
"This does not affect existing thumbnails; overriding the thumbnail settings will create an additional set of thumbnails. To change the size of existing thumbnails please visit 'Manage Galleries' and choose 'Create new thumbnails' for all images in the gallery."
|
234 |
);
|
235 |
|
@@ -239,9 +227,9 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
239 |
'display_type_name' => $display_type->name,
|
240 |
'name' => 'thumbnail_dimensions',
|
241 |
'label'=> _('Thumbnail dimensions'),
|
242 |
-
'thumbnail_width' =>
|
243 |
-
'thumbnail_height'=>
|
244 |
-
'hidden' => $
|
245 |
'text' => ''
|
246 |
),
|
247 |
TRUE
|
@@ -254,27 +242,27 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
254 |
'thumbnail_quality',
|
255 |
'Thumbnail quality',
|
256 |
$qualities,
|
257 |
-
|
258 |
'',
|
259 |
-
$
|
260 |
);
|
261 |
|
262 |
$crop_field = $this->_render_radio_field(
|
263 |
$display_type,
|
264 |
'thumbnail_crop',
|
265 |
'Thumbnail crop',
|
266 |
-
|
267 |
'',
|
268 |
-
$
|
269 |
);
|
270 |
|
271 |
$watermark_field = $this->_render_radio_field(
|
272 |
$display_type,
|
273 |
'thumbnail_watermark',
|
274 |
'Thumbnail watermark',
|
275 |
-
|
276 |
'',
|
277 |
-
$
|
278 |
);
|
279 |
|
280 |
$everything = $override_field . $dimensions_field . $quality_field . $crop_field . $watermark_field;
|
@@ -291,13 +279,11 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
291 |
*/
|
292 |
function _render_image_override_settings_field($display_type)
|
293 |
{
|
294 |
-
$hidden = !(isset($display_type->settings['override_image_settings']) ? $display_type->settings['override_image_settings'] : FALSE);
|
295 |
-
|
296 |
$override_field = $this->_render_radio_field(
|
297 |
$display_type,
|
298 |
'override_image_settings',
|
299 |
'Override image settings',
|
300 |
-
|
301 |
'Overriding the image settings will create an additional set of images'
|
302 |
);
|
303 |
|
@@ -310,7 +296,7 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
310 |
$qualities,
|
311 |
$display_type->settings['image_quality'],
|
312 |
'',
|
313 |
-
$
|
314 |
);
|
315 |
|
316 |
$crop_field = $this->_render_radio_field(
|
@@ -319,7 +305,7 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
319 |
'Image crop',
|
320 |
$display_type->settings['image_crop'],
|
321 |
'',
|
322 |
-
$
|
323 |
);
|
324 |
|
325 |
$watermark_field = $this->_render_radio_field(
|
@@ -328,7 +314,7 @@ class Mixin_Form_Field_Generators extends Mixin
|
|
328 |
'Image watermark',
|
329 |
$display_type->settings['image_watermark'],
|
330 |
'',
|
331 |
-
$
|
332 |
);
|
333 |
|
334 |
$everything = $override_field . $quality_field . $crop_field . $watermark_field;
|
210 |
True
|
211 |
);
|
212 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
|
214 |
function _render_thumbnail_override_settings_field($display_type)
|
215 |
{
|
|
|
|
|
216 |
$override_field = $this->_render_radio_field(
|
217 |
$display_type,
|
218 |
'override_thumbnail_settings',
|
219 |
'Override thumbnail settings',
|
220 |
+
$display_type->settings['override_thumbnail_settings'],
|
221 |
"This does not affect existing thumbnails; overriding the thumbnail settings will create an additional set of thumbnails. To change the size of existing thumbnails please visit 'Manage Galleries' and choose 'Create new thumbnails' for all images in the gallery."
|
222 |
);
|
223 |
|
227 |
'display_type_name' => $display_type->name,
|
228 |
'name' => 'thumbnail_dimensions',
|
229 |
'label'=> _('Thumbnail dimensions'),
|
230 |
+
'thumbnail_width' => $display_type->settings['thumbnail_width'],
|
231 |
+
'thumbnail_height'=> $display_type->settings['thumbnail_height'],
|
232 |
+
'hidden' => empty($display_type->settings['override_thumbnail_settings']) ? 'hidden' : '',
|
233 |
'text' => ''
|
234 |
),
|
235 |
TRUE
|
242 |
'thumbnail_quality',
|
243 |
'Thumbnail quality',
|
244 |
$qualities,
|
245 |
+
$display_type->settings['thumbnail_quality'],
|
246 |
'',
|
247 |
+
empty($display_type->settings['override_thumbnail_settings']) ? TRUE : FALSE
|
248 |
);
|
249 |
|
250 |
$crop_field = $this->_render_radio_field(
|
251 |
$display_type,
|
252 |
'thumbnail_crop',
|
253 |
'Thumbnail crop',
|
254 |
+
$display_type->settings['thumbnail_crop'],
|
255 |
'',
|
256 |
+
empty($display_type->settings['override_thumbnail_settings']) ? TRUE : FALSE
|
257 |
);
|
258 |
|
259 |
$watermark_field = $this->_render_radio_field(
|
260 |
$display_type,
|
261 |
'thumbnail_watermark',
|
262 |
'Thumbnail watermark',
|
263 |
+
$display_type->settings['thumbnail_watermark'],
|
264 |
'',
|
265 |
+
empty($display_type->settings['override_thumbnail_settings']) ? TRUE : FALSE
|
266 |
);
|
267 |
|
268 |
$everything = $override_field . $dimensions_field . $quality_field . $crop_field . $watermark_field;
|
279 |
*/
|
280 |
function _render_image_override_settings_field($display_type)
|
281 |
{
|
|
|
|
|
282 |
$override_field = $this->_render_radio_field(
|
283 |
$display_type,
|
284 |
'override_image_settings',
|
285 |
'Override image settings',
|
286 |
+
$display_type->settings['override_image_settings'],
|
287 |
'Overriding the image settings will create an additional set of images'
|
288 |
);
|
289 |
|
296 |
$qualities,
|
297 |
$display_type->settings['image_quality'],
|
298 |
'',
|
299 |
+
empty($display_type->settings['override_image_settings']) ? TRUE : FALSE
|
300 |
);
|
301 |
|
302 |
$crop_field = $this->_render_radio_field(
|
305 |
'Image crop',
|
306 |
$display_type->settings['image_crop'],
|
307 |
'',
|
308 |
+
empty($display_type->settings['override_image_settings']) ? TRUE : FALSE
|
309 |
);
|
310 |
|
311 |
$watermark_field = $this->_render_radio_field(
|
314 |
'Image watermark',
|
315 |
$display_type->settings['image_watermark'],
|
316 |
'',
|
317 |
+
empty($display_type->settings['override_image_settings']) ? TRUE : FALSE
|
318 |
);
|
319 |
|
320 |
$everything = $override_field . $quality_field . $crop_field . $watermark_field;
|
products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_installer.php
CHANGED
@@ -2,26 +2,23 @@
|
|
2 |
|
3 |
class C_NextGen_Admin_Installer
|
4 |
{
|
|
|
|
|
|
|
|
|
|
|
5 |
function install()
|
6 |
{
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
$
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
if ($cleanup) {
|
19 |
-
$keys = array(
|
20 |
-
'jquery_ui_theme',
|
21 |
-
'jquery_ui_theme_version',
|
22 |
-
'jquery_ui_theme_url'
|
23 |
-
);
|
24 |
-
foreach ($keys as $key) $settings->delete($key);
|
25 |
-
}
|
26 |
}
|
27 |
}
|
2 |
|
3 |
class C_NextGen_Admin_Installer
|
4 |
{
|
5 |
+
function __construct()
|
6 |
+
{
|
7 |
+
$this->settings = C_NextGen_Global_Settings::get_instance();
|
8 |
+
}
|
9 |
+
|
10 |
function install()
|
11 |
{
|
12 |
+
$registry = C_Component_Registry::get_instance();
|
13 |
+
$router = $registry->get_utility('I_Router');
|
14 |
+
$theme_url = $router->get_static_url('photocrati-nextgen_admin#jquery-ui/jquery-ui-1.9.1.custom.css');
|
15 |
+
|
16 |
+
$defaults = array(
|
17 |
+
'jquery_ui_theme' => 'jquery-ui-nextgen',
|
18 |
+
'jquery_ui_theme_version' => 1.8,
|
19 |
+
'jquery_ui_theme_url' => $theme_url
|
20 |
+
);
|
21 |
+
|
22 |
+
foreach ($defaults as $k=>$v) $this->settings->set_default_value($k, $v);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
}
|
24 |
}
|
products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_option_handler.php
DELETED
@@ -1,29 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class C_NextGen_Admin_Option_Handler
|
4 |
-
{
|
5 |
-
function get_router()
|
6 |
-
{
|
7 |
-
return C_Component_Registry::get_instance()->get_utility('I_Router');
|
8 |
-
}
|
9 |
-
|
10 |
-
|
11 |
-
function get($key, $default=NULL)
|
12 |
-
{
|
13 |
-
$retval = $default;
|
14 |
-
|
15 |
-
switch ($key) {
|
16 |
-
case 'jquery_ui_theme':
|
17 |
-
$retval = 'jquery-ui-nextgen';
|
18 |
-
break;
|
19 |
-
case 'jquery_ui_theme_version':
|
20 |
-
$retval = '1.8';
|
21 |
-
break;
|
22 |
-
case 'jquery_ui_theme_url':
|
23 |
-
$retval = $this->get_router()->get_static_url('photocrati-nextgen_admin#jquery-ui/jquery-ui-1.9.1.custom.css');
|
24 |
-
break;
|
25 |
-
}
|
26 |
-
|
27 |
-
return $retval;
|
28 |
-
}
|
29 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_admin/class.nextgen_admin_page_controller.php
CHANGED
@@ -82,9 +82,6 @@ class Mixin_NextGen_Admin_Page_Instance_Methods extends Mixin
|
|
82 |
*/
|
83 |
function enqueue_backend_resources()
|
84 |
{
|
85 |
-
$atp = $this->object->get_registry()->get_utility('I_Attach_To_Post_Controller');
|
86 |
-
|
87 |
-
wp_enqueue_script('jquery');
|
88 |
$this->object->enqueue_jquery_ui_theme();
|
89 |
wp_enqueue_script('jquery-ui-accordion');
|
90 |
wp_enqueue_script(
|
@@ -116,20 +113,11 @@ class Mixin_NextGen_Admin_Page_Instance_Methods extends Mixin
|
|
116 |
// Ensure select2
|
117 |
wp_enqueue_style('select2');
|
118 |
wp_enqueue_script('select2');
|
119 |
-
|
120 |
-
if ($atp != null) {
|
121 |
-
$atp->mark_script('jquery-ui-accordion');
|
122 |
-
$atp->mark_script('nextgen_display_settings_page_placeholder_stub');
|
123 |
-
$atp->mark_script('iris');
|
124 |
-
$atp->mark_script('wp-color-picker');
|
125 |
-
$atp->mark_script('nextgen_admin_page');
|
126 |
-
$atp->mark_script('select2');
|
127 |
-
}
|
128 |
}
|
129 |
|
130 |
function enqueue_jquery_ui_theme()
|
131 |
{
|
132 |
-
$settings =
|
133 |
wp_enqueue_style(
|
134 |
$settings->jquery_ui_theme,
|
135 |
is_ssl() ?
|
82 |
*/
|
83 |
function enqueue_backend_resources()
|
84 |
{
|
|
|
|
|
|
|
85 |
$this->object->enqueue_jquery_ui_theme();
|
86 |
wp_enqueue_script('jquery-ui-accordion');
|
87 |
wp_enqueue_script(
|
113 |
// Ensure select2
|
114 |
wp_enqueue_style('select2');
|
115 |
wp_enqueue_script('select2');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}
|
117 |
|
118 |
function enqueue_jquery_ui_theme()
|
119 |
{
|
120 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
121 |
wp_enqueue_style(
|
122 |
$settings->jquery_ui_theme,
|
123 |
is_ssl() ?
|
products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php
CHANGED
@@ -19,7 +19,7 @@ class M_NextGen_Admin extends C_Base_Module
|
|
19 |
'photocrati-nextgen_admin',
|
20 |
'NextGEN Administration',
|
21 |
'Provides a framework for adding Administration pages',
|
22 |
-
'0.
|
23 |
'http://www.nextgen-gallery.com',
|
24 |
'Photocrati Media',
|
25 |
'http://www.photocrati.com'
|
@@ -27,13 +27,6 @@ class M_NextGen_Admin extends C_Base_Module
|
|
27 |
|
28 |
include_once('class.nextgen_admin_installer.php');
|
29 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_NextGen_Admin_Installer');
|
30 |
-
|
31 |
-
include_once('class.nextgen_admin_option_handler.php');
|
32 |
-
C_NextGen_Settings::add_option_handler('C_NextGen_Admin_Option_Handler', array(
|
33 |
-
'jquery_ui_theme',
|
34 |
-
'jquery_ui_theme_version',
|
35 |
-
'jquery_ui_theme_url'
|
36 |
-
));
|
37 |
}
|
38 |
|
39 |
/**
|
@@ -92,7 +85,7 @@ class M_NextGen_Admin extends C_Base_Module
|
|
92 |
function _register_hooks()
|
93 |
{
|
94 |
// Register scripts
|
95 |
-
add_action('init', array(&$this, 'register_scripts')
|
96 |
|
97 |
// Provides menu options for managing NextGEN Settings
|
98 |
add_action('admin_menu', array(&$this, 'add_menu_pages'), 999);
|
19 |
'photocrati-nextgen_admin',
|
20 |
'NextGEN Administration',
|
21 |
'Provides a framework for adding Administration pages',
|
22 |
+
'0.1',
|
23 |
'http://www.nextgen-gallery.com',
|
24 |
'Photocrati Media',
|
25 |
'http://www.photocrati.com'
|
27 |
|
28 |
include_once('class.nextgen_admin_installer.php');
|
29 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_NextGen_Admin_Installer');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
|
32 |
/**
|
85 |
function _register_hooks()
|
86 |
{
|
87 |
// Register scripts
|
88 |
+
add_action('init', array(&$this, 'register_scripts'));
|
89 |
|
90 |
// Provides menu options for managing NextGEN Settings
|
91 |
add_action('admin_menu', array(&$this, 'add_menu_pages'), 999);
|
products/photocrati_nextgen/modules/nextgen_admin/templates/field_generator/nextgen_settings_field_color.php
CHANGED
@@ -11,6 +11,7 @@
|
|
11 |
id='<?php print esc_attr("{$display_type_name}_{$name}"); ?>'
|
12 |
name='<?php print esc_attr("{$display_type_name}[{$name}]"); ?>'
|
13 |
class='<?php print esc_attr("{$display_type_name}_{$name}"); ?> nextgen_settings_field_colorpicker'
|
14 |
-
value='<?php print esc_attr($value); ?>'
|
|
|
15 |
</td>
|
16 |
</tr>
|
11 |
id='<?php print esc_attr("{$display_type_name}_{$name}"); ?>'
|
12 |
name='<?php print esc_attr("{$display_type_name}[{$name}]"); ?>'
|
13 |
class='<?php print esc_attr("{$display_type_name}_{$name}"); ?> nextgen_settings_field_colorpicker'
|
14 |
+
value='<?php print esc_attr($value); ?>'
|
15 |
+
data-default-color='<?php print esc_attr($value); ?>'/>
|
16 |
</td>
|
17 |
</tr>
|
products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
<p><?php echo_h($success);?></p>
|
11 |
</div>
|
12 |
<?php endif ?>
|
13 |
-
<form method="POST" action="<?php echo
|
14 |
<?php if (isset($form_header)): ?>
|
15 |
<?php echo $form_header."\n"; ?>
|
16 |
<?php endif ?>
|
10 |
<p><?php echo_h($success);?></p>
|
11 |
</div>
|
12 |
<?php endif ?>
|
13 |
+
<form method="POST" action="<?php echo esc_url($_SERVER['REQUEST_URI'])?>">
|
14 |
<?php if (isset($form_header)): ?>
|
15 |
<?php echo $form_header."\n"; ?>
|
16 |
<?php endif ?>
|
products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_album_controller.php
CHANGED
@@ -27,21 +27,19 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
27 |
// /nggallery/album--id/gallery--id
|
28 |
|
29 |
// Are we to display a gallery?
|
30 |
-
if (($gallery = $
|
31 |
{
|
32 |
// basic albums only support one per post
|
33 |
if (isset($GLOBALS['nggShowGallery']))
|
34 |
return;
|
35 |
$GLOBALS['nggShowGallery'] = TRUE;
|
36 |
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
}
|
44 |
-
|
45 |
|
46 |
$renderer = $this->object->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
47 |
return $renderer->display_images(
|
@@ -59,14 +57,11 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
59 |
else if (($album = $this->param('album'))) {
|
60 |
|
61 |
// Are we to display a sub-album?
|
|
|
62 |
{
|
63 |
$mapper = $this->object->get_registry()->get_utility('I_Album_Mapper');
|
64 |
$result = array_pop($mapper->select()->where(array('slug = %s', $album))->limit(1)->run_query());
|
65 |
-
|
66 |
-
|
67 |
-
if ($album_sub != null) {
|
68 |
-
$album = $album_sub;
|
69 |
-
}
|
70 |
}
|
71 |
$displayed_gallery->entity_ids = array();
|
72 |
$displayed_gallery->sortorder = array();
|
@@ -102,13 +97,12 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
102 |
|
103 |
// Render legacy template
|
104 |
$this->object->add_mixin('Mixin_NextGen_Basic_Templates');
|
105 |
-
$display_settings = $this->prepare_legacy_album_params($
|
106 |
return $this->object->legacy_render($display_settings['template'], $display_settings, $return, 'album');
|
107 |
}
|
108 |
else {
|
109 |
$params = $display_settings;
|
110 |
-
$albums = $this->prepare_legacy_album_params(
|
111 |
-
$params['image_gen_params'] = $albums['image_gen_params'];
|
112 |
$params['galleries'] = $albums['galleries'];
|
113 |
$params['displayed_gallery'] = $displayed_gallery;
|
114 |
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
@@ -150,59 +144,38 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
150 |
}
|
151 |
|
152 |
|
153 |
-
function prepare_legacy_album_params($
|
154 |
{
|
155 |
$image_mapper = $this->object->get_registry()->get_utility('I_Image_Mapper');
|
156 |
$storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
|
157 |
$image_gen = $this->object->get_registry()->get_utility('I_Dynamic_Thumbnails_Manager');
|
158 |
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
'crop' => TRUE
|
166 |
-
);
|
167 |
-
}
|
168 |
-
else {
|
169 |
-
// use settings requested by user
|
170 |
-
$image_gen_params = array(
|
171 |
-
'width' => $displayed_gallery->display_settings['thumbnail_width'],
|
172 |
-
'height' => $displayed_gallery->display_settings['thumbnail_height'],
|
173 |
-
'quality' => $displayed_gallery->display_settings['thumbnail_quality'],
|
174 |
-
'crop' => $displayed_gallery->display_settings['thumbnail_crop'],
|
175 |
-
'watermark' => $displayed_gallery->display_settings['thumbnail_watermark']
|
176 |
-
);
|
177 |
-
}
|
178 |
-
|
179 |
-
// so user templates can know how big the images are expected to be
|
180 |
-
$params['image_gen_params'] = $image_gen_params;
|
181 |
|
182 |
// Transform entities
|
183 |
-
$params['galleries']
|
184 |
unset($params['entities']);
|
185 |
-
|
186 |
foreach ($params['galleries'] as &$gallery) {
|
187 |
|
188 |
// Get the preview image url
|
189 |
-
|
190 |
-
if ($gallery->previewpic && $gallery->previewpic > 0)
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
$gallery->previewurl = $storage->get_image_url($image, $image_gen->get_size_name($image_gen_params), TRUE);
|
195 |
-
$gallery->previewname = $gallery->name;
|
196 |
}
|
197 |
}
|
198 |
|
199 |
// Get the page link. If the entity is an album, then the url will
|
200 |
// look like /nggallery/album--slug.
|
201 |
$id_field = $gallery->id_field;
|
202 |
-
if ($gallery->is_album)
|
203 |
-
|
204 |
-
if ($gallery->pageid > 0)
|
205 |
-
$gallery->pagelink = get_post_permalink($gallery->pageid);
|
206 |
else {
|
207 |
$gallery->pagelink = $this->object->set_param_for(
|
208 |
$this->object->get_routed_url(TRUE),
|
@@ -215,10 +188,8 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
215 |
// Otherwise, if it's a gallery then it will look like
|
216 |
// /nggallery/album--slug/gallery--slug
|
217 |
else {
|
218 |
-
if ($gallery->pageid > 0)
|
219 |
-
|
220 |
-
}
|
221 |
-
if (empty($gallery->pagelink)) {
|
222 |
$pagelink = $this->object->get_routed_url(TRUE);
|
223 |
$parent_album = $this->object->get_parent_album_for($gallery->$id_field);
|
224 |
if ($parent_album) {
|
@@ -228,14 +199,6 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
228 |
$parent_album->slug
|
229 |
);
|
230 |
}
|
231 |
-
// Legacy compat: use an album slug of 'all' if we're missing a container_id
|
232 |
-
else if($displayed_gallery->container_ids === array('0')
|
233 |
-
|| $displayed_gallery->container_ids === array('')) {
|
234 |
-
$pagelink = $this->object->set_param_for($pagelink, 'album', 'all');
|
235 |
-
}
|
236 |
-
else {
|
237 |
-
$pagelink = $this->object->set_param_for($pagelink, 'album', 'album');
|
238 |
-
}
|
239 |
$gallery->pagelink = $this->object->set_param_for(
|
240 |
$pagelink,
|
241 |
'gallery',
|
@@ -247,8 +210,7 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
247 |
// The router by default will generate param segments that look like,
|
248 |
// /gallery--foobar. We need to convert these to the admittingly
|
249 |
// nicer links that ngglegacy uses
|
250 |
-
if ($gallery->pageid <= 0)
|
251 |
-
$gallery->pagelink = $this->object->prettify_pagelink($gallery->pagelink);
|
252 |
|
253 |
// Let plugins modify the gallery
|
254 |
$gallery = apply_filters('ngg_album_galleryobject', $gallery);
|
@@ -266,19 +228,16 @@ class A_NextGen_Basic_Album_Controller extends Mixin
|
|
266 |
|
267 |
function prettify_pagelink($pagelink)
|
268 |
{
|
269 |
-
$param_separator =
|
270 |
-
|
271 |
$regex = implode('', array(
|
272 |
'#',
|
273 |
'/(gallery|album)',
|
274 |
-
preg_quote($param_separator
|
275 |
'([^/?]+)',
|
276 |
'#'
|
277 |
));
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
return $pagelink;
|
282 |
}
|
283 |
|
284 |
|
27 |
// /nggallery/album--id/gallery--id
|
28 |
|
29 |
// Are we to display a gallery?
|
30 |
+
if (($gallery = $this->param('gallery')))
|
31 |
{
|
32 |
// basic albums only support one per post
|
33 |
if (isset($GLOBALS['nggShowGallery']))
|
34 |
return;
|
35 |
$GLOBALS['nggShowGallery'] = TRUE;
|
36 |
|
37 |
+
if (!is_numeric($gallery))
|
38 |
+
{
|
39 |
+
$mapper = $this->object->get_registry()->get_utility('I_Gallery_Mapper');
|
40 |
+
$result = reset($mapper->select()->where(array('slug = %s', $gallery))->limit(1)->run_query());
|
41 |
+
$gallery = $result->{$result->id_field};
|
42 |
+
}
|
|
|
|
|
43 |
|
44 |
$renderer = $this->object->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
45 |
return $renderer->display_images(
|
57 |
else if (($album = $this->param('album'))) {
|
58 |
|
59 |
// Are we to display a sub-album?
|
60 |
+
if (!is_numeric($album))
|
61 |
{
|
62 |
$mapper = $this->object->get_registry()->get_utility('I_Album_Mapper');
|
63 |
$result = array_pop($mapper->select()->where(array('slug = %s', $album))->limit(1)->run_query());
|
64 |
+
$album = $result->{$result->id_field};
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
$displayed_gallery->entity_ids = array();
|
67 |
$displayed_gallery->sortorder = array();
|
97 |
|
98 |
// Render legacy template
|
99 |
$this->object->add_mixin('Mixin_NextGen_Basic_Templates');
|
100 |
+
$display_settings = $this->prepare_legacy_album_params($display_settings);
|
101 |
return $this->object->legacy_render($display_settings['template'], $display_settings, $return, 'album');
|
102 |
}
|
103 |
else {
|
104 |
$params = $display_settings;
|
105 |
+
$albums = $this->prepare_legacy_album_params(array('entities' => $entities));;
|
|
|
106 |
$params['galleries'] = $albums['galleries'];
|
107 |
$params['displayed_gallery'] = $displayed_gallery;
|
108 |
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
144 |
}
|
145 |
|
146 |
|
147 |
+
function prepare_legacy_album_params($params)
|
148 |
{
|
149 |
$image_mapper = $this->object->get_registry()->get_utility('I_Image_Mapper');
|
150 |
$storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
|
151 |
$image_gen = $this->object->get_registry()->get_utility('I_Dynamic_Thumbnails_Manager');
|
152 |
|
153 |
+
// legacy templates expect these dimensions
|
154 |
+
$image_gen_params = array(
|
155 |
+
'width' => 91,
|
156 |
+
'height' => 68,
|
157 |
+
'crop' => TRUE
|
158 |
+
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
|
160 |
// Transform entities
|
161 |
+
$params['galleries'] = $params['entities'];
|
162 |
unset($params['entities']);
|
|
|
163 |
foreach ($params['galleries'] as &$gallery) {
|
164 |
|
165 |
// Get the preview image url
|
166 |
+
$gallery->previewurl = '';
|
167 |
+
if ($gallery->previewpic && $gallery->previewpic > 0) {
|
168 |
+
if (($image = $image_mapper->find(intval($gallery->previewpic)))) {
|
169 |
+
$gallery->previewurl = $storage->get_image_url($image, $image_gen->get_size_name($image_gen_params));
|
170 |
+
$gallery->previewname = $gallery->name;
|
|
|
|
|
171 |
}
|
172 |
}
|
173 |
|
174 |
// Get the page link. If the entity is an album, then the url will
|
175 |
// look like /nggallery/album--slug.
|
176 |
$id_field = $gallery->id_field;
|
177 |
+
if ($gallery->is_album) {
|
178 |
+
if ($gallery->pageid > 0) $gallery->pagelink = get_post_permalink($gallery->pageid);
|
|
|
|
|
179 |
else {
|
180 |
$gallery->pagelink = $this->object->set_param_for(
|
181 |
$this->object->get_routed_url(TRUE),
|
188 |
// Otherwise, if it's a gallery then it will look like
|
189 |
// /nggallery/album--slug/gallery--slug
|
190 |
else {
|
191 |
+
if ($gallery->pageid > 0) $gallery->pagelink = get_post_permalink($gallery->pageid);
|
192 |
+
else {
|
|
|
|
|
193 |
$pagelink = $this->object->get_routed_url(TRUE);
|
194 |
$parent_album = $this->object->get_parent_album_for($gallery->$id_field);
|
195 |
if ($parent_album) {
|
199 |
$parent_album->slug
|
200 |
);
|
201 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
$gallery->pagelink = $this->object->set_param_for(
|
203 |
$pagelink,
|
204 |
'gallery',
|
210 |
// The router by default will generate param segments that look like,
|
211 |
// /gallery--foobar. We need to convert these to the admittingly
|
212 |
// nicer links that ngglegacy uses
|
213 |
+
if ($gallery->pageid <= 0) $gallery->pagelink = $this->object->prettify_pagelink($gallery->pagelink);
|
|
|
214 |
|
215 |
// Let plugins modify the gallery
|
216 |
$gallery = apply_filters('ngg_album_galleryobject', $gallery);
|
228 |
|
229 |
function prettify_pagelink($pagelink)
|
230 |
{
|
231 |
+
$param_separator = C_NextGen_Global_Settings::get_instance()->get('router_param_separator');
|
|
|
232 |
$regex = implode('', array(
|
233 |
'#',
|
234 |
'/(gallery|album)',
|
235 |
+
preg_quote($param_separator),
|
236 |
'([^/?]+)',
|
237 |
'#'
|
238 |
));
|
239 |
+
|
240 |
+
return preg_replace($regex, '/\2', $pagelink);
|
|
|
|
|
241 |
}
|
242 |
|
243 |
|
products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_album_mapper.php
CHANGED
@@ -21,7 +21,7 @@ class Hook_NextGen_Basic_Album_Defaults extends Hook
|
|
21 |
{
|
22 |
function set_defaults($entity)
|
23 |
{
|
24 |
-
if (
|
25 |
NEXTGEN_GALLERY_NEXTGEN_BASIC_COMPACT_ALBUM,
|
26 |
NEXTGEN_GALLERY_NEXTGEN_BASIC_EXTENDED_ALBUM))) {
|
27 |
|
@@ -30,18 +30,6 @@ class Hook_NextGen_Basic_Album_Defaults extends Hook
|
|
30 |
$this->object->_set_default_value($entity, 'settings', 'galleries_per_page', $settings->galPagedGalleries);
|
31 |
$this->object->_set_default_value($entity, 'settings', 'disable_pagination', 0);
|
32 |
$this->object->_set_default_value($entity, 'settings', 'template', '');
|
33 |
-
|
34 |
-
// Thumbnail dimensions -- only used by extended albums
|
35 |
-
if ($entity->name == NEXTGEN_GALLERY_NEXTGEN_BASIC_EXTENDED_ALBUM)
|
36 |
-
{
|
37 |
-
$this->_set_default_value($entity, 'settings', 'override_thumbnail_settings', 0);
|
38 |
-
$this->_set_default_value($entity, 'settings', 'thumbnail_width', $settings->thumbwidth);
|
39 |
-
$this->_set_default_value($entity, 'settings', 'thumbnail_height', $settings->thumbheight);
|
40 |
-
$this->_set_default_value($entity, 'settings', 'thumbnail_quality', $settings->thumbquality);
|
41 |
-
$this->_set_default_value($entity, 'settings', 'thumbnail_crop', $settings->thumbfix);
|
42 |
-
$this->_set_default_value($entity, 'settings', 'thumbnail_watermark', 0);
|
43 |
-
}
|
44 |
-
|
45 |
if (defined('NEXTGEN_GALLERY_BASIC_THUMBNAILS'))
|
46 |
$this->object->_set_default_value($entity, 'settings', 'gallery_display_type', NEXTGEN_GALLERY_BASIC_THUMBNAILS);
|
47 |
}
|
21 |
{
|
22 |
function set_defaults($entity)
|
23 |
{
|
24 |
+
if (in_array($entity->name, array(
|
25 |
NEXTGEN_GALLERY_NEXTGEN_BASIC_COMPACT_ALBUM,
|
26 |
NEXTGEN_GALLERY_NEXTGEN_BASIC_EXTENDED_ALBUM))) {
|
27 |
|
30 |
$this->object->_set_default_value($entity, 'settings', 'galleries_per_page', $settings->galPagedGalleries);
|
31 |
$this->object->_set_default_value($entity, 'settings', 'disable_pagination', 0);
|
32 |
$this->object->_set_default_value($entity, 'settings', 'template', '');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
if (defined('NEXTGEN_GALLERY_BASIC_THUMBNAILS'))
|
34 |
$this->object->_set_default_value($entity, 'settings', 'gallery_display_type', NEXTGEN_GALLERY_BASIC_THUMBNAILS);
|
35 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_album_routes.php
CHANGED
@@ -22,21 +22,20 @@ class A_NextGen_Basic_Album_Routes extends Mixin
|
|
22 |
// Get router
|
23 |
$router = $this->get_registry()->get_utility('I_Router');
|
24 |
$app = $router->get_routed_app();
|
25 |
-
$slug =
|
26 |
|
27 |
// If we're viewing an album, rewrite the urls
|
28 |
-
$regex = "/photocrati-nextgen_basic_
|
29 |
if (preg_match($regex, $display_type)) {
|
30 |
-
$app->rewrite("{
|
31 |
-
$app->rewrite("{
|
32 |
-
$app->rewrite("{
|
33 |
-
$app->rewrite("{
|
34 |
-
$app->rewrite("{*}{$slug}/{\\w}/{\\w}/{\\w}{*}", "{1}{$slug}/album--{2}/gallery--{3}/{4}{5}");
|
35 |
}
|
36 |
elseif (preg_match($regex, $original_display_type)) {
|
37 |
-
$app->rewrite("{
|
38 |
-
$app->rewrite("{
|
39 |
-
$app->rewrite("{
|
40 |
}
|
41 |
|
42 |
// Perform rewrites
|
22 |
// Get router
|
23 |
$router = $this->get_registry()->get_utility('I_Router');
|
24 |
$app = $router->get_routed_app();
|
25 |
+
$slug = C_NextGen_Global_Settings::get_instance()->router_param_slug;
|
26 |
|
27 |
// If we're viewing an album, rewrite the urls
|
28 |
+
$regex = "/photocrati-nextgen_basic_\w+_album/";
|
29 |
if (preg_match($regex, $display_type)) {
|
30 |
+
$app->rewrite("{$slug}/pid--{*}", "{$slug}/pid--{1}", FALSE, TRUE); // avoid conflicts with imagebrowser
|
31 |
+
$app->rewrite("{$slug}/{\\w}", "{$slug}/album--{1}");
|
32 |
+
$app->rewrite("{$slug}/{\\w}/{\\w}", "{$slug}/album--{1}/gallery--{2}");
|
33 |
+
$app->rewrite("{$slug}/{\\w}/{\\w}/{\\w}{*}", "{$slug}/album--{1}/gallery--{2}/{3}{4}");
|
|
|
34 |
}
|
35 |
elseif (preg_match($regex, $original_display_type)) {
|
36 |
+
$app->rewrite("{$slug}/album--{\\w}", "{$slug}/{1}");
|
37 |
+
$app->rewrite("{$slug}/album--{\\w}/gallery--{\\w}", "{$slug}/{1}/{2}");
|
38 |
+
$app->rewrite("{$slug}/album--{\\w}/gallery--{\\w}/{*}", "{$slug}/{1}/{2}/{3}");
|
39 |
}
|
40 |
|
41 |
// Perform rewrites
|
products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_compact_album_form.php
CHANGED
@@ -6,30 +6,4 @@ class A_NextGen_Basic_Compact_Album_Form extends Mixin_NextGen_Basic_Album_Form
|
|
6 |
{
|
7 |
return NEXTGEN_GALLERY_NEXTGEN_BASIC_COMPACT_ALBUM;
|
8 |
}
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Returns a list of fields to render on the settings page
|
12 |
-
*/
|
13 |
-
function _get_field_names()
|
14 |
-
{
|
15 |
-
$fields = parent::_get_field_names();
|
16 |
-
$fields[] = 'thumbnail_override_settings';
|
17 |
-
return $fields;
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Enqueues static resources required by this form
|
22 |
-
*/
|
23 |
-
function enqueue_static_resources()
|
24 |
-
{
|
25 |
-
wp_enqueue_script(
|
26 |
-
'nextgen_basic_compact_albums_settings_script',
|
27 |
-
$this->object->get_static_url('photocrati-nextgen_basic_album#compact_settings.js'),
|
28 |
-
array('jquery.nextgen_radio_toggle')
|
29 |
-
);
|
30 |
-
|
31 |
-
|
32 |
-
if ($atp != null) {
|
33 |
-
$atp->mark_script('nextgen_basic_compact_albums_settings_script');
|
34 |
-
}
|
35 |
-
}
|
6 |
{
|
7 |
return NEXTGEN_GALLERY_NEXTGEN_BASIC_COMPACT_ALBUM;
|
8 |
}
|
9 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_album/adapter.nextgen_basic_extended_album_form.php
CHANGED
@@ -6,30 +6,4 @@ class A_NextGen_Basic_Extended_Album_Form extends Mixin_NextGen_Basic_Album_Form
|
|
6 |
{
|
7 |
return NEXTGEN_GALLERY_NEXTGEN_BASIC_EXTENDED_ALBUM;
|
8 |
}
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Returns a list of fields to render on the settings page
|
12 |
-
*/
|
13 |
-
function _get_field_names()
|
14 |
-
{
|
15 |
-
$fields = parent::_get_field_names();
|
16 |
-
$fields[] = 'thumbnail_override_settings';
|
17 |
-
return $fields;
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Enqueues static resources required by this form
|
22 |
-
*/
|
23 |
-
function enqueue_static_resources()
|
24 |
-
{
|
25 |
-
wp_enqueue_script(
|
26 |
-
'nextgen_basic_extended_albums_settings_script',
|
27 |
-
$this->object->get_static_url('photocrati-nextgen_basic_album#extended_settings.js'),
|
28 |
-
array('jquery.nextgen_radio_toggle')
|
29 |
-
);
|
30 |
-
|
31 |
-
|
32 |
-
if ($atp != null) {
|
33 |
-
$atp->mark_script('nextgen_basic_extended_albums_settings_script');
|
34 |
-
}
|
35 |
}
|
6 |
{
|
7 |
return NEXTGEN_GALLERY_NEXTGEN_BASIC_EXTENDED_ALBUM;
|
8 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_album/mixin.nextgen_basic_album_form.php
CHANGED
@@ -6,6 +6,7 @@ class Mixin_NextGen_Basic_Album_Form extends Mixin_Display_Type_Form
|
|
6 |
{
|
7 |
return array(
|
8 |
'nextgen_basic_album_gallery_display_type',
|
|
|
9 |
'nextgen_basic_templates_template',
|
10 |
);
|
11 |
}
|
6 |
{
|
7 |
return array(
|
8 |
'nextgen_basic_album_gallery_display_type',
|
9 |
+
// 'nextgen_basic_album_galleries_per_page',
|
10 |
'nextgen_basic_templates_template',
|
11 |
);
|
12 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php
CHANGED
@@ -18,7 +18,7 @@ class M_NextGen_Basic_Album extends C_Base_Module
|
|
18 |
'photocrati-nextgen_basic_album',
|
19 |
'NextGEN Basic Album',
|
20 |
"Provides support for NextGEN's Basic Album",
|
21 |
-
'0.
|
22 |
'http://nextgen-gallery.com',
|
23 |
'Photocrati Media',
|
24 |
'http://www.photocrati.com'
|
@@ -60,19 +60,17 @@ class M_NextGen_Basic_Album extends C_Base_Module
|
|
60 |
'A_NextGen_Basic_Album_Routes'
|
61 |
);
|
62 |
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
);
|
75 |
-
}
|
76 |
|
77 |
// Creates special parameter segments
|
78 |
$this->get_registry()->add_adapter(
|
@@ -80,18 +78,16 @@ class M_NextGen_Basic_Album extends C_Base_Module
|
|
80 |
'A_NextGen_Basic_Album_Urls'
|
81 |
);
|
82 |
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
);
|
88 |
-
}
|
89 |
}
|
90 |
|
91 |
function _register_hooks()
|
92 |
{
|
93 |
-
|
94 |
-
|
95 |
}
|
96 |
|
97 |
/**
|
18 |
'photocrati-nextgen_basic_album',
|
19 |
'NextGEN Basic Album',
|
20 |
"Provides support for NextGEN's Basic Album",
|
21 |
+
'0.1',
|
22 |
'http://nextgen-gallery.com',
|
23 |
'Photocrati Media',
|
24 |
'http://www.photocrati.com'
|
60 |
'A_NextGen_Basic_Album_Routes'
|
61 |
);
|
62 |
|
63 |
+
// Add a display settings form for each display type
|
64 |
+
$this->get_registry()->add_adapter(
|
65 |
+
'I_Form',
|
66 |
+
'A_NextGen_Basic_Compact_Album_Form',
|
67 |
+
NEXTGEN_GALLERY_NEXTGEN_BASIC_COMPACT_ALBUM
|
68 |
+
);
|
69 |
+
$this->get_registry()->add_adapter(
|
70 |
+
'I_Form',
|
71 |
+
'A_NextGen_Basic_Extended_Album_Form',
|
72 |
+
NEXTGEN_GALLERY_NEXTGEN_BASIC_EXTENDED_ALBUM
|
73 |
+
);
|
|
|
|
|
74 |
|
75 |
// Creates special parameter segments
|
76 |
$this->get_registry()->add_adapter(
|
78 |
'A_NextGen_Basic_Album_Urls'
|
79 |
);
|
80 |
|
81 |
+
$this->get_registry()->add_adapter(
|
82 |
+
'I_Form_Manager',
|
83 |
+
'A_NextGen_Basic_Album_Forms'
|
84 |
+
);
|
|
|
|
|
85 |
}
|
86 |
|
87 |
function _register_hooks()
|
88 |
{
|
89 |
+
add_shortcode('album', array(&$this, 'ngglegacy_shortcode'));
|
90 |
+
add_shortcode('nggalbum', array(&$this, 'ngglegacy_shortcode'));
|
91 |
}
|
92 |
|
93 |
/**
|
products/photocrati_nextgen/modules/nextgen_basic_album/static/compact_settings.js
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
jQuery(function($){
|
2 |
-
$('input[name="photocrati-nextgen_basic_compact_album[override_thumbnail_settings]"]')
|
3 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_compact_album_thumbnail_dimensions'))
|
4 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_compact_album_thumbnail_quality'))
|
5 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_compact_album_thumbnail_crop'))
|
6 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_compact_album_thumbnail_watermark'));
|
7 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_album/static/extended_settings.js
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
jQuery(function($){
|
2 |
-
$('input[name="photocrati-nextgen_basic_extended_album[override_thumbnail_settings]"]')
|
3 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_extended_album_thumbnail_dimensions'))
|
4 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_extended_album_thumbnail_quality'))
|
5 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_extended_album_thumbnail_crop'))
|
6 |
-
.nextgen_radio_toggle_tr('1', $('#tr_photocrati-nextgen_basic_extended_album_thumbnail_watermark'));
|
7 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_album/static/nextgen_basic_album.css
CHANGED
@@ -49,61 +49,36 @@
|
|
49 |
|
50 |
.ngg-album-compact {
|
51 |
float: left;
|
52 |
-
|
|
|
53 |
margin: 0px !important;
|
54 |
text-align: left;
|
55 |
-
|
56 |
-
|
57 |
-
.ngg-album-compact a {
|
58 |
-
border: none;
|
59 |
}
|
60 |
|
61 |
.ngg-album-compactbox {
|
62 |
-
|
63 |
-
|
|
|
|
|
|
|
64 |
box-sizing: border-box;
|
65 |
-moz-box-sizing: border-box;
|
66 |
-
position: relative;
|
67 |
-
border: 1px solid gray;
|
68 |
-
border-radius: 6px;
|
69 |
-
z-index: 1;
|
70 |
-
}
|
71 |
-
|
72 |
-
.ngg-album-compactbox:before {
|
73 |
-
content: ' ';
|
74 |
-
position: absolute;
|
75 |
-
top: 0;
|
76 |
-
left: 0;
|
77 |
-
right: 0;
|
78 |
-
bottom: -7px;
|
79 |
-
border-bottom: 1px solid gray;
|
80 |
-
border-radius: 6px;
|
81 |
-
z-index: -1;
|
82 |
-
}
|
83 |
-
|
84 |
-
.ngg-album-compactbox:after {
|
85 |
-
content: ' ';
|
86 |
-
position: absolute;
|
87 |
-
top: 0;
|
88 |
-
left: 0;
|
89 |
-
right: 0;
|
90 |
-
bottom: -4px;
|
91 |
-
border-bottom: 1px solid gray;
|
92 |
-
border-radius: 6px;
|
93 |
-
z-index: -1;
|
94 |
}
|
95 |
|
96 |
.ngg-album-compactbox .Thumb {
|
97 |
margin: 0px !important;
|
98 |
padding: 0px 0 0 0 !important;
|
99 |
-
|
|
|
|
|
100 |
}
|
101 |
|
102 |
.ngg-album-compact h4 {
|
103 |
font-size: 15px;
|
104 |
font-weight: bold;
|
|
|
105 |
margin: 0;
|
106 |
-
margin-top: 10px;
|
107 |
}
|
108 |
|
109 |
.ngg-album-compact h4 .ngg-album-desc {
|
49 |
|
50 |
.ngg-album-compact {
|
51 |
float: left;
|
52 |
+
height: 180px;
|
53 |
+
padding: 0 6px 4px 0 !important;
|
54 |
margin: 0px !important;
|
55 |
text-align: left;
|
56 |
+
width: 120px;
|
|
|
|
|
|
|
57 |
}
|
58 |
|
59 |
.ngg-album-compactbox {
|
60 |
+
background: transparent url(albumset.gif) no-repeat scroll 0%;
|
61 |
+
height: 88px;
|
62 |
+
margin: 0pt 0pt 6px !important;
|
63 |
+
padding: 8px 0pt 0pt 8px !important;
|
64 |
+
width: 120px;
|
65 |
box-sizing: border-box;
|
66 |
-moz-box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
}
|
68 |
|
69 |
.ngg-album-compactbox .Thumb {
|
70 |
margin: 0px !important;
|
71 |
padding: 0px 0 0 0 !important;
|
72 |
+
width: 91px;
|
73 |
+
height: 68px;
|
74 |
+
border: none;
|
75 |
}
|
76 |
|
77 |
.ngg-album-compact h4 {
|
78 |
font-size: 15px;
|
79 |
font-weight: bold;
|
80 |
+
width: 110px;
|
81 |
margin: 0;
|
|
|
82 |
}
|
83 |
|
84 |
.ngg-album-compact h4 .ngg-album-desc {
|
products/photocrati_nextgen/modules/nextgen_basic_album/templates/compact.php
CHANGED
@@ -4,25 +4,18 @@
|
|
4 |
<div class="ngg-album-compact">
|
5 |
<div class="ngg-album-compactbox">
|
6 |
<div class="ngg-album-link">
|
7 |
-
<a class="Link
|
8 |
<img class="Thumb"
|
9 |
-
alt="<?php echo
|
10 |
-
src="<?php echo
|
11 |
</a>
|
12 |
</div>
|
13 |
</div>
|
14 |
-
<?php if (!empty($image_gen_params)) {
|
15 |
-
$max_width = 'style="max-width: ' . ($image_gen_params['width'] + 20) . 'px"';
|
16 |
-
} else {
|
17 |
-
$max_width = '';
|
18 |
-
} ?>
|
19 |
<h4>
|
20 |
<a class="ngg-album-desc"
|
21 |
-
title="<?php echo
|
22 |
-
href="<?php echo
|
23 |
-
|
24 |
-
<?php echo_safe_html($gallery->title); ?>
|
25 |
-
</a>
|
26 |
</h4>
|
27 |
<?php if (isset($gallery->counter) && $gallery->counter > 0) { ?>
|
28 |
<p><strong><?php echo $gallery->counter; ?></strong> <?php _e('Photos', 'nggallery'); ?></p>
|
4 |
<div class="ngg-album-compact">
|
5 |
<div class="ngg-album-compactbox">
|
6 |
<div class="ngg-album-link">
|
7 |
+
<a class="Link" href="<?php echo $gallery->pagelink; ?>">
|
8 |
<img class="Thumb"
|
9 |
+
alt="<?php echo $gallery->title; ?>"
|
10 |
+
src="<?php echo $gallery->previewurl; ?>"/>
|
11 |
</a>
|
12 |
</div>
|
13 |
</div>
|
|
|
|
|
|
|
|
|
|
|
14 |
<h4>
|
15 |
<a class="ngg-album-desc"
|
16 |
+
title="<?php echo $gallery->title; ?>"
|
17 |
+
href="<?php echo $gallery->pagelink; ?>"
|
18 |
+
><?php echo $gallery->title; ?></a>
|
|
|
|
|
19 |
</h4>
|
20 |
<?php if (isset($gallery->counter) && $gallery->counter > 0) { ?>
|
21 |
<p><strong><?php echo $gallery->counter; ?></strong> <?php _e('Photos', 'nggallery'); ?></p>
|
products/photocrati_nextgen/modules/nextgen_basic_album/templates/extended.php
CHANGED
@@ -3,14 +3,14 @@
|
|
3 |
<?php foreach ($galleries as $gallery) { ?>
|
4 |
<div class="ngg-album">
|
5 |
<div class="ngg-albumtitle">
|
6 |
-
<a href="<?php echo
|
7 |
</div>
|
8 |
<div class="ngg-albumcontent">
|
9 |
<div class="ngg-thumbnail">
|
10 |
-
<a
|
11 |
</div>
|
12 |
<div class="ngg-description">
|
13 |
-
<p><?php
|
14 |
<?php if (isset($gallery->counter) && $gallery->counter > 0) { ?>
|
15 |
<p><strong><?php echo $gallery->counter; ?></strong> <?php _e('Photos', 'nggallery'); ?></p>
|
16 |
<?php } ?>
|
3 |
<?php foreach ($galleries as $gallery) { ?>
|
4 |
<div class="ngg-album">
|
5 |
<div class="ngg-albumtitle">
|
6 |
+
<a href="<?php echo $gallery->pagelink; ?>"><?php echo $gallery->title; ?></a>
|
7 |
</div>
|
8 |
<div class="ngg-albumcontent">
|
9 |
<div class="ngg-thumbnail">
|
10 |
+
<a href="<?php echo $gallery->pagelink; ?>"><img class="Thumb" alt="<?php echo $gallery->title; ?>" src="<?php echo $gallery->previewurl; ?>"/></a>
|
11 |
</div>
|
12 |
<div class="ngg-description">
|
13 |
+
<p><?php echo $gallery->galdesc; ?></p>
|
14 |
<?php if (isset($gallery->counter) && $gallery->counter > 0) { ?>
|
15 |
<p><strong><?php echo $gallery->counter; ?></strong> <?php _e('Photos', 'nggallery'); ?></p>
|
16 |
<?php } ?>
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.ajax_pagination_actions.php
CHANGED
@@ -11,9 +11,8 @@ class A_Ajax_Pagination_Actions extends Mixin
|
|
11 |
{
|
12 |
// retrieve by transient id
|
13 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
14 |
-
$displayed_gallery = $factory->create('displayed_gallery',
|
15 |
$displayed_gallery->apply_transient($id);
|
16 |
-
$displayed_gallery->transient_id = $id;
|
17 |
|
18 |
// render the displayed gallery
|
19 |
$this->renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
11 |
{
|
12 |
// retrieve by transient id
|
13 |
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
14 |
+
$displayed_gallery = $factory->create('displayed_gallery', $mapper);
|
15 |
$displayed_gallery->apply_transient($id);
|
|
|
16 |
|
17 |
// render the displayed gallery
|
18 |
$this->renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_gallery_mapper.php
CHANGED
@@ -19,13 +19,11 @@ class Hook_NextGen_Basic_Gallery_Defaults extends Hook
|
|
19 |
{
|
20 |
function set_defaults($entity)
|
21 |
{
|
22 |
-
if (
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
$this->set_thumbnail_defaults($entity);
|
28 |
-
}
|
29 |
}
|
30 |
|
31 |
function set_slideshow_defaults($entity)
|
@@ -73,9 +71,7 @@ class Hook_NextGen_Basic_Gallery_Defaults extends Hook
|
|
73 |
$this->object->_set_default_value($entity, 'settings', 'thumbnail_height', $settings->thumbheight);
|
74 |
$this->object->_set_default_value($entity, 'settings', 'show_all_in_lightbox', $settings->galHiddenImg);
|
75 |
$this->object->_set_default_value($entity, 'settings', 'ajax_pagination', $settings->galAjaxNav);
|
76 |
-
$this->object->_set_default_value($entity, 'settings', 'use_imagebrowser_effect', $settings->galImgBrowser);
|
77 |
$this->object->_set_default_value($entity, 'settings', 'template', '');
|
78 |
-
$this->object->_set_default_value($entity, 'settings', 'display_no_images_error', 1);
|
79 |
|
80 |
// TODO: Should this be called enable pagination?
|
81 |
$this->object->_set_default_value($entity, 'settings', 'disable_pagination', 0);
|
@@ -101,4 +97,4 @@ class Hook_NextGen_Basic_Gallery_Defaults extends Hook
|
|
101 |
// Part of the pro-modules
|
102 |
$this->object->_set_default_value($entity, 'settings', 'ngg_triggers_display', 'never');
|
103 |
}
|
104 |
-
}
|
19 |
{
|
20 |
function set_defaults($entity)
|
21 |
{
|
22 |
+
if ($entity->name == NEXTGEN_GALLERY_BASIC_SLIDESHOW)
|
23 |
+
$this->set_slideshow_defaults($entity);
|
24 |
+
|
25 |
+
else if ($entity->name == NEXTGEN_GALLERY_BASIC_THUMBNAILS)
|
26 |
+
$this->set_thumbnail_defaults($entity);
|
|
|
|
|
27 |
}
|
28 |
|
29 |
function set_slideshow_defaults($entity)
|
71 |
$this->object->_set_default_value($entity, 'settings', 'thumbnail_height', $settings->thumbheight);
|
72 |
$this->object->_set_default_value($entity, 'settings', 'show_all_in_lightbox', $settings->galHiddenImg);
|
73 |
$this->object->_set_default_value($entity, 'settings', 'ajax_pagination', $settings->galAjaxNav);
|
|
|
74 |
$this->object->_set_default_value($entity, 'settings', 'template', '');
|
|
|
75 |
|
76 |
// TODO: Should this be called enable pagination?
|
77 |
$this->object->_set_default_value($entity, 'settings', 'disable_pagination', 0);
|
97 |
// Part of the pro-modules
|
98 |
$this->object->_set_default_value($entity, 'settings', 'ngg_triggers_display', 'never');
|
99 |
}
|
100 |
+
}
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_gallery_routes.php
CHANGED
@@ -14,12 +14,12 @@ class A_NextGen_Basic_Gallery_Routes extends Mixin
|
|
14 |
|
15 |
function add_nextgen_basic_gallery_routes()
|
16 |
{
|
17 |
-
$slug =
|
18 |
-
$this->object->rewrite("{
|
19 |
-
$this->object->rewrite("{
|
20 |
-
$this->object->rewrite("{
|
21 |
-
$this->object->rewrite("{
|
22 |
-
$this->object->rewrite("{
|
23 |
-
$this->object->rewrite("{
|
24 |
}
|
25 |
}
|
14 |
|
15 |
function add_nextgen_basic_gallery_routes()
|
16 |
{
|
17 |
+
$slug = C_NextGen_Global_Settings::get_instance()->router_param_slug;
|
18 |
+
$this->object->rewrite("{$slug}{*}/image/{*}", "{$slug}{1}/pid--{2}");
|
19 |
+
$this->object->rewrite("{$slug}{*}/slideshow/{*}", "{$slug}{1}/show--" . NEXTGEN_GALLERY_BASIC_SLIDESHOW . "{2}");
|
20 |
+
$this->object->rewrite("{$slug}{*}/thumbnails/{*}", "{$slug}{1}/show--". NEXTGEN_GALLERY_BASIC_THUMBNAILS . "{2}");
|
21 |
+
$this->object->rewrite("{$slug}{*}/show--slide/{*}", "{$slug}{1}/show--" . NEXTGEN_GALLERY_BASIC_SLIDESHOW . "/{2}");
|
22 |
+
$this->object->rewrite("{$slug}{*}/show--gallery/{*}", "{$slug}{1}/show--" . NEXTGEN_GALLERY_BASIC_THUMBNAILS . "/{2}");
|
23 |
+
$this->object->rewrite("{$slug}{*}/page/{\\d}{*}", "{$slug}{1}/page--{2}{3}");
|
24 |
}
|
25 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_gallery_urls.php
CHANGED
@@ -25,7 +25,6 @@ class A_NextGen_Basic_Gallery_Urls extends Mixin
|
|
25 |
if ($key == 'show') {
|
26 |
if ($value == NEXTGEN_GALLERY_BASIC_SLIDESHOW) $value = 'slideshow';
|
27 |
elseif ($value == NEXTGEN_GALLERY_BASIC_THUMBNAILS) $value = 'thumbnails';
|
28 |
-
elseif ($value == NEXTGEN_GALLERY_NEXTGEN_BASIC_IMAGEBROWSER) $value = 'imagebrowser';
|
29 |
return '/'.$value;
|
30 |
}
|
31 |
elseif ($key == 'page') {
|
@@ -58,7 +57,7 @@ class A_NextGen_Basic_Gallery_Urls extends Mixin
|
|
58 |
);
|
59 |
|
60 |
// Get the settings manager
|
61 |
-
$settings =
|
62 |
|
63 |
// Create the regex pattern
|
64 |
$sep = preg_quote($settings->router_param_separator, '#');
|
25 |
if ($key == 'show') {
|
26 |
if ($value == NEXTGEN_GALLERY_BASIC_SLIDESHOW) $value = 'slideshow';
|
27 |
elseif ($value == NEXTGEN_GALLERY_BASIC_THUMBNAILS) $value = 'thumbnails';
|
|
|
28 |
return '/'.$value;
|
29 |
}
|
30 |
elseif ($key == 'page') {
|
57 |
);
|
58 |
|
59 |
// Get the settings manager
|
60 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
61 |
|
62 |
// Create the regex pattern
|
63 |
$sep = preg_quote($settings->router_param_separator, '#');
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_slideshow_controller.php
CHANGED
@@ -12,7 +12,6 @@ class A_NextGen_Basic_Slideshow_Controller extends Mixin_NextGen_Basic_Gallery_C
|
|
12 |
// Get the images to be displayed
|
13 |
$current_page = (int)$this->param('page', 1);
|
14 |
|
15 |
-
// TODO: Shouldn't we be using maximum_entity_count instead?
|
16 |
$limit = FALSE;
|
17 |
if (in_array($displayed_gallery->source, array('random_images', 'recent_images')))
|
18 |
$limit = $displayed_gallery->display_settings['images_per_page'];
|
@@ -40,7 +39,7 @@ class A_NextGen_Basic_Slideshow_Controller extends Mixin_NextGen_Basic_Gallery_C
|
|
40 |
if ($displayed_gallery->display_settings['flash_enabled'])
|
41 |
{
|
42 |
include_once(path_join(NGGALLERY_ABSPATH, implode(DIRECTORY_SEPARATOR, array('lib', 'swfobject.php'))));
|
43 |
-
$transient_id = $displayed_gallery->
|
44 |
$params['mediarss_link'] = $this->get_router()->get_url(
|
45 |
'/nextgen-mediarss?template=playlist_feed&source=displayed_gallery&transient_id=' . $transient_id, false
|
46 |
);
|
@@ -53,7 +52,7 @@ class A_NextGen_Basic_Slideshow_Controller extends Mixin_NextGen_Basic_Gallery_C
|
|
53 |
);
|
54 |
}
|
55 |
|
56 |
-
|
57 |
|
58 |
$retval = $this->object->render_partial('photocrati-nextgen_basic_gallery#slideshow/index', $params, $return);
|
59 |
}
|
12 |
// Get the images to be displayed
|
13 |
$current_page = (int)$this->param('page', 1);
|
14 |
|
|
|
15 |
$limit = FALSE;
|
16 |
if (in_array($displayed_gallery->source, array('random_images', 'recent_images')))
|
17 |
$limit = $displayed_gallery->display_settings['images_per_page'];
|
39 |
if ($displayed_gallery->display_settings['flash_enabled'])
|
40 |
{
|
41 |
include_once(path_join(NGGALLERY_ABSPATH, implode(DIRECTORY_SEPARATOR, array('lib', 'swfobject.php'))));
|
42 |
+
$transient_id = $displayed_gallery->to_transient();
|
43 |
$params['mediarss_link'] = $this->get_router()->get_url(
|
44 |
'/nextgen-mediarss?template=playlist_feed&source=displayed_gallery&transient_id=' . $transient_id, false
|
45 |
);
|
52 |
);
|
53 |
}
|
54 |
|
55 |
+
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
56 |
|
57 |
$retval = $this->object->render_partial('photocrati-nextgen_basic_gallery#slideshow/index', $params, $return);
|
58 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_slideshow_form.php
CHANGED
@@ -17,10 +17,6 @@ class A_NextGen_Basic_Slideshow_Form extends Mixin_Display_Type_Form
|
|
17 |
$this->get_static_url('photocrati-nextgen_basic_gallery#slideshow/nextgen_basic_slideshow_settings.js'),
|
18 |
array('jquery.nextgen_radio_toggle')
|
19 |
);
|
20 |
-
|
21 |
-
|
22 |
-
if ($atp != null) {
|
23 |
-
$atp->mark_script('nextgen_basic_slideshow_settings-js');
|
24 |
}
|
25 |
|
26 |
/**
|
@@ -107,7 +103,7 @@ class A_NextGen_Basic_Slideshow_Form extends Mixin_Display_Type_Form
|
|
107 |
{
|
108 |
return $this->render_partial('photocrati-nextgen_basic_gallery#slideshow/nextgen_basic_slideshow_settings_gallery_dimensions', array(
|
109 |
'display_type_name' => $display_type->name,
|
110 |
-
'gallery_dimensions_label' => _('Maximum
|
111 |
'gallery_width' => $display_type->settings['gallery_width'],
|
112 |
'gallery_height' => $display_type->settings['gallery_height'],
|
113 |
), True);
|
17 |
$this->get_static_url('photocrati-nextgen_basic_gallery#slideshow/nextgen_basic_slideshow_settings.js'),
|
18 |
array('jquery.nextgen_radio_toggle')
|
19 |
);
|
|
|
|
|
|
|
|
|
20 |
}
|
21 |
|
22 |
/**
|
103 |
{
|
104 |
return $this->render_partial('photocrati-nextgen_basic_gallery#slideshow/nextgen_basic_slideshow_settings_gallery_dimensions', array(
|
105 |
'display_type_name' => $display_type->name,
|
106 |
+
'gallery_dimensions_label' => _('Maximum Dimensions'),
|
107 |
'gallery_width' => $display_type->settings['gallery_width'],
|
108 |
'gallery_height' => $display_type->settings['gallery_height'],
|
109 |
), True);
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_thumbnail_form.php
CHANGED
@@ -23,10 +23,6 @@ class A_NextGen_Basic_Thumbnail_Form extends Mixin_Display_Type_Form
|
|
23 |
$this->object->get_static_url('photocrati-nextgen_basic_gallery#thumbnails/nextgen_basic_thumbnails_settings.js'),
|
24 |
array('jquery.nextgen_radio_toggle')
|
25 |
);
|
26 |
-
|
27 |
-
|
28 |
-
if ($atp != null) {
|
29 |
-
$atp->mark_script('nextgen_basic_thumbnails_settings');
|
30 |
}
|
31 |
|
32 |
/**
|
@@ -40,7 +36,6 @@ class A_NextGen_Basic_Thumbnail_Form extends Mixin_Display_Type_Form
|
|
40 |
'nextgen_basic_thumbnails_number_of_columns',
|
41 |
'nextgen_basic_thumbnails_ajax_pagination',
|
42 |
'nextgen_basic_thumbnails_hidden',
|
43 |
-
'nextgen_basic_thumbnails_imagebrowser_effect',
|
44 |
'nextgen_basic_thumbnails_show_piclens_link',
|
45 |
'nextgen_basic_thumbnails_piclens_link_text',
|
46 |
'nextgen_basic_thumbnails_show_slideshow_link',
|
@@ -140,17 +135,6 @@ class A_NextGen_Basic_Thumbnail_Form extends Mixin_Display_Type_Form
|
|
140 |
);
|
141 |
}
|
142 |
|
143 |
-
function _render_nextgen_basic_thumbnails_imagebrowser_effect_field($display_type)
|
144 |
-
{
|
145 |
-
return $this->_render_radio_field(
|
146 |
-
$display_type,
|
147 |
-
'use_imagebrowser_effect',
|
148 |
-
'Use imagebrowser effect',
|
149 |
-
$display_type->settings['use_imagebrowser_effect'],
|
150 |
-
'When active each image in the gallery will link to an imagebrowser display and lightbox effects will not be applied.'
|
151 |
-
);
|
152 |
-
}
|
153 |
-
|
154 |
/**
|
155 |
* Renders the show_piclens_link settings field
|
156 |
*
|
@@ -162,7 +146,7 @@ class A_NextGen_Basic_Thumbnail_Form extends Mixin_Display_Type_Form
|
|
162 |
return $this->_render_radio_field(
|
163 |
$display_type,
|
164 |
'ajax_pagination',
|
165 |
-
'Enable
|
166 |
$display_type->settings['ajax_pagination'],
|
167 |
'Browse images without reloading the page.'
|
168 |
);
|
23 |
$this->object->get_static_url('photocrati-nextgen_basic_gallery#thumbnails/nextgen_basic_thumbnails_settings.js'),
|
24 |
array('jquery.nextgen_radio_toggle')
|
25 |
);
|
|
|
|
|
|
|
|
|
26 |
}
|
27 |
|
28 |
/**
|
36 |
'nextgen_basic_thumbnails_number_of_columns',
|
37 |
'nextgen_basic_thumbnails_ajax_pagination',
|
38 |
'nextgen_basic_thumbnails_hidden',
|
|
|
39 |
'nextgen_basic_thumbnails_show_piclens_link',
|
40 |
'nextgen_basic_thumbnails_piclens_link_text',
|
41 |
'nextgen_basic_thumbnails_show_slideshow_link',
|
135 |
);
|
136 |
}
|
137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
/**
|
139 |
* Renders the show_piclens_link settings field
|
140 |
*
|
146 |
return $this->_render_radio_field(
|
147 |
$display_type,
|
148 |
'ajax_pagination',
|
149 |
+
'Enable Ajax pagination',
|
150 |
$display_type->settings['ajax_pagination'],
|
151 |
'Browse images without reloading the page.'
|
152 |
);
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/adapter.nextgen_basic_thumbnails_controller.php
CHANGED
@@ -19,21 +19,16 @@ class A_NextGen_Basic_Thumbnails_Controller extends Mixin_NextGen_Basic_Gallery_
|
|
19 |
function index_action($displayed_gallery, $return=FALSE)
|
20 |
{
|
21 |
$display_settings = $displayed_gallery->display_settings;
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
// If these options are on we must use the transient_id to identify the gallery
|
26 |
-
if ($display_settings['show_piclens_link'] || $display_settings['ajax_pagination'])
|
27 |
-
$gallery_id = $transient_id;
|
28 |
-
|
29 |
-
if (!$display_settings['disable_pagination'])
|
30 |
-
$current_page = (int)$this->param('page', $gallery_id, 1);
|
31 |
else
|
32 |
$current_page = 1;
|
33 |
|
34 |
$offset = $display_settings['images_per_page'] * ($current_page - 1);
|
35 |
$storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
|
36 |
$total = $displayed_gallery->get_entity_count();
|
|
|
37 |
|
38 |
// Get the images to be displayed
|
39 |
if ($display_settings['images_per_page'] > 0 && $display_settings['show_all_in_lightbox'])
|
@@ -81,6 +76,9 @@ class A_NextGen_Basic_Thumbnails_Controller extends Mixin_NextGen_Basic_Gallery_
|
|
81 |
list($pagination_prev, $pagination_next, $pagination) = array(NULL, NULL, NULL);
|
82 |
}
|
83 |
|
|
|
|
|
|
|
84 |
$thumbnail_size_name = 'thumbnail';
|
85 |
|
86 |
if ($display_settings['override_thumbnail_settings'])
|
@@ -116,31 +114,12 @@ class A_NextGen_Basic_Thumbnails_Controller extends Mixin_NextGen_Basic_Gallery_
|
|
116 |
|
117 |
// Generate a slideshow link
|
118 |
$slideshow_link = '';
|
119 |
-
if ($display_settings['show_slideshow_link'])
|
120 |
-
{
|
121 |
-
// origin_url is necessary for ajax operations. slideshow_link_origin will NOT always exist.
|
122 |
-
$origin_url = $this->object->param('ajax_pagination_referrer');
|
123 |
$slideshow_link = $this->object->get_url_for_alternate_display_type(
|
124 |
-
$displayed_gallery, NEXTGEN_GALLERY_BASIC_SLIDESHOW
|
125 |
);
|
126 |
}
|
127 |
|
128 |
-
// This setting 1) points all images to an imagebrowser display & 2) disables the lightbox effect
|
129 |
-
if ($display_settings['use_imagebrowser_effect'])
|
130 |
-
{
|
131 |
-
// this hook *MUST* be removed later; it should not apply to galleries that may come after this one!
|
132 |
-
$storage->add_post_hook(
|
133 |
-
'get_image_url',
|
134 |
-
'imagebrowser alternate url replacer',
|
135 |
-
'Hook_NextGen_Basic_Imagebrowser_Alt_URLs',
|
136 |
-
'get_image_url'
|
137 |
-
);
|
138 |
-
$effect_code = '';
|
139 |
-
}
|
140 |
-
else {
|
141 |
-
$effect_code = $this->object->get_effect_code($displayed_gallery);
|
142 |
-
}
|
143 |
-
|
144 |
// The render functions require different processing
|
145 |
if (!empty($display_settings['template']))
|
146 |
{
|
@@ -153,11 +132,13 @@ class A_NextGen_Basic_Thumbnails_Controller extends Mixin_NextGen_Basic_Gallery_
|
|
153 |
'next' => (empty($pagination_next)) ? FALSE : $pagination_next,
|
154 |
'prev' => (empty($pagination_prev)) ? FALSE : $pagination_prev,
|
155 |
'pagination' => $pagination,
|
156 |
-
'piclens_link'
|
157 |
-
'
|
|
|
|
|
158 |
)
|
159 |
);
|
160 |
-
|
161 |
}
|
162 |
else {
|
163 |
$params = $display_settings;
|
@@ -167,23 +148,17 @@ class A_NextGen_Basic_Thumbnails_Controller extends Mixin_NextGen_Basic_Gallery_
|
|
167 |
$params['transient_id'] = $displayed_gallery->transient_id;
|
168 |
$params['current_page'] = $current_page;
|
169 |
$params['piclens_link'] = $piclens_link;
|
170 |
-
$params['effect_code'] = $
|
171 |
$params['pagination'] = $pagination;
|
172 |
$params['thumbnail_size_name'] = $thumbnail_size_name;
|
173 |
$params['slideshow_link'] = $slideshow_link;
|
174 |
|
175 |
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
176 |
|
177 |
-
|
178 |
}
|
179 |
-
|
180 |
-
if ($display_settings['use_imagebrowser_effect'])
|
181 |
-
$storage->del_post_hook('get_image_url', 'imagebrowser alternate url replacer');
|
182 |
-
|
183 |
-
return $output;
|
184 |
-
|
185 |
}
|
186 |
-
else
|
187 |
return $this->object->render_partial("photocrati-nextgen_gallery_display#no_images_found", array(), $return);
|
188 |
}
|
189 |
}
|
19 |
function index_action($displayed_gallery, $return=FALSE)
|
20 |
{
|
21 |
$display_settings = $displayed_gallery->display_settings;
|
22 |
+
|
23 |
+
if(!$display_settings['disable_pagination'])
|
24 |
+
$current_page = (int)$this->param('page', $displayed_gallery->id(), 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
else
|
26 |
$current_page = 1;
|
27 |
|
28 |
$offset = $display_settings['images_per_page'] * ($current_page - 1);
|
29 |
$storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
|
30 |
$total = $displayed_gallery->get_entity_count();
|
31 |
+
$gallery_id = $displayed_gallery->id();
|
32 |
|
33 |
// Get the images to be displayed
|
34 |
if ($display_settings['images_per_page'] > 0 && $display_settings['show_all_in_lightbox'])
|
76 |
list($pagination_prev, $pagination_next, $pagination) = array(NULL, NULL, NULL);
|
77 |
}
|
78 |
|
79 |
+
if ($display_settings['show_piclens_link'] || $display_settings['ajax_pagination'])
|
80 |
+
$gallery_id = $displayed_gallery->to_transient();
|
81 |
+
|
82 |
$thumbnail_size_name = 'thumbnail';
|
83 |
|
84 |
if ($display_settings['override_thumbnail_settings'])
|
114 |
|
115 |
// Generate a slideshow link
|
116 |
$slideshow_link = '';
|
117 |
+
if ($display_settings['show_slideshow_link']) {
|
|
|
|
|
|
|
118 |
$slideshow_link = $this->object->get_url_for_alternate_display_type(
|
119 |
+
$displayed_gallery, NEXTGEN_GALLERY_BASIC_SLIDESHOW
|
120 |
);
|
121 |
}
|
122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
// The render functions require different processing
|
124 |
if (!empty($display_settings['template']))
|
125 |
{
|
132 |
'next' => (empty($pagination_next)) ? FALSE : $pagination_next,
|
133 |
'prev' => (empty($pagination_prev)) ? FALSE : $pagination_prev,
|
134 |
'pagination' => $pagination,
|
135 |
+
'piclens_link' => @$piclens_link,
|
136 |
+
'show_slideshow_link' => @$display_settings['show_slideshow_link'],
|
137 |
+
'slideshow_link' => @$display_settings['slideshow_link'],
|
138 |
+
'slideshow_link_text' => @$display_settings['slideshow_link_text']
|
139 |
)
|
140 |
);
|
141 |
+
return $this->object->legacy_render($display_settings['template'], $params, $return, 'gallery');
|
142 |
}
|
143 |
else {
|
144 |
$params = $display_settings;
|
148 |
$params['transient_id'] = $displayed_gallery->transient_id;
|
149 |
$params['current_page'] = $current_page;
|
150 |
$params['piclens_link'] = $piclens_link;
|
151 |
+
$params['effect_code'] = $this->object->get_effect_code($displayed_gallery);
|
152 |
$params['pagination'] = $pagination;
|
153 |
$params['thumbnail_size_name'] = $thumbnail_size_name;
|
154 |
$params['slideshow_link'] = $slideshow_link;
|
155 |
|
156 |
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
157 |
|
158 |
+
return $this->object->render_view('photocrati-nextgen_basic_gallery#thumbnails/index', $params, $return);
|
159 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
}
|
161 |
+
else {
|
162 |
return $this->object->render_partial("photocrati-nextgen_gallery_display#no_images_found", array(), $return);
|
163 |
}
|
164 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/hook.nextgen_basic_gallery_integration.php
CHANGED
@@ -4,19 +4,13 @@ class Hook_NextGen_Basic_Gallery_Integration extends Hook
|
|
4 |
{
|
5 |
function index_action($displayed_gallery, $return=FALSE)
|
6 |
{
|
7 |
-
$show = $this->object->param('show');
|
8 |
-
$pid = $this->object->param('pid');
|
9 |
-
|
10 |
-
if (!empty($pid) && isset($displayed_gallery->display_settings['use_imagebrowser_effect']) && intval($displayed_gallery->display_settings['use_imagebrowser_effect']))
|
11 |
-
$show = NEXTGEN_GALLERY_NEXTGEN_BASIC_IMAGEBROWSER;
|
12 |
-
|
13 |
// Are we to display a different display type?
|
14 |
-
if (
|
15 |
{
|
16 |
$params = (array)$displayed_gallery->get_entity();
|
17 |
$ds = $params['display_settings'];
|
18 |
|
19 |
-
if ((!empty($ds['show_slideshow_link']) || !empty($ds['show_thumbnail_link'])
|
20 |
&& $show != $this->object->context)
|
21 |
{
|
22 |
// We've got an alternate request. We'll use a different display
|
@@ -47,4 +41,4 @@ class Hook_NextGen_Basic_Gallery_Integration extends Hook
|
|
47 |
}
|
48 |
}
|
49 |
}
|
50 |
-
}
|
4 |
{
|
5 |
function index_action($displayed_gallery, $return=FALSE)
|
6 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
// Are we to display a different display type?
|
8 |
+
if (($show = $this->object->param('show')))
|
9 |
{
|
10 |
$params = (array)$displayed_gallery->get_entity();
|
11 |
$ds = $params['display_settings'];
|
12 |
|
13 |
+
if ((!empty($ds['show_slideshow_link']) || !empty($ds['show_thumbnail_link']))
|
14 |
&& $show != $this->object->context)
|
15 |
{
|
16 |
// We've got an alternate request. We'll use a different display
|
41 |
}
|
42 |
}
|
43 |
}
|
44 |
+
}
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/mixin.nextgen_basic_gallery_controller.php
CHANGED
@@ -19,9 +19,9 @@ class Mixin_NextGen_Basic_Gallery_Controller extends Mixin
|
|
19 |
* @param string $display_type
|
20 |
* @return string
|
21 |
*/
|
22 |
-
function get_url_for_alternate_display_type($displayed_gallery, $display_type
|
23 |
{
|
24 |
-
$url =
|
25 |
$url = $this->object->remove_param_for($url, 'show', $displayed_gallery->id());
|
26 |
$url = $this->object->set_param_for($url, 'show', $display_type, $displayed_gallery->id());
|
27 |
|
19 |
* @param string $display_type
|
20 |
* @return string
|
21 |
*/
|
22 |
+
function get_url_for_alternate_display_type($displayed_gallery, $display_type)
|
23 |
{
|
24 |
+
$url = $this->object->get_routed_url(TRUE);
|
25 |
$url = $this->object->remove_param_for($url, 'show', $displayed_gallery->id());
|
26 |
$url = $this->object->set_param_for($url, 'show', $display_type, $displayed_gallery->id());
|
27 |
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php
CHANGED
@@ -25,7 +25,7 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
|
|
25 |
'photocrati-nextgen_basic_gallery',
|
26 |
'NextGEN Basic Gallery',
|
27 |
"Provides NextGEN Gallery's basic thumbnail/slideshow integrated gallery",
|
28 |
-
'0.
|
29 |
'http://www.nextgen-gallery.com',
|
30 |
'Photocrati Media',
|
31 |
'http://www.photocrati.com'
|
@@ -57,19 +57,17 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
|
|
57 |
|
58 |
function _register_adapters()
|
59 |
{
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
);
|
72 |
-
}
|
73 |
|
74 |
// Provides the controllers for the display types
|
75 |
$this->get_registry()->add_adapter(
|
@@ -114,24 +112,22 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
|
|
114 |
'A_Ajax_Pagination_Actions'
|
115 |
);
|
116 |
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
);
|
123 |
-
}
|
124 |
}
|
125 |
|
126 |
function _register_hooks()
|
127 |
{
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
}
|
136 |
|
137 |
/**
|
@@ -205,7 +201,7 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
|
|
205 |
$params['source'] = $this->_get_param('source', 'recent', $params);
|
206 |
$params['images_per_page'] = $this->_get_param('max', NULL, $params);
|
207 |
$params['disable_pagination'] = $this->_get_param('disable_pagination', TRUE, $params);
|
208 |
-
$params['display_type'] = $this->_get_param('display_type',
|
209 |
|
210 |
if (isset($params['id']))
|
211 |
{
|
@@ -223,7 +219,7 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
|
|
223 |
{
|
224 |
$params['entity_ids'] = $this->_get_param('id', NULL, $params);
|
225 |
$params['source'] = $this->_get_param('source', 'galleries', $params);
|
226 |
-
$params['display_type'] = $this->_get_param('display_type',
|
227 |
unset($params['id']);
|
228 |
|
229 |
$renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
@@ -233,7 +229,7 @@ class M_NextGen_Basic_Gallery extends C_Base_Module
|
|
233 |
function render_slideshow($params, $inner_content=NULL)
|
234 |
{
|
235 |
$params['gallery_ids'] = $this->_get_param('id', NULL, $params);
|
236 |
-
$params['display_type'] = $this->_get_param('display_type',
|
237 |
$params['gallery_width'] = $this->_get_param('w', NULL, $params);
|
238 |
$params['gallery_height'] = $this->_get_param('h', NULL, $params);
|
239 |
unset($params['id'], $params['w'], $params['h']);
|
25 |
'photocrati-nextgen_basic_gallery',
|
26 |
'NextGEN Basic Gallery',
|
27 |
"Provides NextGEN Gallery's basic thumbnail/slideshow integrated gallery",
|
28 |
+
'0.2',
|
29 |
'http://www.nextgen-gallery.com',
|
30 |
'Photocrati Media',
|
31 |
'http://www.photocrati.com'
|
57 |
|
58 |
function _register_adapters()
|
59 |
{
|
60 |
+
// Provides the display type forms
|
61 |
+
$this->get_registry()->add_adapter(
|
62 |
+
'I_Form',
|
63 |
+
'A_NextGen_Basic_Slideshow_Form',
|
64 |
+
NEXTGEN_GALLERY_BASIC_SLIDESHOW
|
65 |
+
);
|
66 |
+
$this->get_registry()->add_adapter(
|
67 |
+
'I_Form',
|
68 |
+
'A_NextGen_Basic_Thumbnail_Form',
|
69 |
+
NEXTGEN_GALLERY_BASIC_THUMBNAILS
|
70 |
+
);
|
|
|
|
|
71 |
|
72 |
// Provides the controllers for the display types
|
73 |
$this->get_registry()->add_adapter(
|
112 |
'A_Ajax_Pagination_Actions'
|
113 |
);
|
114 |
|
115 |
+
// Adds the settings forms
|
116 |
+
$this->get_registry()->add_adapter(
|
117 |
+
'I_Form_Manager',
|
118 |
+
'A_NextGen_Basic_Gallery_Forms'
|
119 |
+
);
|
|
|
|
|
120 |
}
|
121 |
|
122 |
function _register_hooks()
|
123 |
{
|
124 |
+
add_shortcode('nggallery', array(&$this, 'render'));
|
125 |
+
add_shortcode('nggtags', array(&$this, 'render_based_on_tags'));
|
126 |
+
add_shortcode('random', array(&$this, 'render_random_images'));
|
127 |
+
add_shortcode('recent', array(&$this, 'render_recent_images'));
|
128 |
+
add_shortcode('thumb', array(&$this, 'render_thumb_shortcode'));
|
129 |
+
add_shortcode('slideshow', array(&$this, 'render_slideshow'));
|
130 |
+
add_shortcode('nggslideshow', array(&$this, 'render_slideshow'));
|
131 |
}
|
132 |
|
133 |
/**
|
201 |
$params['source'] = $this->_get_param('source', 'recent', $params);
|
202 |
$params['images_per_page'] = $this->_get_param('max', NULL, $params);
|
203 |
$params['disable_pagination'] = $this->_get_param('disable_pagination', TRUE, $params);
|
204 |
+
$params['display_type'] = $this->_get_param('display_type', 'photocrati-nextgen_basic_thumbnails', $params);
|
205 |
|
206 |
if (isset($params['id']))
|
207 |
{
|
219 |
{
|
220 |
$params['entity_ids'] = $this->_get_param('id', NULL, $params);
|
221 |
$params['source'] = $this->_get_param('source', 'galleries', $params);
|
222 |
+
$params['display_type'] = $this->_get_param('display_type', 'photocrati-nextgen_basic_thumbnails', $params);
|
223 |
unset($params['id']);
|
224 |
|
225 |
$renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
229 |
function render_slideshow($params, $inner_content=NULL)
|
230 |
{
|
231 |
$params['gallery_ids'] = $this->_get_param('id', NULL, $params);
|
232 |
+
$params['display_type'] = $this->_get_param('display_type', 'photocrati-nextgen_basic_slideshow', $params);
|
233 |
$params['gallery_width'] = $this->_get_param('w', NULL, $params);
|
234 |
$params['gallery_height'] = $this->_get_param('h', NULL, $params);
|
235 |
unset($params['id'], $params['w'], $params['h']);
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/static/slideshow/nextgen_basic_slideshow.css
CHANGED
@@ -35,7 +35,7 @@ body {
|
|
35 |
|
36 |
.ngg-slideshow img {
|
37 |
max-width: 100% !important;
|
38 |
-
max-height: 100%;
|
39 |
width: auto;
|
40 |
height: auto;
|
41 |
border: none;
|
35 |
|
36 |
.ngg-slideshow img {
|
37 |
max-width: 100% !important;
|
38 |
+
max-height: 100%;
|
39 |
width: auto;
|
40 |
height: auto;
|
41 |
border: none;
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/static/slideshow/nextgen_basic_slideshow.js
CHANGED
@@ -40,7 +40,6 @@ jQuery.fn.nggShowSlideshow = function(args) {
|
|
40 |
containerResize: false,
|
41 |
fit: 1,
|
42 |
timeout: s.timeout,
|
43 |
-
next: self, // advance to next image when clicked
|
44 |
after: function(currSlideElement, nextSlideElement, options, forwardFlag) {
|
45 |
// update the pro-lightbox triggers should they exist
|
46 |
jQuery(nextSlideElement).parent().siblings('div.ngg-trigger-buttons').each(function() {
|
40 |
containerResize: false,
|
41 |
fit: 1,
|
42 |
timeout: s.timeout,
|
|
|
43 |
after: function(currSlideElement, nextSlideElement, options, forwardFlag) {
|
44 |
// update the pro-lightbox triggers should they exist
|
45 |
jQuery(nextSlideElement).parent().siblings('div.ngg-trigger-buttons').each(function() {
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/static/thumbnails/ajax_pagination.js
CHANGED
@@ -8,14 +8,10 @@ jQuery(function($){
|
|
8 |
init: function(){
|
9 |
var self = this;
|
10 |
jQuery('body').on('click', 'a.page-numbers, a.prev, a.next', function(e){
|
|
|
11 |
var $this = $(this);
|
12 |
var $gallery = $this.parents('.ngg-galleryoverview:first');
|
13 |
var gallery_id= $gallery.attr('id').replace('ngg-gallery-','').replace(/-\d+$/, '');
|
14 |
-
|
15 |
-
if ($gallery.hasClass('ngg-ajax-pagination-none'))
|
16 |
-
return;
|
17 |
-
|
18 |
-
e.preventDefault();
|
19 |
|
20 |
self.toggle_busy(true);
|
21 |
|
@@ -38,7 +34,7 @@ jQuery(function($){
|
|
38 |
$(document).trigger('refreshed');
|
39 |
}).always(function() {
|
40 |
self.toggle_busy(false);
|
41 |
-
})
|
42 |
|
43 |
});
|
44 |
},
|
8 |
init: function(){
|
9 |
var self = this;
|
10 |
jQuery('body').on('click', 'a.page-numbers, a.prev, a.next', function(e){
|
11 |
+
e.preventDefault();
|
12 |
var $this = $(this);
|
13 |
var $gallery = $this.parents('.ngg-galleryoverview:first');
|
14 |
var gallery_id= $gallery.attr('id').replace('ngg-gallery-','').replace(/-\d+$/, '');
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
self.toggle_busy(true);
|
17 |
|
34 |
$(document).trigger('refreshed');
|
35 |
}).always(function() {
|
36 |
self.toggle_busy(false);
|
37 |
+
});;
|
38 |
|
39 |
});
|
40 |
},
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/static/thumbnails/nextgen_basic_thumbnails.css
CHANGED
@@ -19,10 +19,6 @@
|
|
19 |
margin-right: 5px;
|
20 |
}
|
21 |
|
22 |
-
.ngg-template-caption .ngg-gallery-thumbnail-box {
|
23 |
-
margin-right: 0px;
|
24 |
-
}
|
25 |
-
|
26 |
.ngg-gallery-thumbnail {
|
27 |
float: left;
|
28 |
text-align: center;
|
@@ -62,8 +58,6 @@
|
|
62 |
|
63 |
.ngg-galleryoverview div.pic img {
|
64 |
width: 100%;
|
65 |
-
border: 0px;
|
66 |
-
border-radius: 0px;
|
67 |
}
|
68 |
|
69 |
.ngg-gallery-list li {
|
19 |
margin-right: 5px;
|
20 |
}
|
21 |
|
|
|
|
|
|
|
|
|
22 |
.ngg-gallery-thumbnail {
|
23 |
float: left;
|
24 |
text-align: center;
|
58 |
|
59 |
.ngg-galleryoverview div.pic img {
|
60 |
width: 100%;
|
|
|
|
|
61 |
}
|
62 |
|
63 |
.ngg-gallery-list li {
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/slideshow/index.php
CHANGED
@@ -143,7 +143,7 @@
|
|
143 |
<img data-image-id='<?php echo esc_attr($image->pid); ?>'
|
144 |
title="<?php echo esc_attr($image->description)?>"
|
145 |
alt="<?php echo esc_attr($image->alttext)?>"
|
146 |
-
src="<?php echo esc_attr($storage->get_image_url($image
|
147 |
width="<?php echo esc_attr($image_size['width'])?>"
|
148 |
height="<?php echo esc_attr($image_size['height'])?>"
|
149 |
/>
|
@@ -171,7 +171,7 @@
|
|
171 |
<div
|
172 |
class="ngg-galleryoverview ngg-slideshow"
|
173 |
id="<?php echo_h($anchor)?>"
|
174 |
-
data-placeholder="<?php echo
|
175 |
style="max-width:<?php echo_h($gallery_width) ?>px; max-height:<?php echo_h($gallery_height) ?>px;">
|
176 |
|
177 |
<div
|
143 |
<img data-image-id='<?php echo esc_attr($image->pid); ?>'
|
144 |
title="<?php echo esc_attr($image->description)?>"
|
145 |
alt="<?php echo esc_attr($image->alttext)?>"
|
146 |
+
src="<?php echo esc_attr($storage->get_image_url($image))?>"
|
147 |
width="<?php echo esc_attr($image_size['width'])?>"
|
148 |
height="<?php echo esc_attr($image_size['height'])?>"
|
149 |
/>
|
171 |
<div
|
172 |
class="ngg-galleryoverview ngg-slideshow"
|
173 |
id="<?php echo_h($anchor)?>"
|
174 |
+
data-placeholder="<?php echo esc_url($placeholder)?>"
|
175 |
style="max-width:<?php echo_h($gallery_width) ?>px; max-height:<?php echo_h($gallery_height) ?>px;">
|
176 |
|
177 |
<div
|
products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/index.php
CHANGED
@@ -4,7 +4,7 @@ $this->start_element('nextgen_gallery.gallery_container', 'container', $displaye
|
|
4 |
|
5 |
?>
|
6 |
<div
|
7 |
-
class="ngg-galleryoverview
|
8 |
id="ngg-gallery-<?php echo_h($displayed_gallery_id)?>-<?php echo_h($current_page)?>">
|
9 |
|
10 |
<?php if (!empty($slideshow_link)): ?>
|
@@ -28,40 +28,36 @@ $this->start_element('nextgen_gallery.gallery_container', 'container', $displaye
|
|
28 |
|
29 |
?>
|
30 |
<!-- Thumbnails -->
|
31 |
-
<?php for ($i=0; $i<count($images); $i++):
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
$style = 'style="display: none;"';
|
38 |
-
}
|
39 |
-
else {
|
40 |
-
$style = null;
|
41 |
-
}
|
42 |
|
43 |
-
|
44 |
|
45 |
?>
|
46 |
-
<div id="<?php echo_h('ngg-image-' . $i) ?>" class="ngg-gallery-thumbnail-box" <?php if ($style) echo $style; ?>>
|
47 |
<?php
|
48 |
|
49 |
$this->start_element('nextgen_gallery.image', 'item', $image);
|
50 |
|
51 |
?>
|
52 |
<div class="ngg-gallery-thumbnail">
|
53 |
-
<a href="<?php echo esc_attr($storage->get_image_url($image
|
54 |
title="<?php echo esc_attr($image->description)?>"
|
55 |
-
data-
|
56 |
-
data-thumbnail="<?php echo esc_attr($storage->get_image_url($image, 'thumb')); ?>"
|
57 |
-
data-image-id="<?php echo esc_attr($image->{$image->id_field}); ?>"
|
58 |
-
data-title="<?php echo esc_attr($image->alttext); ?>"
|
59 |
-
data-description="<?php echo esc_attr(stripslashes($image->description)); ?>"
|
60 |
<?php echo $effect_code ?>>
|
61 |
<img
|
62 |
title="<?php echo esc_attr($image->alttext)?>"
|
63 |
alt="<?php echo esc_attr($image->alttext)?>"
|
64 |
-
src="<?php echo esc_attr($storage->get_image_url($image, $thumbnail_size_name
|
65 |
width="<?php echo esc_attr($thumb_size['width'])?>"
|
66 |
height="<?php echo esc_attr($thumb_size['height'])?>"
|
67 |
style="max-width:none;"
|
@@ -100,4 +96,4 @@ $this->start_element('nextgen_gallery.gallery_container', 'container', $displaye
|
|
100 |
<div class="ngg-clear"></div>
|
101 |
<?php endif ?>
|
102 |
</div>
|
103 |
-
<?php $this->end_element(); ?>
|
4 |
|
5 |
?>
|
6 |
<div
|
7 |
+
class="ngg-galleryoverview"
|
8 |
id="ngg-gallery-<?php echo_h($displayed_gallery_id)?>-<?php echo_h($current_page)?>">
|
9 |
|
10 |
<?php if (!empty($slideshow_link)): ?>
|
28 |
|
29 |
?>
|
30 |
<!-- Thumbnails -->
|
31 |
+
<?php for ($i=0; $i<count($images); $i++): ?>
|
32 |
+
<?php $image = $images[$i]; ?>
|
33 |
+
<?php $thumb_size = $storage->get_image_dimensions($image, $thumbnail_size_name); ?>
|
34 |
+
|
35 |
+
<?php if (isset($image->hidden) && $image->hidden): ?>
|
36 |
+
<?php $image->style = 'style="display: none;"'?>
|
37 |
+
<?php else: ?>
|
38 |
+
<?php $image->style = ''; ?>
|
39 |
+
<?php endif; ?>
|
40 |
|
41 |
+
<?php
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
+
$this->start_element('nextgen_gallery.image_panel', 'item', $image);
|
44 |
|
45 |
?>
|
46 |
+
<div id="<?php echo_h('ngg-image-' . $i) ?>" class="ngg-gallery-thumbnail-box" <?php if (isset($image->style)) echo $image->style; ?>>
|
47 |
<?php
|
48 |
|
49 |
$this->start_element('nextgen_gallery.image', 'item', $image);
|
50 |
|
51 |
?>
|
52 |
<div class="ngg-gallery-thumbnail">
|
53 |
+
<a href="<?php echo esc_attr($storage->get_image_url($image))?>"
|
54 |
title="<?php echo esc_attr($image->description)?>"
|
55 |
+
data-image-id='<?php echo esc_attr($image->pid); ?>'
|
|
|
|
|
|
|
|
|
56 |
<?php echo $effect_code ?>>
|
57 |
<img
|
58 |
title="<?php echo esc_attr($image->alttext)?>"
|
59 |
alt="<?php echo esc_attr($image->alttext)?>"
|
60 |
+
src="<?php echo esc_attr($storage->get_image_url($image, $thumbnail_size_name))?>"
|
61 |
width="<?php echo esc_attr($thumb_size['width'])?>"
|
62 |
height="<?php echo esc_attr($thumb_size['height'])?>"
|
63 |
style="max-width:none;"
|
96 |
<div class="ngg-clear"></div>
|
97 |
<?php endif ?>
|
98 |
</div>
|
99 |
+
<?php $this->end_element(); ?>
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_controller.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Provides rendering logic for the NextGen Basic ImageBrowser
|
5 |
*/
|
6 |
-
class A_NextGen_Basic_ImageBrowser_Controller extends
|
7 |
{
|
8 |
/**
|
9 |
* Renders the front-end display for the imagebrowser display type
|
@@ -98,21 +98,17 @@ class A_NextGen_Basic_ImageBrowser_Controller extends Mixin_NextGen_Basic_Galler
|
|
98 |
$picture_list_pos = $key + 1;
|
99 |
|
100 |
// our image to display
|
101 |
-
$picture = new C_Image_Wrapper($imap->find($numeric_pid),
|
102 |
$picture = apply_filters('ngg_image_object', $picture, $numeric_pid);
|
103 |
|
104 |
// determine URI to the next & previous images
|
105 |
$back_pid = ($key >= 1) ? $picture_array[$key - 1] : end($picture_array);
|
106 |
|
107 |
-
// 'show' is set when using the imagebrowser as an alternate view to a thumbnail or slideshow
|
108 |
-
// for which the basic-gallery module will rewrite the show parameter into existence as long as 'image'
|
109 |
-
// is set. We remove 'show' here so navigation appears fluid.
|
110 |
$prev_image_link = $this->object->set_param_for(
|
111 |
$application->get_routed_url(TRUE),
|
112 |
'pid',
|
113 |
$picture_list[$back_pid]->image_slug
|
114 |
);
|
115 |
-
$prev_image_link = trailingslashit($this->object->remove_param_for($prev_image_link, 'show', $displayed_gallery->id()));
|
116 |
|
117 |
$next_pid = ($key < ($total - 1)) ? $picture_array[$key + 1] : reset($picture_array);
|
118 |
$next_image_link = $this->object->set_param_for(
|
@@ -120,10 +116,9 @@ class A_NextGen_Basic_ImageBrowser_Controller extends Mixin_NextGen_Basic_Galler
|
|
120 |
'pid',
|
121 |
$picture_list[$next_pid]->image_slug
|
122 |
);
|
123 |
-
$next_image_link = trailingslashit($this->object->remove_param_for($next_image_link, 'show', $displayed_gallery->id()));
|
124 |
|
125 |
// css class
|
126 |
-
$anchor = 'ngg-imagebrowser-' . $
|
127 |
|
128 |
// try to read EXIF data, but fallback to the db presets
|
129 |
$meta = new C_NextGen_Metadata($picture);
|
3 |
/**
|
4 |
* Provides rendering logic for the NextGen Basic ImageBrowser
|
5 |
*/
|
6 |
+
class A_NextGen_Basic_ImageBrowser_Controller extends Mixin
|
7 |
{
|
8 |
/**
|
9 |
* Renders the front-end display for the imagebrowser display type
|
98 |
$picture_list_pos = $key + 1;
|
99 |
|
100 |
// our image to display
|
101 |
+
$picture = new C_Image_Wrapper($imap->find($numeric_pid), NULL, TRUE);
|
102 |
$picture = apply_filters('ngg_image_object', $picture, $numeric_pid);
|
103 |
|
104 |
// determine URI to the next & previous images
|
105 |
$back_pid = ($key >= 1) ? $picture_array[$key - 1] : end($picture_array);
|
106 |
|
|
|
|
|
|
|
107 |
$prev_image_link = $this->object->set_param_for(
|
108 |
$application->get_routed_url(TRUE),
|
109 |
'pid',
|
110 |
$picture_list[$back_pid]->image_slug
|
111 |
);
|
|
|
112 |
|
113 |
$next_pid = ($key < ($total - 1)) ? $picture_array[$key + 1] : reset($picture_array);
|
114 |
$next_image_link = $this->object->set_param_for(
|
116 |
'pid',
|
117 |
$picture_list[$next_pid]->image_slug
|
118 |
);
|
|
|
119 |
|
120 |
// css class
|
121 |
+
$anchor = 'ngg-imagebrowser-' . $picture->galleryid . '-' . (get_the_ID() == false ? 0 : get_the_ID());
|
122 |
|
123 |
// try to read EXIF data, but fallback to the db presets
|
124 |
$meta = new C_NextGen_Metadata($picture);
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_form.php
CHANGED
@@ -12,9 +12,6 @@ class A_NextGen_Basic_ImageBrowser_Form extends Mixin_Display_Type_Form
|
|
12 |
*/
|
13 |
function _get_field_names()
|
14 |
{
|
15 |
-
return array(
|
16 |
-
'ajax_pagination',
|
17 |
-
'nextgen_basic_templates_template',
|
18 |
-
);
|
19 |
}
|
20 |
}
|
12 |
*/
|
13 |
function _get_field_names()
|
14 |
{
|
15 |
+
return array('nextgen_basic_templates_template');
|
|
|
|
|
|
|
16 |
}
|
17 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_mapper.php
CHANGED
@@ -23,7 +23,7 @@ class Hook_NextGen_Basic_ImageBrowser_Defaults extends Hook
|
|
23 |
{
|
24 |
function set_defaults($entity)
|
25 |
{
|
26 |
-
if (
|
27 |
{
|
28 |
$this->object->_set_default_value($entity, 'settings', 'template', '');
|
29 |
|
23 |
{
|
24 |
function set_defaults($entity)
|
25 |
{
|
26 |
+
if ($entity->name == NEXTGEN_GALLERY_NEXTGEN_BASIC_IMAGEBROWSER)
|
27 |
{
|
28 |
$this->object->_set_default_value($entity, 'settings', 'template', '');
|
29 |
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/adapter.nextgen_basic_imagebrowser_routes.php
CHANGED
@@ -14,7 +14,7 @@ class A_NextGen_Basic_ImageBrowser_Routes extends Mixin
|
|
14 |
|
15 |
function _add_nextgen_basic_imagebrowser_routes()
|
16 |
{
|
17 |
-
$slug =
|
18 |
-
$this->object->rewrite("{
|
19 |
}
|
20 |
}
|
14 |
|
15 |
function _add_nextgen_basic_imagebrowser_routes()
|
16 |
{
|
17 |
+
$slug = C_NextGen_Global_Settings::get_instance()->router_param_slug;
|
18 |
+
$this->object->rewrite("{$slug}{*}/image/{\\w}", "{$slug}{1}/pid--{2}");
|
19 |
}
|
20 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/hook.nextgen_basic_imagebrowser_alt_urls.php
DELETED
@@ -1,45 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Hook_NextGen_Basic_Imagebrowser_Alt_URLs extends Hook {
|
4 |
-
/**
|
5 |
-
* Replaces the full-size image url with a path to the current url + a pid (image) parameter. This causes
|
6 |
-
* basic thumbnail displays to render a basic imagebrowser.
|
7 |
-
*
|
8 |
-
* @param $image
|
9 |
-
* @param string $size
|
10 |
-
* @return null
|
11 |
-
*/
|
12 |
-
function get_image_url($image, $size='full', $check_existance=FALSE)
|
13 |
-
{
|
14 |
-
// Get the method to be returned
|
15 |
-
$retval = $this->object->get_method_property(
|
16 |
-
$this->method_called,
|
17 |
-
ExtensibleObject::METHOD_PROPERTY_RETURN_VALUE
|
18 |
-
);
|
19 |
-
|
20 |
-
if ($size == 'full')
|
21 |
-
{
|
22 |
-
$router = $this->object->get_registry()->get_utility('I_Router');
|
23 |
-
$controller = $this->object->get_registry()->get_utility('I_Display_Type_Controller');
|
24 |
-
$application = $router->get_routed_app();
|
25 |
-
|
26 |
-
if ($router->param('ajax_pagination_referrer'))
|
27 |
-
$url = $router->param('ajax_pagination_referrer');
|
28 |
-
else
|
29 |
-
$url = $application->get_routed_url(TRUE);
|
30 |
-
|
31 |
-
$url = $controller->set_param_for($url, 'pid', $image->image_slug);
|
32 |
-
$url = $controller->remove_param_for($url, 'show');
|
33 |
-
|
34 |
-
$retval = $url;
|
35 |
-
|
36 |
-
$this->object->set_method_property(
|
37 |
-
$this->method_called,
|
38 |
-
ExtensibleObject::METHOD_PROPERTY_RETURN_VALUE,
|
39 |
-
$retval
|
40 |
-
);
|
41 |
-
}
|
42 |
-
|
43 |
-
return $retval;
|
44 |
-
}
|
45 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php
CHANGED
@@ -19,7 +19,7 @@ class M_NextGen_Basic_ImageBrowser extends C_Base_Module
|
|
19 |
'photocrati-nextgen_basic_imagebrowser',
|
20 |
'NextGEN Basic ImageBrowser',
|
21 |
'Provides the NextGEN Basic ImageBrowser Display Type',
|
22 |
-
|
23 |
'http://www.nextgen-gallery.com',
|
24 |
'Photocrati Media',
|
25 |
'http://www.photocrati.com'
|
@@ -59,24 +59,23 @@ class M_NextGen_Basic_ImageBrowser extends C_Base_Module
|
|
59 |
'I_Routing_App', 'A_NextGen_Basic_ImageBrowser_Urls'
|
60 |
);
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
}
|
75 |
}
|
76 |
|
77 |
function _register_hooks()
|
78 |
{
|
79 |
-
|
80 |
}
|
81 |
|
82 |
/**
|
@@ -114,8 +113,7 @@ class M_NextGen_Basic_ImageBrowser extends C_Base_Module
|
|
114 |
'C_Nextgen_Basic_Imagebrowser_Installer' => 'class.nextgen_basic_imagebrowser_installer.php',
|
115 |
'A_Nextgen_Basic_Imagebrowser_Mapper' => 'adapter.nextgen_basic_imagebrowser_mapper.php',
|
116 |
'A_Nextgen_Basic_Imagebrowser_Routes' => 'adapter.nextgen_basic_imagebrowser_routes.php',
|
117 |
-
'A_Nextgen_Basic_Imagebrowser_Urls' => 'adapter.nextgen_basic_imagebrowser_urls.php'
|
118 |
-
'Hook_NextGen_Basic_Imagebrowser_Alt_URLs' => 'hook.nextgen_basic_imagebrowser_alt_urls.php'
|
119 |
);
|
120 |
}
|
121 |
}
|
19 |
'photocrati-nextgen_basic_imagebrowser',
|
20 |
'NextGEN Basic ImageBrowser',
|
21 |
'Provides the NextGEN Basic ImageBrowser Display Type',
|
22 |
+
'0.1',
|
23 |
'http://www.nextgen-gallery.com',
|
24 |
'Photocrati Media',
|
25 |
'http://www.photocrati.com'
|
59 |
'I_Routing_App', 'A_NextGen_Basic_ImageBrowser_Urls'
|
60 |
);
|
61 |
|
62 |
+
// Provide the imagebrowser form
|
63 |
+
$this->get_registry()->add_adapter(
|
64 |
+
'I_Form',
|
65 |
+
'A_NextGen_Basic_ImageBrowser_Form',
|
66 |
+
$this->module_id
|
67 |
+
);
|
68 |
+
|
69 |
+
// Provides the setting forms
|
70 |
+
$this->get_registry()->add_adapter(
|
71 |
+
'I_Form_Manager',
|
72 |
+
'A_NextGen_Basic_ImageBrowser_Forms'
|
73 |
+
);
|
|
|
74 |
}
|
75 |
|
76 |
function _register_hooks()
|
77 |
{
|
78 |
+
add_shortcode('imagebrowser', array(&$this, 'render_shortcode'));
|
79 |
}
|
80 |
|
81 |
/**
|
113 |
'C_Nextgen_Basic_Imagebrowser_Installer' => 'class.nextgen_basic_imagebrowser_installer.php',
|
114 |
'A_Nextgen_Basic_Imagebrowser_Mapper' => 'adapter.nextgen_basic_imagebrowser_mapper.php',
|
115 |
'A_Nextgen_Basic_Imagebrowser_Routes' => 'adapter.nextgen_basic_imagebrowser_routes.php',
|
116 |
+
'A_Nextgen_Basic_Imagebrowser_Urls' => 'adapter.nextgen_basic_imagebrowser_urls.php'
|
|
|
117 |
);
|
118 |
}
|
119 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/templates/nextgen_basic_imagebrowser.php
CHANGED
@@ -14,17 +14,13 @@
|
|
14 |
$this->include_template('photocrati-nextgen_gallery_display#image/before', $template_params);
|
15 |
|
16 |
?>
|
17 |
-
<a href='<?php echo esc_attr($storage->get_image_url($image
|
18 |
title='<?php echo esc_attr($image->description); ?>'
|
19 |
-
data-
|
20 |
-
data-thumbnail="<?php echo esc_attr($storage->get_image_url($image, 'thumb')); ?>"
|
21 |
-
data-image-id="<?php echo esc_attr($image->{$image->id_field}); ?>"
|
22 |
-
data-title="<?php echo esc_attr($image->alttext); ?>"
|
23 |
-
data-description="<?php echo esc_attr(stripslashes($image->description)); ?>"
|
24 |
<?php echo $effect_code ?>>
|
25 |
<img title='<?php echo esc_attr($image->alttext); ?>'
|
26 |
alt='<?php echo esc_attr($image->alttext); ?>'
|
27 |
-
src='<?php echo esc_attr($storage->get_image_url($image
|
28 |
</a>
|
29 |
<?php
|
30 |
|
@@ -64,13 +60,4 @@
|
|
64 |
</div>
|
65 |
|
66 |
</div>
|
67 |
-
<?php $this->end_element(); ?>
|
68 |
-
<script type='text/javascript'>
|
69 |
-
jQuery(function($){
|
70 |
-
new NggPaginatedGallery(
|
71 |
-
'<?php echo $displayed_gallery->id() ?>',
|
72 |
-
$('#<?php echo $anchor ?>'),
|
73 |
-
$('#<?php echo $anchor ?> .ngg-browser-prev, #<?php echo $anchor ?> .ngg-browser-next')
|
74 |
-
)
|
75 |
-
});
|
76 |
-
</script>
|
14 |
$this->include_template('photocrati-nextgen_gallery_display#image/before', $template_params);
|
15 |
|
16 |
?>
|
17 |
+
<a href='<?php echo esc_attr($storage->get_image_url($image)); ?>'
|
18 |
title='<?php echo esc_attr($image->description); ?>'
|
19 |
+
data-image-id='<?php echo esc_attr($image->pid); ?>'
|
|
|
|
|
|
|
|
|
20 |
<?php echo $effect_code ?>>
|
21 |
<img title='<?php echo esc_attr($image->alttext); ?>'
|
22 |
alt='<?php echo esc_attr($image->alttext); ?>'
|
23 |
+
src='<?php echo esc_attr($storage->get_image_url($image)); ?>'/>
|
24 |
</a>
|
25 |
<?php
|
26 |
|
60 |
</div>
|
61 |
|
62 |
</div>
|
63 |
+
<?php $this->end_element(); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_controller.php
CHANGED
@@ -32,19 +32,8 @@ class A_NextGen_Basic_Singlepic_Controller extends Mixin
|
|
32 |
break;
|
33 |
}
|
34 |
|
35 |
-
|
36 |
-
|
37 |
-
if (!empty($display_settings['link']))
|
38 |
-
{
|
39 |
-
$target = '_blank';
|
40 |
-
$effect_code = '';
|
41 |
-
}
|
42 |
-
else {
|
43 |
-
$display_settings['link'] = $storage->get_image_url($image, 'full', TRUE);
|
44 |
-
$target = '_self';
|
45 |
-
$effect_code = $this->object->get_effect_code($displayed_gallery);
|
46 |
-
}
|
47 |
-
$params['target'] = $target;
|
48 |
|
49 |
// mode is a legacy parameter
|
50 |
if (!is_array($display_settings['mode']))
|
@@ -99,28 +88,17 @@ class A_NextGen_Basic_Singlepic_Controller extends Mixin
|
|
99 |
$params['image']->container[0]->_cache_overrides['classname'] = 'ngg-singlepic ' . $display_settings['float'];
|
100 |
$params['image']->container[0]->_cache_overrides['imageURL'] = $display_settings['link'];
|
101 |
$params['image']->container[0]->_cache_overrides['thumbnailURL'] = $thumbnail_url;
|
102 |
-
$params['target'] = $target;
|
103 |
-
|
104 |
-
// if a link is present we temporarily must filter out the effect code
|
105 |
-
if (empty($effect_code))
|
106 |
-
add_filter('ngg_get_thumbcode', array(&$this, 'strip_thumbcode'), 10);
|
107 |
-
|
108 |
-
$retval = $this->object->legacy_render($display_settings['template'], $params, $return, 'singlepic');
|
109 |
|
110 |
-
|
111 |
-
remove_filter('ngg_get_thumbcode', array(&$this, 'strip_thumbcode'), 10);
|
112 |
-
|
113 |
-
return $retval;
|
114 |
}
|
115 |
else {
|
116 |
$params = $display_settings;
|
117 |
$params['storage'] = &$storage;
|
118 |
$params['image'] = &$image;
|
119 |
-
$params['effect_code'] = $
|
120 |
$params['inner_content'] = $displayed_gallery->inner_content;
|
121 |
$params['settings'] = $display_settings;
|
122 |
$params['thumbnail_url'] = $thumbnail_url;
|
123 |
-
$params['target'] = $target;
|
124 |
|
125 |
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
126 |
|
@@ -128,14 +106,6 @@ class A_NextGen_Basic_Singlepic_Controller extends Mixin
|
|
128 |
}
|
129 |
}
|
130 |
|
131 |
-
/**
|
132 |
-
* Intentionally disable the application of the effect code
|
133 |
-
*/
|
134 |
-
function strip_thumbcode($thumbcode)
|
135 |
-
{
|
136 |
-
return '';
|
137 |
-
}
|
138 |
-
|
139 |
/**
|
140 |
* Enqueues all static resources required by this display type
|
141 |
*
|
32 |
break;
|
33 |
}
|
34 |
|
35 |
+
// validate and/or clean our passed settings
|
36 |
+
$display_settings['link'] = (!empty($display_settings['link'])) ? $display_settings['link'] : $storage->get_image_url($image);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
// mode is a legacy parameter
|
39 |
if (!is_array($display_settings['mode']))
|
88 |
$params['image']->container[0]->_cache_overrides['classname'] = 'ngg-singlepic ' . $display_settings['float'];
|
89 |
$params['image']->container[0]->_cache_overrides['imageURL'] = $display_settings['link'];
|
90 |
$params['image']->container[0]->_cache_overrides['thumbnailURL'] = $thumbnail_url;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
+
return $this->object->legacy_render($display_settings['template'], $params, $return, 'singlepic');
|
|
|
|
|
|
|
93 |
}
|
94 |
else {
|
95 |
$params = $display_settings;
|
96 |
$params['storage'] = &$storage;
|
97 |
$params['image'] = &$image;
|
98 |
+
$params['effect_code'] = $this->object->get_effect_code($displayed_gallery);
|
99 |
$params['inner_content'] = $displayed_gallery->inner_content;
|
100 |
$params['settings'] = $display_settings;
|
101 |
$params['thumbnail_url'] = $thumbnail_url;
|
|
|
102 |
|
103 |
$params = $this->object->prepare_display_parameters($displayed_gallery, $params);
|
104 |
|
106 |
}
|
107 |
}
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
/**
|
110 |
* Enqueues all static resources required by this display type
|
111 |
*
|
products/photocrati_nextgen/modules/nextgen_basic_singlepic/adapter.nextgen_basic_singlepic_mapper.php
CHANGED
@@ -58,7 +58,7 @@ class A_NextGen_Basic_SinglePic_Mapper extends Mixin
|
|
58 |
*/
|
59 |
function _set_singlepic_defaults($entity)
|
60 |
{
|
61 |
-
if (
|
62 |
$this->object->_set_default_value($entity, 'settings', 'width', '');
|
63 |
$this->object->_set_default_value($entity, 'settings', 'height', '');
|
64 |
$this->object->_set_default_value($entity, 'settings', 'mode', '');
|
58 |
*/
|
59 |
function _set_singlepic_defaults($entity)
|
60 |
{
|
61 |
+
if ($entity->name == NEXTGEN_BASIC_SINGLEPIC_MODULE_NAME) {
|
62 |
$this->object->_set_default_value($entity, 'settings', 'width', '');
|
63 |
$this->object->_set_default_value($entity, 'settings', 'height', '');
|
64 |
$this->object->_set_default_value($entity, 'settings', 'mode', '');
|
products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php
CHANGED
@@ -17,7 +17,7 @@ class M_NextGen_Basic_Singlepic extends C_Base_Module
|
|
17 |
NEXTGEN_BASIC_SINGLEPIC_MODULE_NAME,
|
18 |
'NextGen Basic Singlepic',
|
19 |
'Provides a singlepic gallery for NextGEN Gallery',
|
20 |
-
'
|
21 |
'http://www.photocrati.com',
|
22 |
'Photocrati Media',
|
23 |
'http://www.photocrati.com'
|
@@ -43,24 +43,23 @@ class M_NextGen_Basic_Singlepic extends C_Base_Module
|
|
43 |
'A_NextGen_Basic_Singlepic_Mapper'
|
44 |
);
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
}
|
59 |
}
|
60 |
|
61 |
function _register_hooks()
|
62 |
{
|
63 |
-
|
64 |
}
|
65 |
|
66 |
/**
|
@@ -78,7 +77,7 @@ class M_NextGen_Basic_Singlepic extends C_Base_Module
|
|
78 |
|
79 |
function render_singlepic($params, $inner_content=NULL)
|
80 |
{
|
81 |
-
$params['display_type'] = $this->_get_param('display_type',
|
82 |
$params['image_ids'] = $this->_get_param('id', NULL, $params);
|
83 |
unset($params['id']);
|
84 |
|
17 |
NEXTGEN_BASIC_SINGLEPIC_MODULE_NAME,
|
18 |
'NextGen Basic Singlepic',
|
19 |
'Provides a singlepic gallery for NextGEN Gallery',
|
20 |
+
'1.9.6',
|
21 |
'http://www.photocrati.com',
|
22 |
'Photocrati Media',
|
23 |
'http://www.photocrati.com'
|
43 |
'A_NextGen_Basic_Singlepic_Mapper'
|
44 |
);
|
45 |
|
46 |
+
// Provides the display settings form for the SinglePic display type
|
47 |
+
$this->get_registry()->add_adapter(
|
48 |
+
'I_Form',
|
49 |
+
'A_NextGen_Basic_SinglePic_Form',
|
50 |
+
$this->module_id
|
51 |
+
);
|
52 |
+
|
53 |
+
// Adds the setting forms
|
54 |
+
$this->get_registry()->add_adapter(
|
55 |
+
'I_Form_Manager',
|
56 |
+
'A_NextGen_Basic_SinglePic_Forms'
|
57 |
+
);
|
|
|
58 |
}
|
59 |
|
60 |
function _register_hooks()
|
61 |
{
|
62 |
+
add_shortcode('singlepic', array(&$this, 'render_singlepic'));
|
63 |
}
|
64 |
|
65 |
/**
|
77 |
|
78 |
function render_singlepic($params, $inner_content=NULL)
|
79 |
{
|
80 |
+
$params['display_type'] = $this->_get_param('display_type', 'photocrati-nextgen_basic_singlepic', $params);
|
81 |
$params['image_ids'] = $this->_get_param('id', NULL, $params);
|
82 |
unset($params['id']);
|
83 |
|
products/photocrati_nextgen/modules/nextgen_basic_singlepic/templates/nextgen_basic_singlepic.php
CHANGED
@@ -64,14 +64,9 @@
|
|
64 |
?>
|
65 |
<a href="<?php echo esc_attr($settings['link']); ?>"
|
66 |
title="<?php echo esc_attr($image->description)?>"
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
data-title="<?php echo esc_attr($image->alttext); ?>"
|
71 |
-
data-description="<?php echo esc_attr(stripslashes($image->description)); ?>"
|
72 |
-
target='<?php echo esc_attr($target); ?>'
|
73 |
-
<?php echo $effect_code ?>>
|
74 |
-
<img class="ngg-singlepic"
|
75 |
src="<?php echo $thumbnail_url; ?>"
|
76 |
alt="<?php echo esc_attr($image->alttext); ?>"
|
77 |
title="<?php echo esc_attr($image->alttext); ?>"
|
64 |
?>
|
65 |
<a href="<?php echo esc_attr($settings['link']); ?>"
|
66 |
title="<?php echo esc_attr($image->description)?>"
|
67 |
+
data-image-id='<?php echo esc_attr($image->pid); ?>'
|
68 |
+
<?php echo $effect_code ?>>
|
69 |
+
<img class="ngg-singlepic"
|
|
|
|
|
|
|
|
|
|
|
70 |
src="<?php echo $thumbnail_url; ?>"
|
71 |
alt="<?php echo esc_attr($image->alttext); ?>"
|
72 |
title="<?php echo esc_attr($image->alttext); ?>"
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_form.php
CHANGED
@@ -25,7 +25,6 @@ class A_NextGen_Basic_Tagcloud_Form extends Mixin_Display_Type_Form
|
|
25 |
$mapper = $this->object->get_registry()->get_utility('I_Display_Type_Mapper');
|
26 |
$display_types = $mapper->find_all();
|
27 |
foreach ($display_types as $dt) {
|
28 |
-
if (!isset($dt->name)) die(var_dump($dt));
|
29 |
if (in_array($dt->name, $skip_types)) continue;
|
30 |
$types[$dt->name] = str_replace('NextGEN Basic ', '', $dt->title);
|
31 |
}
|
25 |
$mapper = $this->object->get_registry()->get_utility('I_Display_Type_Mapper');
|
26 |
$display_types = $mapper->find_all();
|
27 |
foreach ($display_types as $dt) {
|
|
|
28 |
if (in_array($dt->name, $skip_types)) continue;
|
29 |
$types[$dt->name] = str_replace('NextGEN Basic ', '', $dt->title);
|
30 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_mapper.php
CHANGED
@@ -16,7 +16,7 @@ class Hook_NextGen_Basic_TagCloud_Defaults extends Hook
|
|
16 |
{
|
17 |
function set_defaults($entity)
|
18 |
{
|
19 |
-
if (
|
20 |
$this->object->_set_default_value(
|
21 |
$entity,
|
22 |
'settings',
|
16 |
{
|
17 |
function set_defaults($entity)
|
18 |
{
|
19 |
+
if ($entity->name == NEXTGEN_BASIC_TAG_CLOUD_MODULE_NAME) {
|
20 |
$this->object->_set_default_value(
|
21 |
$entity,
|
22 |
'settings',
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_routes.php
CHANGED
@@ -14,7 +14,7 @@ class A_NextGen_Basic_TagCloud_Routes extends Mixin
|
|
14 |
|
15 |
function _add_nextgen_basic_tagcloud_routes()
|
16 |
{
|
17 |
-
$slug =
|
18 |
-
$this->object->rewrite("{
|
19 |
}
|
20 |
}
|
14 |
|
15 |
function _add_nextgen_basic_tagcloud_routes()
|
16 |
{
|
17 |
+
$slug = C_NextGen_Global_Settings::get_instance()->router_param_slug;
|
18 |
+
$this->object->rewrite("{$slug}{*}/tags/{\\w}{*}", "{$slug}{1}/gallerytag--{2}{3}");
|
19 |
}
|
20 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/adapter.nextgen_basic_tagcloud_urls.php
CHANGED
@@ -48,7 +48,7 @@ class A_NextGen_Basic_TagCloud_Urls extends Mixin
|
|
48 |
);
|
49 |
|
50 |
// Get the settings manager
|
51 |
-
$settings =
|
52 |
|
53 |
// Create the regex pattern
|
54 |
$sep = preg_quote($settings->router_param_separator, '#');
|
48 |
);
|
49 |
|
50 |
// Get the settings manager
|
51 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
52 |
|
53 |
// Create the regex pattern
|
54 |
$sep = preg_quote($settings->router_param_separator, '#');
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/class.taxonomy_controller.php
DELETED
@@ -1,127 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class C_Taxonomy_Controller extends C_MVC_Controller
|
4 |
-
{
|
5 |
-
static $_instances = array();
|
6 |
-
protected $ngg_tag_detection_has_run = FALSE;
|
7 |
-
|
8 |
-
/**
|
9 |
-
* Returns an instance of this class
|
10 |
-
*
|
11 |
-
* @param string $context
|
12 |
-
* @return C_Taxonomy_Controller
|
13 |
-
*/
|
14 |
-
static function get_instance($context = FALSE)
|
15 |
-
{
|
16 |
-
if (!isset(self::$_instances[$context]))
|
17 |
-
{
|
18 |
-
$klass = get_class();
|
19 |
-
self::$_instances[$context] = new $klass($context);
|
20 |
-
}
|
21 |
-
return self::$_instances[$context];
|
22 |
-
}
|
23 |
-
|
24 |
-
function define($context = FALSE)
|
25 |
-
{
|
26 |
-
parent::define($context);
|
27 |
-
$this->implement('I_Taxonomy_Controller');
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Returns the rendered HTML of a gallery based on the provided tag
|
32 |
-
*
|
33 |
-
* @param string $tag
|
34 |
-
* @return string
|
35 |
-
*/
|
36 |
-
function index_action($tag)
|
37 |
-
{
|
38 |
-
$renderer = $this->object->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
39 |
-
$output = $renderer->display_images(array(
|
40 |
-
'source' => 'tags',
|
41 |
-
'container_ids' => $tag,
|
42 |
-
'slug' => $tag,
|
43 |
-
'display_type' => NEXTGEN_GALLERY_BASIC_THUMBNAILS
|
44 |
-
));
|
45 |
-
|
46 |
-
// This strips extra whitespace and strips newlines. For some reason this is especially
|
47 |
-
// necessary on Wordpress taxonomy pages.
|
48 |
-
return trim(preg_replace("/\s\s+/", " ", $output));
|
49 |
-
}
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Determines if the current page is /ngg_tag/{*}
|
53 |
-
*
|
54 |
-
* @param $posts Wordpress post objects
|
55 |
-
* @return array Wordpress post objects
|
56 |
-
*/
|
57 |
-
function detect_ngg_tag($posts, $wp_query_local)
|
58 |
-
{
|
59 |
-
global $wp;
|
60 |
-
global $wp_query;
|
61 |
-
$wp_query_orig = false;
|
62 |
-
|
63 |
-
if ($wp_query_local != null && $wp_query_local != $wp_query) {
|
64 |
-
$wp_query_orig = $wp_query;
|
65 |
-
$wp_query = $wp_query_local;
|
66 |
-
}
|
67 |
-
|
68 |
-
// This appears to be necessary for multisite installations, but I can't imagine why. More hackery..
|
69 |
-
$tag = (get_query_var('ngg_tag') ? get_query_var('ngg_tag') : get_query_var('name'));
|
70 |
-
|
71 |
-
if (!$this->ngg_tag_detection_has_run // don't run more than once; necessary for certain themes
|
72 |
-
&& !is_admin() // will destroy 'view all posts' page without this
|
73 |
-
&& !empty($tag) // only run when a tag has been given to wordpress
|
74 |
-
&& (stripos($wp->request, 'ngg_tag') === 0 // make sure the query begins with /ngg_tag
|
75 |
-
|| (isset($wp_query->query_vars['page_id'])
|
76 |
-
&& $wp_query->query_vars['page_id'] === 'ngg_tag')
|
77 |
-
)
|
78 |
-
)
|
79 |
-
{
|
80 |
-
$this->ngg_tag_detection_has_run = TRUE;
|
81 |
-
|
82 |
-
// Wordpress somewhat-correctly generates several notices, so silence them as they're really unnecessary
|
83 |
-
if (!defined('WP_DEBUG') || !WP_DEBUG)
|
84 |
-
error_reporting(0);
|
85 |
-
|
86 |
-
// create in-code a fake post; we feed it back to Wordpress as the sole result of the "the_posts" filter
|
87 |
-
$posts = NULL;
|
88 |
-
$posts[] = $this->create_ngg_tag_post($tag);
|
89 |
-
|
90 |
-
$wp_query->is_404 = FALSE;
|
91 |
-
$wp_query->is_page = TRUE;
|
92 |
-
$wp_query->is_singular = TRUE;
|
93 |
-
$wp_query->is_home = FALSE;
|
94 |
-
$wp_query->is_archive = FALSE;
|
95 |
-
$wp_query->is_category = FALSE;
|
96 |
-
|
97 |
-
unset($wp_query->query['error']);
|
98 |
-
$wp_query->query_vars['error'] = '';
|
99 |
-
}
|
100 |
-
|
101 |
-
if ($wp_query_orig !== false) {
|
102 |
-
$wp_query = $wp_query_orig;
|
103 |
-
}
|
104 |
-
|
105 |
-
return $posts;
|
106 |
-
}
|
107 |
-
|
108 |
-
function create_ngg_tag_post($tag)
|
109 |
-
{
|
110 |
-
$post = new stdClass;
|
111 |
-
$post->post_author = FALSE;
|
112 |
-
$post->post_name = 'ngg_tag';
|
113 |
-
$post->guid = get_bloginfo('wpurl') . '/' . 'ngg_tag';
|
114 |
-
$post->post_title = "Images tagged "{$tag}"";
|
115 |
-
$post->post_content = $this->index_action($tag);
|
116 |
-
$post->ID = FALSE;
|
117 |
-
$post->post_type = 'page';
|
118 |
-
$post->post_status = 'static';
|
119 |
-
$post->comment_status = 'closed';
|
120 |
-
$post->ping_status = 'closed';
|
121 |
-
$post->comment_count = 0;
|
122 |
-
$post->post_date = current_time('mysql');
|
123 |
-
$post->post_date_gmt = current_time('mysql', 1);
|
124 |
-
|
125 |
-
return($post);
|
126 |
-
}
|
127 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/interface.taxonomy_controller.php
DELETED
@@ -1,8 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
interface I_Taxonomy_Controller extends I_MVC_Controller
|
4 |
-
{
|
5 |
-
function index_action($tag);
|
6 |
-
function detect_ngg_tag($posts);
|
7 |
-
function create_ngg_tag_post($tag);
|
8 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php
CHANGED
@@ -17,7 +17,7 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
|
|
17 |
NEXTGEN_BASIC_TAG_CLOUD_MODULE_NAME,
|
18 |
'NextGen Basic Tagcloud',
|
19 |
'Provides a tagcloud for NextGEN Gallery',
|
20 |
-
'
|
21 |
'http://www.photocrati.com',
|
22 |
'Photocrati Media',
|
23 |
'http://www.photocrati.com'
|
@@ -27,10 +27,6 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
|
|
27 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_NextGen_Basic_Tagcloud_Installer');
|
28 |
}
|
29 |
|
30 |
-
function _register_utilities()
|
31 |
-
{
|
32 |
-
$this->get_registry()->add_utility('I_Taxonomy_Controller', 'C_Taxonomy_Controller');
|
33 |
-
}
|
34 |
|
35 |
function _register_adapters()
|
36 |
{
|
@@ -65,33 +61,23 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
|
|
65 |
'A_NextGen_Basic_TagCloud_Urls'
|
66 |
);
|
67 |
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
}
|
81 |
}
|
82 |
|
83 |
function _register_hooks()
|
84 |
{
|
85 |
-
|
86 |
-
|
87 |
-
add_filter(
|
88 |
-
'the_posts',
|
89 |
-
array(
|
90 |
-
$this->get_registry()->get_utility('I_Taxonomy_Controller'),
|
91 |
-
'detect_ngg_tag'),
|
92 |
-
-10,
|
93 |
-
2
|
94 |
-
);
|
95 |
}
|
96 |
|
97 |
/**
|
@@ -117,7 +103,7 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
|
|
117 |
{
|
118 |
$params['tagcloud'] = $this->_get_param('tagcloud', 'yes', $params);
|
119 |
$params['source'] = $this->_get_param('source', 'tags', $params);
|
120 |
-
$params['display_type'] = $this->_get_param('display_type',
|
121 |
|
122 |
$renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
123 |
return $renderer->display_images($params, $inner_content);
|
@@ -133,9 +119,7 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module
|
|
133 |
'C_NextGen_Basic_Tagcloud_Installer' => 'class.nextgen_basic_tagcloud_installer.php',
|
134 |
'A_Nextgen_Basic_Tagcloud_Mapper' => 'adapter.nextgen_basic_tagcloud_mapper.php',
|
135 |
'A_Nextgen_Basic_Tagcloud_Routes' => 'adapter.nextgen_basic_tagcloud_routes.php',
|
136 |
-
'A_Nextgen_Basic_Tagcloud_Urls' => 'adapter.nextgen_basic_tagcloud_urls.php'
|
137 |
-
'I_Taxonomy_Controller' => 'interface.taxonomy_controller.php',
|
138 |
-
'C_Taxonomy_Controller' => 'class.taxonomy_controller.php'
|
139 |
);
|
140 |
}
|
141 |
}
|
17 |
NEXTGEN_BASIC_TAG_CLOUD_MODULE_NAME,
|
18 |
'NextGen Basic Tagcloud',
|
19 |
'Provides a tagcloud for NextGEN Gallery',
|
20 |
+
'1.9.6',
|
21 |
'http://www.photocrati.com',
|
22 |
'Photocrati Media',
|
23 |
'http://www.photocrati.com'
|
27 |
C_Photocrati_Installer::add_handler($this->module_id, 'C_NextGen_Basic_Tagcloud_Installer');
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
30 |
|
31 |
function _register_adapters()
|
32 |
{
|
61 |
'A_NextGen_Basic_TagCloud_Urls'
|
62 |
);
|
63 |
|
64 |
+
// Adds a display settings form
|
65 |
+
$this->get_registry()->add_adapter(
|
66 |
+
'I_Form',
|
67 |
+
'A_NextGen_Basic_TagCloud_Form',
|
68 |
+
$this->module_id
|
69 |
+
);
|
70 |
+
|
71 |
+
// Provides the forms for the settings
|
72 |
+
$this->get_registry()->add_adapter(
|
73 |
+
'I_Form_Manager',
|
74 |
+
'A_NextGen_Basic_TagCloud_Forms'
|
75 |
+
);
|
|
|
76 |
}
|
77 |
|
78 |
function _register_hooks()
|
79 |
{
|
80 |
+
add_shortcode('tagcloud', array(&$this, 'render_shortcode'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
}
|
82 |
|
83 |
/**
|
103 |
{
|
104 |
$params['tagcloud'] = $this->_get_param('tagcloud', 'yes', $params);
|
105 |
$params['source'] = $this->_get_param('source', 'tags', $params);
|
106 |
+
$params['display_type'] = $this->_get_param('display_type', 'photocrati-nextgen_basic_tagcloud', $params);
|
107 |
|
108 |
$renderer = $this->get_registry()->get_utility('I_Displayed_Gallery_Renderer');
|
109 |
return $renderer->display_images($params, $inner_content);
|
119 |
'C_NextGen_Basic_Tagcloud_Installer' => 'class.nextgen_basic_tagcloud_installer.php',
|
120 |
'A_Nextgen_Basic_Tagcloud_Mapper' => 'adapter.nextgen_basic_tagcloud_mapper.php',
|
121 |
'A_Nextgen_Basic_Tagcloud_Routes' => 'adapter.nextgen_basic_tagcloud_routes.php',
|
122 |
+
'A_Nextgen_Basic_Tagcloud_Urls' => 'adapter.nextgen_basic_tagcloud_urls.php'
|
|
|
|
|
123 |
);
|
124 |
}
|
125 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_templates/adapter.nextgen_basic_template_form.php
CHANGED
@@ -133,35 +133,32 @@ class A_NextGen_Basic_Template_Form extends Mixin
|
|
133 |
|
134 |
// create the 'gallery' object
|
135 |
$gallery = new stdclass;
|
136 |
-
$gallery->ID = $
|
|
|
|
|
137 |
$gallery->name = stripslashes($orig_gallery->name);
|
138 |
$gallery->title = stripslashes($orig_gallery->title);
|
139 |
$gallery->description = html_entity_decode(stripslashes($orig_gallery->galdesc));
|
140 |
$gallery->pageid = $orig_gallery->pageid;
|
141 |
-
|
142 |
-
if ($displayed_gallery->display_settings['ajax_pagination'])
|
143 |
-
$gallery_id = $displayed_gallery->transient_id;
|
144 |
-
else
|
145 |
-
$gallery_id = $displayed_gallery->id();
|
146 |
-
|
147 |
-
$gallery->anchor = 'ngg-gallery-' . $gallery_id . '-' . $current_page;
|
148 |
$gallery->displayed_gallery = &$displayed_gallery;
|
149 |
$gallery->columns = @intval($displayed_gallery->display_settings['number_of_columns']);
|
150 |
$gallery->imagewidth = ($gallery->columns > 0) ? 'style="width:' . floor(100 / $gallery->columns) . '%;"' : '';
|
151 |
|
152 |
-
if (
|
153 |
-
|
154 |
-
$
|
155 |
-
|
156 |
-
|
157 |
-
|
|
|
158 |
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
|
|
163 |
}
|
164 |
-
else $gallery->show_piclens = FALSE;
|
165 |
|
166 |
$gallery = apply_filters('ngg_gallery_object', $gallery, 4);
|
167 |
|
@@ -210,9 +207,5 @@ class A_NextGen_Basic_Template_Form extends Mixin
|
|
210 |
$this->module_version,
|
211 |
TRUE
|
212 |
);
|
213 |
-
|
214 |
-
|
215 |
-
if ($atp != null) {
|
216 |
-
$atp->mark_script('ngg_template_settings');
|
217 |
}
|
218 |
}
|
133 |
|
134 |
// create the 'gallery' object
|
135 |
$gallery = new stdclass;
|
136 |
+
$gallery->ID = $orig_gallery->$gallery_key;
|
137 |
+
$gallery->show_slideshow = FALSE;
|
138 |
+
$gallery->show_piclens = FALSE;
|
139 |
$gallery->name = stripslashes($orig_gallery->name);
|
140 |
$gallery->title = stripslashes($orig_gallery->title);
|
141 |
$gallery->description = html_entity_decode(stripslashes($orig_gallery->galdesc));
|
142 |
$gallery->pageid = $orig_gallery->pageid;
|
143 |
+
$gallery->anchor = 'ngg-gallery-' . $orig_gallery->$gallery_key . '-' . $current_page;
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
$gallery->displayed_gallery = &$displayed_gallery;
|
145 |
$gallery->columns = @intval($displayed_gallery->display_settings['number_of_columns']);
|
146 |
$gallery->imagewidth = ($gallery->columns > 0) ? 'style="width:' . floor(100 / $gallery->columns) . '%;"' : '';
|
147 |
|
148 |
+
if (is_integer($gallery->ID))
|
149 |
+
{
|
150 |
+
if (!empty($displayed_gallery->display_settings['alternative_view'])) {
|
151 |
+
$gallery->show_slideshow = TRUE;
|
152 |
+
$gallery->slideshow_link = $params['alternative_view_link_url'];
|
153 |
+
$gallery->slideshow_link_text = $displayed_gallery->display_settings['alternative_view_link_text'];
|
154 |
+
}
|
155 |
|
156 |
+
if (!empty($displayed_gallery->display_settings['show_piclens_link'])) {
|
157 |
+
$gallery->show_piclens = true;
|
158 |
+
$gallery->piclens_link = $params['piclens_link'];
|
159 |
+
$gallery->piclens_link_text = $displayed_gallery->display_settings['piclens_link_text'];
|
160 |
+
}
|
161 |
}
|
|
|
162 |
|
163 |
$gallery = apply_filters('ngg_gallery_object', $gallery, 4);
|
164 |
|
207 |
$this->module_version,
|
208 |
TRUE
|
209 |
);
|
|
|
|
|
|
|
|
|
210 |
}
|
211 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_templates/class.legacy_template_locator.php
CHANGED
@@ -38,8 +38,7 @@ class Mixin_Legacy_Template_Locator extends Mixin
|
|
38 |
function get_template_directories()
|
39 |
{
|
40 |
return array(
|
41 |
-
|
42 |
-
'Parent Theme' => get_template_directory() . DIRECTORY_SEPARATOR . 'nggallery' . DIRECTORY_SEPARATOR,
|
43 |
'NextGEN' => NGGALLERY_ABSPATH . 'view' . DIRECTORY_SEPARATOR
|
44 |
);
|
45 |
}
|
@@ -91,7 +90,7 @@ class Mixin_Legacy_Template_Locator extends Mixin
|
|
91 |
}
|
92 |
elseif (is_string($prefix))
|
93 |
{
|
94 |
-
$regex_iterator = new RegexIterator($iterator, "#(.*)
|
95 |
}
|
96 |
else {
|
97 |
$regex_iterator = new RegexIterator($iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH);
|
@@ -125,19 +124,19 @@ class Mixin_Legacy_Template_Locator extends Mixin
|
|
125 |
$custom_template .= '.php';
|
126 |
|
127 |
// Find the abspath of the template to render
|
128 |
-
if (
|
129 |
{
|
130 |
foreach ($this->object->get_template_directories() as $dir) {
|
131 |
if ($template_abspath)
|
132 |
break;
|
133 |
$filename = path_join($dir, $custom_template);
|
134 |
-
if (
|
135 |
{
|
136 |
$template_abspath = $filename;
|
137 |
}
|
138 |
elseif (strpos($custom_template, '-template') === FALSE) {
|
139 |
$filename = path_join($dir, str_replace('.php', '', $custom_template) . '-template.php');
|
140 |
-
if (
|
141 |
$template_abspath = $filename;
|
142 |
}
|
143 |
}
|
38 |
function get_template_directories()
|
39 |
{
|
40 |
return array(
|
41 |
+
'Overrides' => STYLESHEETPATH . DIRECTORY_SEPARATOR . 'nggallery' . DIRECTORY_SEPARATOR,
|
|
|
42 |
'NextGEN' => NGGALLERY_ABSPATH . 'view' . DIRECTORY_SEPARATOR
|
43 |
);
|
44 |
}
|
90 |
}
|
91 |
elseif (is_string($prefix))
|
92 |
{
|
93 |
+
$regex_iterator = new RegexIterator($iterator, "#(.*)/{$prefix}\-?.*\.php$#i", RecursiveRegexIterator::GET_MATCH);
|
94 |
}
|
95 |
else {
|
96 |
$regex_iterator = new RegexIterator($iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH);
|
124 |
$custom_template .= '.php';
|
125 |
|
126 |
// Find the abspath of the template to render
|
127 |
+
if (!file_exists($custom_template))
|
128 |
{
|
129 |
foreach ($this->object->get_template_directories() as $dir) {
|
130 |
if ($template_abspath)
|
131 |
break;
|
132 |
$filename = path_join($dir, $custom_template);
|
133 |
+
if (file_exists($filename))
|
134 |
{
|
135 |
$template_abspath = $filename;
|
136 |
}
|
137 |
elseif (strpos($custom_template, '-template') === FALSE) {
|
138 |
$filename = path_join($dir, str_replace('.php', '', $custom_template) . '-template.php');
|
139 |
+
if (file_exists($filename))
|
140 |
$template_abspath = $filename;
|
141 |
}
|
142 |
}
|
products/photocrati_nextgen/modules/nextgen_basic_templates/module.nextgen_basic_templates.php
CHANGED
@@ -15,7 +15,7 @@ class M_NextGen_Basic_Templates extends C_Base_Module
|
|
15 |
'photocrati-nextgen_basic_templates',
|
16 |
'NextGen Basic Templates',
|
17 |
'Provides a NextGen-Legacy compatible thumbnail gallery for NextGEN Gallery',
|
18 |
-
'0.
|
19 |
'http://www.photocrati.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
15 |
'photocrati-nextgen_basic_templates',
|
16 |
'NextGen Basic Templates',
|
17 |
'Provides a NextGen-Legacy compatible thumbnail gallery for NextGEN Gallery',
|
18 |
+
'0.1',
|
19 |
'http://www.photocrati.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/nextgen_data/adapter.nextgen_data_factory.php
CHANGED
@@ -2,27 +2,27 @@
|
|
2 |
|
3 |
class A_NextGen_Data_Factory extends Mixin
|
4 |
{
|
5 |
-
function gallery($properties=array(), $
|
6 |
{
|
7 |
return new C_Gallery($properties, $mapper, $context);
|
8 |
}
|
9 |
|
10 |
|
11 |
-
function gallery_image($properties=array(), $
|
12 |
{
|
13 |
return new C_Image($properties, $mapper, $context);
|
14 |
}
|
15 |
|
16 |
|
17 |
-
function image($properties=array(), $
|
18 |
{
|
19 |
return new C_Image($properties, $mapper, $context);
|
20 |
}
|
21 |
|
22 |
|
23 |
-
function album($properties=array(), $
|
24 |
{
|
25 |
-
return new C_Album($
|
26 |
}
|
27 |
|
28 |
|
@@ -43,11 +43,6 @@ class A_NextGen_Data_Factory extends Mixin
|
|
43 |
return new C_Gallery_Storage($context);
|
44 |
}
|
45 |
|
46 |
-
function extra_fields($properties=array(), $mapper=FALSE, $context=FALSE)
|
47 |
-
{
|
48 |
-
return new C_Datamapper_Model($mapper, $properties, $context);
|
49 |
-
}
|
50 |
-
|
51 |
|
52 |
function gallerystorage($context=FALSE)
|
53 |
{
|
2 |
|
3 |
class A_NextGen_Data_Factory extends Mixin
|
4 |
{
|
5 |
+
function gallery($mapper=FALSE, $properties=array(), $context=FALSE)
|
6 |
{
|
7 |
return new C_Gallery($properties, $mapper, $context);
|
8 |
}
|
9 |
|
10 |
|
11 |
+
function gallery_image($mapper=FALSE, $properties=array(), $context=FALSE)
|
12 |
{
|
13 |
return new C_Image($properties, $mapper, $context);
|
14 |
}
|
15 |
|
16 |
|
17 |
+
function image($mapper=FALSE, $properties=array(), $context=FALSE)
|
18 |
{
|
19 |
return new C_Image($properties, $mapper, $context);
|
20 |
}
|
21 |
|
22 |
|
23 |
+
function album($mapper=FALSE, $properties=array(), $context=FALSE)
|
24 |
{
|
25 |
+
return new C_Album($mapper, $properties, $context);
|
26 |
}
|
27 |
|
28 |
|
43 |
return new C_Gallery_Storage($context);
|
44 |
}
|
45 |
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
function gallerystorage($context=FALSE)
|
48 |
{
|
products/photocrati_nextgen/modules/nextgen_data/class.album.php
CHANGED
@@ -5,7 +5,7 @@ class C_Album extends C_DataMapper_Model
|
|
5 |
var $_mapper_interface = 'I_Album_Mapper';
|
6 |
|
7 |
|
8 |
-
function define($
|
9 |
{
|
10 |
parent::define($mapper, $properties, $context);
|
11 |
$this->add_mixin('Mixin_NextGen_Album_Instance_Methods');
|
@@ -18,17 +18,16 @@ class C_Album extends C_DataMapper_Model
|
|
18 |
* @param bool|\C_DataMapper|\FALSE $mapper
|
19 |
* @param array $properties
|
20 |
*/
|
21 |
-
|
22 |
-
{
|
23 |
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
}
|
33 |
|
34 |
/**
|
5 |
var $_mapper_interface = 'I_Album_Mapper';
|
6 |
|
7 |
|
8 |
+
function define($mapper=FALSE, $properties=FALSE, $context=FALSE)
|
9 |
{
|
10 |
parent::define($mapper, $properties, $context);
|
11 |
$this->add_mixin('Mixin_NextGen_Album_Instance_Methods');
|
18 |
* @param bool|\C_DataMapper|\FALSE $mapper
|
19 |
* @param array $properties
|
20 |
*/
|
21 |
+
function initialize($mapper=FALSE, $properties=array()) {
|
|
|
22 |
|
23 |
+
// Get the mapper is not specified
|
24 |
+
if (!$mapper) {
|
25 |
+
$mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
26 |
+
}
|
27 |
|
28 |
+
// Initialize
|
29 |
+
parent::initialize($mapper, $properties);
|
30 |
+
}
|
31 |
}
|
32 |
|
33 |
/**
|
products/photocrati_nextgen/modules/nextgen_data/class.album_mapper.php
CHANGED
@@ -4,38 +4,31 @@ class C_Album_Mapper extends C_CustomTable_DataMapper_Driver
|
|
4 |
{
|
5 |
static $_instances = array();
|
6 |
|
7 |
-
function
|
8 |
{
|
9 |
-
parent::initialize('ngg_album');
|
10 |
-
}
|
11 |
-
|
12 |
-
function define($context=FALSE, $not_used=FALSE)
|
13 |
-
{
|
14 |
-
// Define the context
|
15 |
if (!is_array($context)) $context = array($context);
|
16 |
array_push($context, 'album');
|
|
|
17 |
$this->_primary_key_column = 'id';
|
18 |
|
19 |
-
// Define the mapper
|
20 |
parent::define('ngg_album', $context);
|
21 |
-
$this->add_mixin('Mixin_NextGen_Table_Extras');
|
22 |
$this->add_mixin('Mixin_Album_Mapper');
|
23 |
$this->implement('I_Album_Mapper');
|
24 |
$this->set_model_factory_method('album');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
$this->define_column('slug', 'VARCHAR(255');
|
30 |
-
$this->define_column('previewpic', 'BIGINT', 0);
|
31 |
-
$this->define_column('albumdesc', 'TEXT');
|
32 |
-
$this->define_column('sortorder', 'TEXT');
|
33 |
-
$this->define_column('pageid', 'BIGINT', 0);
|
34 |
-
|
35 |
-
// Mark the columns which should be unserialized
|
36 |
-
$this->add_serialized_column('sortorder');
|
37 |
}
|
38 |
|
|
|
39 |
/**
|
40 |
* Returns an instance of the album datamapper
|
41 |
* @param bool|mixed $context
|
@@ -51,6 +44,19 @@ class C_Album_Mapper extends C_CustomTable_DataMapper_Driver
|
|
51 |
}
|
52 |
}
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
/**
|
56 |
* Provides album-specific methods for the datamapper
|
@@ -67,11 +73,29 @@ class Mixin_Album_Mapper extends Mixin
|
|
67 |
return $entity->name;
|
68 |
}
|
69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
function _save_entity($entity)
|
71 |
{
|
72 |
$retval = $this->call_parent('_save_entity', $entity);
|
73 |
if ($retval) {
|
74 |
-
C_Photocrati_Cache::flush(
|
75 |
}
|
76 |
return $retval;
|
77 |
}
|
4 |
{
|
5 |
static $_instances = array();
|
6 |
|
7 |
+
function define($context=FALSE)
|
8 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
if (!is_array($context)) $context = array($context);
|
10 |
array_push($context, 'album');
|
11 |
+
|
12 |
$this->_primary_key_column = 'id';
|
13 |
|
|
|
14 |
parent::define('ngg_album', $context);
|
|
|
15 |
$this->add_mixin('Mixin_Album_Mapper');
|
16 |
$this->implement('I_Album_Mapper');
|
17 |
$this->set_model_factory_method('album');
|
18 |
+
$this->add_post_hook(
|
19 |
+
'_convert_to_entity',
|
20 |
+
'Unserialize Galleries',
|
21 |
+
'Hook_Unserialize_Album_Galleries',
|
22 |
+
'unserialize_galleries'
|
23 |
+
);
|
24 |
+
}
|
25 |
|
26 |
+
function initialize()
|
27 |
+
{
|
28 |
+
parent::initialize('ngg_album');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
}
|
30 |
|
31 |
+
|
32 |
/**
|
33 |
* Returns an instance of the album datamapper
|
34 |
* @param bool|mixed $context
|
44 |
}
|
45 |
}
|
46 |
|
47 |
+
/**
|
48 |
+
* NextGEN stores all gallery ids for the album in a property called sortorder
|
49 |
+
*/
|
50 |
+
class Hook_Unserialize_Album_Galleries extends Hook
|
51 |
+
{
|
52 |
+
function unserialize_galleries($entity)
|
53 |
+
{
|
54 |
+
if (isset($entity->sortorder) && is_string($entity->sortorder)) {
|
55 |
+
$entity->sortorder = $this->object->unserialize($entity->sortorder);
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
|
61 |
/**
|
62 |
* Provides album-specific methods for the datamapper
|
73 |
return $entity->name;
|
74 |
}
|
75 |
|
76 |
+
/**
|
77 |
+
* Override the save method to avoid trying to save the 'exclude' property
|
78 |
+
* to the database, which will fail since the column doesn't exist in the
|
79 |
+
* database.
|
80 |
+
* TODO: This is just a workaround and should be removed when we implement
|
81 |
+
* https://www.wrike.com/open.htm?id=8250095
|
82 |
+
* @param stdClass|C_DataMapper_Model $entity
|
83 |
+
* @return boolean
|
84 |
+
*/
|
85 |
+
function _convert_to_table_data($entity)
|
86 |
+
{
|
87 |
+
$exclude = $entity->exclude;
|
88 |
+
unset($entity->exclude);
|
89 |
+
$retval = $this->call_parent('_convert_to_table_data', $entity);
|
90 |
+
$entity->exclude = $exclude;
|
91 |
+
return $retval;
|
92 |
+
}
|
93 |
+
|
94 |
function _save_entity($entity)
|
95 |
{
|
96 |
$retval = $this->call_parent('_save_entity', $entity);
|
97 |
if ($retval) {
|
98 |
+
C_Photocrati_Cache::flush();
|
99 |
}
|
100 |
return $retval;
|
101 |
}
|
products/photocrati_nextgen/modules/nextgen_data/class.gallery.php
CHANGED
@@ -8,22 +8,22 @@ class Mixin_NextGen_Gallery_Validation
|
|
8 |
function validation()
|
9 |
{
|
10 |
// If a title is present, we can auto-populate some other properties
|
11 |
-
if (($this->object->title)) {
|
12 |
|
13 |
// If no name is present, use the title to generate one
|
14 |
-
if (!($this->object->name)) {
|
15 |
$this->object->name = sanitize_file_name( sanitize_title($this->object->title));
|
16 |
$this->object->name = apply_filters('ngg_gallery_name', $this->object->name);
|
17 |
}
|
18 |
|
19 |
// If no slug is set, use the title to generate one
|
20 |
-
if (!($this->object->slug)) {
|
21 |
$this->object->slug = nggdb::get_unique_slug( sanitize_title($this->object->title), 'gallery' );
|
22 |
}
|
23 |
}
|
24 |
|
25 |
// Set what will be the path to the gallery
|
26 |
-
if (
|
27 |
{
|
28 |
$storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
|
29 |
$this->object->path = $storage->get_upload_relpath($this->object);
|
@@ -50,7 +50,7 @@ class C_Gallery extends C_DataMapper_Model
|
|
50 |
* Defines the interfaces and methods (through extensions and hooks)
|
51 |
* that this class provides
|
52 |
*/
|
53 |
-
function define($properties, $mapper
|
54 |
{
|
55 |
parent::define($mapper, $properties, $context);
|
56 |
$this->add_mixin('Mixin_NextGen_Gallery_Validation');
|
@@ -63,21 +63,12 @@ class C_Gallery extends C_DataMapper_Model
|
|
63 |
* @param C_DataMapper $mapper
|
64 |
* @param string $context
|
65 |
*/
|
66 |
-
function initialize($properties=
|
67 |
-
{
|
68 |
|
69 |
// Get the mapper is not specified
|
70 |
if (!$mapper) {
|
71 |
$mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
72 |
}
|
73 |
-
|
74 |
-
// Initialize
|
75 |
parent::initialize($mapper, $properties);
|
76 |
}
|
77 |
-
|
78 |
-
function get_images()
|
79 |
-
{
|
80 |
-
$mapper = C_Image_Mapper::get_instance();
|
81 |
-
return $mapper->select()->where(array('galleryid = %d', $this->gid))->order_by('sortorder')->run_query();
|
82 |
-
}
|
83 |
}
|
8 |
function validation()
|
9 |
{
|
10 |
// If a title is present, we can auto-populate some other properties
|
11 |
+
if (isset($this->object->title)) {
|
12 |
|
13 |
// If no name is present, use the title to generate one
|
14 |
+
if (!isset($this->object->name)) {
|
15 |
$this->object->name = sanitize_file_name( sanitize_title($this->object->title));
|
16 |
$this->object->name = apply_filters('ngg_gallery_name', $this->object->name);
|
17 |
}
|
18 |
|
19 |
// If no slug is set, use the title to generate one
|
20 |
+
if (!isset($this->object->slug)) {
|
21 |
$this->object->slug = nggdb::get_unique_slug( sanitize_title($this->object->title), 'gallery' );
|
22 |
}
|
23 |
}
|
24 |
|
25 |
// Set what will be the path to the gallery
|
26 |
+
if (empty($this->object->path))
|
27 |
{
|
28 |
$storage = $this->object->get_registry()->get_utility('I_Gallery_Storage');
|
29 |
$this->object->path = $storage->get_upload_relpath($this->object);
|
50 |
* Defines the interfaces and methods (through extensions and hooks)
|
51 |
* that this class provides
|
52 |
*/
|
53 |
+
function define($properties, $mapper, $context=FALSE)
|
54 |
{
|
55 |
parent::define($mapper, $properties, $context);
|
56 |
$this->add_mixin('Mixin_NextGen_Gallery_Validation');
|
63 |
* @param C_DataMapper $mapper
|
64 |
* @param string $context
|
65 |
*/
|
66 |
+
function initialize($properties = FALSE, $mapper=FALSE) {
|
|
|
67 |
|
68 |
// Get the mapper is not specified
|
69 |
if (!$mapper) {
|
70 |
$mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
71 |
}
|
|
|
|
|
72 |
parent::initialize($mapper, $properties);
|
73 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
products/photocrati_nextgen/modules/nextgen_data/class.gallery_mapper.php
CHANGED
@@ -11,7 +11,7 @@ class C_Gallery_Mapper extends C_CustomTable_DataMapper_Driver
|
|
11 |
* Define the object
|
12 |
* @param string $context
|
13 |
*/
|
14 |
-
function define($context=FALSE
|
15 |
{
|
16 |
// Add 'gallery' context
|
17 |
if (!is_array($context)) $context = array($context);
|
@@ -22,22 +22,11 @@ class C_Gallery_Mapper extends C_CustomTable_DataMapper_Driver
|
|
22 |
// Continue defining the object
|
23 |
parent::define('ngg_gallery', $context);
|
24 |
$this->set_model_factory_method('gallery');
|
25 |
-
$this->add_mixin('Mixin_NextGen_Table_Extras');
|
26 |
$this->add_mixin('Mixin_Gallery_Mapper');
|
27 |
$this->implement('I_Gallery_Mapper');
|
28 |
-
|
29 |
-
// Define the columns
|
30 |
-
$this->define_column('gid', 'BIGINT', 0);
|
31 |
-
$this->define_column('name', 'VARCHAR(255)');
|
32 |
-
$this->define_column('slug', 'VARCHAR(255');
|
33 |
-
$this->define_column('path', 'TEXT');
|
34 |
-
$this->define_column('title', 'TEXT');
|
35 |
-
$this->define_column('pageid', 'INT', 0);
|
36 |
-
$this->define_column('previewpic', 'INT', 0);
|
37 |
-
$this->define_column('author', 'INT', 0);
|
38 |
}
|
39 |
|
40 |
-
function initialize(
|
41 |
{
|
42 |
parent::initialize('ngg_gallery');
|
43 |
}
|
@@ -75,7 +64,7 @@ class Mixin_Gallery_Mapper extends Mixin
|
|
75 |
|
76 |
if ($retval) {
|
77 |
do_action('ngg_created_new_gallery', $entity->{$entity->id_field});
|
78 |
-
C_Photocrati_Cache::flush(
|
79 |
}
|
80 |
|
81 |
return $retval;
|
@@ -84,7 +73,7 @@ class Mixin_Gallery_Mapper extends Mixin
|
|
84 |
function destroy($image)
|
85 |
{
|
86 |
$retval = $this->call_parent('destroy',$image);
|
87 |
-
C_Photocrati_Cache::flush(
|
88 |
return $retval;
|
89 |
}
|
90 |
|
11 |
* Define the object
|
12 |
* @param string $context
|
13 |
*/
|
14 |
+
function define($context=FALSE)
|
15 |
{
|
16 |
// Add 'gallery' context
|
17 |
if (!is_array($context)) $context = array($context);
|
22 |
// Continue defining the object
|
23 |
parent::define('ngg_gallery', $context);
|
24 |
$this->set_model_factory_method('gallery');
|
|
|
25 |
$this->add_mixin('Mixin_Gallery_Mapper');
|
26 |
$this->implement('I_Gallery_Mapper');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
}
|
28 |
|
29 |
+
function initialize()
|
30 |
{
|
31 |
parent::initialize('ngg_gallery');
|
32 |
}
|
64 |
|
65 |
if ($retval) {
|
66 |
do_action('ngg_created_new_gallery', $entity->{$entity->id_field});
|
67 |
+
C_Photocrati_Cache::flush();
|
68 |
}
|
69 |
|
70 |
return $retval;
|
73 |
function destroy($image)
|
74 |
{
|
75 |
$retval = $this->call_parent('destroy',$image);
|
76 |
+
C_Photocrati_Cache::flush();
|
77 |
return $retval;
|
78 |
}
|
79 |
|
products/photocrati_nextgen/modules/nextgen_data/class.gallery_storage.php
CHANGED
@@ -24,7 +24,7 @@ class Mixin_GalleryStorage extends Mixin
|
|
24 |
if (!defined('GALLERYSTORAGE_DRIVER')) {
|
25 |
|
26 |
// Get the datamapper configured in the database
|
27 |
-
$factory_method =
|
28 |
|
29 |
// Define a constant and use this as the global gallerystorage driver,
|
30 |
// unless running in a SimpleTest Environment
|
24 |
if (!defined('GALLERYSTORAGE_DRIVER')) {
|
25 |
|
26 |
// Get the datamapper configured in the database
|
27 |
+
$factory_method = C_NextGen_Global_Settings::get_instance()->gallerystorage_driver;
|
28 |
|
29 |
// Define a constant and use this as the global gallerystorage driver,
|
30 |
// unless running in a SimpleTest Environment
|
products/photocrati_nextgen/modules/nextgen_data/class.gallerystorage_driver_base.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class E_UploadException extends
|
4 |
{
|
5 |
function __construct($message='', $code=NULL, $previous=NULL)
|
6 |
{
|
@@ -9,20 +9,17 @@ class E_UploadException extends E_NggErrorException
|
|
9 |
}
|
10 |
}
|
11 |
|
12 |
-
class E_InsufficientWriteAccessException extends
|
13 |
{
|
14 |
function __construct($message=FALSE, $filename=NULL, $code=NULL, $previous=NULL)
|
15 |
{
|
16 |
if (!$message) $message = "Could not write to file. Please check filesystem permissions.";
|
17 |
if ($filename) $message .= " Filename: {$filename}";
|
18 |
-
|
19 |
-
parent::__construct($message, $code, $previous);
|
20 |
-
else
|
21 |
-
parent::__construct($message, $code);
|
22 |
}
|
23 |
}
|
24 |
|
25 |
-
class E_NoSpaceAvailableException extends
|
26 |
{
|
27 |
function __construct($message='', $code=NULL, $previous=NULL)
|
28 |
{
|
@@ -30,16 +27,6 @@ class E_NoSpaceAvailableException extends E_NggErrorException
|
|
30 |
parent::__construct($message, $code, $previous);
|
31 |
}
|
32 |
}
|
33 |
-
|
34 |
-
class E_No_Image_Library_Exception extends E_NggErrorException
|
35 |
-
{
|
36 |
-
function __construct($message='', $code=NULL, $previous=NULL)
|
37 |
-
{
|
38 |
-
if (!$message) $message = "The site does not support the GD Image library. Please ask your hosting provider to enable it.";
|
39 |
-
parent::__construct($message, $code, $previous);
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
|
44 |
class Mixin_GalleryStorage_Driver_Base extends Mixin
|
45 |
{
|
@@ -109,7 +96,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
109 |
{
|
110 |
$retval = FALSE;
|
111 |
|
112 |
-
if (
|
113 |
$files = scandir($abspath);
|
114 |
array_shift($files);
|
115 |
array_shift($files);
|
@@ -119,7 +106,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
119 |
else unlink($file_abspath);
|
120 |
}
|
121 |
rmdir($abspath);
|
122 |
-
$retval =
|
123 |
}
|
124 |
|
125 |
return $retval;
|
@@ -268,9 +255,9 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
268 |
* @param int|stdClass|C_Image $image
|
269 |
* @return string
|
270 |
*/
|
271 |
-
function get_full_url($image
|
272 |
{
|
273 |
-
return $this->object->get_image_url($image, 'full'
|
274 |
}
|
275 |
|
276 |
/**
|
@@ -316,7 +303,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
316 |
|
317 |
$abspath = $this->object->get_image_abspath($image, $size);
|
318 |
|
319 |
-
if (
|
320 |
{
|
321 |
$dims = getimagesize($abspath);
|
322 |
|
@@ -387,9 +374,9 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
387 |
* An alias for get_full_abspath()
|
388 |
* @param int|object $image
|
389 |
*/
|
390 |
-
function get_original_abspath($image
|
391 |
{
|
392 |
-
return $this->object->get_image_abspath($image, 'full'
|
393 |
}
|
394 |
|
395 |
/**
|
@@ -417,9 +404,9 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
417 |
* @param int|stdClass|C_Image $image
|
418 |
* @return string
|
419 |
*/
|
420 |
-
function get_original_url($image
|
421 |
{
|
422 |
-
return $this->object->get_image_url($image, 'full'
|
423 |
}
|
424 |
|
425 |
/**
|
@@ -500,19 +487,6 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
500 |
return $retval;
|
501 |
}
|
502 |
|
503 |
-
function is_current_user_over_quota()
|
504 |
-
{
|
505 |
-
$retval = FALSE;
|
506 |
-
$settings = C_NextGen_Settings::get_instance();
|
507 |
-
|
508 |
-
if ((is_multisite()) && $settings->get('wpmuQuotaCheck')) {
|
509 |
-
require_once(ABSPATH . 'wp-admin/includes/ms.php');
|
510 |
-
$retval = upload_is_user_over_quota(FALSE);
|
511 |
-
}
|
512 |
-
|
513 |
-
return $retval;
|
514 |
-
}
|
515 |
-
|
516 |
|
517 |
/**
|
518 |
* Uploads base64 file to a gallery
|
@@ -521,7 +495,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
521 |
* @param type $filename specifies the name of the file
|
522 |
* @return C_Image
|
523 |
*/
|
524 |
-
function upload_base64_image($gallery, $data, $filename=FALSE
|
525 |
{
|
526 |
$settings = C_NextGen_Settings::get_instance();
|
527 |
$memory_limit = intval(ini_get('memory_limit'));
|
@@ -530,9 +504,11 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
530 |
$retval = NULL;
|
531 |
if (($gallery_id = $this->object->_get_gallery_id($gallery))) {
|
532 |
|
533 |
-
|
534 |
-
|
535 |
-
|
|
|
|
|
536 |
}
|
537 |
|
538 |
// Get path information. The use of get_upload_abspath() might
|
@@ -542,36 +518,28 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
542 |
$upload_dir = $this->object->get_upload_abspath($gallery);
|
543 |
|
544 |
// Perhaps a filename was given instead of base64 data?
|
545 |
-
if ($data[0] == '/' &&
|
546 |
if (!$filename) $filename = basename($data);
|
547 |
$data = file_get_contents($data);
|
548 |
}
|
549 |
|
550 |
// Determine filenames
|
551 |
$filename = $filename ? sanitize_title_with_dashes($filename) : uniqid('nextgen-gallery');
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
$abs_filename = path_join($upload_dir, $filename);
|
556 |
|
557 |
-
// Create
|
558 |
-
$
|
559 |
-
|
560 |
-
|
561 |
-
unset($image->meta_data['saved']);
|
562 |
-
}
|
563 |
-
if (!$image) $image = $this->object->_image_mapper->create();
|
564 |
-
$retval = $image;
|
565 |
-
|
566 |
-
// Create or update the database record
|
567 |
-
$image->alttext = sanitize_title_with_dashes(basename($filename, '.' . pathinfo($filename, PATHINFO_EXTENSION)));
|
568 |
$image->galleryid = $this->object->_get_gallery_id($gallery);
|
569 |
$image->filename = $filename;
|
570 |
-
$image->image_slug = nggdb::get_unique_slug( sanitize_title_with_dashes( $image->alttext ), 'image' );
|
571 |
$image_key = $this->object->_image_mapper->get_primary_key_column();
|
572 |
|
573 |
// If we can't write to the directory, then there's no point in continuing
|
574 |
-
if (
|
575 |
if (!is_writable($upload_dir)) {
|
576 |
throw new E_InsufficientWriteAccessException(
|
577 |
FALSE, $upload_dir, FALSE
|
@@ -582,6 +550,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
582 |
if (($image_id = $this->object->_image_mapper->save($image))) {
|
583 |
try {
|
584 |
// Try writing the image
|
|
|
585 |
$fp = fopen($abs_filename, 'w');
|
586 |
fwrite($fp, $data);
|
587 |
fclose($fp);
|
@@ -627,12 +596,6 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
627 |
array($image->$image_key)
|
628 |
);
|
629 |
}
|
630 |
-
catch(E_No_Image_Library_Exception $ex) {
|
631 |
-
throw $ex;
|
632 |
-
}
|
633 |
-
catch(E_Clean_Exit $ex) {
|
634 |
-
// pass
|
635 |
-
}
|
636 |
catch(Exception $ex) {
|
637 |
throw new E_InsufficientWriteAccessException(
|
638 |
FALSE, $abs_filename, FALSE, $ex
|
@@ -648,24 +611,15 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
648 |
return $retval;
|
649 |
}
|
650 |
|
651 |
-
function import_gallery_from_fs($abspath, $gallery_id=FALSE
|
652 |
{
|
653 |
$retval = FALSE;
|
654 |
-
if (
|
655 |
|
656 |
// Ensure that this folder has images
|
657 |
-
$
|
658 |
-
$files
|
659 |
-
|
660 |
-
// first perform some filtering on file list
|
661 |
-
foreach ($files_all as $file)
|
662 |
-
{
|
663 |
-
if ($file == '.' || $file == '..')
|
664 |
-
continue;
|
665 |
-
|
666 |
-
$files[] = $file;
|
667 |
-
}
|
668 |
-
|
669 |
if (!empty($files)) {
|
670 |
|
671 |
// Get needed utilities
|
@@ -674,7 +628,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
674 |
|
675 |
// Sometimes users try importing a directory, which actually has all images under another directory
|
676 |
$first_file_abspath = $fs->join_paths($abspath, $files[0]);
|
677 |
-
if (is_dir($first_file_abspath)
|
678 |
|
679 |
// If no gallery has been specified, then use the directory name as the gallery name
|
680 |
if (!$gallery_id) {
|
@@ -682,10 +636,6 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
682 |
$gallery = $gallery_mapper->create(array(
|
683 |
'title' => basename($abspath),
|
684 |
));
|
685 |
-
|
686 |
-
if (!$move_files) {
|
687 |
-
$gallery->path = str_ireplace(ABSPATH, '', $abspath);
|
688 |
-
}
|
689 |
|
690 |
// Save the gallery
|
691 |
if ($gallery->save()) $gallery_id = $gallery->id();
|
@@ -697,82 +647,15 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
697 |
foreach ($files as $file) {
|
698 |
if (!preg_match("/\.(jpg|jpeg|gif|png)/i", $file)) continue;
|
699 |
$file_abspath = $fs->join_paths($abspath, $file);
|
700 |
-
$image =
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
str_replace(' ', '_', $file)
|
707 |
-
);
|
708 |
-
}
|
709 |
-
else {
|
710 |
-
// Create the database record ... TODO cleanup, some duplication here from upload_base64_image
|
711 |
-
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
712 |
-
$image = $factory->create('image');
|
713 |
-
$image->alttext = sanitize_title_with_dashes(basename($file_abspath, '.' . pathinfo($file_abspath, PATHINFO_EXTENSION)));
|
714 |
-
$image->galleryid = $this->object->_get_gallery_id($gallery_id);
|
715 |
-
$image->filename = basename($file_abspath);
|
716 |
-
$image->image_slug = nggdb::get_unique_slug( sanitize_title_with_dashes( $image->alttext ), 'image' );
|
717 |
-
$image_key = $this->object->_image_mapper->get_primary_key_column();
|
718 |
-
$abs_filename = $file_abspath;
|
719 |
-
|
720 |
-
if (($image_id = $this->object->_image_mapper->save($image))) {
|
721 |
-
try {
|
722 |
-
// backup and image resizing should have already been performed, better to avoid
|
723 |
-
# if ($settings->imgBackup)
|
724 |
-
# $this->object->backup_image($image);
|
725 |
-
|
726 |
-
# if ($settings->imgAutoResize)
|
727 |
-
# $this->object->generate_image_clone(
|
728 |
-
# $abs_filename,
|
729 |
-
# $abs_filename,
|
730 |
-
# $this->object->get_image_size_params($image_id, 'full')
|
731 |
-
# );
|
732 |
-
|
733 |
-
// Ensure that fullsize dimensions are added to metadata array
|
734 |
-
$dimensions = getimagesize($abs_filename);
|
735 |
-
$full_meta = array(
|
736 |
-
'width' => $dimensions[0],
|
737 |
-
'height' => $dimensions[1]
|
738 |
-
);
|
739 |
-
if (!isset($image->meta_data) OR (is_string($image->meta_data) && strlen($image->meta_data) == 0)) {
|
740 |
-
$image->meta_data = array();
|
741 |
-
}
|
742 |
-
$image->meta_data = array_merge($image->meta_data, $full_meta);
|
743 |
-
$image->meta_data['full'] = $full_meta;
|
744 |
-
|
745 |
-
// Generate a thumbnail for the image
|
746 |
-
$this->object->generate_thumbnail($image);
|
747 |
-
|
748 |
-
// Set gallery preview image if missing
|
749 |
-
$this->object->get_registry()->get_utility('I_Gallery_Mapper')->set_preview_image($gallery, $image_id, TRUE);
|
750 |
-
|
751 |
-
// Notify other plugins that an image has been added
|
752 |
-
do_action('ngg_added_new_image', $image);
|
753 |
-
|
754 |
-
// delete dirsize after adding new images
|
755 |
-
delete_transient( 'dirsize_cache' );
|
756 |
-
|
757 |
-
// Seems redundant to above hook. Maintaining for legacy purposes
|
758 |
-
do_action(
|
759 |
-
'ngg_after_new_images_added',
|
760 |
-
$gallery_id,
|
761 |
-
array($image->$image_key)
|
762 |
-
);
|
763 |
-
}
|
764 |
-
catch(Exception $ex) {
|
765 |
-
throw new E_InsufficientWriteAccessException(
|
766 |
-
FALSE, $abs_filename, FALSE, $ex
|
767 |
-
);
|
768 |
-
}
|
769 |
-
}
|
770 |
-
else throw new E_InvalidEntityException();
|
771 |
-
}
|
772 |
-
|
773 |
-
$retval['image_ids'][] = $image->{$image->id_field};
|
774 |
}
|
775 |
|
|
|
776 |
// Add the gallery name to the result
|
777 |
$gallery = $gallery_mapper->find($gallery_id);
|
778 |
$retval['gallery_name'] = $gallery->title;
|
@@ -812,7 +695,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
812 |
$result = NULL;
|
813 |
|
814 |
// Ensure we have a valid image
|
815 |
-
if ($image_path &&
|
816 |
{
|
817 |
// Ensure target directory exists, but only create 1 subdirectory
|
818 |
$image_dir = dirname($image_path);
|
@@ -1158,11 +1041,6 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
1158 |
$crop_frame = isset($params['crop_frame']) ? $params['crop_frame'] : NULL;
|
1159 |
$destpath = NULL;
|
1160 |
$thumbnail = NULL;
|
1161 |
-
$quality = 100;
|
1162 |
-
|
1163 |
-
// Do this before anything else can modify the original -- $detailed_size
|
1164 |
-
// may hold IPTC metadata we need to write to our clone
|
1165 |
-
$size = getimagesize($image_path, $detailed_size);
|
1166 |
|
1167 |
$result = $this->object->calculate_image_clone_result($image_path, $clone_path, $params);
|
1168 |
|
@@ -1170,7 +1048,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
1170 |
$settings = C_NextGen_Settings::get_instance();
|
1171 |
|
1172 |
// Ensure we have a valid image
|
1173 |
-
if ($image_path &&
|
1174 |
{
|
1175 |
$image_dir = dirname($image_path);
|
1176 |
$clone_path = $result['clone_path'];
|
@@ -1180,7 +1058,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
1180 |
$format_list = $this->object->get_image_format_list();
|
1181 |
|
1182 |
// Ensure target directory exists, but only create 1 subdirectory
|
1183 |
-
if (
|
1184 |
{
|
1185 |
if (strtolower(realpath($image_dir)) != strtolower(realpath($clone_dir)))
|
1186 |
{
|
@@ -1231,7 +1109,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
1231 |
}
|
1232 |
|
1233 |
// We successfully generated the thumbnail
|
1234 |
-
if (is_string($destpath) && (
|
1235 |
{
|
1236 |
if ($clone_format != null)
|
1237 |
{
|
@@ -1260,7 +1138,7 @@ class Mixin_GalleryStorage_Driver_Base extends Mixin
|
|
1260 |
$destpath_basename = $destpath_info['filename'];
|
1261 |
$destpath_new = $destpath_dir . DIRECTORY_SEPARATOR . $destpath_basename . $clone_format_extension_str;
|
1262 |
|
1263 |
-
if ((
|
1264 |
{
|
1265 |
$destpath = $destpath_new;
|
1266 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class E_UploadException extends RuntimeException
|
4 |
{
|
5 |
function __construct($message='', $code=NULL, $previous=NULL)
|
6 |
{
|
9 |
}
|
10 |
}
|
11 |
|
12 |
+
class E_InsufficientWriteAccessException extends RuntimeException
|
13 |
{
|
14 |
function __construct($message=FALSE, $filename=NULL, $code=NULL, $previous=NULL)
|
15 |
{
|
16 |
if (!$message) $message = "Could not write to file. Please check filesystem permissions.";
|
17 |
if ($filename) $message .= " Filename: {$filename}";
|
18 |
+
parent::__construct($message, $code, $previous);
|
|
|
|
|
|
|
19 |
}
|
20 |
}
|
21 |
|
22 |
+
class E_NoSpaceAvailableException extends RuntimeException
|
23 |
{
|
24 |
function __construct($message='', $code=NULL, $previous=NULL)
|
25 |
{
|
27 |
parent::__construct($message, $code, $previous);
|
28 |
}
|
29 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
class Mixin_GalleryStorage_Driver_Base extends Mixin
|
32 |
{
|
96 |
{
|
97 |
$retval = FALSE;
|
98 |
|
99 |
+
if (file_exists($abspath)) {
|
100 |
$files = scandir($abspath);
|
101 |
array_shift($files);
|
102 |
array_shift($files);
|
106 |
else unlink($file_abspath);
|
107 |
}
|
108 |
rmdir($abspath);
|
109 |
+
$retval = file_exists($abspath);
|
110 |
}
|
111 |
|
112 |
return $retval;
|
255 |
* @param int|stdClass|C_Image $image
|
256 |
* @return string
|
257 |
*/
|
258 |
+
function get_full_url($image)
|
259 |
{
|
260 |
+
return $this->object->get_image_url($image, 'full');
|
261 |
}
|
262 |
|
263 |
/**
|
303 |
|
304 |
$abspath = $this->object->get_image_abspath($image, $size);
|
305 |
|
306 |
+
if (file_exists($abspath))
|
307 |
{
|
308 |
$dims = getimagesize($abspath);
|
309 |
|
374 |
* An alias for get_full_abspath()
|
375 |
* @param int|object $image
|
376 |
*/
|
377 |
+
function get_original_abspath($image)
|
378 |
{
|
379 |
+
return $this->object->get_image_abspath($image, 'full');
|
380 |
}
|
381 |
|
382 |
/**
|
404 |
* @param int|stdClass|C_Image $image
|
405 |
* @return string
|
406 |
*/
|
407 |
+
function get_original_url($image)
|
408 |
{
|
409 |
+
return $this->object->get_image_url($image, 'full');
|
410 |
}
|
411 |
|
412 |
/**
|
487 |
return $retval;
|
488 |
}
|
489 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
490 |
|
491 |
/**
|
492 |
* Uploads base64 file to a gallery
|
495 |
* @param type $filename specifies the name of the file
|
496 |
* @return C_Image
|
497 |
*/
|
498 |
+
function upload_base64_image($gallery, $data, $filename=FALSE)
|
499 |
{
|
500 |
$settings = C_NextGen_Settings::get_instance();
|
501 |
$memory_limit = intval(ini_get('memory_limit'));
|
504 |
$retval = NULL;
|
505 |
if (($gallery_id = $this->object->_get_gallery_id($gallery))) {
|
506 |
|
507 |
+
// Ensure that there is capacity available
|
508 |
+
if ( (is_multisite()) && nggWPMU::wpmu_enable_function('wpmuQuotaCheck')) {
|
509 |
+
if (upload_is_user_over_quota(FALSE)) {
|
510 |
+
throw new E_NoSpaceAvailableException();
|
511 |
+
}
|
512 |
}
|
513 |
|
514 |
// Get path information. The use of get_upload_abspath() might
|
518 |
$upload_dir = $this->object->get_upload_abspath($gallery);
|
519 |
|
520 |
// Perhaps a filename was given instead of base64 data?
|
521 |
+
if ($data[0] == '/' && file_exists($data)) {
|
522 |
if (!$filename) $filename = basename($data);
|
523 |
$data = file_get_contents($data);
|
524 |
}
|
525 |
|
526 |
// Determine filenames
|
527 |
$filename = $filename ? sanitize_title_with_dashes($filename) : uniqid('nextgen-gallery');
|
528 |
+
if (preg_match("/\-(png|jpg|gif|jpeg)$/i", $filename, $match)) {
|
529 |
+
$filename = str_replace($match[0], '.'.$match[1], $filename);
|
530 |
+
}
|
531 |
$abs_filename = path_join($upload_dir, $filename);
|
532 |
|
533 |
+
// Create the database record
|
534 |
+
$factory = $this->object->get_registry()->get_utility('I_Component_Factory');
|
535 |
+
$retval = $image = $factory->create('image');
|
536 |
+
$image->alttext = sanitize_title_with_dashes($filename);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
537 |
$image->galleryid = $this->object->_get_gallery_id($gallery);
|
538 |
$image->filename = $filename;
|
|
|
539 |
$image_key = $this->object->_image_mapper->get_primary_key_column();
|
540 |
|
541 |
// If we can't write to the directory, then there's no point in continuing
|
542 |
+
if (!file_exists($upload_dir)) @wp_mkdir_p($upload_dir);
|
543 |
if (!is_writable($upload_dir)) {
|
544 |
throw new E_InsufficientWriteAccessException(
|
545 |
FALSE, $upload_dir, FALSE
|
550 |
if (($image_id = $this->object->_image_mapper->save($image))) {
|
551 |
try {
|
552 |
// Try writing the image
|
553 |
+
if (!file_exists($upload_dir)) wp_mkdir_p($upload_dir);
|
554 |
$fp = fopen($abs_filename, 'w');
|
555 |
fwrite($fp, $data);
|
556 |
fclose($fp);
|
596 |
array($image->$image_key)
|
597 |
);
|
598 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
599 |
catch(Exception $ex) {
|
600 |
throw new E_InsufficientWriteAccessException(
|
601 |
FALSE, $abs_filename, FALSE, $ex
|
611 |
return $retval;
|
612 |
}
|
613 |
|
614 |
+
function import_gallery_from_fs($abspath, $gallery_id=FALSE)
|
615 |
{
|
616 |
$retval = FALSE;
|
617 |
+
if (file_exists($abspath)) {
|
618 |
|
619 |
// Ensure that this folder has images
|
620 |
+
$files = scandir($abspath);
|
621 |
+
array_shift($files);
|
622 |
+
array_shift($files);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
623 |
if (!empty($files)) {
|
624 |
|
625 |
// Get needed utilities
|
628 |
|
629 |
// Sometimes users try importing a directory, which actually has all images under another directory
|
630 |
$first_file_abspath = $fs->join_paths($abspath, $files[0]);
|
631 |
+
if (is_dir($first_file_abspath)) return $this->import_gallery_from_fs($first_file_abspath, $gallery_id);
|
632 |
|
633 |
// If no gallery has been specified, then use the directory name as the gallery name
|
634 |
if (!$gallery_id) {
|
636 |
$gallery = $gallery_mapper->create(array(
|
637 |
'title' => basename($abspath),
|
638 |
));
|
|
|
|
|
|
|
|
|
639 |
|
640 |
// Save the gallery
|
641 |
if ($gallery->save()) $gallery_id = $gallery->id();
|
647 |
foreach ($files as $file) {
|
648 |
if (!preg_match("/\.(jpg|jpeg|gif|png)/i", $file)) continue;
|
649 |
$file_abspath = $fs->join_paths($abspath, $file);
|
650 |
+
$image = $this->object->upload_base64_image(
|
651 |
+
$gallery_id,
|
652 |
+
file_get_contents($file_abspath),
|
653 |
+
str_replace(' ', '_', $file)
|
654 |
+
);
|
655 |
+
$retval['image_ids'][] = $image->{$image->id_field};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
656 |
}
|
657 |
|
658 |
+
|
659 |
// Add the gallery name to the result
|
660 |
$gallery = $gallery_mapper->find($gallery_id);
|
661 |
$retval['gallery_name'] = $gallery->title;
|
695 |
$result = NULL;
|
696 |
|
697 |
// Ensure we have a valid image
|
698 |
+
if ($image_path && file_exists($image_path))
|
699 |
{
|
700 |
// Ensure target directory exists, but only create 1 subdirectory
|
701 |
$image_dir = dirname($image_path);
|
1041 |
$crop_frame = isset($params['crop_frame']) ? $params['crop_frame'] : NULL;
|
1042 |
$destpath = NULL;
|
1043 |
$thumbnail = NULL;
|
|
|
|
|
|
|
|
|
|
|
1044 |
|
1045 |
$result = $this->object->calculate_image_clone_result($image_path, $clone_path, $params);
|
1046 |
|
1048 |
$settings = C_NextGen_Settings::get_instance();
|
1049 |
|
1050 |
// Ensure we have a valid image
|
1051 |
+
if ($image_path && file_exists($image_path) && $result != null && !isset($result['error']))
|
1052 |
{
|
1053 |
$image_dir = dirname($image_path);
|
1054 |
$clone_path = $result['clone_path'];
|
1058 |
$format_list = $this->object->get_image_format_list();
|
1059 |
|
1060 |
// Ensure target directory exists, but only create 1 subdirectory
|
1061 |
+
if (!file_exists($clone_dir))
|
1062 |
{
|
1063 |
if (strtolower(realpath($image_dir)) != strtolower(realpath($clone_dir)))
|
1064 |
{
|
1109 |
}
|
1110 |
|
1111 |
// We successfully generated the thumbnail
|
1112 |
+
if (is_string($destpath) && (file_exists($destpath) || $thumbnail != null))
|
1113 |
{
|
1114 |
if ($clone_format != null)
|
1115 |
{
|
1138 |
$destpath_basename = $destpath_info['filename'];
|
1139 |
$destpath_new = $destpath_dir . DIRECTORY_SEPARATOR . $destpath_basename . $clone_format_extension_str;
|
1140 |
|
1141 |
+
if ((file_exists($destpath) && rename($destpath, $destpath_new)) || $thumbnail != null)
|
1142 |
{
|
1143 |
$destpath = $destpath_new;
|
1144 |
}
|
products/photocrati_nextgen/modules/nextgen_data/class.image.php
CHANGED
@@ -21,7 +21,7 @@ class C_Image extends C_DataMapper_Model
|
|
21 |
{
|
22 |
var $_mapper_interface = 'I_Image_Mapper';
|
23 |
|
24 |
-
function define($properties=
|
25 |
{
|
26 |
parent::define($mapper, $properties, $context);
|
27 |
$this->add_mixin('Mixin_NextGen_Gallery_Image_Validation');
|
@@ -34,8 +34,7 @@ class C_Image extends C_DataMapper_Model
|
|
34 |
* @param C_DataMapper $mapper
|
35 |
* @param string $context
|
36 |
*/
|
37 |
-
function initialize($properties=
|
38 |
-
{
|
39 |
|
40 |
// Get the mapper is not specified
|
41 |
if (!$mapper) {
|
21 |
{
|
22 |
var $_mapper_interface = 'I_Image_Mapper';
|
23 |
|
24 |
+
function define($properties=FALSE, $mapper=FALSE, $context=FALSE)
|
25 |
{
|
26 |
parent::define($mapper, $properties, $context);
|
27 |
$this->add_mixin('Mixin_NextGen_Gallery_Image_Validation');
|
34 |
* @param C_DataMapper $mapper
|
35 |
* @param string $context
|
36 |
*/
|
37 |
+
function initialize($properties = FALSE, $mapper=FALSE, $context=FALSE) {
|
|
|
38 |
|
39 |
// Get the mapper is not specified
|
40 |
if (!$mapper) {
|
products/photocrati_nextgen/modules/nextgen_data/class.image_mapper.php
CHANGED
@@ -8,38 +8,27 @@ class C_Image_Mapper extends C_CustomTable_DataMapper_Driver
|
|
8 |
* Defines the gallery image mapper
|
9 |
* @param type $context
|
10 |
*/
|
11 |
-
function define($context=FALSE
|
12 |
{
|
13 |
// Add 'attachment' context
|
14 |
if (!is_array($context)) $context = array($context);
|
15 |
array_push($context, 'attachment');
|
16 |
|
17 |
-
|
18 |
-
|
19 |
parent::define('ngg_pictures', $context);
|
20 |
-
$this->add_mixin('Mixin_NextGen_Table_Extras');
|
21 |
$this->add_mixin('Mixin_Gallery_Image_Mapper');
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
$this->implement('I_Image_Mapper');
|
23 |
$this->set_model_factory_method('image');
|
24 |
-
|
25 |
-
// Define the columns
|
26 |
-
$this->define_column('pid', 'BIGINT', 0);
|
27 |
-
$this->define_column('image_slug', 'VARCHAR(255)');
|
28 |
-
$this->define_column('post_id', 'BIGINT', 0);
|
29 |
-
$this->define_column('galleryid', 'BIGINT', 0);
|
30 |
-
$this->define_column('filename', 'VARCHAR(255)');
|
31 |
-
$this->define_column('description', 'TEXT');
|
32 |
-
$this->define_column('alttext', 'TEXT');
|
33 |
-
$this->define_column('imagedate', 'DATETIME');
|
34 |
-
$this->define_column('exclude', 'INT', 0);
|
35 |
-
$this->define_column('sortorder', 'BIGINT', 0);
|
36 |
-
$this->define_column('meta_data', 'TEXT');
|
37 |
-
|
38 |
-
// Mark the columns which should be unserialized
|
39 |
-
$this->add_serialized_column('meta_data');
|
40 |
}
|
41 |
|
42 |
-
function initialize(
|
43 |
{
|
44 |
parent::initialize('ngg_pictures');
|
45 |
}
|
@@ -73,11 +62,9 @@ class Mixin_Gallery_Image_Mapper extends Mixin
|
|
73 |
$retval = $this->call_parent('_save_entity', $entity);
|
74 |
if ($retval) {
|
75 |
include_once(NGGALLERY_ABSPATH.'/admin/functions.php');
|
76 |
-
$image_id = $this->get_id($entity)
|
77 |
-
|
78 |
-
|
79 |
-
}
|
80 |
-
C_Photocrati_Cache::flush('displayed_gallery_rendering');
|
81 |
}
|
82 |
return $retval;
|
83 |
}
|
@@ -122,7 +109,7 @@ class Mixin_Gallery_Image_Mapper extends Mixin
|
|
122 |
{
|
123 |
// If not set already, we'll add an exclude property. This is used
|
124 |
// by NextGEN Gallery itself, as well as the Attach to Post module
|
125 |
-
$this->object->_set_default_value($entity, 'exclude',
|
126 |
|
127 |
// Ensure that the object has a description attribute
|
128 |
$this->object->_set_default_value($entity, 'description', '');
|
@@ -152,9 +139,18 @@ class Mixin_Gallery_Image_Mapper extends Mixin
|
|
152 |
// Ensure that the exclude parameter is an integer or boolean-evaluated
|
153 |
// value
|
154 |
if (is_string($entity->exclude)) $entity->exclude = intval($entity->exclude);
|
|
|
|
|
155 |
|
156 |
-
|
157 |
-
|
158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
}
|
160 |
}
|
8 |
* Defines the gallery image mapper
|
9 |
* @param type $context
|
10 |
*/
|
11 |
+
function define($context=FALSE)
|
12 |
{
|
13 |
// Add 'attachment' context
|
14 |
if (!is_array($context)) $context = array($context);
|
15 |
array_push($context, 'attachment');
|
16 |
|
17 |
+
$this->primary_key_column = 'pid';
|
18 |
+
|
19 |
parent::define('ngg_pictures', $context);
|
|
|
20 |
$this->add_mixin('Mixin_Gallery_Image_Mapper');
|
21 |
+
$this->add_post_hook(
|
22 |
+
'_convert_to_entity',
|
23 |
+
'Unserialize Metadata',
|
24 |
+
'Hook_Unserialize_Image_Metadata',
|
25 |
+
'unserialize_metadata'
|
26 |
+
);
|
27 |
$this->implement('I_Image_Mapper');
|
28 |
$this->set_model_factory_method('image');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
}
|
30 |
|
31 |
+
function initialize()
|
32 |
{
|
33 |
parent::initialize('ngg_pictures');
|
34 |
}
|
62 |
$retval = $this->call_parent('_save_entity', $entity);
|
63 |
if ($retval) {
|
64 |
include_once(NGGALLERY_ABSPATH.'/admin/functions.php');
|
65 |
+
$image_id = $this->get_id($entity);;
|
66 |
+
nggAdmin::import_MetaData($image_id);
|
67 |
+
C_Photocrati_Cache::flush();
|
|
|
|
|
68 |
}
|
69 |
return $retval;
|
70 |
}
|
109 |
{
|
110 |
// If not set already, we'll add an exclude property. This is used
|
111 |
// by NextGEN Gallery itself, as well as the Attach to Post module
|
112 |
+
$this->object->_set_default_value($entity, 'exclude', FALSE);
|
113 |
|
114 |
// Ensure that the object has a description attribute
|
115 |
$this->object->_set_default_value($entity, 'description', '');
|
139 |
// Ensure that the exclude parameter is an integer or boolean-evaluated
|
140 |
// value
|
141 |
if (is_string($entity->exclude)) $entity->exclude = intval($entity->exclude);
|
142 |
+
}
|
143 |
+
}
|
144 |
|
145 |
+
/**
|
146 |
+
* Unserializes the metadata when fetched from the database
|
147 |
+
*/
|
148 |
+
class Hook_Unserialize_Image_Metadata extends Hook
|
149 |
+
{
|
150 |
+
function unserialize_metadata($entity)
|
151 |
+
{
|
152 |
+
if (isset($entity->meta_data) && is_string($entity->meta_data)) {
|
153 |
+
$entity->meta_data = $this->object->unserialize($entity->meta_data);
|
154 |
+
}
|
155 |
}
|
156 |
}
|
products/photocrati_nextgen/modules/nextgen_data/class.image_wrapper.php
CHANGED
@@ -13,20 +13,19 @@ class C_Image_Wrapper
|
|
13 |
public $_orig_image_id; // original image ID
|
14 |
public $_cache_overrides; // allow for forcing variable values
|
15 |
public $_legacy = FALSE;
|
16 |
-
public $_displayed_gallery; // cached object
|
17 |
|
18 |
/**
|
19 |
* Constructor. Converts the image class into an array and fills from defaults any missing values
|
20 |
*
|
21 |
* @param object $gallery Individual result from displayed_gallery->get_entities()
|
22 |
-
* @param object $displayed_gallery Displayed gallery
|
23 |
* @param bool $legacy Whether the image source is from NextGen Legacy or NextGen
|
24 |
* @return void
|
25 |
*/
|
26 |
-
public function __construct($image, $displayed_gallery
|
27 |
{
|
28 |
// for clarity
|
29 |
-
if (
|
30 |
{
|
31 |
$columns = $displayed_gallery->display_settings['number_of_columns'];
|
32 |
}
|
@@ -83,11 +82,11 @@ class C_Image_Wrapper
|
|
83 |
|
84 |
// cache the results
|
85 |
ksort($image);
|
|
|
86 |
$id_field = (!empty($image['id_field']) ? $image['id_field'] : 'pid');
|
87 |
-
$this->_cache = (array) apply_filters('ngg_image_object', (object) $image, $image[$id_field]);
|
88 |
$this->_orig_image_id = $image[$id_field];
|
|
|
89 |
$this->_legacy = $legacy;
|
90 |
-
$this->_displayed_gallery = $displayed_gallery;
|
91 |
}
|
92 |
|
93 |
public function __set($name, $value)
|
@@ -269,18 +268,8 @@ class C_Image_Wrapper
|
|
269 |
return $this->_cache['previewpic'];
|
270 |
|
271 |
case 'size':
|
272 |
-
|
273 |
-
|
274 |
-
$this->_orig_image->meta_data
|
275 |
-
);
|
276 |
-
}
|
277 |
-
if (!isset($this->_orig_image->meta_data['thumbnail'])) {
|
278 |
-
$storage = $this->get_storage();
|
279 |
-
$storage->generate_thumbnail($this->_orig_image);
|
280 |
-
}
|
281 |
-
$w = $this->_orig_image->meta_data['thumbnail']['width'];
|
282 |
-
$h = $this->_orig_image->meta_data['thumbnail']['height'];
|
283 |
-
|
284 |
return "width='{$w}' height='{$h}'";
|
285 |
|
286 |
case 'slug':
|
@@ -408,35 +397,27 @@ class C_Image_Wrapper
|
|
408 |
*/
|
409 |
function get_thumbcode($gallery_name = '')
|
410 |
{
|
411 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
412 |
{
|
413 |
-
$
|
414 |
-
$effect_code = str_replace('%GALLERY_ID%', $gallery_name, $effect_code);
|
415 |
-
$effect_code = str_replace('%GALLERY_NAME%', $gallery_name, $effect_code);
|
416 |
-
$retval = $effect_code;
|
417 |
}
|
418 |
-
else {
|
419 |
-
$controller = C_Component_Registry::get_instance()->get_utility('I_Display_Type_Controller');
|
420 |
-
$retval = $controller->get_effect_code($this->_displayed_gallery);
|
421 |
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
|
|
|
|
|
|
426 |
}
|
427 |
|
428 |
-
|
429 |
-
|
430 |
-
// ensure some additional data- fields are added; provides Pro-Lightbox compatibility
|
431 |
-
$retval .= ' data-image-id="' . $this->__get('id') . '"';
|
432 |
-
$retval .= ' data-src="' . $this->__get('imageURL') . '"';
|
433 |
-
$retval .= ' data-thumbnail="' . $this->__get('thumbnailURL') . '"';
|
434 |
-
$retval .= ' data-image-id="' . $this->__get('pid') . '"';
|
435 |
-
$retval .= ' data-title="' . $this->__get('alttext') . '"';
|
436 |
-
$retval .= ' data-description="' . $this->__get('description') . '"';
|
437 |
-
|
438 |
-
$this->_cache['thumbcode'] = $retval;
|
439 |
-
return $retval;
|
440 |
}
|
441 |
|
442 |
/**
|
13 |
public $_orig_image_id; // original image ID
|
14 |
public $_cache_overrides; // allow for forcing variable values
|
15 |
public $_legacy = FALSE;
|
|
|
16 |
|
17 |
/**
|
18 |
* Constructor. Converts the image class into an array and fills from defaults any missing values
|
19 |
*
|
20 |
* @param object $gallery Individual result from displayed_gallery->get_entities()
|
21 |
+
* @param object $displayed_gallery Displayed gallery
|
22 |
* @param bool $legacy Whether the image source is from NextGen Legacy or NextGen
|
23 |
* @return void
|
24 |
*/
|
25 |
+
public function __construct($image, $displayed_gallery, $legacy = FALSE)
|
26 |
{
|
27 |
// for clarity
|
28 |
+
if (isset($displayed_gallery->display_settings['number_of_columns']))
|
29 |
{
|
30 |
$columns = $displayed_gallery->display_settings['number_of_columns'];
|
31 |
}
|
82 |
|
83 |
// cache the results
|
84 |
ksort($image);
|
85 |
+
$this->_cache = $image;
|
86 |
$id_field = (!empty($image['id_field']) ? $image['id_field'] : 'pid');
|
|
|
87 |
$this->_orig_image_id = $image[$id_field];
|
88 |
+
|
89 |
$this->_legacy = $legacy;
|
|
|
90 |
}
|
91 |
|
92 |
public function __set($name, $value)
|
268 |
return $this->_cache['previewpic'];
|
269 |
|
270 |
case 'size':
|
271 |
+
$w = $this->_orig_image->meta_data['thumbnail']['width'];
|
272 |
+
$h = $this->_orig_image->meta_data['thumbnail']['height'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
return "width='{$w}' height='{$h}'";
|
274 |
|
275 |
case 'slug':
|
397 |
*/
|
398 |
function get_thumbcode($gallery_name = '')
|
399 |
{
|
400 |
+
$settings = $this->get_settings();
|
401 |
+
|
402 |
+
// clean up the name
|
403 |
+
$gallery_name = sanitize_title($gallery_name);
|
404 |
+
|
405 |
+
// get the effect code
|
406 |
+
if ('none' != $settings->get('thumbEffect'))
|
407 |
{
|
408 |
+
$this->_cache['thumbcode'] = stripslashes($settings->get('thumbCode'));
|
|
|
|
|
|
|
409 |
}
|
|
|
|
|
|
|
410 |
|
411 |
+
// for highslide to a different approach
|
412 |
+
if ('highslide' == $settings->get('thumbEffect'))
|
413 |
+
{
|
414 |
+
$this->_cache['thumbcode'] = str_replace('%GALLERY_NAME%', "'{$gallery_name}'", $this->_cache['thumbcode']);
|
415 |
+
}
|
416 |
+
else {
|
417 |
+
$this->_cache['thumbcode'] = str_replace('%GALLERY_NAME%', $gallery_name, $this->_cache['thumbcode']);
|
418 |
}
|
419 |
|
420 |
+
return apply_filters('ngg_get_thumbcode', $this->_cache['thumbcode'], $this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
421 |
}
|
422 |
|
423 |
/**
|
products/photocrati_nextgen/modules/nextgen_data/class.nextgen_data_installer.php
CHANGED
@@ -1,36 +1,29 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class C_NextGen_Data_Installer
|
4 |
{
|
5 |
function get_registry()
|
6 |
{
|
7 |
return C_Component_Registry::get_instance();
|
8 |
}
|
9 |
|
10 |
-
function install()
|
11 |
-
{
|
12 |
-
}
|
13 |
-
|
14 |
function uninstall($hard = FALSE)
|
15 |
{
|
16 |
if ($hard) {
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
# $this->get_registry()->get_utility('I_Image_Mapper'),
|
23 |
-
# );
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
*/
|
34 |
}
|
35 |
}
|
36 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
class C_NextGen_Data_Installer
|
4 |
{
|
5 |
function get_registry()
|
6 |
{
|
7 |
return C_Component_Registry::get_instance();
|
8 |
}
|
9 |
|
|
|
|
|
|
|
|
|
10 |
function uninstall($hard = FALSE)
|
11 |
{
|
12 |
if ($hard) {
|
13 |
+
$mappers = array(
|
14 |
+
$this->get_registry()->get_utility('I_Album_Mapper'),
|
15 |
+
$this->get_registry()->get_utility('I_Gallery_Mapper'),
|
16 |
+
$this->get_registry()->get_utility('I_Image_Mapper'),
|
17 |
+
);
|
|
|
|
|
18 |
|
19 |
+
foreach ($mappers as $mapper) {
|
20 |
+
$mapper->delete()->run_query();
|
21 |
+
}
|
22 |
|
23 |
+
// Remove ngg tags
|
24 |
+
global $wpdb;
|
25 |
+
$wpdb->query("DELETE FROM {$wpdb->terms} WHERE term_id IN (SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='ngg_tag')");
|
26 |
+
$wpdb->query("DELETE FROM {$wpdb->term_taxonomy} WHERE taxonomy='ngg_tag'");
|
|
|
27 |
}
|
28 |
}
|
29 |
+
}
|
products/photocrati_nextgen/modules/nextgen_data/class.nextgen_metadata.php
CHANGED
@@ -35,7 +35,7 @@ class C_NextGen_Metadata extends C_Component
|
|
35 |
|
36 |
$this->file_path = $this->get_registry()->get_utility('I_Gallery_Storage')->get_image_abspath($this->image);
|
37 |
|
38 |
-
if (
|
39 |
{
|
40 |
return FALSE;
|
41 |
}
|
@@ -85,7 +85,7 @@ class C_NextGen_Metadata extends C_Component
|
|
85 |
$meta = $this->image->meta_data;
|
86 |
|
87 |
// check if we already import the meta data to the database
|
88 |
-
if (!is_array($meta) ||
|
89 |
{
|
90 |
return FALSE;
|
91 |
}
|
35 |
|
36 |
$this->file_path = $this->get_registry()->get_utility('I_Gallery_Storage')->get_image_abspath($this->image);
|
37 |
|
38 |
+
if (!file_exists($this->file_path))
|
39 |
{
|
40 |
return FALSE;
|
41 |
}
|
85 |
$meta = $this->image->meta_data;
|
86 |
|
87 |
// check if we already import the meta data to the database
|
88 |
+
if (!is_array($meta) || ($meta['saved'] != TRUE))
|
89 |
{
|
90 |
return FALSE;
|
91 |
}
|
products/photocrati_nextgen/modules/nextgen_data/class.ngglegacy_gallerystorage_driver.php
CHANGED
@@ -16,26 +16,18 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
16 |
{
|
17 |
// Base upload path
|
18 |
$retval = C_NextGen_Settings::get_instance()->gallerypath;
|
19 |
-
|
20 |
|
21 |
// If a gallery has been specified, then we'll
|
22 |
// append the slug
|
23 |
if ($gallery) {
|
24 |
-
if (
|
|
|
|
|
|
|
25 |
$gallery = $this->object->_get_gallery_id($gallery);
|
26 |
$gallery = $this->object->_gallery_mapper->find($gallery);
|
27 |
-
|
28 |
-
|
29 |
-
if ($gallery) {
|
30 |
-
$path = $gallery->path;
|
31 |
-
$base = basename($path);
|
32 |
-
$slug = $gallery->slug;
|
33 |
-
|
34 |
-
if ($base == null) {
|
35 |
-
$base = $slug;
|
36 |
-
}
|
37 |
-
|
38 |
-
$retval = $fs->join_paths($retval, $base);
|
39 |
}
|
40 |
}
|
41 |
|
@@ -142,7 +134,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
142 |
}
|
143 |
|
144 |
// Should we check whether the image actually exists?
|
145 |
-
if ($check_existance &&
|
146 |
$retval = $image_path;
|
147 |
}
|
148 |
elseif (!$check_existance) $retval = $image_path;
|
@@ -161,33 +153,16 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
161 |
* @param string $size
|
162 |
* @returns array
|
163 |
*/
|
164 |
-
function get_image_url($image, $size='full'
|
165 |
{
|
166 |
-
$
|
167 |
-
$
|
168 |
-
$
|
169 |
-
|
170 |
-
|
171 |
-
$
|
172 |
-
|
173 |
-
|
174 |
-
$doc_root = trailingslashit($doc_root);
|
175 |
-
}
|
176 |
-
|
177 |
-
$request_uri = str_replace(
|
178 |
-
$doc_root,
|
179 |
-
'',
|
180 |
-
$abspath
|
181 |
-
);
|
182 |
-
|
183 |
-
if ($request_uri != null && $request_uri[0] != '/') {
|
184 |
-
$request_uri = '/' . $request_uri;
|
185 |
-
}
|
186 |
-
|
187 |
-
$retval = $router->remove_url_segment('/index.php', $router->get_url($request_uri, FALSE, TRUE));
|
188 |
-
}
|
189 |
-
|
190 |
-
return $retval;
|
191 |
}
|
192 |
|
193 |
/**
|
@@ -406,7 +381,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
406 |
// XXX change this? 'full' should be the resized path and 'original' the _backup path
|
407 |
$backup_path = $this->object->get_backup_abspath($image);
|
408 |
|
409 |
-
if (
|
410 |
{
|
411 |
@copy($filename, $backup_path);
|
412 |
}
|
@@ -417,7 +392,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
417 |
$existing_image_dir = dirname($existing_image_abpath);
|
418 |
|
419 |
// removing the old thumbnail is actually not needed as generate_image_clone() will replace it, leaving commented in as reminder in case there are issues in the future
|
420 |
-
if (
|
421 |
//unlink($existing_image_abpath);
|
422 |
}
|
423 |
|
@@ -566,7 +541,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
566 |
if ($size)
|
567 |
{
|
568 |
$abspath = $this->object->get_image_abspath($image, $size);
|
569 |
-
if ($abspath &&
|
570 |
unlink($abspath);
|
571 |
if (isset($image->meta_data) && isset($image->meta_data[$size]))
|
572 |
{
|
@@ -591,7 +566,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
591 |
|
592 |
// Delete each image
|
593 |
foreach ($abspaths as $abspath) {
|
594 |
-
if ($abspath &&
|
595 |
{
|
596 |
unlink($abspath);
|
597 |
}
|
@@ -655,10 +630,15 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
655 |
}
|
656 |
|
657 |
foreach ($images as $image) {
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
|
|
|
|
|
|
|
|
|
|
662 |
|
663 |
// Copy the db entry
|
664 |
if (is_numeric($image))
|
@@ -699,7 +679,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
699 |
|
700 |
$prefix = '';
|
701 |
$prefix_count = 0;
|
702 |
-
while (
|
703 |
{
|
704 |
$prefix = 'copy_' . ($prefix_count++) . '_';
|
705 |
$new_path = $prefix . $new_path;
|
@@ -773,7 +753,7 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin
|
|
773 |
return ' <strong>' . esc_html($image->filename) . __(' is not writeable', 'nggallery') . '</strong>';
|
774 |
}
|
775 |
|
776 |
-
if (
|
777 |
{
|
778 |
return ' <strong>' . __('Backup file does not exist', 'nggallery') . '</strong>';
|
779 |
}
|
16 |
{
|
17 |
// Base upload path
|
18 |
$retval = C_NextGen_Settings::get_instance()->gallerypath;
|
19 |
+
$fs = $this->get_registry()->get_utility('I_Fs');
|
20 |
|
21 |
// If a gallery has been specified, then we'll
|
22 |
// append the slug
|
23 |
if ($gallery) {
|
24 |
+
if (is_object($gallery) && isset($gallery->slug)) {
|
25 |
+
$retval = $fs->join_paths($retval, $gallery->slug);
|
26 |
+
}
|
27 |
+
else {
|
28 |
$gallery = $this->object->_get_gallery_id($gallery);
|
29 |
$gallery = $this->object->_gallery_mapper->find($gallery);
|
30 |
+
if ($gallery) $retval = $fs->join_paths($retval, $gallery->slug);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
}
|
33 |
|
134 |
}
|
135 |
|
136 |
// Should we check whether the image actually exists?
|
137 |
+
if ($check_existance && file_exists($image_path)) {
|
138 |
$retval = $image_path;
|
139 |
}
|
140 |
elseif (!$check_existance) $retval = $image_path;
|
153 |
* @param string $size
|
154 |
* @returns array
|
155 |
*/
|
156 |
+
function get_image_url($image, $size='full')
|
157 |
{
|
158 |
+
$fs = $this->get_registry()->get_utility('I_Fs');
|
159 |
+
$router = $this->get_registry()->get_utility('I_Router');
|
160 |
+
$request_uri = str_replace(
|
161 |
+
trailingslashit($fs->get_document_root()),
|
162 |
+
'',
|
163 |
+
$this->object->get_image_abspath($image, $size)
|
164 |
+
);
|
165 |
+
return $router->remove_url_segment('/index.php', $router->get_url($request_uri, FALSE, TRUE));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
}
|
167 |
|
168 |
/**
|
381 |
// XXX change this? 'full' should be the resized path and 'original' the _backup path
|
382 |
$backup_path = $this->object->get_backup_abspath($image);
|
383 |
|
384 |
+
if (!file_exists($backup_path))
|
385 |
{
|
386 |
@copy($filename, $backup_path);
|
387 |
}
|
392 |
$existing_image_dir = dirname($existing_image_abpath);
|
393 |
|
394 |
// removing the old thumbnail is actually not needed as generate_image_clone() will replace it, leaving commented in as reminder in case there are issues in the future
|
395 |
+
if (file_exists($existing_image_abpath)) {
|
396 |
//unlink($existing_image_abpath);
|
397 |
}
|
398 |
|
541 |
if ($size)
|
542 |
{
|
543 |
$abspath = $this->object->get_image_abspath($image, $size);
|
544 |
+
if ($abspath && file_exists($abspath))
|
545 |
unlink($abspath);
|
546 |
if (isset($image->meta_data) && isset($image->meta_data[$size]))
|
547 |
{
|
566 |
|
567 |
// Delete each image
|
568 |
foreach ($abspaths as $abspath) {
|
569 |
+
if ($abspath && file_exists($abspath))
|
570 |
{
|
571 |
unlink($abspath);
|
572 |
}
|
630 |
}
|
631 |
|
632 |
foreach ($images as $image) {
|
633 |
+
|
634 |
+
// Ensure that there is capacity available
|
635 |
+
if ((is_multisite()) && $settings->get('wpmuQuotaCheck'))
|
636 |
+
{
|
637 |
+
if (upload_is_user_over_quota(FALSE)) {
|
638 |
+
$message .= sprintf(__('Sorry, you have used your space allocation. Please delete some files to upload more files.', 'nggallery'));
|
639 |
+
throw new E_NoSpaceAvailableException();
|
640 |
+
}
|
641 |
+
}
|
642 |
|
643 |
// Copy the db entry
|
644 |
if (is_numeric($image))
|
679 |
|
680 |
$prefix = '';
|
681 |
$prefix_count = 0;
|
682 |
+
while (file_exists($gallery->path . DIRECTORY_SEPARATOR . $new_path))
|
683 |
{
|
684 |
$prefix = 'copy_' . ($prefix_count++) . '_';
|
685 |
$new_path = $prefix . $new_path;
|
753 |
return ' <strong>' . esc_html($image->filename) . __(' is not writeable', 'nggallery') . '</strong>';
|
754 |
}
|
755 |
|
756 |
+
if (!file_exists($path . '_backup'))
|
757 |
{
|
758 |
return ' <strong>' . __('Backup file does not exist', 'nggallery') . '</strong>';
|
759 |
}
|
products/photocrati_nextgen/modules/nextgen_data/class.ngglegacy_thumbnail.php
CHANGED
@@ -117,7 +117,7 @@ class C_NggLegacy_Thumbnail {
|
|
117 |
if(!function_exists("gd_info")) {
|
118 |
echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n";
|
119 |
echo 'visit http://us2.php.net/manual/en/ref.image.php for more information';
|
120 |
-
|
121 |
}
|
122 |
//initialize variables
|
123 |
$this->errmsg = '';
|
@@ -132,7 +132,7 @@ class C_NggLegacy_Thumbnail {
|
|
132 |
$this->watermarkText = '';
|
133 |
|
134 |
//check to see if file exists
|
135 |
-
if(
|
136 |
$this->errmsg = 'File not found';
|
137 |
$this->error = true;
|
138 |
}
|
@@ -161,7 +161,7 @@ class C_NggLegacy_Thumbnail {
|
|
161 |
}
|
162 |
|
163 |
// increase memory-limit if possible, GD needs this for large images
|
164 |
-
@ini_set('memory_limit', '
|
165 |
|
166 |
if($this->error == false) {
|
167 |
// Check memory consumption if file exists
|
117 |
if(!function_exists("gd_info")) {
|
118 |
echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n";
|
119 |
echo 'visit http://us2.php.net/manual/en/ref.image.php for more information';
|
120 |
+
C_NextGEN_Bootstrap::shutdown();
|
121 |
}
|
122 |
//initialize variables
|
123 |
$this->errmsg = '';
|
132 |
$this->watermarkText = '';
|
133 |
|
134 |
//check to see if file exists
|
135 |
+
if(!file_exists($this->fileName)) {
|
136 |
$this->errmsg = 'File not found';
|
137 |
$this->error = true;
|
138 |
}
|
161 |
}
|
162 |
|
163 |
// increase memory-limit if possible, GD needs this for large images
|
164 |
+
// @ini_set('memory_limit', '128M');
|
165 |
|
166 |
if($this->error == false) {
|
167 |
// Check memory consumption if file exists
|
products/photocrati_nextgen/modules/nextgen_data/mixin.nextgen_table_extras.php
DELETED
@@ -1,195 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Mixin_NextGen_Table_Extras extends Mixin
|
4 |
-
{
|
5 |
-
const CUSTOM_POST_NAME = __CLASS__;
|
6 |
-
|
7 |
-
function initialize()
|
8 |
-
{
|
9 |
-
// Each record in a NextGEN Gallery table has an associated custom post in the wp_posts table
|
10 |
-
$this->object->_custom_post_mapper = new C_CustomPost_DataMapper_Driver($this->object->get_object_name());
|
11 |
-
$this->object->_custom_post_mapper->set_model_factory_method('extra_fields');
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Defines a column for the mapper
|
16 |
-
* @param $name
|
17 |
-
* @param $data_type
|
18 |
-
* @param null $default_value
|
19 |
-
* @param bool $extra
|
20 |
-
*/
|
21 |
-
function define_column($name, $data_type, $default_value=NULL, $extra=FALSE)
|
22 |
-
{
|
23 |
-
$this->call_parent('define_column', $name, $data_type, $default_value);
|
24 |
-
if ($extra) {
|
25 |
-
$this->object->_columns[$name]['extra'] = TRUE;
|
26 |
-
}
|
27 |
-
else $this->object->_columns[$name]['extra'] = FALSE;
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* Gets a list of all the extra columns defined for this table
|
32 |
-
* @return array
|
33 |
-
*/
|
34 |
-
function get_extra_columns()
|
35 |
-
{
|
36 |
-
$retval = array();
|
37 |
-
|
38 |
-
foreach ($this->object->_columns as $key => $properties) {
|
39 |
-
if ($properties['extra']) $retval[] = $key;
|
40 |
-
}
|
41 |
-
|
42 |
-
return $retval;
|
43 |
-
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Adds a column to the database
|
47 |
-
* @param $column_name
|
48 |
-
* @param $datatype
|
49 |
-
* @param null $default_value
|
50 |
-
*/
|
51 |
-
function _add_column($column_name, $datatype, $default_value=NULL)
|
52 |
-
{
|
53 |
-
$skip = FALSE;
|
54 |
-
if (isset($this->object->_columns[$column_name]) and $this->object->_columns[$column_name]['extra']) {
|
55 |
-
$skip = TRUE;
|
56 |
-
}
|
57 |
-
if (!$skip) $this->call_parent('_add_column', $column_name, $datatype, $default_value);
|
58 |
-
}
|
59 |
-
|
60 |
-
function create_custom_post_entity($entity)
|
61 |
-
{
|
62 |
-
$custom_post_entity = new stdClass;
|
63 |
-
|
64 |
-
// If the custom post entity already exists then it needs
|
65 |
-
// an ID
|
66 |
-
if (isset($entity->custom_post_id)) $custom_post_entity->ID = $entity->custom_post_id;
|
67 |
-
|
68 |
-
// If a property isn't a column for the table, then
|
69 |
-
// it belongs to the custom post record
|
70 |
-
foreach (get_object_vars($entity) as $key => $value) {
|
71 |
-
if (!$this->object->has_column($key)) {
|
72 |
-
unset($entity->$key);
|
73 |
-
if ($this->object->has_defined_column($key) && $key != $this->object->get_primary_key_column())
|
74 |
-
$custom_post_entity->$key = $value;
|
75 |
-
}
|
76 |
-
}
|
77 |
-
|
78 |
-
// Used to help find these type of records
|
79 |
-
$custom_post_entity->post_name = self::CUSTOM_POST_NAME;
|
80 |
-
|
81 |
-
return $custom_post_entity;
|
82 |
-
}
|
83 |
-
|
84 |
-
/**
|
85 |
-
* Gets the name of the WordPress option that holds the ID of the associated custom post ID record
|
86 |
-
* @param $entity
|
87 |
-
* @return string
|
88 |
-
*/
|
89 |
-
function _get_option_name($entity)
|
90 |
-
{
|
91 |
-
$primary_key = $this->object->get_primary_key_column();
|
92 |
-
return $this->get_table_name().'_'.$entity->$primary_key;
|
93 |
-
}
|
94 |
-
|
95 |
-
/**
|
96 |
-
* Creates a new record in the custom table, as well as a custom post record
|
97 |
-
* @param $entity
|
98 |
-
*/
|
99 |
-
function _create($entity)
|
100 |
-
{
|
101 |
-
$retval = FALSE;
|
102 |
-
$custom_post_entity = $this->create_custom_post_entity($entity);
|
103 |
-
|
104 |
-
// Try persisting the custom post type record first
|
105 |
-
if (($custom_post_id = $this->object->_custom_post_mapper->save($custom_post_entity))) {
|
106 |
-
|
107 |
-
// Try saving the custom table record. If that fails, then destroy the previously
|
108 |
-
// created custom post type record
|
109 |
-
if (!($retval = $this->call_parent('_create', $entity))) {
|
110 |
-
$this->object->_custom_post_mapper->destroy($custom_post_id);
|
111 |
-
}
|
112 |
-
|
113 |
-
// Add the custom post id property
|
114 |
-
else {
|
115 |
-
$option_name = $this->_get_option_name($entity);
|
116 |
-
update_option($option_name, $custom_post_id);
|
117 |
-
$entity->custom_post_id = $custom_post_id;
|
118 |
-
}
|
119 |
-
}
|
120 |
-
|
121 |
-
return $retval;
|
122 |
-
}
|
123 |
-
|
124 |
-
// Updates a custom table record and it's associated custom post type record in the database
|
125 |
-
function _update($entity)
|
126 |
-
{
|
127 |
-
$retval = FALSE;
|
128 |
-
$custom_post_entity = $this->create_custom_post_entity($entity);
|
129 |
-
$custom_post_id = $this->object->_custom_post_mapper->save($custom_post_entity);
|
130 |
-
$retval = $this->call_parent('_update', $entity);
|
131 |
-
$entity->custom_post_id = $custom_post_id;
|
132 |
-
update_option($this->_get_option_name($entity), $custom_post_id);
|
133 |
-
foreach ($this->get_extra_columns() as $key) {
|
134 |
-
if (isset($custom_post_entity->$key)) $entity->$key = $custom_post_entity->$key;
|
135 |
-
}
|
136 |
-
|
137 |
-
return $retval;
|
138 |
-
}
|
139 |
-
|
140 |
-
function destroy($entity)
|
141 |
-
{
|
142 |
-
if (isset($entity->custom_post_id)) {
|
143 |
-
wp_delete_post($entity->custom_post_id, TRUE);
|
144 |
-
delete_option($this->_get_option_name($entity));
|
145 |
-
}
|
146 |
-
|
147 |
-
return $this->call_parent('destroy', $entity);
|
148 |
-
}
|
149 |
-
|
150 |
-
/**
|
151 |
-
* Gets the generated query
|
152 |
-
*/
|
153 |
-
function get_generated_query()
|
154 |
-
{
|
155 |
-
// Add extras column
|
156 |
-
if ($this->object->is_select_statement()) {
|
157 |
-
global $wpdb;
|
158 |
-
$table_name = $this->object->get_table_name();
|
159 |
-
$primary_key = "{$table_name}.{$this->object->get_primary_key_column()}";
|
160 |
-
$this->object->group_by($primary_key);
|
161 |
-
$sql = $this->call_parent('get_generated_query');
|
162 |
-
$from = 'FROM `'.$this->object->get_table_name().'`';
|
163 |
-
$sql = str_replace('FROM', ", `{$wpdb->options}`.`option_value` AS 'custom_post_id', GROUP_CONCAT(CONCAT_WS('@@', meta_key, meta_value)) AS 'extras' FROM", $sql);
|
164 |
-
$sql = str_replace($from, "{$from} LEFT OUTER JOIN `{$wpdb->options}` ON `{$wpdb->options}`.option_name = CONCAT('{$table_name}_', {$primary_key}) LEFT OUTER JOIN `{$wpdb->postmeta}` ON `{$wpdb->postmeta}`.`post_id` = `{$wpdb->options}`.`option_value` ", $sql);
|
165 |
-
}
|
166 |
-
else $sql = $this->call_parent('get_generated_query');
|
167 |
-
|
168 |
-
return $sql;
|
169 |
-
}
|
170 |
-
|
171 |
-
function _convert_to_entity($entity)
|
172 |
-
{
|
173 |
-
// Add extra columns to entity
|
174 |
-
if (isset($entity->extras)) {
|
175 |
-
$extras = $entity->extras;
|
176 |
-
unset($entity->extras);
|
177 |
-
foreach (explode(',', $extras) as $extra) {
|
178 |
-
if ($extra) {
|
179 |
-
list($key, $value) = explode('@@', $extra);
|
180 |
-
if ($this->object->has_defined_column($key) && !isset($entity->key)) $entity->$key = $value;
|
181 |
-
}
|
182 |
-
}
|
183 |
-
}
|
184 |
-
|
185 |
-
// Cast custom_post_id as integer
|
186 |
-
if (isset($entity->custom_post_id)) {
|
187 |
-
$entity->custom_post_id = intval($entity->custom_post_id);
|
188 |
-
}
|
189 |
-
else $entity->custom_post_id = 0;
|
190 |
-
|
191 |
-
$retval = $this->call_parent('_convert_to_entity', $entity);
|
192 |
-
|
193 |
-
return $entity;
|
194 |
-
}
|
195 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php
CHANGED
@@ -15,7 +15,7 @@ class M_NextGen_Data extends C_Base_Module
|
|
15 |
'photocrati-nextgen-data',
|
16 |
'NextGEN Data Tier',
|
17 |
"Provides a data tier for NextGEN gallery based on the DataMapper module",
|
18 |
-
'0.
|
19 |
'http://www.photocrati.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
@@ -61,7 +61,6 @@ class M_NextGen_Data extends C_Base_Module
|
|
61 |
'C_Image_Wrapper' => 'class.image_wrapper.php',
|
62 |
'C_Image_Wrapper_Collection' => 'class.image_wrapper_collection.php',
|
63 |
'C_Nextgen_Metadata' => 'class.nextgen_metadata.php',
|
64 |
-
'Mixin_NextGen_Table_Extras' => 'mixin.nextgen_table_extras.php',
|
65 |
'C_Ngglegacy_Gallerystorage_Driver' => 'class.ngglegacy_gallerystorage_driver.php',
|
66 |
'C_Ngglegacy_Thumbnail' => 'class.ngglegacy_thumbnail.php',
|
67 |
'C_Wordpress_Gallerystorage_Driver' => 'class.wordpress_gallerystorage_driver.php',
|
@@ -81,26 +80,8 @@ class M_NextGen_Data extends C_Base_Module
|
|
81 |
|
82 |
function _register_hooks()
|
83 |
{
|
84 |
-
add_action('init', array(&$this, 'register_custom_post_types'));
|
85 |
add_filter('posts_orderby', array($this, 'wp_query_order_by'), 10, 2);
|
86 |
}
|
87 |
-
|
88 |
-
function register_custom_post_types()
|
89 |
-
{
|
90 |
-
$types = array(
|
91 |
-
'ngg_album' => 'NextGEN Gallery - Album',
|
92 |
-
'ngg_gallery' => 'NexTGEN Gallery - Gallery',
|
93 |
-
'ngg_pictures' => 'NextGEN Gallery - Image',
|
94 |
-
);
|
95 |
-
|
96 |
-
foreach ($types as $type => $label) {
|
97 |
-
register_post_type($type, array(
|
98 |
-
'label' => $label,
|
99 |
-
'publicly_queryable' => FALSE,
|
100 |
-
'exclude_from_search' => TRUE,
|
101 |
-
));
|
102 |
-
}
|
103 |
-
}
|
104 |
|
105 |
function wp_query_order_by($order_by, $wp_query)
|
106 |
{
|
15 |
'photocrati-nextgen-data',
|
16 |
'NextGEN Data Tier',
|
17 |
"Provides a data tier for NextGEN gallery based on the DataMapper module",
|
18 |
+
'0.1',
|
19 |
'http://www.photocrati.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
61 |
'C_Image_Wrapper' => 'class.image_wrapper.php',
|
62 |
'C_Image_Wrapper_Collection' => 'class.image_wrapper_collection.php',
|
63 |
'C_Nextgen_Metadata' => 'class.nextgen_metadata.php',
|
|
|
64 |
'C_Ngglegacy_Gallerystorage_Driver' => 'class.ngglegacy_gallerystorage_driver.php',
|
65 |
'C_Ngglegacy_Thumbnail' => 'class.ngglegacy_thumbnail.php',
|
66 |
'C_Wordpress_Gallerystorage_Driver' => 'class.wordpress_gallerystorage_driver.php',
|
80 |
|
81 |
function _register_hooks()
|
82 |
{
|
|
|
83 |
add_filter('posts_orderby', array($this, 'wp_query_order_by'), 10, 2);
|
84 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
function wp_query_order_by($order_by, $wp_query)
|
87 |
{
|
products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.displayed_gallery_related_element.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class A_Displayed_Gallery_Related_Element extends Mixin
|
4 |
+
{
|
5 |
+
function initialize()
|
6 |
+
{
|
7 |
+
$this->object->add_post_hook(
|
8 |
+
'render_object',
|
9 |
+
'Renders "related" link for the gallery',
|
10 |
+
get_class(),
|
11 |
+
'render_related'
|
12 |
+
);
|
13 |
+
}
|
14 |
+
|
15 |
+
function _check_rendering($displayed_gallery, $template_id, $root_element)
|
16 |
+
{
|
17 |
+
$ret = $this->object->_check_addition_rendering($displayed_gallery, $template_id, $root_element, 'layout');
|
18 |
+
|
19 |
+
switch ($template_id)
|
20 |
+
{
|
21 |
+
case 'photocrati-nextgen_basic_album#compact':
|
22 |
+
case 'photocrati-nextgen_basic_album#extended':
|
23 |
+
case 'photocrati-nextgen_basic_tagcloud#nextgen_basic_tagcloud':
|
24 |
+
{
|
25 |
+
$ret = false;
|
26 |
+
|
27 |
+
break;
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
return $ret;
|
32 |
+
}
|
33 |
+
|
34 |
+
function render_related()
|
35 |
+
{
|
36 |
+
if (!C_NextGen_Settings::get_instance()->get('activateTags')) return;
|
37 |
+
|
38 |
+
$root_element = $this->object->get_method_property(
|
39 |
+
$this->method_called,
|
40 |
+
ExtensibleObject::METHOD_PROPERTY_RETURN_VALUE
|
41 |
+
);
|
42 |
+
|
43 |
+
$displayed_type = $this->object->get_param('display_type_rendering');
|
44 |
+
$displayed_gallery = $this->object->get_param('displayed_gallery');
|
45 |
+
$template_id = $root_element->get_id();
|
46 |
+
|
47 |
+
if (!$this->object->_check_rendering($displayed_gallery, $template_id, $root_element))
|
48 |
+
return;
|
49 |
+
|
50 |
+
if ($displayed_type && $displayed_gallery != null)
|
51 |
+
{
|
52 |
+
$list = $root_element->find('nextgen_gallery.gallery_container', TRUE);
|
53 |
+
foreach ($list as $container_element) {
|
54 |
+
$container_element->append($this->object->render_related_string());
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
return $root_element;
|
59 |
+
}
|
60 |
+
|
61 |
+
function render_related_string()
|
62 |
+
{
|
63 |
+
$settings = C_NextGen_Settings::get_instance();
|
64 |
+
$type = $settings->appendType;
|
65 |
+
$maxImages = $settings->maxImages;
|
66 |
+
$sluglist = array();
|
67 |
+
|
68 |
+
switch ($type) {
|
69 |
+
case 'tags':
|
70 |
+
if (function_exists('get_the_tags'))
|
71 |
+
{
|
72 |
+
$taglist = get_the_tags();
|
73 |
+
if (is_array($taglist)) {
|
74 |
+
foreach ($taglist as $tag) {
|
75 |
+
$sluglist[] = $tag->slug;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
break;
|
80 |
+
case 'category':
|
81 |
+
$catlist = get_the_category();
|
82 |
+
if (is_array($catlist))
|
83 |
+
{
|
84 |
+
foreach ($catlist as $cat) {
|
85 |
+
$sluglist[] = $cat->category_nicename;
|
86 |
+
}
|
87 |
+
}
|
88 |
+
break;
|
89 |
+
}
|
90 |
+
|
91 |
+
$taglist = implode(',', $sluglist);
|
92 |
+
|
93 |
+
if ($taglist === 'uncategorized' || empty($taglist))
|
94 |
+
return;
|
95 |
+
|
96 |
+
$renderer = C_Component_Registry::get_instance()->get_utility('I_Displayed_Gallery_Renderer');
|
97 |
+
$view = C_Component_Registry::get_instance()->get_utility('I_Component_Factory')
|
98 |
+
->create('mvc_view', '');
|
99 |
+
$retval = $renderer->display_images(array(
|
100 |
+
'source' => 'tags',
|
101 |
+
'container_ids' => $taglist,
|
102 |
+
'display_type' => NEXTGEN_GALLERY_BASIC_THUMBNAILS,
|
103 |
+
'images_per_page' => $maxImages,
|
104 |
+
'maximum_entity_count' => $maxImages,
|
105 |
+
'template' => $view->get_template_abspath('photocrati-nextgen_gallery_display#related'),
|
106 |
+
'show_all_in_lightbox' => FALSE,
|
107 |
+
'show_slideshow_link' => FALSE,
|
108 |
+
'disable_pagination' => TRUE
|
109 |
+
));
|
110 |
+
|
111 |
+
return apply_filters('ngg_show_related_gallery_content', $retval, $taglist);
|
112 |
+
}
|
113 |
+
|
114 |
+
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.gallery_display_ajax.php
DELETED
@@ -1,24 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class A_Gallery_Display_Ajax extends Mixin
|
4 |
-
{
|
5 |
-
function render_displayed_gallery_action()
|
6 |
-
{
|
7 |
-
$retval = array();
|
8 |
-
|
9 |
-
if (isset($_POST['ajax_referrer'])) {
|
10 |
-
$_SERVER['REQUEST_URI'] = $_POST['ajax_referrer'];
|
11 |
-
C_Router::get_instance()->serve_request();
|
12 |
-
}
|
13 |
-
|
14 |
-
if (isset($_POST['displayed_gallery_id'])) {
|
15 |
-
$displayed_gallery = new C_Displayed_Gallery();
|
16 |
-
$displayed_gallery->apply_transient($_POST['displayed_gallery_id']);
|
17 |
-
$renderer = C_Displayed_Gallery_Renderer::get_instance();
|
18 |
-
$retval['html'] = $renderer->render($displayed_gallery, TRUE);
|
19 |
-
}
|
20 |
-
|
21 |
-
return $retval;
|
22 |
-
}
|
23 |
-
}
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_gallery_display/adapter.gallery_display_factory.php
CHANGED
@@ -8,9 +8,9 @@ class A_Gallery_Display_Factory extends Mixin
|
|
8 |
* @param array|stdClass|C_DataMapper_Model $properties
|
9 |
* @param string|array|FALSE $context
|
10 |
*/
|
11 |
-
function display_type($properties=array(), $
|
12 |
{
|
13 |
-
return new C_Display_Type($
|
14 |
}
|
15 |
|
16 |
/**
|
@@ -19,9 +19,9 @@ class A_Gallery_Display_Factory extends Mixin
|
|
19 |
* @param array|stdClass|C_DataMapper_Model $properties
|
20 |
* @param string|array|FALSE $context
|
21 |
*/
|
22 |
-
function displayed_gallery($properties=array(), $
|
23 |
{
|
24 |
-
return new C_Displayed_Gallery($
|
25 |
}
|
26 |
|
27 |
/**
|
@@ -31,8 +31,8 @@ class A_Gallery_Display_Factory extends Mixin
|
|
31 |
* @param string|array|FALSE $context
|
32 |
* @return C_Displayed_Gallery_Source
|
33 |
*/
|
34 |
-
function displayed_gallery_source($properties=array(), $
|
35 |
{
|
36 |
-
return new C_Displayed_Gallery_Source($
|
37 |
}
|
38 |
}
|
8 |
* @param array|stdClass|C_DataMapper_Model $properties
|
9 |
* @param string|array|FALSE $context
|
10 |
*/
|
11 |
+
function display_type($mapper=FALSE, $properties=array(), $context=FALSE)
|
12 |
{
|
13 |
+
return new C_Display_Type($mapper, $properties, $context);
|
14 |
}
|
15 |
|
16 |
/**
|
19 |
* @param array|stdClass|C_DataMapper_Model $properties
|
20 |
* @param string|array|FALSE $context
|
21 |
*/
|
22 |
+
function displayed_gallery($mapper=FALSE, $properties=array(), $context=FALSE)
|
23 |
{
|
24 |
+
return new C_Displayed_Gallery($mapper, $properties, $context);
|
25 |
}
|
26 |
|
27 |
/**
|
31 |
* @param string|array|FALSE $context
|
32 |
* @return C_Displayed_Gallery_Source
|
33 |
*/
|
34 |
+
function displayed_gallery_source($mapper=FALSE, $properties=array(), $context=FALSE)
|
35 |
{
|
36 |
+
return new C_Displayed_Gallery_Source($mapper, $properties, $context);
|
37 |
}
|
38 |
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.display_type.php
CHANGED
@@ -13,7 +13,7 @@ class C_Display_Type extends C_DataMapper_Model
|
|
13 |
{
|
14 |
var $_mapper_interface = 'I_Display_Type_Mapper';
|
15 |
|
16 |
-
function define($
|
17 |
{
|
18 |
parent::define($mapper, $properties, $context);
|
19 |
$this->add_mixin('Mixin_Display_Type_Validation');
|
@@ -27,7 +27,7 @@ class C_Display_Type extends C_DataMapper_Model
|
|
27 |
* @param array|stdClass|C_Display_Type $properties
|
28 |
* @param FALSE|string|array $context
|
29 |
*/
|
30 |
-
function initialize($
|
31 |
{
|
32 |
// If no mapper was specified, then get the mapper
|
33 |
if (!$mapper) $mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
13 |
{
|
14 |
var $_mapper_interface = 'I_Display_Type_Mapper';
|
15 |
|
16 |
+
function define($mapper, $properties, $context=FALSE)
|
17 |
{
|
18 |
parent::define($mapper, $properties, $context);
|
19 |
$this->add_mixin('Mixin_Display_Type_Validation');
|
27 |
* @param array|stdClass|C_Display_Type $properties
|
28 |
* @param FALSE|string|array $context
|
29 |
*/
|
30 |
+
function initialize($mapper=FALSE, $properties=array())
|
31 |
{
|
32 |
// If no mapper was specified, then get the mapper
|
33 |
if (!$mapper) $mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.display_type_controller.php
CHANGED
@@ -7,7 +7,6 @@
|
|
7 |
class C_Display_Type_Controller extends C_MVC_Controller
|
8 |
{
|
9 |
static $_instances = array();
|
10 |
-
var $cachable = TRUE;
|
11 |
|
12 |
function define($context=FALSE)
|
13 |
{
|
@@ -70,16 +69,15 @@ class Mixin_Display_Type_Controller extends Mixin
|
|
70 |
$settings = C_NextGen_Settings::get_instance();
|
71 |
$mapper = $this->object->get_registry()->get_utility('I_Lightbox_Library_Mapper');
|
72 |
$library = $mapper->find_by_name($settings->thumbEffect);
|
73 |
-
$thumbEffectContext = isset($settings->thumbEffectContext) ? $settings->thumbEffectContext : '';
|
74 |
|
75 |
// Make the path to the static resources available for libraries
|
76 |
// Shutter-Reloaded in particular depends on this
|
77 |
$this->object->_add_script_data(
|
78 |
'ngg_common',
|
79 |
'nextgen_lightbox_settings',
|
80 |
-
array('static_path' => $this->object->get_static_relpath('', '
|
81 |
TRUE,
|
82 |
-
|
83 |
);
|
84 |
|
85 |
{
|
@@ -245,7 +243,7 @@ class Mixin_Display_Type_Controller extends Mixin
|
|
245 |
|
246 |
// Get the associated data with this script
|
247 |
$script = &$wp_scripts->registered[$handle];
|
248 |
-
$data =
|
249 |
|
250 |
// Construct the addition
|
251 |
$addition = $define ? "\nvar {$object_name} = " . json_encode($object_value) . ';' :
|
@@ -262,8 +260,6 @@ class Mixin_Display_Type_Controller extends Mixin
|
|
262 |
}
|
263 |
|
264 |
$script->extra['data'] = $data;
|
265 |
-
|
266 |
-
unset($script);
|
267 |
}
|
268 |
|
269 |
return $retval;
|
7 |
class C_Display_Type_Controller extends C_MVC_Controller
|
8 |
{
|
9 |
static $_instances = array();
|
|
|
10 |
|
11 |
function define($context=FALSE)
|
12 |
{
|
69 |
$settings = C_NextGen_Settings::get_instance();
|
70 |
$mapper = $this->object->get_registry()->get_utility('I_Lightbox_Library_Mapper');
|
71 |
$library = $mapper->find_by_name($settings->thumbEffect);
|
|
|
72 |
|
73 |
// Make the path to the static resources available for libraries
|
74 |
// Shutter-Reloaded in particular depends on this
|
75 |
$this->object->_add_script_data(
|
76 |
'ngg_common',
|
77 |
'nextgen_lightbox_settings',
|
78 |
+
array('static_path' => $this->object->get_static_relpath('', 'lightbox')),
|
79 |
TRUE,
|
80 |
+
FALSE
|
81 |
);
|
82 |
|
83 |
{
|
243 |
|
244 |
// Get the associated data with this script
|
245 |
$script = &$wp_scripts->registered[$handle];
|
246 |
+
$data = &$script->extra['data'];
|
247 |
|
248 |
// Construct the addition
|
249 |
$addition = $define ? "\nvar {$object_name} = " . json_encode($object_value) . ';' :
|
260 |
}
|
261 |
|
262 |
$script->extra['data'] = $data;
|
|
|
|
|
263 |
}
|
264 |
|
265 |
return $retval;
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.display_type_mapper.php
CHANGED
@@ -7,19 +7,12 @@ class C_Display_Type_Mapper extends C_CustomPost_DataMapper_Driver
|
|
7 |
{
|
8 |
public static $_instances = array();
|
9 |
|
10 |
-
function define($context=FALSE
|
11 |
{
|
12 |
-
$
|
13 |
-
|
14 |
-
// Add the object name to the context of the object as well
|
15 |
-
// This allows us to adapt the driver itself, if required
|
16 |
-
if (!is_array($context)) $context = array($context);
|
17 |
-
array_push($context, $object_name);
|
18 |
-
parent::define($object_name, $context);
|
19 |
-
|
20 |
$this->add_mixin('Mixin_Display_Type_Mapper');
|
21 |
$this->implement('I_Display_Type_Mapper');
|
22 |
-
$this->set_model_factory_method(
|
23 |
}
|
24 |
|
25 |
function initialize($context=FALSE)
|
@@ -75,7 +68,7 @@ class Mixin_Display_Type_Mapper extends Mixin
|
|
75 |
$retval = NULL;
|
76 |
foreach ($this->object->find_all($model) as $display_type) {
|
77 |
foreach ($find_entity_types as $entity_type) {
|
78 |
-
if (
|
79 |
$retval[] = $display_type;
|
80 |
break;
|
81 |
}
|
7 |
{
|
8 |
public static $_instances = array();
|
9 |
|
10 |
+
function define($context=FALSE)
|
11 |
{
|
12 |
+
parent::define(NULL, array($context, 'display_type'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
$this->add_mixin('Mixin_Display_Type_Mapper');
|
14 |
$this->implement('I_Display_Type_Mapper');
|
15 |
+
$this->set_model_factory_method('display_type');
|
16 |
}
|
17 |
|
18 |
function initialize($context=FALSE)
|
68 |
$retval = NULL;
|
69 |
foreach ($this->object->find_all($model) as $display_type) {
|
70 |
foreach ($find_entity_types as $entity_type) {
|
71 |
+
if (in_array($entity_type, $display_type->entity_types)) {
|
72 |
$retval[] = $display_type;
|
73 |
break;
|
74 |
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery.php
CHANGED
@@ -17,7 +17,7 @@ class C_Displayed_Gallery extends C_DataMapper_Model
|
|
17 |
{
|
18 |
var $_mapper_interface = 'I_Displayed_Gallery_Mapper';
|
19 |
|
20 |
-
function define($
|
21 |
{
|
22 |
parent::define($mapper, $properties, $context);
|
23 |
$this->add_mixin('Mixin_Displayed_Gallery_Validation');
|
@@ -33,12 +33,10 @@ class C_Displayed_Gallery extends C_DataMapper_Model
|
|
33 |
* @param array|stdClass|C_Displayed_Gallery $properties
|
34 |
* @param FALSE|string|array $context
|
35 |
*/
|
36 |
-
function initialize($
|
37 |
{
|
38 |
if (!$mapper) $mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
39 |
parent::initialize($mapper, $properties);
|
40 |
-
|
41 |
-
$this->select_random_variation();
|
42 |
}
|
43 |
}
|
44 |
|
@@ -78,7 +76,7 @@ class Mixin_Displayed_Gallery_Validation extends Mixin
|
|
78 |
|
79 |
// If no maximum_entity_count has been given, then set a maximum
|
80 |
if (!isset($this->object->maximum_entity_count)) {
|
81 |
-
$this->object->maximum_entity_count =
|
82 |
}
|
83 |
|
84 |
}
|
@@ -92,28 +90,6 @@ class Mixin_Displayed_Gallery_Validation extends Mixin
|
|
92 |
|
93 |
class Mixin_Displayed_Gallery_Queries extends Mixin
|
94 |
{
|
95 |
-
function select_random_variation()
|
96 |
-
{
|
97 |
-
$retval = FALSE;
|
98 |
-
|
99 |
-
$source_obj = $this->object->get_source();
|
100 |
-
if ($source_obj && $source_obj->has_variations) {
|
101 |
-
$max = 0;
|
102 |
-
if (!defined('NGG_MAX_VARIATIONS')) {
|
103 |
-
$settings = C_Photocrati_Global_Settings_Manager::get_instance();
|
104 |
-
$max = $settings->get('max_variations', 5);
|
105 |
-
define('NGG_MAX_VARIATIONS', $max);
|
106 |
-
}
|
107 |
-
else $max = NGG_MAX_VARIATIONS;
|
108 |
-
|
109 |
-
$this->object->variation = floor(rand(1, $max));
|
110 |
-
|
111 |
-
$retval = $this->object->variation;
|
112 |
-
}
|
113 |
-
|
114 |
-
return $retval;
|
115 |
-
}
|
116 |
-
|
117 |
function get_entities($limit=FALSE, $offset=FALSE, $id_only=FALSE, $returns='included')
|
118 |
{
|
119 |
$retval = array();
|
@@ -158,7 +134,7 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
158 |
// Find a way to minimalize or segment
|
159 |
$mapper = $this->get_registry()->get_utility('I_Image_Mapper');
|
160 |
$image_key = $mapper->get_primary_key_column();
|
161 |
-
$select = $id_only ? $image_key :
|
162 |
$sort_direction = $this->object->order_direction;
|
163 |
$sort_by = $this->object->order_by;
|
164 |
|
@@ -192,14 +168,13 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
192 |
$select,
|
193 |
$image_key,
|
194 |
$sortorder_set,
|
195 |
-
'
|
196 |
TRUE
|
197 |
);
|
198 |
// A user might want to sort the results by the order of
|
199 |
// images that they specified to be included. For that,
|
200 |
// we need some trickery by reversing the order direction
|
201 |
$sort_direction = $this->object->order_direction == 'ASC' ? 'DESC' : 'ASC';
|
202 |
-
$sort_by = 'new_sortorder';
|
203 |
}
|
204 |
|
205 |
// Add exclude column
|
@@ -229,11 +204,10 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
229 |
$select,
|
230 |
$image_key,
|
231 |
$this->object->sortorder,
|
232 |
-
'
|
233 |
TRUE
|
234 |
);
|
235 |
$sort_direction = $this->object->order_direction == 'ASC' ? 'DESC' : 'ASC';
|
236 |
-
$sort_by = 'new_sortorder';
|
237 |
}
|
238 |
$mapper->select($select);
|
239 |
|
@@ -265,11 +239,10 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
265 |
$select,
|
266 |
$image_key,
|
267 |
$this->object->sortorder,
|
268 |
-
'
|
269 |
TRUE
|
270 |
);
|
271 |
$sort_direction = $this->object->order_direction == 'ASC' ? 'DESC' : 'ASC';
|
272 |
-
$sort_by = 'new_sortorder';
|
273 |
}
|
274 |
|
275 |
// Mark each result as excluded
|
@@ -308,7 +281,9 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
308 |
// Container ids are tags
|
309 |
if ($source_obj->name == 'tags') {
|
310 |
$term_ids = $this->object->get_term_ids_for_tags($this->object->container_ids);
|
311 |
-
|
|
|
|
|
312 |
}
|
313 |
|
314 |
// Container ids are gallery ids
|
@@ -317,21 +292,6 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
317 |
}
|
318 |
}
|
319 |
|
320 |
-
// Filter based on excluded container ids
|
321 |
-
if ($this->object->excluded_container_ids) {
|
322 |
-
|
323 |
-
// Container ids are tags
|
324 |
-
if ($source_obj->name == 'tags') {
|
325 |
-
$term_ids = $this->object->get_term_ids_for_tags($this->object->excluded_container_ids);
|
326 |
-
$mapper->where(array("{$image_key} NOT IN %s",get_objects_in_term($term_ids, 'ngg_tag')));
|
327 |
-
}
|
328 |
-
|
329 |
-
// Container ids are gallery ids
|
330 |
-
else {
|
331 |
-
$mapper->where(array("galleryid NOT IN %s", $this->object->excluded_container_ids));
|
332 |
-
}
|
333 |
-
}
|
334 |
-
|
335 |
// Adjust the query more based on what source was selected
|
336 |
if ($this->object->source == 'recent_images') {
|
337 |
$sort_direction = 'DESC';
|
@@ -344,7 +304,7 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
344 |
}
|
345 |
|
346 |
// Apply a sorting order
|
347 |
-
if ($sort_by)
|
348 |
|
349 |
// Apply a limit
|
350 |
if ($limit) {
|
@@ -352,9 +312,7 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
352 |
else $mapper->limit($limit);
|
353 |
}
|
354 |
|
355 |
-
|
356 |
-
|
357 |
-
return $results;
|
358 |
}
|
359 |
|
360 |
/**
|
@@ -376,7 +334,7 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
376 |
$album_key = $album_mapper->get_primary_key_column();
|
377 |
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper');
|
378 |
$gallery_key = $gallery_mapper->get_primary_key_column();
|
379 |
-
$select = $id_only ? $album_key.", sortorder" :
|
380 |
$retval = array();
|
381 |
|
382 |
// If no exclusions are specified, are entity_ids are specified,
|
@@ -395,27 +353,20 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
395 |
// Start the query
|
396 |
$album_mapper->select($select);
|
397 |
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
}
|
413 |
-
}
|
414 |
-
else if ($container_ids === array('0') || $container_ids === array('')) {
|
415 |
-
foreach ($gallery_mapper->select($gallery_key)->run_query() as $gallery) {
|
416 |
-
$entity_ids[] = $gallery->$gallery_key;
|
417 |
-
}
|
418 |
-
}
|
419 |
}
|
420 |
|
421 |
// Break the list of entities into two groups, included entities
|
@@ -431,8 +382,8 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
431 |
// always take precedence
|
432 |
$included_ids = $this->object->entity_ids;
|
433 |
foreach ($this->object->exclusions as $excluded_id) {
|
434 |
-
if (($index = array_search($excluded_id, $
|
435 |
-
unset($
|
436 |
}
|
437 |
}
|
438 |
$excluded_ids = array_diff($entity_ids, $included_ids);
|
@@ -510,8 +461,8 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
510 |
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper');
|
511 |
$image_mapper = $this->object->get_registry()->get_utility('I_Image_Mapper');
|
512 |
$gallery_key = $gallery_mapper->get_primary_key_column();
|
513 |
-
$album_select = ($id_only ? $album_key :
|
514 |
-
$gallery_select = ($id_only ? $gallery_key :
|
515 |
|
516 |
// Modify the sort order of the entities
|
517 |
if ($this->object->sortorder) {
|
@@ -607,7 +558,7 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
607 |
unset($counts[$id]);
|
608 |
}
|
609 |
}
|
610 |
-
|
611 |
$retval[] = $gallery;
|
612 |
}
|
613 |
}
|
@@ -752,30 +703,23 @@ class Mixin_Displayed_Gallery_Queries extends Mixin
|
|
752 |
{
|
753 |
global $wpdb;
|
754 |
|
|
|
|
|
|
|
|
|
755 |
// If no tags were provided, get them from the container_ids
|
756 |
if (!$tags) $tags = $this->object->container_ids;
|
757 |
|
758 |
// Convert container ids to a string suitable for WHERE IN
|
759 |
$container_ids = array();
|
760 |
-
|
761 |
-
|
762 |
-
$container_ids[]= "'{$container}'";
|
763 |
-
}
|
764 |
-
$container_ids = implode(',', $container_ids);
|
765 |
}
|
766 |
-
|
767 |
-
// Construct query
|
768 |
-
$query = "SELECT {$wpdb->term_taxonomy}.term_id FROM {$wpdb->term_taxonomy}
|
769 |
-
INNER JOIN {$wpdb->terms} ON {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id
|
770 |
-
WHERE {$wpdb->term_taxonomy}.term_id = {$wpdb->terms}.term_id
|
771 |
-
AND {$wpdb->term_taxonomy}.taxonomy = %s";
|
772 |
-
if (!empty($container_ids))
|
773 |
-
$query .= " AND ({$wpdb->terms}.slug IN ({$container_ids}) OR {$wpdb->terms}.name IN ({$container_ids}))";
|
774 |
-
$query .= " ORDER BY {$wpdb->terms}.term_id";
|
775 |
-
$query = $wpdb->prepare($query, 'ngg_tag');
|
776 |
|
777 |
// Get all term_ids for each image tag slug
|
778 |
$term_ids = array();
|
|
|
779 |
foreach ($wpdb->get_results($query) as $row) {
|
780 |
$term_ids[] = $row->term_id;
|
781 |
}
|
@@ -846,13 +790,9 @@ class Mixin_Displayed_Gallery_Instance_Methods extends Mixin
|
|
846 |
*/
|
847 |
function get_source()
|
848 |
{
|
849 |
-
$retval = NULL;
|
850 |
$sources = $this->object->_get_source_map();
|
851 |
-
|
852 |
-
|
853 |
-
$retval = $mapper->find_by_name($sources[$this->object->source], TRUE);
|
854 |
-
}
|
855 |
-
|
856 |
return $retval;
|
857 |
}
|
858 |
|
@@ -903,14 +843,32 @@ class Mixin_Displayed_Gallery_Instance_Methods extends Mixin
|
|
903 |
*/
|
904 |
function to_transient()
|
905 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
906 |
$group = 'displayed_galleries';
|
907 |
$key = C_Photocrati_Cache::generate_key($this->object->get_entity(), $group);
|
908 |
-
|
909 |
-
C_Photocrati_Cache::set($key, $this->object->get_entity(), $group, 1800);
|
910 |
-
}
|
911 |
-
|
912 |
-
$this->object->transient_id = $key;
|
913 |
-
if (!$this->object->id()) $this->object->id($key);
|
914 |
|
915 |
return $key;
|
916 |
}
|
@@ -920,19 +878,9 @@ class Mixin_Displayed_Gallery_Instance_Methods extends Mixin
|
|
920 |
* Applies the values of a transient to this object
|
921 |
* @param string $transient_id
|
922 |
*/
|
923 |
-
function apply_transient($transient_id
|
924 |
{
|
925 |
-
$
|
926 |
-
|
927 |
-
if (!$transient_id && isset($this->object->transient_id)) $transient_id = $this->object->transient_id;
|
928 |
-
|
929 |
-
if ($transient_id && ($transient = C_Photocrati_Cache::get($transient_id, FALSE, 'displayed_galleries'))) {
|
930 |
$this->object->_stdObject = $transient;
|
931 |
-
$this->object->transient_id = $transient_id;
|
932 |
-
if (!$this->object->id()) $this->object->id($transient_id);
|
933 |
-
$retval = TRUE;
|
934 |
-
}
|
935 |
-
|
936 |
-
return $retval;
|
937 |
}
|
938 |
}
|
17 |
{
|
18 |
var $_mapper_interface = 'I_Displayed_Gallery_Mapper';
|
19 |
|
20 |
+
function define($mapper=FALSE, $properties=FALSE, $context=FALSE)
|
21 |
{
|
22 |
parent::define($mapper, $properties, $context);
|
23 |
$this->add_mixin('Mixin_Displayed_Gallery_Validation');
|
33 |
* @param array|stdClass|C_Displayed_Gallery $properties
|
34 |
* @param FALSE|string|array $context
|
35 |
*/
|
36 |
+
function initialize($mapper=FALSE, $properties=array())
|
37 |
{
|
38 |
if (!$mapper) $mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
39 |
parent::initialize($mapper, $properties);
|
|
|
|
|
40 |
}
|
41 |
}
|
42 |
|
76 |
|
77 |
// If no maximum_entity_count has been given, then set a maximum
|
78 |
if (!isset($this->object->maximum_entity_count)) {
|
79 |
+
$this->object->maximum_entity_count = C_Photocrati_Global_Settings_Manager::get('maximum_entity_count', 500);
|
80 |
}
|
81 |
|
82 |
}
|
90 |
|
91 |
class Mixin_Displayed_Gallery_Queries extends Mixin
|
92 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
function get_entities($limit=FALSE, $offset=FALSE, $id_only=FALSE, $returns='included')
|
94 |
{
|
95 |
$retval = array();
|
134 |
// Find a way to minimalize or segment
|
135 |
$mapper = $this->get_registry()->get_utility('I_Image_Mapper');
|
136 |
$image_key = $mapper->get_primary_key_column();
|
137 |
+
$select = $id_only ? $image_key : '*';
|
138 |
$sort_direction = $this->object->order_direction;
|
139 |
$sort_by = $this->object->order_by;
|
140 |
|
168 |
$select,
|
169 |
$image_key,
|
170 |
$sortorder_set,
|
171 |
+
'sortorder',
|
172 |
TRUE
|
173 |
);
|
174 |
// A user might want to sort the results by the order of
|
175 |
// images that they specified to be included. For that,
|
176 |
// we need some trickery by reversing the order direction
|
177 |
$sort_direction = $this->object->order_direction == 'ASC' ? 'DESC' : 'ASC';
|
|
|
178 |
}
|
179 |
|
180 |
// Add exclude column
|
204 |
$select,
|
205 |
$image_key,
|
206 |
$this->object->sortorder,
|
207 |
+
'sortorder',
|
208 |
TRUE
|
209 |
);
|
210 |
$sort_direction = $this->object->order_direction == 'ASC' ? 'DESC' : 'ASC';
|
|
|
211 |
}
|
212 |
$mapper->select($select);
|
213 |
|
239 |
$select,
|
240 |
$image_key,
|
241 |
$this->object->sortorder,
|
242 |
+
'sortorder',
|
243 |
TRUE
|
244 |
);
|
245 |
$sort_direction = $this->object->order_direction == 'ASC' ? 'DESC' : 'ASC';
|
|
|
246 |
}
|
247 |
|
248 |
// Mark each result as excluded
|
281 |
// Container ids are tags
|
282 |
if ($source_obj->name == 'tags') {
|
283 |
$term_ids = $this->object->get_term_ids_for_tags($this->object->container_ids);
|
284 |
+
if ($term_ids) {
|
285 |
+
$mapper->where(array("{$image_key} IN %s",get_objects_in_term($term_ids, 'ngg_tag')));
|
286 |
+
}
|
287 |
}
|
288 |
|
289 |
// Container ids are gallery ids
|
292 |
}
|
293 |
}
|
294 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
// Adjust the query more based on what source was selected
|
296 |
if ($this->object->source == 'recent_images') {
|
297 |
$sort_direction = 'DESC';
|
304 |
}
|
305 |
|
306 |
// Apply a sorting order
|
307 |
+
if ($sort_by) $mapper->order_by($sort_by, $sort_direction);
|
308 |
|
309 |
// Apply a limit
|
310 |
if ($limit) {
|
312 |
else $mapper->limit($limit);
|
313 |
}
|
314 |
|
315 |
+
return $mapper->run_query();
|
|
|
|
|
316 |
}
|
317 |
|
318 |
/**
|
334 |
$album_key = $album_mapper->get_primary_key_column();
|
335 |
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper');
|
336 |
$gallery_key = $gallery_mapper->get_primary_key_column();
|
337 |
+
$select = $id_only ? $album_key.", sortorder" : '*';
|
338 |
$retval = array();
|
339 |
|
340 |
// If no exclusions are specified, are entity_ids are specified,
|
353 |
// Start the query
|
354 |
$album_mapper->select($select);
|
355 |
|
356 |
+
// Filter by container ids
|
357 |
+
if ($this->object->container_ids) {
|
358 |
+
$album_mapper->where(
|
359 |
+
array("{$album_key} IN %s", $this->object->container_ids)
|
360 |
+
);
|
361 |
+
}
|
362 |
+
|
363 |
+
// Fetch the albums, and find the entity ids of the sub-albums
|
364 |
+
// and galleries
|
365 |
+
$entity_ids = array();
|
366 |
+
$included_ids = array();
|
367 |
+
$excluded_ids = array();
|
368 |
+
foreach ($album_mapper->run_query() as $album) {
|
369 |
+
$entity_ids = array_merge($entity_ids, (array) $album->sortorder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
}
|
371 |
|
372 |
// Break the list of entities into two groups, included entities
|
382 |
// always take precedence
|
383 |
$included_ids = $this->object->entity_ids;
|
384 |
foreach ($this->object->exclusions as $excluded_id) {
|
385 |
+
if (($index = array_search($excluded_id, $included_entity_ids)) !== FALSE) {
|
386 |
+
unset($included_entity_ids[$index]);
|
387 |
}
|
388 |
}
|
389 |
$excluded_ids = array_diff($entity_ids, $included_ids);
|
461 |
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper');
|
462 |
$image_mapper = $this->object->get_registry()->get_utility('I_Image_Mapper');
|
463 |
$gallery_key = $gallery_mapper->get_primary_key_column();
|
464 |
+
$album_select = ($id_only ? $album_key : '*').", 1 AS is_album, 0 AS is_gallery, name AS title, albumdesc AS galdesc";
|
465 |
+
$gallery_select = ($id_only ? $gallery_key : '*').", 1 AS is_gallery, 0 AS is_album";
|
466 |
|
467 |
// Modify the sort order of the entities
|
468 |
if ($this->object->sortorder) {
|
558 |
unset($counts[$id]);
|
559 |
}
|
560 |
}
|
561 |
+
|
562 |
$retval[] = $gallery;
|
563 |
}
|
564 |
}
|
703 |
{
|
704 |
global $wpdb;
|
705 |
|
706 |
+
// don't run for galleries without a container-id, like the tagcloud
|
707 |
+
if (!$tags && empty($this->object->container_ids))
|
708 |
+
return array();
|
709 |
+
|
710 |
// If no tags were provided, get them from the container_ids
|
711 |
if (!$tags) $tags = $this->object->container_ids;
|
712 |
|
713 |
// Convert container ids to a string suitable for WHERE IN
|
714 |
$container_ids = array();
|
715 |
+
foreach ($tags as $container) {
|
716 |
+
$container_ids[]= "'{$container}'";
|
|
|
|
|
|
|
717 |
}
|
718 |
+
$container_ids = implode(',', $container_ids);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
719 |
|
720 |
// Get all term_ids for each image tag slug
|
721 |
$term_ids = array();
|
722 |
+
$query = $wpdb->prepare("SELECT term_id FROM $wpdb->terms WHERE slug IN ({$container_ids}) ORDER BY term_id ASC ", NULL);
|
723 |
foreach ($wpdb->get_results($query) as $row) {
|
724 |
$term_ids[] = $row->term_id;
|
725 |
}
|
790 |
*/
|
791 |
function get_source()
|
792 |
{
|
|
|
793 |
$sources = $this->object->_get_source_map();
|
794 |
+
$mapper = $this->get_registry()->get_utility('I_Displayed_Gallery_Source_Mapper');
|
795 |
+
$retval = $mapper->find_by_name($sources[$this->object->source], TRUE);
|
|
|
|
|
|
|
796 |
return $retval;
|
797 |
}
|
798 |
|
843 |
*/
|
844 |
function to_transient()
|
845 |
{
|
846 |
+
// TODO: put this someplace more appropriate
|
847 |
+
// If the source is random do a separate image id lookup and fill those values into the gallery entity_ids
|
848 |
+
// This is necessary for compat w/Pro Lightbox so it can retrieve (through it's iframe request) the same images
|
849 |
+
// the viewer was previously looking at.
|
850 |
+
if (in_array($this->object->source, array('random', 'random_images')) && empty($this->object->entity_ids))
|
851 |
+
{
|
852 |
+
global $wpdb;
|
853 |
+
|
854 |
+
$image_ids = array();
|
855 |
+
$limit = (!empty($this->object->display_settings['images_per_page']) ? $this->object->display_settings['images_per_page'] : $this->object->maximum_entity_count);
|
856 |
+
|
857 |
+
$sql = "SELECT `pid` FROM `{$wpdb->nggpictures}` WHERE `exclude` = 0";
|
858 |
+
if (!empty($this->object->exclusions))
|
859 |
+
$sql .= sprintf(" AND `pid` NOT IN (%s)", implode(',', $this->object->exclusions));
|
860 |
+
$sql .= " ORDER BY RAND() LIMIT {$limit}";
|
861 |
+
|
862 |
+
foreach ($wpdb->get_results($sql, ARRAY_N) as $res) {
|
863 |
+
$image_ids[] = reset($res);
|
864 |
+
}
|
865 |
+
|
866 |
+
$this->object->entity_ids = $image_ids;
|
867 |
+
}
|
868 |
+
|
869 |
$group = 'displayed_galleries';
|
870 |
$key = C_Photocrati_Cache::generate_key($this->object->get_entity(), $group);
|
871 |
+
C_Photocrati_Cache::set($key, $this->object->get_entity(), $group);
|
|
|
|
|
|
|
|
|
|
|
872 |
|
873 |
return $key;
|
874 |
}
|
878 |
* Applies the values of a transient to this object
|
879 |
* @param string $transient_id
|
880 |
*/
|
881 |
+
function apply_transient($transient_id)
|
882 |
{
|
883 |
+
if (($transient = C_Photocrati_Cache::get($transient_id, 'displayed_galleries')))
|
|
|
|
|
|
|
|
|
884 |
$this->object->_stdObject = $transient;
|
|
|
|
|
|
|
|
|
|
|
|
|
885 |
}
|
886 |
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_mapper.php
CHANGED
@@ -4,9 +4,9 @@ class C_Displayed_Gallery_Mapper extends C_CustomPost_DataMapper_Driver
|
|
4 |
{
|
5 |
static $_instances = array();
|
6 |
|
7 |
-
function define($context=FALSE
|
8 |
{
|
9 |
-
parent::define(
|
10 |
$this->add_mixin('Mixin_Displayed_Gallery_Defaults');
|
11 |
$this->implement('I_Displayed_Gallery_Mapper');
|
12 |
$this->set_model_factory_method('displayed_gallery');
|
@@ -90,7 +90,6 @@ class Mixin_Displayed_Gallery_Defaults extends Mixin
|
|
90 |
|
91 |
// Ensure other properties exist
|
92 |
$this->object->_set_default_value($entity, 'container_ids', array());
|
93 |
-
$this->object->_set_default_value($entity, 'excluded_container_ids', array());
|
94 |
$this->object->_seT_default_value($entity, 'sortorder', array());
|
95 |
$this->object->_set_default_value($entity, 'entity_ids', array());
|
96 |
$this->object->_set_default_value($entity, 'returns', 'included');
|
4 |
{
|
5 |
static $_instances = array();
|
6 |
|
7 |
+
function define($context=FALSE)
|
8 |
{
|
9 |
+
parent::define(NULL, array($context, 'display_gallery'));
|
10 |
$this->add_mixin('Mixin_Displayed_Gallery_Defaults');
|
11 |
$this->implement('I_Displayed_Gallery_Mapper');
|
12 |
$this->set_model_factory_method('displayed_gallery');
|
90 |
|
91 |
// Ensure other properties exist
|
92 |
$this->object->_set_default_value($entity, 'container_ids', array());
|
|
|
93 |
$this->object->_seT_default_value($entity, 'sortorder', array());
|
94 |
$this->object->_set_default_value($entity, 'entity_ids', array());
|
95 |
$this->object->_set_default_value($entity, 'returns', 'included');
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_renderer.php
CHANGED
@@ -95,7 +95,7 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
95 |
|
96 |
// Configure the arguments
|
97 |
$defaults = array(
|
98 |
-
|
99 |
'source' => '',
|
100 |
'container_ids' => array(),
|
101 |
'gallery_ids' => array(),
|
@@ -142,7 +142,7 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
142 |
}
|
143 |
|
144 |
// Albums ?
|
145 |
-
elseif ($args['album_ids']
|
146 |
$args['source'] = 'albums';
|
147 |
$args['container_ids'] = $args['album_ids'];
|
148 |
unset($args['albums_ids']);
|
@@ -186,7 +186,7 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
186 |
|
187 |
// Create the displayed gallery
|
188 |
$factory = $this->get_registry()->get_utility('I_Component_Factory');
|
189 |
-
$displayed_gallery = $factory->create('displayed_gallery', $
|
190 |
|
191 |
unset($factory);
|
192 |
}
|
@@ -198,15 +198,11 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
198 |
// Set a temporary id
|
199 |
$displayed_gallery->id($displayed_gallery->to_transient());
|
200 |
|
|
|
201 |
// Display!
|
202 |
return $this->object->render($displayed_gallery, TRUE, $mode);
|
203 |
}
|
204 |
-
else
|
205 |
-
if (C_NextGEN_Bootstrap::$debug)
|
206 |
-
$retval = "Invalid Displayed Gallery" . var_dump($displayed_gallery->get_errors());
|
207 |
-
else
|
208 |
-
$retval = "Gallery not found. Please <strong>check your settings</strong>.";
|
209 |
-
}
|
210 |
}
|
211 |
else {
|
212 |
$retval = "Invalid Displayed Gallery";
|
@@ -214,26 +210,6 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
214 |
return $retval;
|
215 |
}
|
216 |
|
217 |
-
function debug_msg($msg, $print_r=FALSE)
|
218 |
-
{
|
219 |
-
$retval = '';
|
220 |
-
|
221 |
-
if (C_NextGEN_Bootstrap::$debug) {
|
222 |
-
ob_start();
|
223 |
-
if ($print_r) {
|
224 |
-
echo '<pre>';
|
225 |
-
print_r($msg);
|
226 |
-
echo '</pre>';
|
227 |
-
}
|
228 |
-
else
|
229 |
-
var_dump($msg);
|
230 |
-
|
231 |
-
$retval = ob_get_clean();
|
232 |
-
}
|
233 |
-
|
234 |
-
return $retval;
|
235 |
-
}
|
236 |
-
|
237 |
|
238 |
/**
|
239 |
* Renders a displayed gallery on the frontend
|
@@ -241,58 +217,37 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
241 |
*/
|
242 |
function render($displayed_gallery, $return=FALSE, $mode = null)
|
243 |
{
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
//
|
250 |
-
|
251 |
-
return '';
|
252 |
-
|
253 |
-
if ($mode == null)
|
254 |
-
{
|
255 |
-
$mode = 'normal';
|
256 |
-
}
|
257 |
-
|
258 |
-
// Save the displayed gallery as a transient if it hasn't already. Allows for ajax operations
|
259 |
-
// to add or modify the gallery without losing a retrievable ID
|
260 |
-
if (!$displayed_gallery->apply_transient()) {
|
261 |
-
$displayed_gallery->to_transient();
|
262 |
-
}
|
263 |
|
264 |
// Get the display type controller
|
265 |
$controller = $this->get_registry()->get_utility(
|
266 |
'I_Display_Type_Controller', $displayed_gallery->display_type
|
267 |
);
|
268 |
|
|
|
|
|
|
|
269 |
// Get routing info
|
270 |
$router = $url = C_Router::get_instance();
|
271 |
$url = $router->get_url($router->get_request_uri(), TRUE);
|
272 |
|
273 |
// Should we lookup in cache?
|
274 |
-
|
|
|
|
|
275 |
elseif ($displayed_gallery->source == 'albums' && ($controller->param('gallery')) OR $controller->param('album')) $lookup = FALSE;
|
276 |
-
elseif (
|
277 |
-
elseif ($controller->cachable === FALSE) $lookup = FALSE;
|
278 |
-
|
279 |
-
// Enqueue any necessary static resources
|
280 |
-
$controller->enqueue_frontend_resources($displayed_gallery);
|
281 |
|
282 |
// Try cache lookup, if we're to do so
|
283 |
$key = null;
|
284 |
$html = FALSE;
|
285 |
if ($lookup) {
|
286 |
-
|
287 |
-
// The display type may need to output some things
|
288 |
-
// even when serving from the cache
|
289 |
-
if ($controller->has_method('cache_action')) {
|
290 |
-
$retval = $controller->cache_action($displayed_gallery);
|
291 |
-
}
|
292 |
-
|
293 |
-
// Output debug message
|
294 |
-
$retval .= $this->debug_msg("Lookup!");
|
295 |
-
|
296 |
// Some settings affect display types
|
297 |
$settings = C_NextGen_Settings::get_instance();
|
298 |
$key_params = apply_filters('ngg_displayed_gallery_cache_params', array(
|
@@ -309,43 +264,27 @@ class Mixin_Displayed_Gallery_Renderer extends Mixin
|
|
309 |
));
|
310 |
|
311 |
// Try getting the rendered HTML from the cache
|
312 |
-
$key
|
313 |
-
$html =
|
314 |
-
|
315 |
-
// Output debug messages
|
316 |
-
if ($html) $retval .= $this->debug_msg("HIT!");
|
317 |
-
else $retval .= $this->debug_msg("MISS!");
|
318 |
-
|
319 |
|
320 |
// TODO: This is hack. We need to figure out a more uniform way of detecting dynamic image urls
|
321 |
-
if (strpos($html, C_Photocrati_Settings_Manager::get_instance()->dynamic_thumbnail_slug
|
322 |
$html = FALSE; // forces the cache to be re-generated
|
323 |
}
|
324 |
}
|
325 |
-
else $retval .= $this->debug_msg("Not looking up in cache as per rules");
|
326 |
-
|
327 |
-
// If we're displaying a variant, I want to know it
|
328 |
-
if (isset($displayed_gallery->variation) && is_numeric($displayed_gallery->variation) && $displayed_gallery->variation > 0) {
|
329 |
-
$retval .= $this->debug_msg("Using variation #{$displayed_gallery->variation}!");
|
330 |
-
}
|
331 |
|
332 |
// If a cached version doesn't exist, then create the cache
|
333 |
if (!$html) {
|
334 |
-
|
335 |
-
$retval .= $this->debug_msg("Rendering displayed gallery");
|
336 |
-
|
337 |
$current_mode = $controller->get_render_mode();
|
338 |
$controller->set_render_mode($mode);
|
339 |
$html = $controller->index_action($displayed_gallery, TRUE);
|
340 |
-
if ($key != null)
|
|
|
341 |
$controller->set_render_mode($current_mode);
|
342 |
}
|
343 |
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
if (!$return) echo $retval;
|
348 |
|
349 |
-
return $
|
350 |
}
|
351 |
}
|
95 |
|
96 |
// Configure the arguments
|
97 |
$defaults = array(
|
98 |
+
'id' => NULL,
|
99 |
'source' => '',
|
100 |
'container_ids' => array(),
|
101 |
'gallery_ids' => array(),
|
142 |
}
|
143 |
|
144 |
// Albums ?
|
145 |
+
elseif ($args['album_ids']) {
|
146 |
$args['source'] = 'albums';
|
147 |
$args['container_ids'] = $args['album_ids'];
|
148 |
unset($args['albums_ids']);
|
186 |
|
187 |
// Create the displayed gallery
|
188 |
$factory = $this->get_registry()->get_utility('I_Component_Factory');
|
189 |
+
$displayed_gallery = $factory->create('displayed_gallery', $mapper, $args);
|
190 |
|
191 |
unset($factory);
|
192 |
}
|
198 |
// Set a temporary id
|
199 |
$displayed_gallery->id($displayed_gallery->to_transient());
|
200 |
|
201 |
+
|
202 |
// Display!
|
203 |
return $this->object->render($displayed_gallery, TRUE, $mode);
|
204 |
}
|
205 |
+
else $retval = "Invalid Displayed Gallery".var_dump($displayed_gallery->get_errors());
|
|
|
|
|
|
|
|
|
|
|
206 |
}
|
207 |
else {
|
208 |
$retval = "Invalid Displayed Gallery";
|
210 |
return $retval;
|
211 |
}
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
|
214 |
/**
|
215 |
* Renders a displayed gallery on the frontend
|
217 |
*/
|
218 |
function render($displayed_gallery, $return=FALSE, $mode = null)
|
219 |
{
|
220 |
+
if ($mode == null)
|
221 |
+
{
|
222 |
+
$mode = 'normal';
|
223 |
+
}
|
224 |
+
|
225 |
+
// Save the displayed gallery as a transient
|
226 |
+
$displayed_gallery->transient_id = $displayed_gallery->to_transient();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
|
228 |
// Get the display type controller
|
229 |
$controller = $this->get_registry()->get_utility(
|
230 |
'I_Display_Type_Controller', $displayed_gallery->display_type
|
231 |
);
|
232 |
|
233 |
+
// Enqueue any necessary static resources
|
234 |
+
$controller->enqueue_frontend_resources($displayed_gallery);
|
235 |
+
|
236 |
// Get routing info
|
237 |
$router = $url = C_Router::get_instance();
|
238 |
$url = $router->get_url($router->get_request_uri(), TRUE);
|
239 |
|
240 |
// Should we lookup in cache?
|
241 |
+
$lookup = TRUE;
|
242 |
+
if ($displayed_gallery->source == 'random_images') $lookup = FALSE;
|
243 |
+
elseif (is_array($displayed_gallery->container_ids) && in_array('All', $displayed_gallery->container_ids)) $lookup = FALSE;
|
244 |
elseif ($displayed_gallery->source == 'albums' && ($controller->param('gallery')) OR $controller->param('album')) $lookup = FALSE;
|
245 |
+
elseif (!$controller->cachable) $lookup = FALSE;
|
|
|
|
|
|
|
|
|
246 |
|
247 |
// Try cache lookup, if we're to do so
|
248 |
$key = null;
|
249 |
$html = FALSE;
|
250 |
if ($lookup) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
251 |
// Some settings affect display types
|
252 |
$settings = C_NextGen_Settings::get_instance();
|
253 |
$key_params = apply_filters('ngg_displayed_gallery_cache_params', array(
|
264 |
));
|
265 |
|
266 |
// Try getting the rendered HTML from the cache
|
267 |
+
$key = C_Photocrati_Cache::generate_key($key_params);
|
268 |
+
$html = C_Photocrati_Cache::get($key, FALSE);
|
|
|
|
|
|
|
|
|
|
|
269 |
|
270 |
// TODO: This is hack. We need to figure out a more uniform way of detecting dynamic image urls
|
271 |
+
if (strpos($html, C_Photocrati_Settings_Manager::get_instance()->dynamic_thumbnail_slug) !== FALSE) {
|
272 |
$html = FALSE; // forces the cache to be re-generated
|
273 |
}
|
274 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
|
276 |
// If a cached version doesn't exist, then create the cache
|
277 |
if (!$html) {
|
|
|
|
|
|
|
278 |
$current_mode = $controller->get_render_mode();
|
279 |
$controller->set_render_mode($mode);
|
280 |
$html = $controller->index_action($displayed_gallery, TRUE);
|
281 |
+
if ($key != null)
|
282 |
+
C_Photocrati_Cache::set($key, $html);
|
283 |
$controller->set_render_mode($current_mode);
|
284 |
}
|
285 |
|
286 |
+
if (!$return) echo $html;
|
|
|
|
|
|
|
287 |
|
288 |
+
return $html;
|
289 |
}
|
290 |
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_source.php
CHANGED
@@ -9,7 +9,7 @@ class C_Displayed_Gallery_Source extends C_DataMapper_Model
|
|
9 |
{
|
10 |
var $_mapper_interface = 'I_Displayed_Gallery_Source_Mapper';
|
11 |
|
12 |
-
function define($
|
13 |
{
|
14 |
parent::define($mapper, $properties, $context);
|
15 |
$this->add_mixin('Mixin_Displayed_Gallery_Source');
|
@@ -22,7 +22,7 @@ class C_Displayed_Gallery_Source extends C_DataMapper_Model
|
|
22 |
* @param type $mapper
|
23 |
* @param type $properties
|
24 |
*/
|
25 |
-
function initialize($
|
26 |
{
|
27 |
// If no mapper was specified, then get the mapper
|
28 |
if (!$mapper) $mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
9 |
{
|
10 |
var $_mapper_interface = 'I_Displayed_Gallery_Source_Mapper';
|
11 |
|
12 |
+
function define($mapper, $properties, $context=FALSE)
|
13 |
{
|
14 |
parent::define($mapper, $properties, $context);
|
15 |
$this->add_mixin('Mixin_Displayed_Gallery_Source');
|
22 |
* @param type $mapper
|
23 |
* @param type $properties
|
24 |
*/
|
25 |
+
function initialize($mapper=FALSE, $properties=array())
|
26 |
{
|
27 |
// If no mapper was specified, then get the mapper
|
28 |
if (!$mapper) $mapper = $this->get_registry()->get_utility($this->_mapper_interface);
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.displayed_gallery_source_mapper.php
CHANGED
@@ -25,7 +25,7 @@ class C_Displayed_Gallery_Source_Mapper extends C_CustomPost_DataMapper_Driver
|
|
25 |
* Define the mapper
|
26 |
* @param string|array|bool $context
|
27 |
*/
|
28 |
-
function define($context=FALSE
|
29 |
{
|
30 |
$object_name = 'gal_display_source';
|
31 |
|
@@ -35,7 +35,7 @@ class C_Displayed_Gallery_Source_Mapper extends C_CustomPost_DataMapper_Driver
|
|
35 |
array_push($context, $object_name);
|
36 |
|
37 |
// Define the driver
|
38 |
-
parent::define(
|
39 |
|
40 |
// Add the mixin of instance methods
|
41 |
$this->add_mixin('Mixin_Displayed_Gallery_Source_Mapper');
|
@@ -85,7 +85,5 @@ class Mixin_Displayed_Gallery_Source_Mapper extends Mixin
|
|
85 |
function set_defaults($entity)
|
86 |
{
|
87 |
if (!isset($entity->aliases)) $entity->aliases = array();
|
88 |
-
$this->object->_set_default_value($entity, 'has_variations', FALSE);
|
89 |
-
$this->object->_set_default_value($entity, 'variation', 0);
|
90 |
}
|
91 |
}
|
25 |
* Define the mapper
|
26 |
* @param string|array|bool $context
|
27 |
*/
|
28 |
+
function define($context=FALSE)
|
29 |
{
|
30 |
$object_name = 'gal_display_source';
|
31 |
|
35 |
array_push($context, $object_name);
|
36 |
|
37 |
// Define the driver
|
38 |
+
parent::define(NULL, $context);
|
39 |
|
40 |
// Add the mixin of instance methods
|
41 |
$this->add_mixin('Mixin_Displayed_Gallery_Source_Mapper');
|
85 |
function set_defaults($entity)
|
86 |
{
|
87 |
if (!isset($entity->aliases)) $entity->aliases = array();
|
|
|
|
|
88 |
}
|
89 |
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/class.gallery_display_installer.php
CHANGED
@@ -94,8 +94,7 @@ class C_Gallery_Display_Installer
|
|
94 |
$this->install_displayed_gallery_source('random_images', array(
|
95 |
'title' => 'Random Images',
|
96 |
'returns' => array('image'),
|
97 |
-
'aliases' => array('random', 'random_image')
|
98 |
-
'has_variations' => TRUE
|
99 |
));
|
100 |
|
101 |
$this->install_displayed_gallery_source('recent_images', array(
|
@@ -122,14 +121,11 @@ class C_Gallery_Display_Installer
|
|
122 |
// Flush displayed gallery cache
|
123 |
C_Photocrati_Cache::flush();
|
124 |
C_Photocrati_Cache::flush('displayed_galleries');
|
125 |
-
C_Photocrati_Cache::flush('displayed_gallery_rendering');
|
126 |
|
127 |
$this->uninstall_display_types();
|
128 |
$this->uninstall_displayed_gallery_sources();
|
129 |
-
|
130 |
-
// TODO temporary Don't remove galleries on uninstall
|
131 |
-
//if ($hard) $this->uninstall_displayed_galleries();
|
132 |
}
|
133 |
|
134 |
|
135 |
-
}
|
94 |
$this->install_displayed_gallery_source('random_images', array(
|
95 |
'title' => 'Random Images',
|
96 |
'returns' => array('image'),
|
97 |
+
'aliases' => array('random', 'random_image')
|
|
|
98 |
));
|
99 |
|
100 |
$this->install_displayed_gallery_source('recent_images', array(
|
121 |
// Flush displayed gallery cache
|
122 |
C_Photocrati_Cache::flush();
|
123 |
C_Photocrati_Cache::flush('displayed_galleries');
|
|
|
124 |
|
125 |
$this->uninstall_display_types();
|
126 |
$this->uninstall_displayed_gallery_sources();
|
127 |
+
if ($hard) $this->uninstall_displayed_galleries();
|
|
|
|
|
128 |
}
|
129 |
|
130 |
|
131 |
+
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php
CHANGED
@@ -19,7 +19,7 @@ class M_Gallery_Display extends C_Base_Module
|
|
19 |
'photocrati-nextgen_gallery_display',
|
20 |
'Gallery Display',
|
21 |
'Provides the ability to display gallery of images',
|
22 |
-
'0.
|
23 |
'http://www.photocrati.com',
|
24 |
'Photocrati Media',
|
25 |
'http://www.photocrati.com'
|
@@ -82,19 +82,13 @@ class M_Gallery_Display extends C_Base_Module
|
|
82 |
'I_Component_Factory', 'A_Gallery_Display_Factory'
|
83 |
);
|
84 |
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
'A_Display_Settings_Page'
|
89 |
-
);
|
90 |
-
}
|
91 |
-
|
92 |
-
$this->_get_registry()->add_adapter(
|
93 |
-
'I_Ajax_Controller',
|
94 |
-
'A_Gallery_Display_Ajax'
|
95 |
);
|
96 |
|
97 |
$this->get_registry()->add_adapter('I_MVC_View', 'A_Gallery_Display_View');
|
|
|
98 |
}
|
99 |
|
100 |
/**
|
@@ -103,111 +97,9 @@ class M_Gallery_Display extends C_Base_Module
|
|
103 |
function _register_hooks()
|
104 |
{
|
105 |
// Add a shortcode for displaying galleries
|
106 |
-
|
107 |
add_action('init', array(&$this, '_register_resources'));
|
108 |
add_action('admin_bar_menu', array(&$this, 'add_admin_bar_menu'), 100);
|
109 |
-
add_filter('the_content', array($this, '_render_related_images'));
|
110 |
-
add_action('wp_enqueue_scripts', array(&$this, 'no_resources_mode'), PHP_INT_MAX-1);
|
111 |
-
add_filter('run_ngg_resource_manager', array(&$this, 'no_resources_mode'));
|
112 |
-
}
|
113 |
-
|
114 |
-
|
115 |
-
function no_resources_mode($valid_request=TRUE)
|
116 |
-
{
|
117 |
-
if (isset($_REQUEST['ngg_no_resources'])) {
|
118 |
-
global $wp_scripts, $wp_styles;
|
119 |
-
|
120 |
-
// Don't enqueue any stylesheets
|
121 |
-
if ($wp_scripts)
|
122 |
-
$wp_scripts->queue = $wp_styles->queue = array();
|
123 |
-
|
124 |
-
// Don't do any actions that we don't have to
|
125 |
-
// remove_all_actions('wp_loaded');
|
126 |
-
// remove_all_actions('get_header');
|
127 |
-
// remove_all_actions('wp_head');
|
128 |
-
// remove_all_actions('get_search_form');
|
129 |
-
// remove_all_actions('loop_end');
|
130 |
-
// remove_all_actions('pre_get_comments');
|
131 |
-
// remove_all_actions('wp_meta');
|
132 |
-
// remove_all_actions('get_footer');
|
133 |
-
// remove_all_actions('wp_footer');
|
134 |
-
// remove_all_actions('wp_print_footer_scripts');
|
135 |
-
|
136 |
-
// Don't run the resource manager
|
137 |
-
$valid_request = FALSE;
|
138 |
-
}
|
139 |
-
|
140 |
-
return $valid_request;
|
141 |
-
}
|
142 |
-
|
143 |
-
function _render_related_string()
|
144 |
-
{
|
145 |
-
$settings = C_NextGen_Settings::get_instance();
|
146 |
-
$type = $settings->appendType;
|
147 |
-
$maxImages = $settings->maxImages;
|
148 |
-
$sluglist = array();
|
149 |
-
|
150 |
-
switch ($type) {
|
151 |
-
case 'tags':
|
152 |
-
if (function_exists('get_the_tags'))
|
153 |
-
{
|
154 |
-
$taglist = get_the_tags();
|
155 |
-
if (is_array($taglist)) {
|
156 |
-
foreach ($taglist as $tag) {
|
157 |
-
$sluglist[] = $tag->slug;
|
158 |
-
}
|
159 |
-
}
|
160 |
-
}
|
161 |
-
break;
|
162 |
-
case 'category':
|
163 |
-
$catlist = get_the_category();
|
164 |
-
if (is_array($catlist))
|
165 |
-
{
|
166 |
-
foreach ($catlist as $cat) {
|
167 |
-
$sluglist[] = $cat->category_nicename;
|
168 |
-
}
|
169 |
-
}
|
170 |
-
break;
|
171 |
-
}
|
172 |
-
|
173 |
-
$taglist = implode(',', $sluglist);
|
174 |
-
|
175 |
-
if ($taglist === 'uncategorized' || empty($taglist))
|
176 |
-
return;
|
177 |
-
|
178 |
-
$renderer = C_Component_Registry::get_instance()->get_utility('I_Displayed_Gallery_Renderer');
|
179 |
-
$view = C_Component_Registry::get_instance()->get_utility('I_Component_Factory')
|
180 |
-
->create('mvc_view', '');
|
181 |
-
$retval = $renderer->display_images(array(
|
182 |
-
'source' => 'tags',
|
183 |
-
'container_ids' => $taglist,
|
184 |
-
'display_type' => NEXTGEN_GALLERY_BASIC_THUMBNAILS,
|
185 |
-
'images_per_page' => $maxImages,
|
186 |
-
'maximum_entity_count' => $maxImages,
|
187 |
-
'template' => $view->get_template_abspath('photocrati-nextgen_gallery_display#related'),
|
188 |
-
'show_all_in_lightbox' => FALSE,
|
189 |
-
'show_slideshow_link' => FALSE,
|
190 |
-
'disable_pagination' => TRUE,
|
191 |
-
'display_no_images_error' => FALSE
|
192 |
-
));
|
193 |
-
|
194 |
-
return apply_filters('ngg_show_related_gallery_content', $retval, $taglist);
|
195 |
-
}
|
196 |
-
|
197 |
-
function _render_related_images($content)
|
198 |
-
{
|
199 |
-
$settings = C_NextGen_Settings::get_instance();
|
200 |
-
|
201 |
-
if ($settings->get('activateTags')) {
|
202 |
-
$related = $this->_render_related_string();
|
203 |
-
|
204 |
-
if ($related != null) {
|
205 |
-
$heading = $settings->relatedHeading;
|
206 |
-
$content .= $heading . $related;
|
207 |
-
}
|
208 |
-
}
|
209 |
-
|
210 |
-
return $content;
|
211 |
}
|
212 |
|
213 |
/**
|
@@ -232,21 +124,7 @@ class M_Gallery_Display extends C_Base_Module
|
|
232 |
*/
|
233 |
function _register_resources()
|
234 |
{
|
235 |
-
|
236 |
-
$types = array(
|
237 |
-
'displayed_gallery' => 'NextGEN Gallery - Displayed Gallery',
|
238 |
-
'display_type' => 'NextGEN Gallery - Display Type',
|
239 |
-
'gal_display_source' => 'NextGEN Gallery - Displayed Gallery Source'
|
240 |
-
);
|
241 |
-
foreach ($types as $type => $label) {
|
242 |
-
register_post_type($type, array(
|
243 |
-
'label' => $label,
|
244 |
-
'publicly_queryable' => FALSE,
|
245 |
-
'exclude_from_search' => TRUE,
|
246 |
-
));
|
247 |
-
}
|
248 |
-
|
249 |
-
$router = $this->get_registry()->get_utility('I_Router');
|
250 |
|
251 |
wp_register_script(
|
252 |
'nextgen_gallery_display_settings',
|
@@ -259,12 +137,6 @@ class M_Gallery_Display extends C_Base_Module
|
|
259 |
$router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_display_settings.css')
|
260 |
);
|
261 |
|
262 |
-
wp_register_style(
|
263 |
-
'nextgen_gallery_related_images',
|
264 |
-
$router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_related_images.css')
|
265 |
-
);
|
266 |
-
wp_enqueue_style('nextgen_gallery_related_images');
|
267 |
-
|
268 |
wp_register_script(
|
269 |
'jquery.nextgen_radio_toggle',
|
270 |
$router->get_static_url('photocrati-nextgen_gallery_display#jquery.nextgen_radio_toggle.js'),
|
@@ -318,31 +190,31 @@ class M_Gallery_Display extends C_Base_Module
|
|
318 |
function get_type_list()
|
319 |
{
|
320 |
return array(
|
321 |
-
'A_Gallery_Display_Ajax' => 'adapter.gallery_display_ajax.php',
|
322 |
'A_Display_Settings_Controller' => 'adapter.display_settings_controller.php',
|
323 |
-
'A_Display_Settings_Page'
|
324 |
-
'
|
325 |
-
'
|
326 |
-
'
|
327 |
-
'
|
328 |
-
'
|
329 |
-
'
|
330 |
-
'
|
|
|
331 |
'C_Displayed_Gallery_Source_Mapper' => 'class.displayed_gallery_source_mapper.php',
|
332 |
-
'C_Display_Type'
|
333 |
-
'C_Display_Type_Controller'
|
334 |
-
'C_Display_Type_Mapper'
|
335 |
'Hook_Propagate_Thumbnail_Dimensions_To_Settings' => 'hook.propagate_thumbnail_dimensions_to_settings.php',
|
336 |
-
'I_Displayed_Gallery'
|
337 |
-
'I_Displayed_Gallery_Mapper'
|
338 |
-
'I_Displayed_Gallery_Renderer'
|
339 |
-
'I_Displayed_Gallery_Source'
|
340 |
'I_Displayed_Gallery_Source_Mapper' => 'interface.displayed_gallery_source_mapper.php',
|
341 |
'I_Display_Settings_Controller' => 'interface.display_settings_controller.php',
|
342 |
-
'I_Display_Type'
|
343 |
-
'I_Display_Type_Controller'
|
344 |
-
'I_Display_Type_Mapper'
|
345 |
-
'Mixin_Display_Type_Form'
|
346 |
);
|
347 |
}
|
348 |
}
|
19 |
'photocrati-nextgen_gallery_display',
|
20 |
'Gallery Display',
|
21 |
'Provides the ability to display gallery of images',
|
22 |
+
'0.1',
|
23 |
'http://www.photocrati.com',
|
24 |
'Photocrati Media',
|
25 |
'http://www.photocrati.com'
|
82 |
'I_Component_Factory', 'A_Gallery_Display_Factory'
|
83 |
);
|
84 |
|
85 |
+
$this->get_registry()->add_adapter(
|
86 |
+
'I_Page_Manager',
|
87 |
+
'A_Display_Settings_Page'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
);
|
89 |
|
90 |
$this->get_registry()->add_adapter('I_MVC_View', 'A_Gallery_Display_View');
|
91 |
+
$this->get_registry()->add_adapter('I_MVC_View', 'A_Displayed_Gallery_Related_Element');
|
92 |
}
|
93 |
|
94 |
/**
|
97 |
function _register_hooks()
|
98 |
{
|
99 |
// Add a shortcode for displaying galleries
|
100 |
+
add_shortcode('ngg_images', array(&$this, 'display_images'));
|
101 |
add_action('init', array(&$this, '_register_resources'));
|
102 |
add_action('admin_bar_menu', array(&$this, 'add_admin_bar_menu'), 100);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
}
|
104 |
|
105 |
/**
|
124 |
*/
|
125 |
function _register_resources()
|
126 |
{
|
127 |
+
$router = $this->get_registry()->get_utility('I_Router');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
|
129 |
wp_register_script(
|
130 |
'nextgen_gallery_display_settings',
|
137 |
$router->get_static_url('photocrati-nextgen_gallery_display#nextgen_gallery_display_settings.css')
|
138 |
);
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
wp_register_script(
|
141 |
'jquery.nextgen_radio_toggle',
|
142 |
$router->get_static_url('photocrati-nextgen_gallery_display#jquery.nextgen_radio_toggle.js'),
|
190 |
function get_type_list()
|
191 |
{
|
192 |
return array(
|
|
|
193 |
'A_Display_Settings_Controller' => 'adapter.display_settings_controller.php',
|
194 |
+
'A_Display_Settings_Page' => 'adapter.display_settings_page.php',
|
195 |
+
'A_Displayed_Gallery_Related_Element' => 'adapter.displayed_gallery_related_element.php',
|
196 |
+
'A_Gallery_Display_Factory' => 'adapter.gallery_display_factory.php',
|
197 |
+
'C_Gallery_Display_Installer' => 'class.gallery_display_installer.php',
|
198 |
+
'A_Gallery_Display_View' => 'adapter.gallery_display_view.php',
|
199 |
+
'C_Displayed_Gallery' => 'class.displayed_gallery.php',
|
200 |
+
'C_Displayed_Gallery_Mapper' => 'class.displayed_gallery_mapper.php',
|
201 |
+
'C_Displayed_Gallery_Renderer' => 'class.displayed_gallery_renderer.php',
|
202 |
+
'C_Displayed_Gallery_Source' => 'class.displayed_gallery_source.php',
|
203 |
'C_Displayed_Gallery_Source_Mapper' => 'class.displayed_gallery_source_mapper.php',
|
204 |
+
'C_Display_Type' => 'class.display_type.php',
|
205 |
+
'C_Display_Type_Controller' => 'class.display_type_controller.php',
|
206 |
+
'C_Display_Type_Mapper' => 'class.display_type_mapper.php',
|
207 |
'Hook_Propagate_Thumbnail_Dimensions_To_Settings' => 'hook.propagate_thumbnail_dimensions_to_settings.php',
|
208 |
+
'I_Displayed_Gallery' => 'interface.displayed_gallery.php',
|
209 |
+
'I_Displayed_Gallery_Mapper' => 'interface.displayed_gallery_mapper.php',
|
210 |
+
'I_Displayed_Gallery_Renderer' => 'interface.displayed_gallery_renderer.php',
|
211 |
+
'I_Displayed_Gallery_Source' => 'interface.displayed_gallery_source.php',
|
212 |
'I_Displayed_Gallery_Source_Mapper' => 'interface.displayed_gallery_source_mapper.php',
|
213 |
'I_Display_Settings_Controller' => 'interface.display_settings_controller.php',
|
214 |
+
'I_Display_Type' => 'interface.display_type.php',
|
215 |
+
'I_Display_Type_Controller' => 'interface.display_type_controller.php',
|
216 |
+
'I_Display_Type_Mapper' => 'interface.display_type_mapper.php',
|
217 |
+
'Mixin_Display_Type_Form' => 'mixin.display_type_form.php'
|
218 |
);
|
219 |
}
|
220 |
}
|
products/photocrati_nextgen/modules/nextgen_gallery_display/static/common.js
CHANGED
@@ -1,85 +1 @@
|
|
1 |
-
|
2 |
-
window.NggPaginatedGallery = function(displayed_gallery_id, container, links) {
|
3 |
-
this.displayed_gallery_id = displayed_gallery_id;
|
4 |
-
this.links = links;
|
5 |
-
this.container = container;
|
6 |
-
|
7 |
-
this.get_displayed_gallery_obj = function(){
|
8 |
-
var index = 'gallery_'+this.displayed_gallery_id;
|
9 |
-
if (typeof(window.galleries[index]) == 'undefined')
|
10 |
-
return false;
|
11 |
-
else
|
12 |
-
return window.galleries[index];
|
13 |
-
};
|
14 |
-
|
15 |
-
|
16 |
-
this.enable_ajax_pagination = function(){
|
17 |
-
var transient_id = this.get_displayed_gallery_obj().transient_id;
|
18 |
-
var obj = this;
|
19 |
-
|
20 |
-
// Attach a click event handler for each pagination link to
|
21 |
-
// adjust the request to be sent via XHR
|
22 |
-
this.links.each(function(){
|
23 |
-
var $link = $(this);
|
24 |
-
$link.click(function(e){
|
25 |
-
e.preventDefault();
|
26 |
-
|
27 |
-
// Describe AJAX request
|
28 |
-
var request = {
|
29 |
-
action: 'render_displayed_gallery',
|
30 |
-
displayed_gallery_id: transient_id,
|
31 |
-
ajax_referrer: $link.attr('href')
|
32 |
-
}
|
33 |
-
|
34 |
-
// Notify the user that we're busy
|
35 |
-
obj.do_ajax(request);
|
36 |
-
});
|
37 |
-
});
|
38 |
-
};
|
39 |
-
|
40 |
-
this.do_ajax = function(request){
|
41 |
-
|
42 |
-
var container = this.container;
|
43 |
-
|
44 |
-
// Adjust the user notification
|
45 |
-
window['ngg_ajax_operaton_count']++;
|
46 |
-
$('body, a').css('cursor', 'wait');
|
47 |
-
|
48 |
-
// Send the AJAX request
|
49 |
-
$.post(photocrati_ajax.url, request, function(response){
|
50 |
-
|
51 |
-
// Adjust the user notification
|
52 |
-
window['ngg_ajax_operaton_count']--;
|
53 |
-
if (window['ngg_ajax_operaton_count'] <= 0) {
|
54 |
-
window['ngg_ajax_operaton_count'] = 0;
|
55 |
-
$('body, a').css('cursor', 'auto');
|
56 |
-
}
|
57 |
-
|
58 |
-
// Ensure that the server returned JSON
|
59 |
-
if (typeof(response) != 'object') response = JSON.parse(response);
|
60 |
-
if (response) {
|
61 |
-
container.replaceWith(response.html);
|
62 |
-
|
63 |
-
// Let the user know that we've refreshed the content
|
64 |
-
$(document).trigger('refreshed');
|
65 |
-
}
|
66 |
-
});
|
67 |
-
};
|
68 |
-
|
69 |
-
// Initialize
|
70 |
-
var displayed_gallery = this.get_displayed_gallery_obj();
|
71 |
-
if (displayed_gallery) {
|
72 |
-
if (typeof(displayed_gallery.display_settings['ajax_pagination']) != 'undefined') {
|
73 |
-
if (parseInt(displayed_gallery.display_settings['ajax_pagination'])) {
|
74 |
-
this.enable_ajax_pagination();
|
75 |
-
}
|
76 |
-
}
|
77 |
-
}
|
78 |
-
|
79 |
-
// We maintain a count of all the current AJAX actions initiated
|
80 |
-
if (typeof(window['ngg_ajax_operation_count']) == 'undefined') {
|
81 |
-
window['ngg_ajax_operaton_count'] = 0;
|
82 |
-
}
|
83 |
-
};
|
84 |
-
|
85 |
-
})(jQuery);
|
1 |
+
// common.js is intentionally empty
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_related_images.css
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
|
2 |
-
/* ----------- Related images -------------*/
|
3 |
-
.ngg-related-gallery {
|
4 |
-
background:#F9F9F9;
|
5 |
-
border:1px solid #E0E0E0;
|
6 |
-
overflow:hidden;
|
7 |
-
margin-bottom:1em;
|
8 |
-
margin-top:1em;
|
9 |
-
padding:5px;
|
10 |
-
}
|
11 |
-
.ngg-related-gallery img {
|
12 |
-
border: 1px solid #DDDDDD;
|
13 |
-
float: left;
|
14 |
-
margin: 0pt 3px;
|
15 |
-
padding: 2px;
|
16 |
-
height: 50px;
|
17 |
-
width: 50px;
|
18 |
-
}
|
19 |
-
|
20 |
-
.ngg-related-gallery img:hover {
|
21 |
-
border: 1px solid #000000;
|
22 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_other_options/adapter.image_options_form.php
CHANGED
@@ -64,9 +64,9 @@ class A_Image_Options_Form extends Mixin
|
|
64 |
if (!$gallerypath) $gallerypath = $this->object->get_model()->get('gallerypath');
|
65 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
66 |
$gallerypath = $fs->get_abspath($gallerypath);
|
67 |
-
if (
|
68 |
@mkdir($gallerypath);
|
69 |
-
$retval =
|
70 |
}
|
71 |
|
72 |
return $retval;
|
@@ -90,7 +90,7 @@ class A_Image_Options_Form extends Mixin
|
|
90 |
'delete_image_files_help' => _('When enabled, image files will be removed after a Gallery has been deleted'),
|
91 |
'delete_image_files' => $settings->deleteImg,
|
92 |
'show_related_images_label' => _('Show Related Images on Posts?'),
|
93 |
-
'show_related_images_help' => _('When enabled, related images will be appended to each post
|
94 |
'show_related_images' => $settings->activateTags,
|
95 |
'related_images_hidden_label' => _('(Show Customization Settings)'),
|
96 |
'related_images_active_label' => _('(Hide Customization Settings)'),
|
@@ -99,8 +99,6 @@ class A_Image_Options_Form extends Mixin
|
|
99 |
'match_related_image_options' => $this->object->_get_related_image_match_options(),
|
100 |
'max_related_images_label' => _('Maximum # of related images to display'),
|
101 |
'max_related_images' => $settings->maxImages,
|
102 |
-
'related_images_heading_label' => _('Heading for related images'),
|
103 |
-
'related_images_heading' => $settings->relatedHeading,
|
104 |
'sorting_order_label' => _("What's the default sorting method?"),
|
105 |
'sorting_order_options' => $this->object->_get_image_sorting_options(),
|
106 |
'sorting_order' => $settings->galSort,
|
@@ -136,32 +134,30 @@ class A_Image_Options_Form extends Mixin
|
|
136 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
137 |
$original_dir = $fs->get_abspath($this->object->get_model()->get('gallerypath'));
|
138 |
$new_dir = $fs->get_abspath($image_options['gallerypath']);
|
139 |
-
|
140 |
-
|
141 |
-
//
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
# }
|
164 |
-
# }
|
165 |
}
|
166 |
elseif (isset($image_options['gallerypath'])) {
|
167 |
unset($image_options['gallerypath']);
|
64 |
if (!$gallerypath) $gallerypath = $this->object->get_model()->get('gallerypath');
|
65 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
66 |
$gallerypath = $fs->get_abspath($gallerypath);
|
67 |
+
if (!file_exists($gallerypath)) {
|
68 |
@mkdir($gallerypath);
|
69 |
+
$retval = file_exists($gallerypath);
|
70 |
}
|
71 |
|
72 |
return $retval;
|
90 |
'delete_image_files_help' => _('When enabled, image files will be removed after a Gallery has been deleted'),
|
91 |
'delete_image_files' => $settings->deleteImg,
|
92 |
'show_related_images_label' => _('Show Related Images on Posts?'),
|
93 |
+
'show_related_images_help' => _('When enabled, related images will be appended to each post'),
|
94 |
'show_related_images' => $settings->activateTags,
|
95 |
'related_images_hidden_label' => _('(Show Customization Settings)'),
|
96 |
'related_images_active_label' => _('(Hide Customization Settings)'),
|
99 |
'match_related_image_options' => $this->object->_get_related_image_match_options(),
|
100 |
'max_related_images_label' => _('Maximum # of related images to display'),
|
101 |
'max_related_images' => $settings->maxImages,
|
|
|
|
|
102 |
'sorting_order_label' => _("What's the default sorting method?"),
|
103 |
'sorting_order_options' => $this->object->_get_image_sorting_options(),
|
104 |
'sorting_order' => $settings->galSort,
|
134 |
$fs = $this->get_registry()->get_utility('I_Fs');
|
135 |
$original_dir = $fs->get_abspath($this->object->get_model()->get('gallerypath'));
|
136 |
$new_dir = $fs->get_abspath($image_options['gallerypath']);
|
137 |
+
$image_options['gallerypath'] = $fs->add_trailing_slash($image_options['gallerypath']);
|
138 |
+
|
139 |
+
// If the gallery path has changed...
|
140 |
+
if ($original_dir != $new_dir) {
|
141 |
+
|
142 |
+
// Try creating the new directory
|
143 |
+
if ($this->object->_create_gallery_storage_dir($new_dir) AND is_writable($new_dir)) {
|
144 |
+
|
145 |
+
// Try moving files
|
146 |
+
$this->object->recursive_copy($original_dir, $new_dir);
|
147 |
+
$this->object->recursive_delete($original_dir);
|
148 |
+
|
149 |
+
// Update gallery paths
|
150 |
+
$mapper = $this->get_registry()->get_utility('I_Gallery_Mapper');
|
151 |
+
foreach ($mapper->find_all() as $gallery) {
|
152 |
+
$gallery->path = $image_options['gallerypath'] . $gallery->name;
|
153 |
+
$mapper->save($gallery);
|
154 |
+
}
|
155 |
+
}
|
156 |
+
else {
|
157 |
+
$this->get_model()->add_error("Unable to change gallery path. Insufficient filesystem permissions");
|
158 |
+
$save = FALSE;
|
159 |
+
}
|
160 |
+
}
|
|
|
|
|
161 |
}
|
162 |
elseif (isset($image_options['gallerypath'])) {
|
163 |
unset($image_options['gallerypath']);
|
products/photocrati_nextgen/modules/nextgen_other_options/adapter.lightbox_manager_form.php
CHANGED
@@ -40,8 +40,7 @@ class A_Lightbox_Manager_Form extends Mixin
|
|
40 |
'id_field' => $mapper->get_primary_key_column(),
|
41 |
'selected' => $this->object->get_model()->thumbEffect,
|
42 |
'sub_fields' => $sub_fields,
|
43 |
-
'adv_fields' => $advanced_fields
|
44 |
-
'lightbox_global' => $this->object->get_model()->thumbEffectContext,
|
45 |
),
|
46 |
TRUE
|
47 |
);
|
@@ -60,23 +59,21 @@ class A_Lightbox_Manager_Form extends Mixin
|
|
60 |
|
61 |
// If a valid library, we have updated settings from the user, then
|
62 |
// try saving the changes
|
63 |
-
if ($library)
|
64 |
{
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
74 |
|
75 |
-
}
|
76 |
-
|
77 |
-
$mapper->save($library);
|
78 |
-
}
|
79 |
-
|
80 |
// If the requested changes weren't valid, add the validation
|
81 |
// errors to the C_NextGen_Settings object
|
82 |
if ($settings->is_invalid())
|
@@ -95,10 +92,5 @@ class A_Lightbox_Manager_Form extends Mixin
|
|
95 |
}
|
96 |
}
|
97 |
}
|
98 |
-
|
99 |
-
if (($thumbEffectContext = $this->object->param('thumbEffectContext'))) {
|
100 |
-
$settings->thumbEffectContext = $thumbEffectContext;
|
101 |
-
$settings->save();
|
102 |
-
}
|
103 |
}
|
104 |
-
}
|
40 |
'id_field' => $mapper->get_primary_key_column(),
|
41 |
'selected' => $this->object->get_model()->thumbEffect,
|
42 |
'sub_fields' => $sub_fields,
|
43 |
+
'adv_fields' => $advanced_fields
|
|
|
44 |
),
|
45 |
TRUE
|
46 |
);
|
59 |
|
60 |
// If a valid library, we have updated settings from the user, then
|
61 |
// try saving the changes
|
62 |
+
if ($library && (($params = $this->object->param($library->name))))
|
63 |
{
|
64 |
+
// bind our new values, use display_settings if it isn't a part of the core library
|
65 |
+
foreach ($params as $k => $v) {
|
66 |
+
if (isset($library->$k))
|
67 |
+
{
|
68 |
+
$library->$k = $v;
|
69 |
+
}
|
70 |
+
else {
|
71 |
+
$library->display_settings[$k] = $v;
|
72 |
+
}
|
73 |
+
|
74 |
+
}
|
75 |
+
$mapper->save($library);
|
76 |
|
|
|
|
|
|
|
|
|
|
|
77 |
// If the requested changes weren't valid, add the validation
|
78 |
// errors to the C_NextGen_Settings object
|
79 |
if ($settings->is_invalid())
|
92 |
}
|
93 |
}
|
94 |
}
|
|
|
|
|
|
|
|
|
|
|
95 |
}
|
96 |
+
}
|
products/photocrati_nextgen/modules/nextgen_other_options/adapter.miscellaneous_form.php
CHANGED
@@ -54,7 +54,6 @@ class A_Miscellaneous_Form extends Mixin
|
|
54 |
$cache->flush_galleries();
|
55 |
C_Photocrati_Cache::flush();
|
56 |
C_Photocrati_Cache::flush('displayed_galleries');
|
57 |
-
C_Photocrati_Cache::flush('displayed_gallery_rendering');
|
58 |
}
|
59 |
|
60 |
function save_action()
|
54 |
$cache->flush_galleries();
|
55 |
C_Photocrati_Cache::flush();
|
56 |
C_Photocrati_Cache::flush('displayed_galleries');
|
|
|
57 |
}
|
58 |
|
59 |
function save_action()
|
products/photocrati_nextgen/modules/nextgen_other_options/adapter.other_options_forms.php
CHANGED
@@ -5,26 +5,14 @@ class A_Other_Options_Forms extends Mixin
|
|
5 |
function initialize()
|
6 |
{
|
7 |
$forms = array(
|
8 |
-
'image_options' => 'A_Image_Options_Form',
|
9 |
-
'thumbnail_options' => 'A_Thumbnail_Options_Form',
|
10 |
-
'lightbox_effects' => 'A_Lightbox_Manager_Form',
|
11 |
-
'watermarks' => 'A_Watermarks_Form'
|
12 |
-
);
|
13 |
-
|
14 |
-
if (!is_multisite() || (is_multisite() && C_NextGen_Settings::get_instance()->get('wpmuStyle')))
|
15 |
-
$forms['styles'] = 'A_Styles_Form';
|
16 |
-
|
17 |
-
if (is_super_admin() && (!is_multisite() || (is_multisite() && C_NextGen_Settings::get_instance()->get('wpmuRoles'))))
|
18 |
-
$forms['roles_and_capabilities'] = 'A_Roles_Form';
|
19 |
-
|
20 |
-
$forms += array(
|
21 |
'image_options' => 'A_Image_Options_Form',
|
22 |
'thumbnail_options' => 'A_Thumbnail_Options_Form',
|
23 |
'lightbox_effects' => 'A_Lightbox_Manager_Form',
|
24 |
'watermarks' => 'A_Watermarks_Form',
|
25 |
'styles' => 'A_Styles_Form',
|
26 |
'roles_and_capabilities'=> 'A_Roles_Form',
|
27 |
-
'miscellaneous' => 'A_Miscellaneous_Form'
|
|
|
28 |
);
|
29 |
|
30 |
$registry = $this->object->get_registry();
|
5 |
function initialize()
|
6 |
{
|
7 |
$forms = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
'image_options' => 'A_Image_Options_Form',
|
9 |
'thumbnail_options' => 'A_Thumbnail_Options_Form',
|
10 |
'lightbox_effects' => 'A_Lightbox_Manager_Form',
|
11 |
'watermarks' => 'A_Watermarks_Form',
|
12 |
'styles' => 'A_Styles_Form',
|
13 |
'roles_and_capabilities'=> 'A_Roles_Form',
|
14 |
+
'miscellaneous' => 'A_Miscellaneous_Form',
|
15 |
+
'reset_and_uninstall' => 'A_Reset_Form',
|
16 |
);
|
17 |
|
18 |
$registry = $this->object->get_registry();
|
products/photocrati_nextgen/modules/nextgen_other_options/adapter.reset_form.php
CHANGED
@@ -4,7 +4,7 @@ class A_Reset_Form extends Mixin
|
|
4 |
{
|
5 |
function get_title()
|
6 |
{
|
7 |
-
return 'Reset
|
8 |
}
|
9 |
|
10 |
function render()
|
@@ -15,9 +15,9 @@ class A_Reset_Form extends Mixin
|
|
15 |
'reset_value' => _('Reset all options to default settings'),
|
16 |
'reset_warning' => _('Replace all existing options and gallery options with their default settings'),
|
17 |
'reset_label' => _('Reset settings'),
|
18 |
-
'reset_confirmation' => _("Reset all options to default settings?\n\nChoose [Cancel] to Stop, [OK] to proceed.")
|
19 |
-
|
20 |
-
|
21 |
),
|
22 |
TRUE
|
23 |
);
|
@@ -25,29 +25,11 @@ class A_Reset_Form extends Mixin
|
|
25 |
|
26 |
function reset_action()
|
27 |
{
|
28 |
-
global $wpdb;
|
29 |
-
|
30 |
$installer = C_Photocrati_Installer::get_instance();
|
31 |
-
$settings = C_NextGen_Settings::get_instance();
|
32 |
-
|
33 |
-
// removes lightbox, display type, and source settings
|
34 |
$installer->uninstall(NEXTGEN_GALLERY_PLUGIN_BASENAME);
|
35 |
-
|
36 |
-
// removes ngg_options entry in wp_options
|
37 |
-
$settings->destroy();
|
38 |
-
$settings->save();
|
39 |
-
|
40 |
-
// TODO: remove this sometime after 2.0.21
|
41 |
-
//
|
42 |
-
// Some installations of NextGen that upgraded from 1.9x to 2.0x have duplicate display types installed,
|
43 |
-
// so for now (as of 2.0.21) we explicitly remove all display types from the db as a way of fixing this
|
44 |
-
$wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->posts} WHERE post_type = %s", 'display_type'));
|
45 |
-
|
46 |
-
// trigger the install routine
|
47 |
$installer->update(TRUE);
|
48 |
}
|
49 |
|
50 |
-
/*
|
51 |
function uninstall_action()
|
52 |
{
|
53 |
$installer = C_Photocrati_Installer::get_instance();
|
@@ -55,5 +37,4 @@ class A_Reset_Form extends Mixin
|
|
55 |
deactivate_plugins(NEXTGEN_GALLERY_PLUGIN_BASENAME);
|
56 |
wp_redirect(admin_url('/plugins.php'));
|
57 |
}
|
58 |
-
|
59 |
-
}
|
4 |
{
|
5 |
function get_title()
|
6 |
{
|
7 |
+
return 'Reset & Uninstall';
|
8 |
}
|
9 |
|
10 |
function render()
|
15 |
'reset_value' => _('Reset all options to default settings'),
|
16 |
'reset_warning' => _('Replace all existing options and gallery options with their default settings'),
|
17 |
'reset_label' => _('Reset settings'),
|
18 |
+
'reset_confirmation' => _("Reset all options to default settings?\n\nChoose [Cancel] to Stop, [OK] to proceed."),
|
19 |
+
'uninstall_label' => _('Deactivate & Uninstall'),
|
20 |
+
'uninstall_confirmation'=>_("Completely remove NextGEN Gallery (delete galleries, tables, etc)?\n\nChoose [Cancel] to Stop, [OK] to proceed."),
|
21 |
),
|
22 |
TRUE
|
23 |
);
|
25 |
|
26 |
function reset_action()
|
27 |
{
|
|
|
|
|
28 |
$installer = C_Photocrati_Installer::get_instance();
|
|
|
|
|
|
|
29 |
$installer->uninstall(NEXTGEN_GALLERY_PLUGIN_BASENAME);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
$installer->update(TRUE);
|
31 |
}
|
32 |
|
|
|
33 |
function uninstall_action()
|
34 |
{
|
35 |
$installer = C_Photocrati_Installer::get_instance();
|
37 |
deactivate_plugins(NEXTGEN_GALLERY_PLUGIN_BASENAME);
|
38 |
wp_redirect(admin_url('/plugins.php'));
|
39 |
}
|
40 |
+
}
|
|
products/photocrati_nextgen/modules/nextgen_other_options/class.settings_model.php
CHANGED
@@ -22,7 +22,7 @@ class C_Settings_Model extends C_Component
|
|
22 |
parent::define($context);
|
23 |
$this->add_mixin('Mixin_Validation');
|
24 |
if ($this->has_context('global') OR $this->has_context('site')) {
|
25 |
-
$this->wrapper =
|
26 |
}
|
27 |
else $this->wrapper = C_NextGen_Settings::get_instance();
|
28 |
}
|
22 |
parent::define($context);
|
23 |
$this->add_mixin('Mixin_Validation');
|
24 |
if ($this->has_context('global') OR $this->has_context('site')) {
|
25 |
+
$this->wrapper = C_NextGen_Global_Settings::get_instance();
|
26 |
}
|
27 |
else $this->wrapper = C_NextGen_Settings::get_instance();
|
28 |
}
|
products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php
CHANGED
@@ -16,7 +16,7 @@ class M_NextGen_Other_Options extends C_Base_Module
|
|
16 |
'photocrati-nextgen_other_options',
|
17 |
'Other Options',
|
18 |
'NextGEN Gallery Others Options Page',
|
19 |
-
'0.
|
20 |
'http://www.nextgen-gallery.com',
|
21 |
'Photocrati Media',
|
22 |
'http://www.photocrati.com'
|
16 |
'photocrati-nextgen_other_options',
|
17 |
'Other Options',
|
18 |
'NextGEN Gallery Others Options Page',
|
19 |
+
'0.2',
|
20 |
'http://www.nextgen-gallery.com',
|
21 |
'Photocrati Media',
|
22 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/nextgen_other_options/templates/image_options_tab.php
CHANGED
@@ -129,10 +129,10 @@
|
|
129 |
</label>
|
130 |
<input
|
131 |
id="backup_images_yes"
|
132 |
-
name="image_options[
|
133 |
value="1"
|
134 |
type="radio"
|
135 |
-
<?php checked(1, $backup_images
|
136 |
/>
|
137 |
|
138 |
<label for="backup_images_no">
|
@@ -140,10 +140,10 @@
|
|
140 |
</label>
|
141 |
<input
|
142 |
id="backup_images_no"
|
143 |
-
name="image_options[
|
144 |
value="0"
|
145 |
type="radio"
|
146 |
-
<?php checked(0, $backup_images
|
147 |
/>
|
148 |
</td>
|
149 |
</tr>
|
@@ -212,47 +212,34 @@
|
|
212 |
><?php echo_h($related_images_hidden_label) ?></a>
|
213 |
</td>
|
214 |
</tr>
|
215 |
-
<
|
216 |
-
<
|
217 |
-
<
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
<
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
<
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
</tr>
|
246 |
-
<tr>
|
247 |
-
<td>
|
248 |
-
<label for="related_images_heading">
|
249 |
-
<?php echo_h($related_images_heading_label) ?>
|
250 |
-
</label>
|
251 |
-
</td>
|
252 |
-
<td>
|
253 |
-
<input id="related_images_heading" type="text" name="image_options[relatedHeading]"
|
254 |
-
value="<?php echo esc_attr($related_images_heading)?>"/>
|
255 |
-
</td>
|
256 |
-
</tr>
|
257 |
-
</tbody>
|
258 |
</table>
|
129 |
</label>
|
130 |
<input
|
131 |
id="backup_images_yes"
|
132 |
+
name="image_options[backup_images]"
|
133 |
value="1"
|
134 |
type="radio"
|
135 |
+
<?php checked(1, $backup_images)?>
|
136 |
/>
|
137 |
|
138 |
<label for="backup_images_no">
|
140 |
</label>
|
141 |
<input
|
142 |
id="backup_images_no"
|
143 |
+
name="image_options[backup_images]"
|
144 |
value="0"
|
145 |
type="radio"
|
146 |
+
<?php checked(0, $backup_images)?>
|
147 |
/>
|
148 |
</td>
|
149 |
</tr>
|
212 |
><?php echo_h($related_images_hidden_label) ?></a>
|
213 |
</td>
|
214 |
</tr>
|
215 |
+
<tr id="related_images_advanced_form" class="hidden">
|
216 |
+
<td>
|
217 |
+
<label for="match_related_images">
|
218 |
+
<?php echo_h($match_related_images_label) ?>
|
219 |
+
</label>
|
220 |
+
</td>
|
221 |
+
<td>
|
222 |
+
<select id="match_related_images" name="image_options[appendType]">
|
223 |
+
<?php foreach ($match_related_image_options as $label => $value): ?>
|
224 |
+
<option
|
225 |
+
value="<?php echo esc_attr($value)?>"
|
226 |
+
<?php selected($value, $match_related_images)?>
|
227 |
+
>
|
228 |
+
<?php echo_h($label) ?>
|
229 |
+
</option>
|
230 |
+
<?php endforeach ?>
|
231 |
+
</select>
|
232 |
+
</td>
|
233 |
+
<td class="column3">
|
234 |
+
<label for="max_related_images">
|
235 |
+
<?php echo_h($max_related_images_label)?>
|
236 |
+
</label>
|
237 |
+
<input
|
238 |
+
id="max_related_images"
|
239 |
+
type="text"
|
240 |
+
name="image_options[maxImages]"
|
241 |
+
value="<?php echo esc_attr($max_related_images)?>"
|
242 |
+
/>
|
243 |
+
</td>
|
244 |
+
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
</table>
|
products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php
CHANGED
@@ -44,24 +44,6 @@
|
|
44 |
<?php echo $form; ?>
|
45 |
</tbody>
|
46 |
<?php } ?>
|
47 |
-
|
48 |
-
<td>
|
49 |
-
</td>
|
50 |
-
<td>
|
51 |
-
</td>
|
52 |
-
</tr>
|
53 |
-
<tr>
|
54 |
-
<td class="column1">
|
55 |
-
<label for="lightbox_global"><?php esc_html_e('What must the lightbox be applied to?', 'nggallery')?></label>
|
56 |
-
</td>
|
57 |
-
<td>
|
58 |
-
<select name="thumbEffectContext" id="lightbox_global">
|
59 |
-
<option value="nextgen_images" <?php selected('nextgen_images', $lightbox_global, TRUE)?>><?php esc_html_e('Only apply to NextGEN images', 'nggallery'); ?></option>
|
60 |
-
<option value="nextgen_and_wp_images" <?php selected('nextgen_and_wp_images', $lightbox_global, TRUE)?>><?php esc_html_e('Only apply to NextGEN and WordPress images', 'nggallery'); ?></option>
|
61 |
-
<option value="all_images" <?php selected('all_images', $lightbox_global, TRUE)?>><?php esc_html_e('Try to apply to all images', 'nggallery'); ?></option>
|
62 |
-
<option value="all_images_direct" <?php selected('all_images_direct', $lightbox_global, TRUE)?>><?php esc_html_e('Try to apply to all images that link to image files', 'nggallery'); ?></option>
|
63 |
-
</select>
|
64 |
-
</td>
|
65 |
-
</tr>
|
66 |
</tbody>
|
67 |
-
</table>
|
44 |
<?php echo $form; ?>
|
45 |
</tbody>
|
46 |
<?php } ?>
|
47 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
</tbody>
|
49 |
+
</table>
|
products/photocrati_nextgen/modules/nextgen_other_options/templates/reset_tab.php
CHANGED
@@ -15,7 +15,6 @@
|
|
15 |
/>
|
16 |
</td>
|
17 |
</tr>
|
18 |
-
<?php /*
|
19 |
<tr>
|
20 |
<td class='column1'>
|
21 |
<?php echo $uninstall_label; ?>
|
@@ -30,5 +29,4 @@
|
|
30 |
/>
|
31 |
</td>
|
32 |
</tr>
|
33 |
-
*/ ?>
|
34 |
</table>
|
15 |
/>
|
16 |
</td>
|
17 |
</tr>
|
|
|
18 |
<tr>
|
19 |
<td class='column1'>
|
20 |
<?php echo $uninstall_label; ?>
|
29 |
/>
|
30 |
</td>
|
31 |
</tr>
|
|
|
32 |
</table>
|
products/photocrati_nextgen/modules/nextgen_pagination/mixin.nextgen_basic_pagination.php
CHANGED
@@ -20,26 +20,8 @@ class Mixin_NextGen_Basic_Pagination extends Mixin
|
|
20 |
$next_symbol = apply_filters('ngg_next_symbol', '►');
|
21 |
|
22 |
if (empty($current_url))
|
23 |
-
{
|
24 |
$current_url = $this->object->get_routed_url(TRUE);
|
25 |
|
26 |
-
if (is_archive())
|
27 |
-
{
|
28 |
-
$id = get_the_ID();
|
29 |
-
|
30 |
-
if ($id == null)
|
31 |
-
{
|
32 |
-
global $post;
|
33 |
-
$id = $post ? $post->ID : null;
|
34 |
-
}
|
35 |
-
|
36 |
-
if ($id != null && in_the_loop())
|
37 |
-
{
|
38 |
-
$current_url = get_permalink($id);
|
39 |
-
}
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
$return = array('prev' => '', 'next' => '', 'output' => '');
|
44 |
|
45 |
if ($maxElement <= 0)
|
@@ -93,4 +75,4 @@ class Mixin_NextGen_Basic_Pagination extends Mixin
|
|
93 |
|
94 |
return $return;
|
95 |
}
|
96 |
-
}
|
20 |
$next_symbol = apply_filters('ngg_next_symbol', '►');
|
21 |
|
22 |
if (empty($current_url))
|
|
|
23 |
$current_url = $this->object->get_routed_url(TRUE);
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
$return = array('prev' => '', 'next' => '', 'output' => '');
|
26 |
|
27 |
if ($maxElement <= 0)
|
75 |
|
76 |
return $return;
|
77 |
}
|
78 |
+
}
|
products/photocrati_nextgen/modules/nextgen_settings/class.nextgen_settings_installer.php
CHANGED
@@ -7,16 +7,13 @@ class C_NextGen_Settings_Installer
|
|
7 |
|
8 |
function __construct()
|
9 |
{
|
10 |
-
$this->blog_settings = C_NextGen_Settings::get_instance();
|
11 |
$this->site_settings = C_NextGen_Global_Settings::get_instance();
|
|
|
12 |
|
13 |
-
$this->
|
14 |
'gallerypath' => 'wp-content/blogs.dir/%BLOG_ID%/files/',
|
15 |
'wpmuCSSfile' => 'nggallery.css',
|
16 |
-
'wpmuStyle'
|
17 |
-
'wpmuRoles' => FALSE,
|
18 |
-
'wpmuImportFolder' => FALSE,
|
19 |
-
'wpmuZipUpload' => FALSE,
|
20 |
'datamapper_driver' => 'custom_table_datamapper',
|
21 |
'gallerystorage_driver' => 'ngglegacy_gallery_storage',
|
22 |
'maximum_entity_count' => 500,
|
@@ -38,7 +35,6 @@ class C_NextGen_Settings_Installer
|
|
38 |
'activateTags' => 0, // append related images
|
39 |
'appendType' => 'tags', // look for category or tags
|
40 |
'maxImages' => 7, // number of images toshow
|
41 |
-
'relatedHeading' => __('<h3>Related Images:</h3>', 'nggallery'), // subheading for related images
|
42 |
|
43 |
// Thumbnail Settings
|
44 |
'thumbwidth' => 120, // Thumb Width
|
@@ -49,7 +45,7 @@ class C_NextGen_Settings_Installer
|
|
49 |
// Image Settings
|
50 |
'imgWidth' => 800, // Image Width
|
51 |
'imgHeight' => 600, // Image height
|
52 |
-
'imgQuality' =>
|
53 |
'imgBackup' => True, // Create a backup
|
54 |
'imgAutoResize' => False, // Resize after upload
|
55 |
|
@@ -58,8 +54,8 @@ class C_NextGen_Settings_Installer
|
|
58 |
'galPagedGalleries' => 0, // Number of galleries per page (in a album)
|
59 |
'galColumns' => 0, // Number of columns for the gallery
|
60 |
'galShowSlide' => True, // Show slideshow
|
61 |
-
'galTextSlide' => __('[Show slideshow]', 'nggallery'), // Text for slideshow
|
62 |
-
'galTextGallery' => __('[Show
|
63 |
'galShowOrder' => 'gallery', // Show order
|
64 |
'galSort' => 'sortorder', // Sort order
|
65 |
'galSortDir' => 'ASC', // Sort direction
|
@@ -71,7 +67,6 @@ class C_NextGen_Settings_Installer
|
|
71 |
// Thumbnail Effect
|
72 |
'thumbEffect' => 'fancybox', // select effect
|
73 |
'thumbCode' => 'class="ngg-fancybox" rel="%GALLERY_NAME%"',
|
74 |
-
'thumbEffectContext' => 'nextgen_images', // select effect
|
75 |
|
76 |
// Watermark settings
|
77 |
'wmPos' => 'botRight', // Postion
|
@@ -115,7 +110,7 @@ class C_NextGen_Settings_Installer
|
|
115 |
|
116 |
function install_global_settings($reset=FALSE)
|
117 |
{
|
118 |
-
foreach ($this->
|
119 |
if ($reset) $this->site_settings->set($key, NULL);
|
120 |
$this->site_settings->set_default_value($key, $value);
|
121 |
}
|
@@ -123,27 +118,19 @@ class C_NextGen_Settings_Installer
|
|
123 |
|
124 |
function install_local_settings($reset=FALSE)
|
125 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
foreach ($this->_local_settings as $key => $value) {
|
127 |
if ($reset) $this->blog_settings->set($key, NULL);
|
128 |
$this->blog_settings->set_default_value($key, $value);
|
129 |
}
|
130 |
-
|
131 |
-
if (is_multisite())
|
132 |
-
{
|
133 |
-
// If this is already network activated we just need to use the existing setting
|
134 |
-
// Note: attempting to use C_NextGen_Global_Settings here may result in an infinite loop,
|
135 |
-
// so get_site_option() is used to check
|
136 |
-
if ($options = get_site_option('ngg_options'))
|
137 |
-
$gallerypath = $options['gallerypath'];
|
138 |
-
else
|
139 |
-
$gallerypath = $this->_global_settings['gallerypath'];
|
140 |
-
|
141 |
-
$gallerypath = $this->gallerypath_replace($gallerypath);
|
142 |
-
|
143 |
-
// a gallerypath setting has already been set, so we explicitly set a default AND set a new value
|
144 |
-
$this->blog_settings->set_default_value('gallerypath', $gallerypath);
|
145 |
-
$this->blog_settings->set('gallerypath', $gallerypath);
|
146 |
-
}
|
147 |
}
|
148 |
|
149 |
function install($reset=FALSE)
|
@@ -151,21 +138,4 @@ class C_NextGen_Settings_Installer
|
|
151 |
$this->install_global_settings($reset);
|
152 |
$this->install_local_settings($reset);
|
153 |
}
|
154 |
-
|
155 |
-
function get_global_defaults()
|
156 |
-
{
|
157 |
-
return $this->_global_settings;
|
158 |
-
}
|
159 |
-
|
160 |
-
function get_local_defaults()
|
161 |
-
{
|
162 |
-
return $this->_local_settings;
|
163 |
-
}
|
164 |
-
|
165 |
-
function gallerypath_replace($gallerypath)
|
166 |
-
{
|
167 |
-
$gallerypath = str_replace('%BLOG_NAME%', get_bloginfo('name'), $gallerypath);
|
168 |
-
$gallerypath = str_replace('%BLOG_ID%', get_current_blog_id(), $gallerypath);
|
169 |
-
return $gallerypath;
|
170 |
-
}
|
171 |
-
}
|
7 |
|
8 |
function __construct()
|
9 |
{
|
|
|
10 |
$this->site_settings = C_NextGen_Global_Settings::get_instance();
|
11 |
+
$this->blog_settings = C_NextGen_Settings::get_instance();
|
12 |
|
13 |
+
$this->_global_defaults = array(
|
14 |
'gallerypath' => 'wp-content/blogs.dir/%BLOG_ID%/files/',
|
15 |
'wpmuCSSfile' => 'nggallery.css',
|
16 |
+
'wpmuStyle' => TRUE,
|
|
|
|
|
|
|
17 |
'datamapper_driver' => 'custom_table_datamapper',
|
18 |
'gallerystorage_driver' => 'ngglegacy_gallery_storage',
|
19 |
'maximum_entity_count' => 500,
|
35 |
'activateTags' => 0, // append related images
|
36 |
'appendType' => 'tags', // look for category or tags
|
37 |
'maxImages' => 7, // number of images toshow
|
|
|
38 |
|
39 |
// Thumbnail Settings
|
40 |
'thumbwidth' => 120, // Thumb Width
|
45 |
// Image Settings
|
46 |
'imgWidth' => 800, // Image Width
|
47 |
'imgHeight' => 600, // Image height
|
48 |
+
'imgQuality' => 85, // Image Quality
|
49 |
'imgBackup' => True, // Create a backup
|
50 |
'imgAutoResize' => False, // Resize after upload
|
51 |
|
54 |
'galPagedGalleries' => 0, // Number of galleries per page (in a album)
|
55 |
'galColumns' => 0, // Number of columns for the gallery
|
56 |
'galShowSlide' => True, // Show slideshow
|
57 |
+
'galTextSlide' => __('[Show as slideshow]', 'nggallery'), // Text for slideshow
|
58 |
+
'galTextGallery' => __('[Show picture list]', 'nggallery'), // Text for gallery
|
59 |
'galShowOrder' => 'gallery', // Show order
|
60 |
'galSort' => 'sortorder', // Sort order
|
61 |
'galSortDir' => 'ASC', // Sort direction
|
67 |
// Thumbnail Effect
|
68 |
'thumbEffect' => 'fancybox', // select effect
|
69 |
'thumbCode' => 'class="ngg-fancybox" rel="%GALLERY_NAME%"',
|
|
|
70 |
|
71 |
// Watermark settings
|
72 |
'wmPos' => 'botRight', // Postion
|
110 |
|
111 |
function install_global_settings($reset=FALSE)
|
112 |
{
|
113 |
+
foreach ($this->_global_defaults as $key => $value) {
|
114 |
if ($reset) $this->site_settings->set($key, NULL);
|
115 |
$this->site_settings->set_default_value($key, $value);
|
116 |
}
|
118 |
|
119 |
function install_local_settings($reset=FALSE)
|
120 |
{
|
121 |
+
if (is_multisite()) {
|
122 |
+
$gallerypath = str_replace(
|
123 |
+
array('%BLOG_ID%', get_current_blog_id()),
|
124 |
+
array('%BLOG_NAME%', get_bloginfo('name')),
|
125 |
+
$this->_global_defaults['gallerypath']
|
126 |
+
);
|
127 |
+
$this->_local_settings['gallerypath'] = $gallerypath;
|
128 |
+
}
|
129 |
+
|
130 |
foreach ($this->_local_settings as $key => $value) {
|
131 |
if ($reset) $this->blog_settings->set($key, NULL);
|
132 |
$this->blog_settings->set_default_value($key, $value);
|
133 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
|
136 |
function install($reset=FALSE)
|
138 |
$this->install_global_settings($reset);
|
139 |
$this->install_local_settings($reset);
|
140 |
}
|
141 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php
CHANGED
@@ -17,7 +17,7 @@ class M_NextGen_Settings extends C_Base_Module
|
|
17 |
'photocrati-nextgen_settings',
|
18 |
'NextGEN Gallery Settings',
|
19 |
'Provides central management for NextGEN Gallery settings',
|
20 |
-
'0.
|
21 |
'http://www.nextgen-gallery.com',
|
22 |
'Photocrati Media',
|
23 |
'http://www.photocrati.com'
|
17 |
'photocrati-nextgen_settings',
|
18 |
'NextGEN Gallery Settings',
|
19 |
'Provides central management for NextGEN Gallery settings',
|
20 |
+
'0.1',
|
21 |
'http://www.nextgen-gallery.com',
|
22 |
'Photocrati Media',
|
23 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/nextgen_xmlrpc/module.nextgen_xmlrpc.php
DELETED
@@ -1,632 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/***
|
4 |
-
{
|
5 |
-
Module: photocrati-nextgen_xmlrpc
|
6 |
-
}
|
7 |
-
***/
|
8 |
-
class M_NextGen_XmlRpc extends C_Base_Module
|
9 |
-
{
|
10 |
-
function define()
|
11 |
-
{
|
12 |
-
parent::define(
|
13 |
-
'photocrati-nextgen_xmlrpc',
|
14 |
-
'NextGEN Gallery XML-RPC',
|
15 |
-
'Provides an XML-RPC API for NextGEN Gallery',
|
16 |
-
'0.2',
|
17 |
-
'http://www.nextgen-gallery.com',
|
18 |
-
'Photocrati Media',
|
19 |
-
'http://www.photocrati.com'
|
20 |
-
);
|
21 |
-
}
|
22 |
-
|
23 |
-
function _register_hooks()
|
24 |
-
{
|
25 |
-
add_filter('xmlrpc_methods', array(&$this, 'add_methods') );
|
26 |
-
}
|
27 |
-
|
28 |
-
function add_methods($methods)
|
29 |
-
{
|
30 |
-
$methods['ngg.installed'] = array(&$this, 'get_version');
|
31 |
-
// Image methods
|
32 |
-
$methods['ngg.getImage'] = array(&$this, 'get_image');
|
33 |
-
$methods['ngg.getImages'] = array(&$this, 'get_images');
|
34 |
-
$methods['ngg.uploadImage'] = array(&$this, 'upload_image');
|
35 |
-
$methods['ngg.editImage'] = array(&$this, 'edit_image');
|
36 |
-
$methods['ngg.deleteImage'] = array(&$this, 'delete_image');
|
37 |
-
// Gallery methods
|
38 |
-
$methods['ngg.getGallery'] = array(&$this, 'get_gallery');
|
39 |
-
$methods['ngg.getGalleries'] = array(&$this, 'get_galleries');
|
40 |
-
$methods['ngg.newGallery'] = array(&$this, 'create_gallery');
|
41 |
-
$methods['ngg.editGallery'] = array(&$this, 'edit_gallery');
|
42 |
-
$methods['ngg.deleteGallery'] = array(&$this, 'delete_gallery');
|
43 |
-
|
44 |
-
// Album methods
|
45 |
-
$methods['ngg.getAlbum'] = array(&$this, 'get_album');
|
46 |
-
$methods['ngg.getAlbums'] = array(&$this, 'get_albums');
|
47 |
-
$methods['ngg.newAlbum'] = array(&$this, 'create_album');
|
48 |
-
$methods['ngg.editAlbum'] = array(&$this, 'edit_album');
|
49 |
-
$methods['ngg.deleteAlbum'] = array(&$this, 'delete_album');
|
50 |
-
|
51 |
-
return $methods;
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Gets the version of NextGEN Gallery installed
|
56 |
-
* @return string
|
57 |
-
*/
|
58 |
-
function get_version()
|
59 |
-
{
|
60 |
-
return array('version' => NEXTGEN_GALLERY_PLUGIN_VERSION);
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Login a user
|
65 |
-
* @param $username
|
66 |
-
* @param $password
|
67 |
-
* @return bool|WP_Error|WP_User
|
68 |
-
*/
|
69 |
-
function _login($username, $password, $blog_id=1)
|
70 |
-
{
|
71 |
-
$retval = FALSE;
|
72 |
-
|
73 |
-
if (!is_a(($user_obj = wp_authenticate($username, $password)), 'WP_Error')) {
|
74 |
-
wp_set_current_user($user_obj->ID);
|
75 |
-
$retval = $user_obj;
|
76 |
-
|
77 |
-
if (is_multisite()) switch_to_blog($blog_id);
|
78 |
-
}
|
79 |
-
|
80 |
-
return $retval;
|
81 |
-
}
|
82 |
-
|
83 |
-
function _can_manage_gallery($gallery_id_or_obj, $check_upload_capability=FALSE)
|
84 |
-
{
|
85 |
-
$retval = FALSE;
|
86 |
-
|
87 |
-
// Get the gallery object, if we don't have it already
|
88 |
-
$gallery = NULL;
|
89 |
-
if (is_int($gallery_id_or_obj)) {
|
90 |
-
$gallery_mapper = C_Gallery_Mapper::get_instance();
|
91 |
-
$gallery = $gallery_mapper->find($gallery_id_or_obj);
|
92 |
-
}
|
93 |
-
else $gallery = $gallery_id_or_obj;
|
94 |
-
|
95 |
-
if ($gallery) {
|
96 |
-
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
97 |
-
$actor = $security->get_current_actor();
|
98 |
-
if ($actor->get_entity_id() == $gallery->author) $retval = TRUE;
|
99 |
-
elseif ($actor->is_allowed('nextgen_edit_gallery_unowned')) $retval = TRUE;
|
100 |
-
|
101 |
-
// Optionally, check if the user can upload to this gallery
|
102 |
-
if ($retval && $check_upload_capability) {
|
103 |
-
$retval = $actor->is_allowed('nextgen_upload_image');
|
104 |
-
}
|
105 |
-
}
|
106 |
-
|
107 |
-
return $retval;
|
108 |
-
}
|
109 |
-
|
110 |
-
function _add_gallery_properties($gallery)
|
111 |
-
{
|
112 |
-
if (is_object($gallery)) {
|
113 |
-
|
114 |
-
$image_mapper = C_Image_Mapper::get_instance();
|
115 |
-
$storage = C_Gallery_Storage::get_instance();
|
116 |
-
|
117 |
-
// Vladimir's Lightroom plugins requires the 'id' to be a string
|
118 |
-
// Ask if he can accept integers as well. Currently, integers break
|
119 |
-
// his plugin
|
120 |
-
$gallery->gid = (string) $gallery->gid;
|
121 |
-
|
122 |
-
// Set other gallery properties
|
123 |
-
$image_counter = array_pop($image_mapper->select('DISTINCT COUNT(*) as counter')->where(array("galleryid = %d", $gallery->gid))->run_query(FALSE, TRUE));
|
124 |
-
$gallery->counter = $image_counter->counter;
|
125 |
-
$gallery->abspath = $storage->get_gallery_abspath($gallery);
|
126 |
-
}
|
127 |
-
else return FALSE;
|
128 |
-
|
129 |
-
return TRUE;
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* Returns a single image object
|
134 |
-
* @param $args (blog_id, username, password, pid)
|
135 |
-
*/
|
136 |
-
function get_image($args, $return_model=FALSE)
|
137 |
-
{
|
138 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
139 |
-
$blog_id = intval($args[0]);
|
140 |
-
$username = strval($args[1]);
|
141 |
-
$password = strval($args[2]);
|
142 |
-
$image_id = intval($args[3]);
|
143 |
-
|
144 |
-
// Authenticate the user
|
145 |
-
if ($this->_login($username, $password, $blog_id)) {
|
146 |
-
|
147 |
-
// Try to find the image
|
148 |
-
$image_mapper = C_Image_Mapper::get_instance();
|
149 |
-
if (($image = $image_mapper->find($image_id, TRUE))) {
|
150 |
-
|
151 |
-
// Try to find the gallery that the image belongs to
|
152 |
-
$gallery_mapper = C_Gallery_Mapper::get_instance();
|
153 |
-
if (($gallery = $gallery_mapper->find($image->galleryid))) {
|
154 |
-
|
155 |
-
// Does the user have sufficient capabilities?
|
156 |
-
if ($this->_can_manage_gallery($gallery)) {
|
157 |
-
$storage = C_Gallery_Storage::get_instance();
|
158 |
-
$image->imageURL = $storage->get_image_url($image,'full', TRUE);
|
159 |
-
$image->thumbURL = $storage->get_thumb_url($image, TRUE);
|
160 |
-
$image->imagePath = $storage->get_image_abspath($image);
|
161 |
-
$image->thumbPath = $storage->get_thumb_abspath($image);
|
162 |
-
$retval = $return_model ? $image : $image->get_entity();
|
163 |
-
}
|
164 |
-
|
165 |
-
else {
|
166 |
-
$retval = new IXR_Error(403, "You don't have permission to manage gallery #{$image->galleryid}");
|
167 |
-
}
|
168 |
-
}
|
169 |
-
|
170 |
-
// No gallery found
|
171 |
-
else {
|
172 |
-
$retval = new IXR_Error(404, "Gallery not found (with id #{$image->gallerid}");
|
173 |
-
}
|
174 |
-
}
|
175 |
-
|
176 |
-
// No image found
|
177 |
-
else $retval = FALSE;
|
178 |
-
}
|
179 |
-
|
180 |
-
return $retval;
|
181 |
-
}
|
182 |
-
|
183 |
-
/**
|
184 |
-
* Returns a collection of images
|
185 |
-
* @param $args (blog_id, username, password, gallery_id
|
186 |
-
*/
|
187 |
-
function get_images($args)
|
188 |
-
{
|
189 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
190 |
-
$blog_id = intval($args[0]);
|
191 |
-
$username = strval($args[1]);
|
192 |
-
$password = strval($args[2]);
|
193 |
-
$gallery_id = intval($args[3]);
|
194 |
-
|
195 |
-
// Authenticate the user
|
196 |
-
if ($this->_login($username, $password, $blog_id)) {
|
197 |
-
|
198 |
-
// Try to find the gallery
|
199 |
-
$mapper = C_Gallery_Mapper::get_instance();
|
200 |
-
if (($gallery = $mapper->find($gallery_id, TRUE))) {
|
201 |
-
|
202 |
-
// Does the user have sufficient capabilities?
|
203 |
-
if ($this->_can_manage_gallery($gallery)) {
|
204 |
-
$retval = $gallery->get_images();
|
205 |
-
}
|
206 |
-
else {
|
207 |
-
$retval = new IXR_Error(403, "You don't have permission to manage gallery #{$image->galleryid}");
|
208 |
-
}
|
209 |
-
}
|
210 |
-
|
211 |
-
// No gallery found
|
212 |
-
else {
|
213 |
-
$retval = new IXR_Error(404, "Gallery not found (with id #{$image->gallerid}");
|
214 |
-
}
|
215 |
-
}
|
216 |
-
|
217 |
-
return $retval;
|
218 |
-
}
|
219 |
-
|
220 |
-
/**
|
221 |
-
* Uploads an image to a particular gallery
|
222 |
-
* @param $args (blog_id, username, password, data)
|
223 |
-
*
|
224 |
-
* Data is an assoc array:
|
225 |
-
* o string name
|
226 |
-
* o string type (optional)
|
227 |
-
* o base64 bits
|
228 |
-
* o bool overwrite (optional)
|
229 |
-
* o int gallery
|
230 |
-
* o int image_id (optional)
|
231 |
-
* @return image
|
232 |
-
*/
|
233 |
-
function upload_image($args)
|
234 |
-
{
|
235 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
236 |
-
$blog_id = intval($args[0]);
|
237 |
-
$username = strval($args[1]);
|
238 |
-
$password = strval($args[2]);
|
239 |
-
$data = $args[3];
|
240 |
-
$gallery_id = isset($data['gallery_id']) ? $data['gallery_id'] : $data['gallery'];
|
241 |
-
|
242 |
-
// Authenticate the user
|
243 |
-
if ($this->_login($username, $password, $blog_id)) {
|
244 |
-
|
245 |
-
// Try to find the gallery
|
246 |
-
$mapper = C_Gallery_Mapper::get_instance();
|
247 |
-
if (($gallery = $mapper->find($gallery_id, TRUE))) {
|
248 |
-
|
249 |
-
// Does the user have sufficient capabilities?
|
250 |
-
if ($this->_can_manage_gallery($gallery, TRUE)) {
|
251 |
-
|
252 |
-
// Upload the image
|
253 |
-
$storage = C_Gallery_Storage::get_instance();
|
254 |
-
$image = $storage->upload_base64_image($gallery, $data['bits'], $data['name'], $data['image_id']);
|
255 |
-
if ($image) {
|
256 |
-
$storage = C_Gallery_Storage::get_instance();
|
257 |
-
$image->imageURL = $storage->get_image_url($image);
|
258 |
-
$image->thumbURL = $storage->get_thumb_url($image);
|
259 |
-
$image->imagePath = $storage->get_image_abspath($image);
|
260 |
-
$image->thumbPath = $storage->get_thumb_abspath($image);
|
261 |
-
$retval = $image->get_entity();
|
262 |
-
}
|
263 |
-
else
|
264 |
-
$retval = new IXR_Error(500, "Could not upload image");
|
265 |
-
}
|
266 |
-
else {
|
267 |
-
$retval = new IXR_Error(403, "You don't have permission to upload to gallery #{$image->galleryid}");
|
268 |
-
}
|
269 |
-
}
|
270 |
-
|
271 |
-
// No gallery found
|
272 |
-
else {
|
273 |
-
$retval = new IXR_Error(404, "Gallery not found (with id #{$image->gallerid}");
|
274 |
-
}
|
275 |
-
}
|
276 |
-
|
277 |
-
return $retval;
|
278 |
-
}
|
279 |
-
|
280 |
-
/**
|
281 |
-
* Edits an image object
|
282 |
-
* @param $args (blog_id, username, password, image_id, alttext, description, exclude, other_properties
|
283 |
-
*/
|
284 |
-
function edit_image($args)
|
285 |
-
{
|
286 |
-
$alttext = strval($args[4]);
|
287 |
-
$description = strval($args[5]);
|
288 |
-
$exclude = intval($args[6]);
|
289 |
-
$properties = isset($args[7]) ? (array)$args[7] : array();
|
290 |
-
|
291 |
-
$retval = $this->get_image($args, TRUE);
|
292 |
-
if (!($retval instanceof IXR_Error)) {
|
293 |
-
$retval->alttext = $alttext;
|
294 |
-
$retval->description = $description;
|
295 |
-
$retval->exclude = $exclude;
|
296 |
-
|
297 |
-
// Other properties can be specified using an associative array
|
298 |
-
foreach ($properties as $key => $value) {
|
299 |
-
$retval->$key = $value;
|
300 |
-
}
|
301 |
-
|
302 |
-
// Unset any dynamic properties not part of the schema
|
303 |
-
foreach (array('imageURL', 'thumbURL', 'imagePath', 'thumbPath') as $key) {
|
304 |
-
unset($retval->$key);
|
305 |
-
}
|
306 |
-
|
307 |
-
$retval = $retval->save();
|
308 |
-
}
|
309 |
-
|
310 |
-
return $retval;
|
311 |
-
}
|
312 |
-
|
313 |
-
/**
|
314 |
-
* Deletes an existing image from a gallery
|
315 |
-
* @param $args (blog_id, username, password, image_id)
|
316 |
-
*/
|
317 |
-
function delete_image($args)
|
318 |
-
{
|
319 |
-
$retval = $this->get_image($args, TRUE);
|
320 |
-
if (!($retval instanceof IXR_Error)) {
|
321 |
-
$retval = $retval->destroy();
|
322 |
-
}
|
323 |
-
return $retval;
|
324 |
-
}
|
325 |
-
|
326 |
-
/**
|
327 |
-
* Creates a new gallery
|
328 |
-
* @param $args (blog_id, username, password, title)
|
329 |
-
*/
|
330 |
-
function create_gallery($args)
|
331 |
-
{
|
332 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
333 |
-
$blog_id = intval($args[0]);
|
334 |
-
$username = strval($args[1]);
|
335 |
-
$password = strval($args[2]);
|
336 |
-
$title = strval($args[3]);
|
337 |
-
|
338 |
-
// Authenticate the user
|
339 |
-
if ($this->_login($username, $password, $blog_id)) {
|
340 |
-
|
341 |
-
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
342 |
-
if ($security->is_allowed('nextgen_edit_gallery')) {
|
343 |
-
$mapper = C_Gallery_Mapper::get_instance();
|
344 |
-
if (($gallery = $mapper->create(array('title' => $title))) && $gallery->save()) {
|
345 |
-
$retval = $gallery->id();
|
346 |
-
}
|
347 |
-
else $retval = new IXR_Error(500, "Unable to create gallery");
|
348 |
-
|
349 |
-
}
|
350 |
-
else $retval = new IXR_Error(403, "Sorry, but you must be able to manage galleries. Check your roles/capabilities.");
|
351 |
-
}
|
352 |
-
|
353 |
-
return $retval;
|
354 |
-
}
|
355 |
-
|
356 |
-
/**
|
357 |
-
* Edits an existing gallery
|
358 |
-
* @param $args (blog_id, username, password, gallery_id, name, title, description, preview_pic_id)
|
359 |
-
*/
|
360 |
-
function edit_gallery($args)
|
361 |
-
{
|
362 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
363 |
-
$blog_id = intval($args[0]);
|
364 |
-
$username = strval($args[1]);
|
365 |
-
$password = strval($args[2]);
|
366 |
-
$gallery_id = intval($args[3]);
|
367 |
-
$name = strval($args[4]);
|
368 |
-
$title = strval($args[5]);
|
369 |
-
$galdesc = strval($args[6]);
|
370 |
-
$image_id = intval($args[7]);
|
371 |
-
$properties = isset($args[8]) ? (array) $args[7] : array();
|
372 |
-
|
373 |
-
// Authenticate the user
|
374 |
-
if ($this->_login($username, $password, $blog_id)) {
|
375 |
-
|
376 |
-
$mapper = C_Gallery_Mapper::get_instance();
|
377 |
-
if (($gallery = $mapper->find($gallery_id, TRUE))) {
|
378 |
-
if ($this->_can_manage_gallery($gallery)) {
|
379 |
-
$gallery->name = $name;
|
380 |
-
$gallery->title = $title;
|
381 |
-
$gallery->galdesc = $galdesc;
|
382 |
-
$gallery->previewpic = $image_id;
|
383 |
-
foreach ($properties as $key => $value) {
|
384 |
-
$gallery->$key = $value;
|
385 |
-
}
|
386 |
-
|
387 |
-
// Unset dynamic properties not part of the schema
|
388 |
-
unset($gallery->counter);
|
389 |
-
unset($gallery->abspath);
|
390 |
-
|
391 |
-
$retval = $gallery->save();
|
392 |
-
}
|
393 |
-
else $retval = new IXR_Error(403, "You don't have permission to modify this gallery");
|
394 |
-
}
|
395 |
-
else $retval = new IXR_Error(404, "Gallery #{$gallery_id} doesn't exist");
|
396 |
-
}
|
397 |
-
|
398 |
-
return $retval;
|
399 |
-
}
|
400 |
-
|
401 |
-
/**
|
402 |
-
* Returns all galleries
|
403 |
-
* @param $args (blog_id, username, password)
|
404 |
-
*/
|
405 |
-
function get_galleries($args)
|
406 |
-
{
|
407 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
408 |
-
$blog_id = intval($args[0]);
|
409 |
-
$username = strval($args[1]);
|
410 |
-
$password = strval($args[2]);
|
411 |
-
|
412 |
-
// Authenticate the user
|
413 |
-
if ($this->_login($username, $password, $blog_id)) {
|
414 |
-
|
415 |
-
// Do we have permission?
|
416 |
-
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
417 |
-
if ($security->is_allowed('nextgen_edit_gallery')) {
|
418 |
-
$mapper = C_Gallery_Mapper::get_instance();
|
419 |
-
$retval = array();
|
420 |
-
foreach ($mapper->find_all() as $gallery) {
|
421 |
-
$this->_add_gallery_properties($gallery);
|
422 |
-
$retval[$gallery->{$gallery->id_field}] = (array)$gallery;
|
423 |
-
}
|
424 |
-
}
|
425 |
-
else $retval = new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries' ) );
|
426 |
-
}
|
427 |
-
|
428 |
-
return $retval;
|
429 |
-
}
|
430 |
-
|
431 |
-
/**
|
432 |
-
* Gets a single gallery instance
|
433 |
-
* @param $args (blog_id, username, password, gallery_id)
|
434 |
-
*/
|
435 |
-
function get_gallery($args, $return_model=FALSE)
|
436 |
-
{
|
437 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
438 |
-
$blog_id = intval($args[0]);
|
439 |
-
$username = strval($args[1]);
|
440 |
-
$password = strval($args[2]);
|
441 |
-
$gallery_id = intval($args[3]);
|
442 |
-
|
443 |
-
// Authenticate the user
|
444 |
-
if ($this->_login($username, $password, $blog_id)) {
|
445 |
-
$mapper = C_Gallery_Mapper::get_instance();
|
446 |
-
if (($gallery = $mapper->find($gallery_id, TRUE))) {
|
447 |
-
if ($this->_can_manage_gallery($gallery)) {
|
448 |
-
$this->_add_gallery_properties($gallery);
|
449 |
-
$retval = $return_model ? $gallery : $gallery->get_entity();
|
450 |
-
}
|
451 |
-
else $retval = new IXR_Error(403, "Sorry, but you don't have permission to manage gallery #{$gallery->gid}");
|
452 |
-
}
|
453 |
-
else $retval = FALSE;
|
454 |
-
}
|
455 |
-
|
456 |
-
return $retval;
|
457 |
-
}
|
458 |
-
|
459 |
-
/**
|
460 |
-
* Deletes a gallery
|
461 |
-
* @param $args (blog_id, username, password, gallery_id)
|
462 |
-
*/
|
463 |
-
function delete_gallery($args)
|
464 |
-
{
|
465 |
-
$retval = $this->get_gallery($args, TRUE);
|
466 |
-
|
467 |
-
if (!($retval instanceof IXR_Error)) {
|
468 |
-
$retval = $retval->destroy();
|
469 |
-
}
|
470 |
-
|
471 |
-
return $retval;
|
472 |
-
}
|
473 |
-
|
474 |
-
/**
|
475 |
-
* Creates a new album
|
476 |
-
* @param $args (blog_id, username, password, title, previewpic, description, galleries
|
477 |
-
*/
|
478 |
-
function create_album($args)
|
479 |
-
{
|
480 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
481 |
-
$blog_id = intval($args[0]);
|
482 |
-
$username = strval($args[1]);
|
483 |
-
$password = strval($args[2]);
|
484 |
-
$title = strval($args[3]);
|
485 |
-
$previewpic = isset($args[4]) ? intval($args[4]): 0;
|
486 |
-
$desc = isset($args[5]) ? strval($args[5]) : '';
|
487 |
-
$sortorder = isset($args[6]) ? $args[6] : '';
|
488 |
-
$page_id = isset($args[7]) ? intval($args[7]) : 0;
|
489 |
-
|
490 |
-
// Authenticate the user
|
491 |
-
if ($this->_login($username, $password, $blog_id)) {
|
492 |
-
|
493 |
-
// Is request allowed?
|
494 |
-
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
495 |
-
if ($security->is_allowed('nextgen_edit_album')) {
|
496 |
-
|
497 |
-
$mapper = C_Album_Mapper::get_instance();
|
498 |
-
$album = $mapper->create(array(
|
499 |
-
'name' => $title,
|
500 |
-
'previewpic' => $previewpic,
|
501 |
-
'albumdesc' => $desc,
|
502 |
-
'sortorder' => $sortorder,
|
503 |
-
'pageid' => $page_id
|
504 |
-
));
|
505 |
-
|
506 |
-
if ($album->save()) $retval = $album->id();
|
507 |
-
else $retval = new IXR_Error(500, "Unable to create album");
|
508 |
-
}
|
509 |
-
}
|
510 |
-
|
511 |
-
return $retval;
|
512 |
-
}
|
513 |
-
|
514 |
-
|
515 |
-
/**
|
516 |
-
* Returns all albums
|
517 |
-
* @param $args (blog_id, username, password)
|
518 |
-
* @return IXR_Error
|
519 |
-
*/
|
520 |
-
function get_albums($args)
|
521 |
-
{
|
522 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
523 |
-
$blog_id = intval($args[0]);
|
524 |
-
$username = strval($args[1]);
|
525 |
-
$password = strval($args[2]);
|
526 |
-
|
527 |
-
// Authenticate the user
|
528 |
-
if ($this->_login($username, $password, $blog_id)) {
|
529 |
-
|
530 |
-
// Are we allowed?
|
531 |
-
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
532 |
-
if ($security->is_allowed('nextgen_edit_album')) {
|
533 |
-
|
534 |
-
// Fetch all albums
|
535 |
-
$mapper = C_Album_Mapper::get_instance();
|
536 |
-
$retval = array();
|
537 |
-
foreach ($mapper->find_all() as $album) {
|
538 |
-
// Vladimir's Lightroom plugins requires the 'id' to be a string
|
539 |
-
// Ask if he can accept integers as well. Currently, integers break
|
540 |
-
// his plugin
|
541 |
-
$album->id = (string) $album->id;
|
542 |
-
$album->galleries = $album->sortorder;
|
543 |
-
|
544 |
-
$retval[$album->{$album->id_field}] = (array) $album;
|
545 |
-
}
|
546 |
-
}
|
547 |
-
else $retval = new IXR_Error(403, "Sorry, you must be able to manage albums");
|
548 |
-
|
549 |
-
|
550 |
-
}
|
551 |
-
|
552 |
-
return $retval;
|
553 |
-
}
|
554 |
-
|
555 |
-
/**
|
556 |
-
* Gets a single album
|
557 |
-
* @param $args (blog_id, username, password, album_id)
|
558 |
-
*/
|
559 |
-
function get_album($args, $return_model=FALSE)
|
560 |
-
{
|
561 |
-
$retval = new IXR_Error(403, 'Invalid username or password');
|
562 |
-
$blog_id = intval($args[0]);
|
563 |
-
$username = strval($args[1]);
|
564 |
-
$password = strval($args[2]);
|
565 |
-
$album_id = intval($args[3]);
|
566 |
-
|
567 |
-
// Authenticate the user
|
568 |
-
if ($this->_login($username, $password, $blog_id)) {
|
569 |
-
|
570 |
-
// Are we allowed?
|
571 |
-
$security = $this->get_registry()->get_utility('I_Security_Manager');
|
572 |
-
if ($security->is_allowed('nextgen_edit_album')) {
|
573 |
-
$mapper = C_Album_Mapper::get_instance();
|
574 |
-
if (($album = $mapper->find($album_id, TRUE))) {
|
575 |
-
// Vladimir's Lightroom plugins requires the 'id' to be a string
|
576 |
-
// Ask if he can accept integers as well. Currently, integers break
|
577 |
-
// his plugin
|
578 |
-
$album->id = (string) $album->id;
|
579 |
-
$album->galleries = $album->sortorder;
|
580 |
-
|
581 |
-
$retval = $return_model ? $album : $album->get_entity();
|
582 |
-
}
|
583 |
-
else $retval = FALSE;
|
584 |
-
|
585 |
-
}
|
586 |
-
else $retval = new IXR_Error(403, "Sorry, you must be able to manage albums");
|
587 |
-
}
|
588 |
-
|
589 |
-
return $retval;
|
590 |
-
}
|
591 |
-
|
592 |
-
/**
|
593 |
-
* Deletes an existing album
|
594 |
-
* @param $args (blog_id, username, password, album_id)
|
595 |
-
*/
|
596 |
-
function delete_album($args)
|
597 |
-
{
|
598 |
-
$retval = $this->get_album($args, TRUE);
|
599 |
-
|
600 |
-
if (!($retval instanceof IXR_Error)) {
|
601 |
-
$retval = $retval->destroy();
|
602 |
-
}
|
603 |
-
|
604 |
-
return $retval;
|
605 |
-
}
|
606 |
-
|
607 |
-
/**
|
608 |
-
* Edit an existing album
|
609 |
-
* @param $args (blog_id, username, password, album_id, name, preview pic id, description, galleries)
|
610 |
-
*/
|
611 |
-
function edit_album($args)
|
612 |
-
{
|
613 |
-
$retval = $this->get_album($args, TRUE);
|
614 |
-
|
615 |
-
if (!($retval instanceof IXR_Error)) {
|
616 |
-
$retval->name = strval($args[4]);
|
617 |
-
$retval->previewpic = intval($args[5]);
|
618 |
-
$retval->albumdesc = strval($args[6]);
|
619 |
-
$retval->sortorder = $args[7];
|
620 |
-
|
621 |
-
$properties = isset($args[8]) ? $args[8] : array();
|
622 |
-
foreach ($properties as $key => $value) $retval->$key = $value;
|
623 |
-
unset($retval->galleries);
|
624 |
-
|
625 |
-
$retval = $retval->save();
|
626 |
-
}
|
627 |
-
|
628 |
-
return $retval;
|
629 |
-
}
|
630 |
-
}
|
631 |
-
|
632 |
-
new M_NextGen_XmlRpc;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/ngglegacy/admin/admin.php
CHANGED
@@ -172,7 +172,7 @@ class nggAdminPanel{
|
|
172 |
|
173 |
add_menu_page( _n( 'Gallery', 'Galleries', 1, 'nggallery' ), _n( 'Gallery', 'Galleries', 1, 'nggallery' ), 'nggallery-wpmu', NGGFOLDER, array (&$this, 'show_network_settings'), path_join(NGGALLERY_URLPATH, 'admin/images/nextgen_16_color.png') );
|
174 |
add_submenu_page( NGGFOLDER , __('Network settings', 'nggallery'), __('Network settings', 'nggallery'), 'nggallery-wpmu', NGGFOLDER, array (&$this, 'show_network_settings'));
|
175 |
-
|
176 |
}
|
177 |
|
178 |
/**
|
@@ -392,7 +392,7 @@ class nggAdminPanel{
|
|
392 |
|
393 |
function enqueue_jquery_ui_theme()
|
394 |
{
|
395 |
-
$settings =
|
396 |
wp_enqueue_style(
|
397 |
$settings->jquery_ui_theme,
|
398 |
$settings->jquery_ui_theme_url,
|
172 |
|
173 |
add_menu_page( _n( 'Gallery', 'Galleries', 1, 'nggallery' ), _n( 'Gallery', 'Galleries', 1, 'nggallery' ), 'nggallery-wpmu', NGGFOLDER, array (&$this, 'show_network_settings'), path_join(NGGALLERY_URLPATH, 'admin/images/nextgen_16_color.png') );
|
174 |
add_submenu_page( NGGFOLDER , __('Network settings', 'nggallery'), __('Network settings', 'nggallery'), 'nggallery-wpmu', NGGFOLDER, array (&$this, 'show_network_settings'));
|
175 |
+
add_submenu_page( NGGFOLDER , __('Reset / Uninstall', 'nggallery'), __('Reset / Uninstall', 'nggallery'), 'activate_plugins', 'nggallery-setup', array (&$this, 'show_menu'));
|
176 |
}
|
177 |
|
178 |
/**
|
392 |
|
393 |
function enqueue_jquery_ui_theme()
|
394 |
{
|
395 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
396 |
wp_enqueue_style(
|
397 |
$settings->jquery_ui_theme,
|
398 |
$settings->jquery_ui_theme_url,
|
products/photocrati_nextgen/modules/ngglegacy/admin/album.php
CHANGED
@@ -70,6 +70,19 @@ class nggManageAlbum {
|
|
70 |
return $this->_registry;
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
/**
|
74 |
* Init the album output
|
75 |
*
|
@@ -79,6 +92,9 @@ class nggManageAlbum {
|
|
79 |
}
|
80 |
|
81 |
function controller() {
|
|
|
|
|
|
|
82 |
|
83 |
if (isset ($_POST['update']) || isset( $_POST['delete'] ) || isset( $_POST['add'] ) )
|
84 |
$this->processor();
|
@@ -87,43 +103,12 @@ class nggManageAlbum {
|
|
87 |
$this->update_album();
|
88 |
|
89 |
// get first all galleries & albums
|
90 |
-
$this->albums =
|
91 |
-
|
92 |
-
$this->albums[$album->{$album->id_field}] = $album;
|
93 |
-
}
|
94 |
-
|
95 |
-
$this->galleries = array();
|
96 |
-
foreach (C_Gallery_Mapper::get_instance()->find_all() as $gallery) {
|
97 |
-
$this->galleries[$gallery->{$gallery->id_field}] = $gallery;
|
98 |
-
}
|
99 |
$this->num_albums = count( $this->albums );
|
100 |
$this->num_galleries = count( $this->galleries );
|
101 |
-
|
102 |
$this->output();
|
103 |
-
}
|
104 |
-
|
105 |
-
function _get_album($id)
|
106 |
-
{
|
107 |
-
$retval = NULL;
|
108 |
-
|
109 |
-
if (isset($this->albums[$id])) {
|
110 |
-
$retval = $this->albums[$id];
|
111 |
-
}
|
112 |
-
else $retval = C_Album_Mapper::get_instance()->find($id);
|
113 |
-
|
114 |
-
return $retval;
|
115 |
-
}
|
116 |
-
|
117 |
-
function _get_gallery($id)
|
118 |
-
{
|
119 |
-
$retval = NULL;
|
120 |
-
|
121 |
-
if (isset($this->galleries[$id])) {
|
122 |
-
$retval = $this->galleries[$id];
|
123 |
-
}
|
124 |
-
else $retval = C_Gallery_Mapper::get_instance()->find($id);
|
125 |
|
126 |
-
return $retval;
|
127 |
}
|
128 |
|
129 |
/**
|
@@ -134,23 +119,27 @@ class nggManageAlbum {
|
|
134 |
*/
|
135 |
function _set_album_preview_pic($album)
|
136 |
{
|
137 |
-
$
|
|
|
138 |
|
139 |
while(!$album->previewpic) {
|
140 |
// If the album is missing a preview pic, set one!
|
141 |
-
if (($first_entity =
|
142 |
|
143 |
// Is the first entity a gallery or album
|
144 |
if (substr($first_entity, 0, 1) == 'a') {
|
145 |
-
$subalbum = $this->
|
146 |
if ($subalbum->previewpic) {
|
147 |
$album->previewpic = $subalbum->previewpic;
|
|
|
148 |
}
|
149 |
}
|
150 |
else {
|
151 |
-
$
|
152 |
-
|
|
|
153 |
$album->previewpic = $gallery->previewpic;
|
|
|
154 |
}
|
155 |
}
|
156 |
}
|
@@ -173,23 +162,23 @@ class nggManageAlbum {
|
|
173 |
|
174 |
$album = new stdClass();
|
175 |
$album->name = $_POST['newalbum'];
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
}
|
186 |
|
187 |
-
|
188 |
|
189 |
$gid = array();
|
190 |
|
191 |
// Get the current album being updated
|
192 |
-
$album = $this->
|
193 |
|
194 |
// Get the list of galleries/sub-albums to be added to this album
|
195 |
parse_str($_REQUEST['sortorder']);
|
@@ -201,7 +190,7 @@ class nggManageAlbum {
|
|
201 |
$this->_set_album_preview_pic($album);
|
202 |
|
203 |
// Save the changes
|
204 |
-
|
205 |
|
206 |
//hook for other plugins
|
207 |
do_action('ngg_update_album_sortorder', $this->currentID);
|
@@ -215,36 +204,34 @@ class nggManageAlbum {
|
|
215 |
if (!nggGallery::current_user_can( 'NextGEN Add/Delete album' ))
|
216 |
wp_die(__('Cheatin’ uh?'));
|
217 |
|
218 |
-
$this->currentID
|
219 |
|
220 |
-
|
221 |
-
|
222 |
-
do_action('ngg_delete_album', $this->currentID);
|
223 |
|
224 |
-
|
225 |
-
|
226 |
|
|
|
227 |
nggGallery::show_message(__('Album deleted','nggallery'));
|
228 |
-
}
|
229 |
-
|
230 |
}
|
231 |
|
232 |
}
|
233 |
|
234 |
function update_album() {
|
|
|
235 |
|
236 |
check_admin_referer('ngg_thickbox_form');
|
237 |
|
238 |
if (!nggGallery::current_user_can( 'NextGEN Edit album settings' ))
|
239 |
wp_die(__('Cheatin’ uh?'));
|
240 |
|
241 |
-
$this->currentID
|
242 |
-
$album = $this->_get_album($this->currentID);
|
243 |
$album->name = stripslashes($_POST['album_name']);
|
244 |
$album->albumdesc = stripslashes($_POST['album_desc']);
|
245 |
$album->previewpic = (int)$_POST['previewpic'];
|
246 |
$album->pageid = (int)$_POST['pageid'];
|
247 |
-
$result =
|
248 |
|
249 |
//hook for other plugin to update the fields
|
250 |
do_action('ngg_update_album', $this->currentID, $_POST);
|
@@ -257,12 +244,11 @@ class nggManageAlbum {
|
|
257 |
|
258 |
global $wpdb, $nggdb;
|
259 |
|
260 |
-
|
261 |
|
262 |
//TODO:Code MUST be optimized, how to flag a used gallery better ?
|
263 |
$used_list = $this->get_used_galleries();
|
264 |
|
265 |
-
$album = $this->_get_album($this->currentID);
|
266 |
?>
|
267 |
|
268 |
<script type="text/javascript">
|
@@ -412,14 +398,14 @@ function showDialog() {
|
|
412 |
<option value="0" ><?php esc_html_e('No album selected', 'nggallery') ?></option>
|
413 |
<?php
|
414 |
if( is_array($this->albums) ) {
|
415 |
-
foreach($this->albums as $
|
416 |
-
$selected = ($this->currentID == $
|
417 |
-
echo '<option value="' . $
|
418 |
}
|
419 |
}
|
420 |
?>
|
421 |
</select>
|
422 |
-
<?php if ($
|
423 |
<input class="button-primary" type="submit" name="update" value="<?php esc_attr_e('Update', 'nggallery'); ?>"/>
|
424 |
<?php if(nggGallery::current_user_can( 'NextGEN Edit album settings' )) { ?>
|
425 |
<input class="button-secondary" type="submit" name="showThickbox" value="<?php esc_attr_e( 'Edit album', 'nggallery'); ?>" onclick="showDialog(); return false;" />
|
@@ -461,8 +447,8 @@ function showDialog() {
|
|
461 |
<div id="albumContainer" class="widget-holder">
|
462 |
<?php
|
463 |
if( is_array( $this->albums ) ) {
|
464 |
-
foreach($this->albums as $
|
465 |
-
$this->get_container('a' . $
|
466 |
}
|
467 |
}
|
468 |
?>
|
@@ -479,7 +465,7 @@ function showDialog() {
|
|
479 |
|
480 |
if( is_array( $this->galleries ) ) {
|
481 |
//get the array of galleries
|
482 |
-
$sort_array =
|
483 |
foreach($this->galleries as $gallery) {
|
484 |
if (!in_array($gallery->gid, $sort_array)) {
|
485 |
if (in_array($gallery->gid,$used_list))
|
@@ -495,13 +481,17 @@ function showDialog() {
|
|
495 |
|
496 |
<!-- /#target-album -->
|
497 |
<div class="widget target-album widget-left">
|
498 |
-
|
|
|
|
|
|
|
|
|
499 |
<div class="widget-top">
|
500 |
<h3><?php esc_html_e('Album ID', 'nggallery'); ?> <?php echo $album->id . ' : ' . esc_html( $album->name ); ?> </h3>
|
501 |
</div>
|
502 |
<div id="galleryContainer" class="widget-holder target">
|
503 |
<?php
|
504 |
-
$sort_array = $
|
505 |
foreach($sort_array as $galleryid) {
|
506 |
$this->get_container($galleryid, false);
|
507 |
}
|
@@ -522,7 +512,7 @@ function showDialog() {
|
|
522 |
</div><!-- /#container -->
|
523 |
</div><!-- /#wrap -->
|
524 |
|
525 |
-
<?php if ($
|
526 |
<!-- #editalbum -->
|
527 |
<div id="editalbum" style="display: none;" >
|
528 |
<form id="form-edit-album" method="POST" accept-charset="utf-8">
|
@@ -611,7 +601,7 @@ function showDialog() {
|
|
611 |
// if the id started with a 'a', then it's a sub album
|
612 |
if (substr( $id, 0, 1) == 'a') {
|
613 |
|
614 |
-
if ( !$album = $this->
|
615 |
return;
|
616 |
|
617 |
$obj['id'] = $album->id;
|
@@ -630,7 +620,7 @@ function showDialog() {
|
|
630 |
$image = $nggdb->find_image( $album->previewpic );
|
631 |
if ($image) $thumbURL = @add_query_arg('timestamp', time(), $image->thumbURL);
|
632 |
}
|
633 |
-
$preview_image = $thumbURL ? '<div class="inlinepicture"><img rel="'.$album->previewpic.'" src="' .
|
634 |
}
|
635 |
|
636 |
// this indicates that we have a album container
|
@@ -657,7 +647,7 @@ function showDialog() {
|
|
657 |
$image = $nggdb->find_image( $gallery->previewpic );
|
658 |
$thumbURL = @add_query_arg('timestamp', time(), $image->thumbURL);
|
659 |
}
|
660 |
-
$preview_image = ( !is_null($thumbURL) ) ? '<div class="inlinepicture"><img rel="'.$gallery->previewpic.'" src="' .
|
661 |
}
|
662 |
|
663 |
$prefix = '';
|
@@ -693,8 +683,9 @@ function showDialog() {
|
|
693 |
$used = array();
|
694 |
|
695 |
if ($this->albums) {
|
696 |
-
foreach($this->albums as $
|
697 |
-
|
|
|
698 |
if (!in_array($galleryid, $used))
|
699 |
$used[] = $galleryid;
|
700 |
}
|
70 |
return $this->_registry;
|
71 |
}
|
72 |
|
73 |
+
/**
|
74 |
+
* Gets the album mapper
|
75 |
+
* @return C_Album_Mapper
|
76 |
+
*/
|
77 |
+
function get_album_mapper()
|
78 |
+
{
|
79 |
+
if (!isset($this->_album_mapper)) {
|
80 |
+
$this->_album_mapper = $this->get_registry()->get_utility('I_Album_Mapper');
|
81 |
+
}
|
82 |
+
|
83 |
+
return $this->_album_mapper;
|
84 |
+
}
|
85 |
+
|
86 |
/**
|
87 |
* Init the album output
|
88 |
*
|
92 |
}
|
93 |
|
94 |
function controller() {
|
95 |
+
global $nggdb;
|
96 |
+
|
97 |
+
$this->currentID = isset($_REQUEST['act_album']) ? (int) $_REQUEST['act_album'] : 0 ;
|
98 |
|
99 |
if (isset ($_POST['update']) || isset( $_POST['delete'] ) || isset( $_POST['add'] ) )
|
100 |
$this->processor();
|
103 |
$this->update_album();
|
104 |
|
105 |
// get first all galleries & albums
|
106 |
+
$this->albums = $nggdb->find_all_album();
|
107 |
+
$this->galleries = $nggdb->find_all_galleries();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
$this->num_albums = count( $this->albums );
|
109 |
$this->num_galleries = count( $this->galleries );
|
|
|
110 |
$this->output();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
112 |
}
|
113 |
|
114 |
/**
|
119 |
*/
|
120 |
function _set_album_preview_pic($album)
|
121 |
{
|
122 |
+
$set_previewpic = FALSE;
|
123 |
+
$sortorder = $album->sortorder;
|
124 |
|
125 |
while(!$album->previewpic) {
|
126 |
// If the album is missing a preview pic, set one!
|
127 |
+
if (($first_entity = array_shift($sortorder))) {
|
128 |
|
129 |
// Is the first entity a gallery or album
|
130 |
if (substr($first_entity, 0, 1) == 'a') {
|
131 |
+
$subalbum = $this->get_album_mapper()->find(substr($first_entity, 1));
|
132 |
if ($subalbum->previewpic) {
|
133 |
$album->previewpic = $subalbum->previewpic;
|
134 |
+
$set_previewpic = TRUE;
|
135 |
}
|
136 |
}
|
137 |
else {
|
138 |
+
$gallery_mapper = $this->get_registry()->get_utility('I_Gallery_Mapper');
|
139 |
+
$gallery = $gallery_mapper->find($first_entity);
|
140 |
+
if ($gallery->previewpic) {
|
141 |
$album->previewpic = $gallery->previewpic;
|
142 |
+
$set_previewpic = TRUE;
|
143 |
}
|
144 |
}
|
145 |
}
|
162 |
|
163 |
$album = new stdClass();
|
164 |
$album->name = $_POST['newalbum'];
|
165 |
+
$result = $this->get_album_mapper()->save($album);
|
166 |
+
$this->currentID = $album->{$album->id_field};
|
167 |
+
if (!$this->currentID) $this->currentID = 0;
|
168 |
+
|
169 |
+
//hook for other plugins
|
170 |
+
do_action('ngg_add_album', $this->currentID);
|
171 |
+
|
172 |
+
if ($result)
|
173 |
+
nggGallery::show_message(__('Update Successfully','nggallery'));
|
174 |
}
|
175 |
|
176 |
+
if ( isset($_POST['update']) && ($this->currentID > 0) ) {
|
177 |
|
178 |
$gid = array();
|
179 |
|
180 |
// Get the current album being updated
|
181 |
+
$album = $this->get_album_mapper()->find($this->currentID);
|
182 |
|
183 |
// Get the list of galleries/sub-albums to be added to this album
|
184 |
parse_str($_REQUEST['sortorder']);
|
190 |
$this->_set_album_preview_pic($album);
|
191 |
|
192 |
// Save the changes
|
193 |
+
$this->get_album_mapper()->save($album);
|
194 |
|
195 |
//hook for other plugins
|
196 |
do_action('ngg_update_album_sortorder', $this->currentID);
|
204 |
if (!nggGallery::current_user_can( 'NextGEN Add/Delete album' ))
|
205 |
wp_die(__('Cheatin’ uh?'));
|
206 |
|
207 |
+
$result = nggdb::delete_album( $this->currentID );
|
208 |
|
209 |
+
//hook for other plugins
|
210 |
+
do_action('ngg_delete_album', $this->currentID);
|
|
|
211 |
|
212 |
+
// jump back to main selection
|
213 |
+
$this->currentID = 0;
|
214 |
|
215 |
+
if ($result)
|
216 |
nggGallery::show_message(__('Album deleted','nggallery'));
|
|
|
|
|
217 |
}
|
218 |
|
219 |
}
|
220 |
|
221 |
function update_album() {
|
222 |
+
global $wpdb, $nggdb;
|
223 |
|
224 |
check_admin_referer('ngg_thickbox_form');
|
225 |
|
226 |
if (!nggGallery::current_user_can( 'NextGEN Edit album settings' ))
|
227 |
wp_die(__('Cheatin’ uh?'));
|
228 |
|
229 |
+
$album = $this->get_album_mapper()->find($this->currentID, TRUE);
|
|
|
230 |
$album->name = stripslashes($_POST['album_name']);
|
231 |
$album->albumdesc = stripslashes($_POST['album_desc']);
|
232 |
$album->previewpic = (int)$_POST['previewpic'];
|
233 |
$album->pageid = (int)$_POST['pageid'];
|
234 |
+
$result = $album->save();
|
235 |
|
236 |
//hook for other plugin to update the fields
|
237 |
do_action('ngg_update_album', $this->currentID, $_POST);
|
244 |
|
245 |
global $wpdb, $nggdb;
|
246 |
|
247 |
+
$this->currentID = isset($_REQUEST['act_album']) ? (int) $_REQUEST['act_album'] : 0 ;
|
248 |
|
249 |
//TODO:Code MUST be optimized, how to flag a used gallery better ?
|
250 |
$used_list = $this->get_used_galleries();
|
251 |
|
|
|
252 |
?>
|
253 |
|
254 |
<script type="text/javascript">
|
398 |
<option value="0" ><?php esc_html_e('No album selected', 'nggallery') ?></option>
|
399 |
<?php
|
400 |
if( is_array($this->albums) ) {
|
401 |
+
foreach($this->albums as $album) {
|
402 |
+
$selected = ($this->currentID == $album->id) ? 'selected="selected" ' : '';
|
403 |
+
echo '<option value="' . $album->id . '" ' . $selected . '>' . $album->id . ' - ' . esc_attr( $album->name ) . '</option>'."\n";
|
404 |
}
|
405 |
}
|
406 |
?>
|
407 |
</select>
|
408 |
+
<?php if ($this->currentID > 0){ ?>
|
409 |
<input class="button-primary" type="submit" name="update" value="<?php esc_attr_e('Update', 'nggallery'); ?>"/>
|
410 |
<?php if(nggGallery::current_user_can( 'NextGEN Edit album settings' )) { ?>
|
411 |
<input class="button-secondary" type="submit" name="showThickbox" value="<?php esc_attr_e( 'Edit album', 'nggallery'); ?>" onclick="showDialog(); return false;" />
|
447 |
<div id="albumContainer" class="widget-holder">
|
448 |
<?php
|
449 |
if( is_array( $this->albums ) ) {
|
450 |
+
foreach($this->albums as $album) {
|
451 |
+
$this->get_container('a' . $album->id);
|
452 |
}
|
453 |
}
|
454 |
?>
|
465 |
|
466 |
if( is_array( $this->galleries ) ) {
|
467 |
//get the array of galleries
|
468 |
+
$sort_array = $this->currentID > 0 ? (array) $this->albums[$this->currentID]->galleries : array() ;
|
469 |
foreach($this->galleries as $gallery) {
|
470 |
if (!in_array($gallery->gid, $sort_array)) {
|
471 |
if (in_array($gallery->gid,$used_list))
|
481 |
|
482 |
<!-- /#target-album -->
|
483 |
<div class="widget target-album widget-left">
|
484 |
+
|
485 |
+
<?php
|
486 |
+
if ($this->currentID > 0){
|
487 |
+
$album = $this->albums[$this->currentID];
|
488 |
+
?>
|
489 |
<div class="widget-top">
|
490 |
<h3><?php esc_html_e('Album ID', 'nggallery'); ?> <?php echo $album->id . ' : ' . esc_html( $album->name ); ?> </h3>
|
491 |
</div>
|
492 |
<div id="galleryContainer" class="widget-holder target">
|
493 |
<?php
|
494 |
+
$sort_array = (array) $this->albums[$this->currentID]->galleries;
|
495 |
foreach($sort_array as $galleryid) {
|
496 |
$this->get_container($galleryid, false);
|
497 |
}
|
512 |
</div><!-- /#container -->
|
513 |
</div><!-- /#wrap -->
|
514 |
|
515 |
+
<?php if ($this->currentID > 0) : ?>
|
516 |
<!-- #editalbum -->
|
517 |
<div id="editalbum" style="display: none;" >
|
518 |
<form id="form-edit-album" method="POST" accept-charset="utf-8">
|
601 |
// if the id started with a 'a', then it's a sub album
|
602 |
if (substr( $id, 0, 1) == 'a') {
|
603 |
|
604 |
+
if ( !$album = $this->albums[ substr( $id, 1) ] )
|
605 |
return;
|
606 |
|
607 |
$obj['id'] = $album->id;
|
620 |
$image = $nggdb->find_image( $album->previewpic );
|
621 |
if ($image) $thumbURL = @add_query_arg('timestamp', time(), $image->thumbURL);
|
622 |
}
|
623 |
+
$preview_image = $thumbURL ? '<div class="inlinepicture"><img rel="'.$album->previewpic.'" src="' . esc_url( $thumbURL ). '" /></div>' : '';
|
624 |
}
|
625 |
|
626 |
// this indicates that we have a album container
|
647 |
$image = $nggdb->find_image( $gallery->previewpic );
|
648 |
$thumbURL = @add_query_arg('timestamp', time(), $image->thumbURL);
|
649 |
}
|
650 |
+
$preview_image = ( !is_null($thumbURL) ) ? '<div class="inlinepicture"><img rel="'.$gallery->previewpic.'" src="' . esc_url( $thumbURL ). '" /></div>' : '';
|
651 |
}
|
652 |
|
653 |
$prefix = '';
|
683 |
$used = array();
|
684 |
|
685 |
if ($this->albums) {
|
686 |
+
foreach($this->albums as $key => $value) {
|
687 |
+
$sort_array = $this->albums[$key]->galleries;
|
688 |
+
foreach($sort_array as $galleryid) {
|
689 |
if (!in_array($galleryid, $used))
|
690 |
$used[] = $galleryid;
|
691 |
}
|
products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php
CHANGED
@@ -145,7 +145,7 @@ if ($thumbnail_crop_frame != null)
|
|
145 |
<table width="98%" align="center" style="border:1px solid #DADADA">
|
146 |
<tr>
|
147 |
<td rowspan="3" valign="middle" align="center" width="350" style="background-color:#DADADA;">
|
148 |
-
<img src="<?php echo
|
149 |
</td>
|
150 |
<td width="300" style="background-color : #DADADA;">
|
151 |
<small style="margin-left:6px; display:block;"><?php esc_html_e('Select the area for the thumbnail from the picture on the left.', 'nggallery'); ?></small>
|
@@ -154,10 +154,10 @@ if ($thumbnail_crop_frame != null)
|
|
154 |
<tr>
|
155 |
<td align="center" width="300" height="320">
|
156 |
<div id="previewNewThumb" style="display:none;width:<?php echo $WidthHtmlPrev; ?>px;height:<?php echo $HeightHtmlPrev; ?>px;overflow:hidden; margin-left:5px;">
|
157 |
-
<img src="<?php echo
|
158 |
</div>
|
159 |
<div id="actualThumb">
|
160 |
-
<img src="<?php echo
|
161 |
</div>
|
162 |
</td>
|
163 |
</tr>
|
145 |
<table width="98%" align="center" style="border:1px solid #DADADA">
|
146 |
<tr>
|
147 |
<td rowspan="3" valign="middle" align="center" width="350" style="background-color:#DADADA;">
|
148 |
+
<img src="<?php echo esc_url( $preview_image ); ?>" alt="" id="imageToEdit" />
|
149 |
</td>
|
150 |
<td width="300" style="background-color : #DADADA;">
|
151 |
<small style="margin-left:6px; display:block;"><?php esc_html_e('Select the area for the thumbnail from the picture on the left.', 'nggallery'); ?></small>
|
154 |
<tr>
|
155 |
<td align="center" width="300" height="320">
|
156 |
<div id="previewNewThumb" style="display:none;width:<?php echo $WidthHtmlPrev; ?>px;height:<?php echo $HeightHtmlPrev; ?>px;overflow:hidden; margin-left:5px;">
|
157 |
+
<img src="<?php echo esc_url( $preview_image ); ?>" id="imageToEditPreview" />
|
158 |
</div>
|
159 |
<div id="actualThumb">
|
160 |
+
<img src="<?php echo esc_url( $picture->thumbURL ); ?>?<?php echo time()?>" />
|
161 |
</div>
|
162 |
</td>
|
163 |
</tr>
|
products/photocrati_nextgen/modules/ngglegacy/admin/functions.php
CHANGED
@@ -578,7 +578,7 @@ class nggAdmin{
|
|
578 |
* @param array|int $imagesIds
|
579 |
* @return string result code
|
580 |
*/
|
581 |
-
|
582 |
|
583 |
global $wpdb;
|
584 |
|
578 |
* @param array|int $imagesIds
|
579 |
* @return string result code
|
580 |
*/
|
581 |
+
function import_MetaData($imagesIds) {
|
582 |
|
583 |
global $wpdb;
|
584 |
|
products/photocrati_nextgen/modules/ngglegacy/admin/install.php
CHANGED
@@ -8,8 +8,7 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
8 |
* @access internal
|
9 |
* @return void
|
10 |
*/
|
11 |
-
function nggallery_install(
|
12 |
-
{
|
13 |
|
14 |
global $wpdb , $wp_roles, $wp_version;
|
15 |
|
@@ -36,6 +35,19 @@ function nggallery_install($installer)
|
|
36 |
$role->add_cap('NextGEN Change options');
|
37 |
$role->add_cap('NextGEN Attach Interface');
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
$nggpictures = $wpdb->prefix . 'ngg_pictures';
|
40 |
$nggallery = $wpdb->prefix . 'ngg_gallery';
|
41 |
$nggalbum = $wpdb->prefix . 'ngg_album';
|
@@ -55,8 +67,8 @@ function nggallery_install($installer)
|
|
55 |
meta_data LONGTEXT,
|
56 |
PRIMARY KEY (pid),
|
57 |
KEY post_id (post_id)
|
58 |
-
);";
|
59 |
-
|
60 |
|
61 |
// Create gallery table
|
62 |
$sql = "CREATE TABLE " . $nggallery . " (
|
@@ -70,8 +82,8 @@ function nggallery_install($installer)
|
|
70 |
previewpic BIGINT(20) DEFAULT '0' NOT NULL ,
|
71 |
author BIGINT(20) DEFAULT '0' NOT NULL ,
|
72 |
PRIMARY KEY (gid)
|
73 |
-
)";
|
74 |
-
|
75 |
|
76 |
// Create albums table
|
77 |
$sql = "CREATE TABLE " . $nggalbum . " (
|
@@ -83,8 +95,8 @@ function nggallery_install($installer)
|
|
83 |
sortorder LONGTEXT NOT NULL,
|
84 |
pageid BIGINT(20) DEFAULT '0' NOT NULL,
|
85 |
PRIMARY KEY (id)
|
86 |
-
)";
|
87 |
-
|
88 |
|
89 |
// check one table again, to be sure
|
90 |
if( !$wpdb->get_var( "SHOW TABLES LIKE '$nggpictures'" ) ) {
|
@@ -117,3 +129,35 @@ function ngg_remove_capability($capability){
|
|
117 |
}
|
118 |
|
119 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
* @access internal
|
9 |
* @return void
|
10 |
*/
|
11 |
+
function nggallery_install () {
|
|
|
12 |
|
13 |
global $wpdb , $wp_roles, $wp_version;
|
14 |
|
35 |
$role->add_cap('NextGEN Change options');
|
36 |
$role->add_cap('NextGEN Attach Interface');
|
37 |
|
38 |
+
// upgrade function changed in WordPress 2.3
|
39 |
+
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
40 |
+
|
41 |
+
// add charset & collate like wp core
|
42 |
+
$charset_collate = '';
|
43 |
+
|
44 |
+
if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
|
45 |
+
if ( ! empty($wpdb->charset) )
|
46 |
+
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
|
47 |
+
if ( ! empty($wpdb->collate) )
|
48 |
+
$charset_collate .= " COLLATE $wpdb->collate";
|
49 |
+
}
|
50 |
+
|
51 |
$nggpictures = $wpdb->prefix . 'ngg_pictures';
|
52 |
$nggallery = $wpdb->prefix . 'ngg_gallery';
|
53 |
$nggalbum = $wpdb->prefix . 'ngg_album';
|
67 |
meta_data LONGTEXT,
|
68 |
PRIMARY KEY (pid),
|
69 |
KEY post_id (post_id)
|
70 |
+
) $charset_collate;";
|
71 |
+
dbDelta($sql);
|
72 |
|
73 |
// Create gallery table
|
74 |
$sql = "CREATE TABLE " . $nggallery . " (
|
82 |
previewpic BIGINT(20) DEFAULT '0' NOT NULL ,
|
83 |
author BIGINT(20) DEFAULT '0' NOT NULL ,
|
84 |
PRIMARY KEY (gid)
|
85 |
+
) $charset_collate;";
|
86 |
+
dbDelta($sql);
|
87 |
|
88 |
// Create albums table
|
89 |
$sql = "CREATE TABLE " . $nggalbum . " (
|
95 |
sortorder LONGTEXT NOT NULL,
|
96 |
pageid BIGINT(20) DEFAULT '0' NOT NULL,
|
97 |
PRIMARY KEY (id)
|
98 |
+
) $charset_collate;";
|
99 |
+
dbDelta($sql);
|
100 |
|
101 |
// check one table again, to be sure
|
102 |
if( !$wpdb->get_var( "SHOW TABLES LIKE '$nggpictures'" ) ) {
|
129 |
}
|
130 |
|
131 |
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Uninstall all settings and tables
|
135 |
+
* Called via Setup and register_unstall hook
|
136 |
+
*
|
137 |
+
* @access internal
|
138 |
+
* @return void
|
139 |
+
*/
|
140 |
+
function nggallery_uninstall() {
|
141 |
+
global $wpdb;
|
142 |
+
|
143 |
+
// first remove all tables
|
144 |
+
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}ngg_pictures");
|
145 |
+
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}ngg_gallery");
|
146 |
+
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}ngg_album");
|
147 |
+
|
148 |
+
// then remove all options
|
149 |
+
delete_option( 'ngg_options' );
|
150 |
+
delete_option( 'ngg_db_version' );
|
151 |
+
delete_option( 'ngg_update_exists' );
|
152 |
+
delete_option( 'ngg_next_update' );
|
153 |
+
|
154 |
+
// now remove the capability
|
155 |
+
ngg_remove_capability("NextGEN Gallery overview");
|
156 |
+
ngg_remove_capability("NextGEN Use TinyMCE");
|
157 |
+
ngg_remove_capability("NextGEN Upload images");
|
158 |
+
ngg_remove_capability("NextGEN Manage gallery");
|
159 |
+
ngg_remove_capability("NextGEN Edit album");
|
160 |
+
ngg_remove_capability("NextGEN Change style");
|
161 |
+
ngg_remove_capability("NextGEN Change options");
|
162 |
+
ngg_remove_capability("NextGEN Attach Interface");
|
163 |
+
}
|
products/photocrati_nextgen/modules/ngglegacy/admin/js/ngg.ajax.js
CHANGED
@@ -26,7 +26,7 @@ nggAjax = {
|
|
26 |
url: s.url,
|
27 |
data:"action=" + s.action + "&operation=" + s.operation + "&_wpnonce=" + s.nonce + "&image=" + s.ids[index],
|
28 |
cache: false,
|
29 |
-
timeout:
|
30 |
success: function(msg){
|
31 |
switch ( parseInt(msg) ) {
|
32 |
case -1:
|
@@ -73,7 +73,7 @@ nggAjax = {
|
|
73 |
data:"action=" + s.action + "&operation=" + s.operation + "&_wpnonce=" + s.nonce + "&image=" + s.ids[index],
|
74 |
dataType: "json",
|
75 |
cache: false,
|
76 |
-
timeout:
|
77 |
success: function(msg){
|
78 |
// join the array
|
79 |
imageIDS = imageIDS.concat(msg);
|
26 |
url: s.url,
|
27 |
data:"action=" + s.action + "&operation=" + s.operation + "&_wpnonce=" + s.nonce + "&image=" + s.ids[index],
|
28 |
cache: false,
|
29 |
+
timeout: 10000,
|
30 |
success: function(msg){
|
31 |
switch ( parseInt(msg) ) {
|
32 |
case -1:
|
73 |
data:"action=" + s.action + "&operation=" + s.operation + "&_wpnonce=" + s.nonce + "&image=" + s.ids[index],
|
74 |
dataType: "json",
|
75 |
cache: false,
|
76 |
+
timeout: 10000,
|
77 |
success: function(msg){
|
78 |
// join the array
|
79 |
imageIDS = imageIDS.concat(msg);
|
products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php
CHANGED
@@ -470,7 +470,7 @@ if($picturelist) {
|
|
470 |
$attributes = 'class="title column-filename column-title"' . $style;
|
471 |
?>
|
472 |
<td <?php echo $attributes ?>>
|
473 |
-
<strong><a href="<?php echo
|
474 |
<?php echo ( empty($picture->alttext) ) ? esc_html( $picture->filename ) : esc_html( stripslashes(nggGallery::i18n($picture->alttext)) ); ?>
|
475 |
</a></strong>
|
476 |
<br /><?php echo $date; ?>
|
@@ -481,7 +481,7 @@ if($picturelist) {
|
|
481 |
<p>
|
482 |
<?php
|
483 |
$actions = array();
|
484 |
-
$actions['view'] = '<a class="shutter" href="' .
|
485 |
$actions['meta'] = '<a class="ngg-dialog" href="' . NGGALLERY_URLPATH . 'admin/showmeta.php?id=' . $pid . '" title="' . __('Show Meta data','nggallery') . '">' . __('Meta', 'nggallery') . '</a>';
|
486 |
$actions['custom_thumb'] = '<a class="ngg-dialog" href="' . NGGALLERY_URLPATH . 'admin/edit-thumbnail.php?id=' . $pid . '" title="' . __('Customize thumbnail','nggallery') . '">' . __('Edit thumb', 'nggallery') . '</a>';
|
487 |
$actions['rotate'] = '<a class="ngg-dialog" href="' . NGGALLERY_URLPATH . 'admin/rotate.php?id=' . $pid . '" title="' . __('Rotate','nggallery') . '">' . __('Rotate', 'nggallery') . '</a>';
|
@@ -506,8 +506,8 @@ if($picturelist) {
|
|
506 |
case 'thumbnail' :
|
507 |
$attributes = 'class="id column-thumbnail media-icon"' . $style;
|
508 |
?>
|
509 |
-
<td <?php echo $attributes ?>><a href="<?php echo
|
510 |
-
<img class="thumb" src="<?php echo
|
511 |
</a>
|
512 |
</td>
|
513 |
<?php
|
470 |
$attributes = 'class="title column-filename column-title"' . $style;
|
471 |
?>
|
472 |
<td <?php echo $attributes ?>>
|
473 |
+
<strong><a href="<?php echo esc_url( $picture->imageURL ); ?>" class="thickbox" title="<?php echo esc_attr ($picture->filename); ?>">
|
474 |
<?php echo ( empty($picture->alttext) ) ? esc_html( $picture->filename ) : esc_html( stripslashes(nggGallery::i18n($picture->alttext)) ); ?>
|
475 |
</a></strong>
|
476 |
<br /><?php echo $date; ?>
|
481 |
<p>
|
482 |
<?php
|
483 |
$actions = array();
|
484 |
+
$actions['view'] = '<a class="shutter" href="' . esc_url( $picture->imageURL ) . '" title="' . esc_attr( sprintf(__('View "%s"'), sanitize_title ($picture->filename) )) . '">' . __('View', 'nggallery') . '</a>';
|
485 |
$actions['meta'] = '<a class="ngg-dialog" href="' . NGGALLERY_URLPATH . 'admin/showmeta.php?id=' . $pid . '" title="' . __('Show Meta data','nggallery') . '">' . __('Meta', 'nggallery') . '</a>';
|
486 |
$actions['custom_thumb'] = '<a class="ngg-dialog" href="' . NGGALLERY_URLPATH . 'admin/edit-thumbnail.php?id=' . $pid . '" title="' . __('Customize thumbnail','nggallery') . '">' . __('Edit thumb', 'nggallery') . '</a>';
|
487 |
$actions['rotate'] = '<a class="ngg-dialog" href="' . NGGALLERY_URLPATH . 'admin/rotate.php?id=' . $pid . '" title="' . __('Rotate','nggallery') . '">' . __('Rotate', 'nggallery') . '</a>';
|
506 |
case 'thumbnail' :
|
507 |
$attributes = 'class="id column-thumbnail media-icon"' . $style;
|
508 |
?>
|
509 |
+
<td <?php echo $attributes ?>><a href="<?php echo esc_url ( add_query_arg('i', mt_rand(), $picture->imageURL) ); ?>" class="shutter" title="<?php echo $picture->filename ?>">
|
510 |
+
<img class="thumb" src="<?php echo esc_url ( add_query_arg('i', mt_rand(), $picture->thumbURL) ); ?>" id="thumb<?php echo $pid ?>" />
|
511 |
</a>
|
512 |
</td>
|
513 |
<?php
|
products/photocrati_nextgen/modules/ngglegacy/admin/manage-sort.php
CHANGED
@@ -28,7 +28,7 @@ function nggallery_sortorder($galleryID = 0){
|
|
28 |
$sortindex++;
|
29 |
}
|
30 |
|
31 |
-
C_Photocrati_Cache::flush(
|
32 |
|
33 |
do_action('ngg_gallery_sort', $galleryID);
|
34 |
|
@@ -101,7 +101,7 @@ function nggallery_sortorder($galleryID = 0){
|
|
101 |
<input class="button-primary action" type="submit" name="updateSortorder" onclick="saveImageOrder()" value="<?php _e('Update Sort Order', 'nggallery') ?>" />
|
102 |
</div>
|
103 |
<div class="alignright actions">
|
104 |
-
<a href="<?php echo
|
105 |
</div>
|
106 |
</div>
|
107 |
<input name="sortorder" type="hidden" />
|
@@ -123,7 +123,7 @@ function nggallery_sortorder($galleryID = 0){
|
|
123 |
foreach($picturelist as $picture) {
|
124 |
?>
|
125 |
<div class="imageBox" id="pid-<?php echo $picture->pid ?>">
|
126 |
-
<div class="imageBox_theImage" style="background-image:url('<?php echo
|
127 |
<div class="imageBox_label"><span><?php echo esc_html( stripslashes($picture->alttext) ); ?></span></div>
|
128 |
</div>
|
129 |
<?php
|
28 |
$sortindex++;
|
29 |
}
|
30 |
|
31 |
+
C_Photocrati_Cache::flush();
|
32 |
|
33 |
do_action('ngg_gallery_sort', $galleryID);
|
34 |
|
101 |
<input class="button-primary action" type="submit" name="updateSortorder" onclick="saveImageOrder()" value="<?php _e('Update Sort Order', 'nggallery') ?>" />
|
102 |
</div>
|
103 |
<div class="alignright actions">
|
104 |
+
<a href="<?php echo esc_url( $back_url ); ?>" class="button"><?php _e('Back to gallery', 'nggallery'); ?></a>
|
105 |
</div>
|
106 |
</div>
|
107 |
<input name="sortorder" type="hidden" />
|
123 |
foreach($picturelist as $picture) {
|
124 |
?>
|
125 |
<div class="imageBox" id="pid-<?php echo $picture->pid ?>">
|
126 |
+
<div class="imageBox_theImage" style="background-image:url('<?php echo esc_url( $picture->thumbURL ); ?>')"></div>
|
127 |
<div class="imageBox_label"><span><?php echo esc_html( stripslashes($picture->alttext) ); ?></span></div>
|
128 |
</div>
|
129 |
<?php
|
products/photocrati_nextgen/modules/ngglegacy/admin/manage.php
CHANGED
@@ -78,7 +78,7 @@ class nggManageGallery {
|
|
78 |
@unlink($image->imagePath . '_backup' );
|
79 |
}
|
80 |
$mapper = C_Image_Mapper::get_instance();
|
81 |
-
$
|
82 |
do_action('ngg_delete_picture', $this->pid);
|
83 |
|
84 |
if ($result)
|
@@ -376,16 +376,6 @@ class nggManageGallery {
|
|
376 |
check_admin_referer('ngg_updategallery');
|
377 |
|
378 |
if ( nggGallery::current_user_can( 'NextGEN Edit gallery options' ) && !isset ($_GET['s']) ) {
|
379 |
-
$tags = array('<a>', '<abbr>', '<acronym>', '<address>', '<b>', '<base>', '<basefont>', '<big>', '<blockquote>', '<br>', '<br/>', '<caption>', '<center>', '<cite>', '<code>', '<col>', '<colgroup>', '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>', '<em>', '<fieldset>', '<font>', '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<hr>', '<i>', '<ins>', '<label>', '<legend>', '<li>', '<menu>', '<noframes>', '<noscript>', '<ol>', '<optgroup>', '<option>', '<p>', '<pre>', '<q>', '<s>', '<samp>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<sub>', '<sup>', '<table>', '<tbody>', '<td>', '<tfoot>', '<th>', '<thead>', '<tr>', '<tt>', '<u>', '<ul>');
|
380 |
-
$fields = array('title', 'gallerydesc');
|
381 |
-
|
382 |
-
foreach ($fields as $field) {
|
383 |
-
$html = $_POST[$field];
|
384 |
-
$html = preg_replace('/\\s+on\\w+=(["\']).*?\\1/i', '', $html);
|
385 |
-
$html = preg_replace('/(<\/[^>]+?>)(<[^>\/][^>]*?>)/', '$1 $2', $html);
|
386 |
-
$html = strip_tags($html, implode('', $tags));
|
387 |
-
$_POST[$field] = $html;
|
388 |
-
}
|
389 |
|
390 |
if ( nggGallery::current_user_can( 'NextGEN Edit gallery title' )) {
|
391 |
// don't forget to update the slug
|
@@ -616,14 +606,14 @@ class nggManageGallery {
|
|
616 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
617 |
'first-page' . $disable_first,
|
618 |
esc_attr__( 'Go to the first page' ),
|
619 |
-
|
620 |
'«'
|
621 |
);
|
622 |
|
623 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
624 |
'prev-page' . $disable_first,
|
625 |
esc_attr__( 'Go to the previous page' ),
|
626 |
-
|
627 |
'‹'
|
628 |
);
|
629 |
|
@@ -643,14 +633,14 @@ class nggManageGallery {
|
|
643 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
644 |
'next-page' . $disable_last,
|
645 |
esc_attr__( 'Go to the next page' ),
|
646 |
-
|
647 |
'›'
|
648 |
);
|
649 |
|
650 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
651 |
'last-page' . $disable_last,
|
652 |
esc_attr__( 'Go to the last page' ),
|
653 |
-
|
654 |
'»'
|
655 |
);
|
656 |
|
78 |
@unlink($image->imagePath . '_backup' );
|
79 |
}
|
80 |
$mapper = C_Image_Mapper::get_instance();
|
81 |
+
$mapper->destroy($this->pid);
|
82 |
do_action('ngg_delete_picture', $this->pid);
|
83 |
|
84 |
if ($result)
|
376 |
check_admin_referer('ngg_updategallery');
|
377 |
|
378 |
if ( nggGallery::current_user_can( 'NextGEN Edit gallery options' ) && !isset ($_GET['s']) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
|
380 |
if ( nggGallery::current_user_can( 'NextGEN Edit gallery title' )) {
|
381 |
// don't forget to update the slug
|
606 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
607 |
'first-page' . $disable_first,
|
608 |
esc_attr__( 'Go to the first page' ),
|
609 |
+
esc_url( remove_query_arg( 'paged', $current_url ) ),
|
610 |
'«'
|
611 |
);
|
612 |
|
613 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
614 |
'prev-page' . $disable_first,
|
615 |
esc_attr__( 'Go to the previous page' ),
|
616 |
+
esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ),
|
617 |
'‹'
|
618 |
);
|
619 |
|
633 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
634 |
'next-page' . $disable_last,
|
635 |
esc_attr__( 'Go to the next page' ),
|
636 |
+
esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ),
|
637 |
'›'
|
638 |
);
|
639 |
|
640 |
$page_links[] = sprintf( "<a class='%s' title='%s' href='%s'>%s</a>",
|
641 |
'last-page' . $disable_last,
|
642 |
esc_attr__( 'Go to the last page' ),
|
643 |
+
esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
|
644 |
'»'
|
645 |
);
|
646 |
|
products/photocrati_nextgen/modules/ngglegacy/admin/media-upload.php
CHANGED
@@ -33,32 +33,18 @@ function media_upload_nextgen() {
|
|
33 |
$img = nggdb::find_image($send_id);
|
34 |
$thumbcode = $img->get_thumbcode();
|
35 |
$class="ngg-singlepic ngg-{$image['align']}";
|
36 |
-
|
37 |
-
// Create a shell displayed-gallery so we can inspect its settings
|
38 |
-
$registry = C_Component_Registry::get_instance();
|
39 |
-
$mapper = $registry->get_utility('I_Displayed_Gallery_Mapper');
|
40 |
-
$factory = $registry->get_utility('I_Component_Factory');
|
41 |
-
$args = array(
|
42 |
-
'display_type' => NEXTGEN_BASIC_SINGLEPIC_MODULE_NAME
|
43 |
-
);
|
44 |
-
$displayed_gallery = $factory->create('displayed_gallery', $args, $mapper);
|
45 |
-
$width = $displayed_gallery->display_settings['width'];
|
46 |
-
$height = $displayed_gallery->display_settings['height'];
|
47 |
-
|
48 |
// Build output
|
49 |
if ($image['size'] == "thumbnail")
|
50 |
-
$html = "<img src='{$image['thumb']}' alt='
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
// Wrap the link to the fullsize image around
|
55 |
-
$html = "<a {$thumbcode} href='{$image['url']}' title='{$clean_description}'>{$html}</a>";
|
56 |
|
57 |
if ($image['size'] == "full")
|
58 |
-
$html = "<img src='{$image['url']}' alt='
|
59 |
|
60 |
if ($image['size'] == "singlepic")
|
61 |
-
$html = "[singlepic id
|
62 |
|
63 |
media_upload_nextgen_save_image();
|
64 |
|
33 |
$img = nggdb::find_image($send_id);
|
34 |
$thumbcode = $img->get_thumbcode();
|
35 |
$class="ngg-singlepic ngg-{$image['align']}";
|
36 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
// Build output
|
38 |
if ($image['size'] == "thumbnail")
|
39 |
+
$html = "<img src='{$image['thumb']}' alt='$alttext' class='$class' />";
|
40 |
+
// Wrap the link to the fullsize image around
|
41 |
+
$html = "<a $thumbcode href='{$image['url']}' title='$clean_description'>$html</a>";
|
|
|
|
|
|
|
42 |
|
43 |
if ($image['size'] == "full")
|
44 |
+
$html = "<img src='{$image['url']}' alt='$alttext' class='$class' />";
|
45 |
|
46 |
if ($image['size'] == "singlepic")
|
47 |
+
$html = "[singlepic id=$send_id w=320 h=240 float={$image['align']}]";
|
48 |
|
49 |
media_upload_nextgen_save_image();
|
50 |
|
products/photocrati_nextgen/modules/ngglegacy/admin/overview.php
CHANGED
@@ -90,7 +90,9 @@ if ( !(get_locale() == 'en_US') )
|
|
90 |
add_meta_box('ngg_about_meta_box', __('About', 'nggallery'), 'ngg_AboutMetaBox', 'ngg_overview', 'left', 'core');
|
91 |
//add_meta_box('ngg_lastdonators', __('Recent donators', 'nggallery'), 'ngg_widget_overview_donators', 'ngg_overview', 'right', 'core');
|
92 |
if ( !is_multisite() || is_super_admin() ) {
|
|
|
93 |
add_meta_box('ngg_server', __('Server Settings', 'nggallery'), 'ngg_overview_server', 'ngg_overview', 'right', 'core');
|
|
|
94 |
}
|
95 |
|
96 |
function ngg_AboutMetaBox()
|
@@ -110,12 +112,7 @@ function ngg_likeThisMetaBox() {
|
|
110 |
echo sprintf(__('This plugin is primarily developed, maintained, supported and documented by <a href="%s" target="_blank">Photocrati Media</a> with a lot of love & effort. Any kind of contribution would be highly appreciated. Thanks!', 'nggallery'), 'http://www.photocrati.com/');
|
111 |
echo '</p><ul>';
|
112 |
|
113 |
-
|
114 |
-
echo "<li style='padding-left: 38px; background:transparent url(" . NGGALLERY_URLPATH . "admin/images/icon-rating.png ) no-repeat scroll center left; background-position: 16px 50%; text-decoration: none;'><a href='{$url}' target='_blank'>";
|
115 |
-
_e('Please click "Works" on WordPress.org', 'nggallery');
|
116 |
-
echo "</a></li>";
|
117 |
-
|
118 |
-
$url = 'http://wordpress.org/plugins/nextgen-gallery/' ;
|
119 |
echo "<li style='padding-left: 38px; background:transparent url(" . NGGALLERY_URLPATH . "admin/images/icon-rating.png ) no-repeat scroll center left; background-position: 16px 50%; text-decoration: none;'><a href='{$url}' target='_blank'>";
|
120 |
_e('Give it a good rating on WordPress.org', 'nggallery');
|
121 |
echo "</a></li>";
|
@@ -136,6 +133,210 @@ function ngg_likeThisMetaBox() {
|
|
136 |
<div class="social" style="text-align:center;margin:15px 0 10px 0;"><span class="social" style="margin-right:5px;"><a target="_blank" href="http://twitter.com/NextGENGallery"><img title="Follow NextGEN on Twitter" alt="Twitter" src="' . NGGALLERY_URLPATH . 'admin/images/twitter.png"></a></span><span class="social" style="margin-right:5px;"><a target="_blank" href="http://www.facebook.com/NextGENGallery"><img title="Like NextGEN on Facebook" alt="Facebook" src="' . NGGALLERY_URLPATH . 'admin/images/facebook.png"></a></span><span class="social"><a target="_blank" href="http://plus.google.com/101643895780935290171"><img title="Add NextGEN to your circles" alt="GooglePlus" src="' . NGGALLERY_URLPATH . 'admin/images/googleplus.png"></a></span></div>';
|
137 |
}
|
138 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
/**
|
140 |
* Show the server settings in a dashboard widget
|
141 |
*
|
@@ -235,7 +436,7 @@ function ngg_overview_news(){
|
|
235 |
$link = $item->get_link();
|
236 |
while ( stristr($link, 'http') != $link )
|
237 |
$link = substr($link, 1);
|
238 |
-
$link =
|
239 |
$title = esc_attr(strip_tags($item->get_title()));
|
240 |
if ( empty($title) )
|
241 |
$title = __('Untitled');
|
@@ -292,8 +493,8 @@ function ngg_overview_right_now() {
|
|
292 |
<table>
|
293 |
<tbody>
|
294 |
<tr class="first">
|
295 |
-
<td class="first b"><a href="admin.php?page=
|
296 |
-
<td class="t"><a href="admin.php?page=
|
297 |
<td class="b"></td>
|
298 |
<td class="last"></td>
|
299 |
</tr>
|
@@ -345,7 +546,7 @@ function ngg_dashboard_quota() {
|
|
345 |
<div class="table table_content musubtable">
|
346 |
<table>
|
347 |
<tr class="first">
|
348 |
-
<td class="first b b-posts"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB</a>' ),
|
349 |
<td class="t posts"><?php _e( 'Space Allowed' ); ?></td>
|
350 |
</tr>
|
351 |
</table>
|
@@ -353,7 +554,7 @@ function ngg_dashboard_quota() {
|
|
353 |
<div class="table table_discussion musubtable">
|
354 |
<table>
|
355 |
<tr class="first">
|
356 |
-
<td class="b b-comments"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB (%3$s%%)</a>' ),
|
357 |
<td class="last t comments <?php echo $used_color;?>"><?php _e( 'Space Used' );?></td>
|
358 |
</tr>
|
359 |
</table>
|
@@ -385,7 +586,7 @@ function ngg_widget_locale() {
|
|
385 |
?>
|
386 |
<p class="hint"><?php _e('Translation file successful updated. Please reload page.', 'nggallery'); ?></p>
|
387 |
<p class="textright">
|
388 |
-
<a class="button" href="<?php echo
|
389 |
</p>
|
390 |
<?php
|
391 |
} else {
|
@@ -416,7 +617,7 @@ function ngg_locale() {
|
|
416 |
if ( !is_wp_error($locale->response) && $locale->response['response']['code'] == '200') {
|
417 |
?>
|
418 |
<p class="textright">
|
419 |
-
<a class="button" href="<?php echo
|
420 |
</p>
|
421 |
<?php
|
422 |
}
|
@@ -427,7 +628,7 @@ function ngg_locale() {
|
|
427 |
?>
|
428 |
<p><strong>Download now your language file !</strong></p>
|
429 |
<p class="textright">
|
430 |
-
<a class="button" href="<?php echo
|
431 |
</p>
|
432 |
<?php
|
433 |
}
|
@@ -496,8 +697,7 @@ function ngg_get_serverinfo() {
|
|
496 |
if(ini_get('allow_url_fopen')) $allow_url_fopen = __('On', 'nggallery');
|
497 |
else $allow_url_fopen = __('Off', 'nggallery');
|
498 |
// Get PHP Max Upload Size
|
499 |
-
if
|
500 |
-
else if(ini_get('upload_max_filesize')) $upload_max = ini_get('upload_max_filesize');
|
501 |
else $upload_max = __('N/A', 'nggallery');
|
502 |
// Get PHP Output buffer Size
|
503 |
if(ini_get('pcre.backtrack_limit')) $backtrack_limit = ini_get('pcre.backtrack_limit');
|
@@ -582,6 +782,82 @@ function ngg_get_phpinfo() {
|
|
582 |
return $phpinfo;
|
583 |
}
|
584 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
585 |
function ngg_list_contributors() {
|
586 |
/* The list of my contributors. Thanks to all of them !*/
|
587 |
|
90 |
add_meta_box('ngg_about_meta_box', __('About', 'nggallery'), 'ngg_AboutMetaBox', 'ngg_overview', 'left', 'core');
|
91 |
//add_meta_box('ngg_lastdonators', __('Recent donators', 'nggallery'), 'ngg_widget_overview_donators', 'ngg_overview', 'right', 'core');
|
92 |
if ( !is_multisite() || is_super_admin() ) {
|
93 |
+
add_meta_box('ngg_plugin_check', __('Plugin Check', 'nggallery'), 'ngg_plugin_check', 'ngg_overview', 'right', 'core');
|
94 |
add_meta_box('ngg_server', __('Server Settings', 'nggallery'), 'ngg_overview_server', 'ngg_overview', 'right', 'core');
|
95 |
+
add_meta_box('dashboard_plugins', __('Related plugins', 'nggallery'), 'ngg_widget_related_plugins', 'ngg_overview', 'left', 'core');
|
96 |
}
|
97 |
|
98 |
function ngg_AboutMetaBox()
|
112 |
echo sprintf(__('This plugin is primarily developed, maintained, supported and documented by <a href="%s" target="_blank">Photocrati Media</a> with a lot of love & effort. Any kind of contribution would be highly appreciated. Thanks!', 'nggallery'), 'http://www.photocrati.com/');
|
113 |
echo '</p><ul>';
|
114 |
|
115 |
+
$url = 'http://wordpress.org/extend/plugins/nextgen-gallery/' ;
|
|
|
|
|
|
|
|
|
|
|
116 |
echo "<li style='padding-left: 38px; background:transparent url(" . NGGALLERY_URLPATH . "admin/images/icon-rating.png ) no-repeat scroll center left; background-position: 16px 50%; text-decoration: none;'><a href='{$url}' target='_blank'>";
|
117 |
_e('Give it a good rating on WordPress.org', 'nggallery');
|
118 |
echo "</a></li>";
|
133 |
<div class="social" style="text-align:center;margin:15px 0 10px 0;"><span class="social" style="margin-right:5px;"><a target="_blank" href="http://twitter.com/NextGENGallery"><img title="Follow NextGEN on Twitter" alt="Twitter" src="' . NGGALLERY_URLPATH . 'admin/images/twitter.png"></a></span><span class="social" style="margin-right:5px;"><a target="_blank" href="http://www.facebook.com/NextGENGallery"><img title="Like NextGEN on Facebook" alt="Facebook" src="' . NGGALLERY_URLPATH . 'admin/images/facebook.png"></a></span><span class="social"><a target="_blank" href="http://plus.google.com/101643895780935290171"><img title="Add NextGEN to your circles" alt="GooglePlus" src="' . NGGALLERY_URLPATH . 'admin/images/googleplus.png"></a></span></div>';
|
134 |
}
|
135 |
|
136 |
+
/**
|
137 |
+
* Ajax Check for conflict with other plugins/themes
|
138 |
+
*
|
139 |
+
* @return void
|
140 |
+
*/
|
141 |
+
function ngg_plugin_check() {
|
142 |
+
|
143 |
+
global $ngg;
|
144 |
+
?>
|
145 |
+
<script type="text/javascript">
|
146 |
+
(function($) {
|
147 |
+
nggPluginCheck = {
|
148 |
+
|
149 |
+
settings: {
|
150 |
+
img_run: '<img src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" class="icon" alt="started"/>',
|
151 |
+
img_ok: '<img src="<?php echo esc_url( admin_url( 'images/yes.png' ) ); ?>" class="icon" alt="ok"/>',
|
152 |
+
img_fail: '<img src="<?php echo esc_url( admin_url( 'images/no.png' ) ); ?>" class="icon" alt="failed" />',
|
153 |
+
domain: '<?php echo esc_url( home_url('index.php', is_ssl() ? 'https' : 'http') ); ?>'
|
154 |
+
},
|
155 |
+
|
156 |
+
run: function( index, state ) {
|
157 |
+
ul = $('#plugin_check');
|
158 |
+
s = this.settings;
|
159 |
+
var step = 1;
|
160 |
+
switch ( index ) {
|
161 |
+
case 1:
|
162 |
+
this.check1();
|
163 |
+
break;
|
164 |
+
case 2:
|
165 |
+
this.check2( step );
|
166 |
+
break;
|
167 |
+
case 3:
|
168 |
+
this.check3();
|
169 |
+
break;
|
170 |
+
}
|
171 |
+
},
|
172 |
+
|
173 |
+
// this function check if the json API will work with your theme & plugins
|
174 |
+
check1 : function() {
|
175 |
+
this.start(1);
|
176 |
+
var req = $.ajax({
|
177 |
+
dataType: 'json',
|
178 |
+
url: s.domain,
|
179 |
+
data:'callback=json&format=json&method=version',
|
180 |
+
cache: false,
|
181 |
+
timeout: 10000,
|
182 |
+
success: function(msg){
|
183 |
+
if (msg.version == '<?php echo $ngg->version; ?>')
|
184 |
+
nggPluginCheck.success(1);
|
185 |
+
else
|
186 |
+
nggPluginCheck.failed(1);
|
187 |
+
},
|
188 |
+
error: function (msg) {
|
189 |
+
nggPluginCheck.failed(1);
|
190 |
+
},
|
191 |
+
complete: function () {
|
192 |
+
nggPluginCheck.run(2);
|
193 |
+
}
|
194 |
+
});
|
195 |
+
|
196 |
+
},
|
197 |
+
|
198 |
+
// this function check if GD lib can create images & thumbnails
|
199 |
+
check2 : function( step ) {
|
200 |
+
if (step == 1) this.start(2);
|
201 |
+
var stop = false;
|
202 |
+
var req = $.ajax({
|
203 |
+
type: "POST",
|
204 |
+
url: ajaxurl,
|
205 |
+
data:"action=ngg_image_check&step=" + step,
|
206 |
+
cache: false,
|
207 |
+
timeout: 10000,
|
208 |
+
success: function(msg){
|
209 |
+
if (msg.stat == 'ok') {
|
210 |
+
nggPluginCheck.success(2, msg.message);
|
211 |
+
} else {
|
212 |
+
if (step == 1)
|
213 |
+
nggPluginCheck.failed(2);
|
214 |
+
stop = true;
|
215 |
+
}
|
216 |
+
|
217 |
+
},
|
218 |
+
error: function (msg) {
|
219 |
+
if (step == 1)
|
220 |
+
nggPluginCheck.failed(2);
|
221 |
+
stop = true;
|
222 |
+
},
|
223 |
+
complete: function () {
|
224 |
+
step++;
|
225 |
+
if (step <= 11 && stop == false)
|
226 |
+
nggPluginCheck.check2(step);
|
227 |
+
else
|
228 |
+
nggPluginCheck.run(3);
|
229 |
+
}
|
230 |
+
});
|
231 |
+
},
|
232 |
+
|
233 |
+
// this function check if wp_head / wp_footer is avaiable
|
234 |
+
check3 : function() {
|
235 |
+
this.start(3);
|
236 |
+
var req = $.ajax({
|
237 |
+
type: "POST",
|
238 |
+
url: ajaxurl,
|
239 |
+
data:"action=ngg_test_head_footer",
|
240 |
+
cache: false,
|
241 |
+
timeout: 10000,
|
242 |
+
success: function(msg){
|
243 |
+
if (msg == 'success')
|
244 |
+
nggPluginCheck.success(3);
|
245 |
+
else
|
246 |
+
nggPluginCheck.failed(3, msg);
|
247 |
+
},
|
248 |
+
error: function (msg) {
|
249 |
+
nggPluginCheck.failed(3);
|
250 |
+
}
|
251 |
+
});
|
252 |
+
},
|
253 |
+
|
254 |
+
start: function( id ) {
|
255 |
+
|
256 |
+
s = this.settings;
|
257 |
+
var field = "#check" + id;
|
258 |
+
|
259 |
+
if ( ul.find(field + " img").length == 0)
|
260 |
+
$(field).prepend( s.img_run );
|
261 |
+
else
|
262 |
+
$(field + " img").replaceWith( s.img_run );
|
263 |
+
|
264 |
+
$(field + " .success").hide();
|
265 |
+
$(field + " .failed").hide();
|
266 |
+
$(field + " .default").replaceWith('<p class="default message"><?php echo esc_js( __('Running...', 'nggallery') ); ?></p> ');
|
267 |
+
},
|
268 |
+
|
269 |
+
success: function( id, msg ) {
|
270 |
+
|
271 |
+
s = this.settings;
|
272 |
+
var field = "#check" + id;
|
273 |
+
|
274 |
+
if ( ul.find(field + " img").length == 0)
|
275 |
+
$(field).prepend( s.img_ok );
|
276 |
+
else
|
277 |
+
$(field + " img").replaceWith( s.img_ok );
|
278 |
+
|
279 |
+
$(field + " .default").hide();
|
280 |
+
if (msg)
|
281 |
+
$(field + " .success").replaceWith('<p class="success message">' + msg +' </p> ');
|
282 |
+
else
|
283 |
+
$(field + " .success").show();
|
284 |
+
|
285 |
+
},
|
286 |
+
|
287 |
+
failed: function( id, msg ) {
|
288 |
+
|
289 |
+
s = this.settings;
|
290 |
+
var field = "#check" + id;
|
291 |
+
|
292 |
+
if ( ul.find(field + " img").length == 0)
|
293 |
+
$(field).prepend( s.img_fail );
|
294 |
+
else
|
295 |
+
$(field + " img").replaceWith( s.img_fail );
|
296 |
+
|
297 |
+
$(field + " .default").hide();
|
298 |
+
if (msg)
|
299 |
+
$(field + " .failed").replaceWith('<p class="failed message">' + msg +' </p> ');
|
300 |
+
else
|
301 |
+
$(field + " .failed").show();
|
302 |
+
|
303 |
+
}
|
304 |
+
|
305 |
+
};
|
306 |
+
})(jQuery);
|
307 |
+
</script>
|
308 |
+
<div class="dashboard-widget-holder wp_dashboard_empty">
|
309 |
+
<div class="ngg-dashboard-widget">
|
310 |
+
<div class="dashboard-widget-content">
|
311 |
+
<ul id="plugin_check" class="settings">
|
312 |
+
<li id="check1">
|
313 |
+
<strong><?php _e('Check plugin/theme conflict', 'nggallery'); ?></strong>
|
314 |
+
<p class="default message"><?php _e('Not tested', 'nggallery'); ?></p>
|
315 |
+
<p class="success message" style="display: none;"><?php _e('No conflict could be detected', 'nggallery'); ?></p>
|
316 |
+
<p class="failed message" style="display: none;"><?php _e('Test failed, disable other plugins & switch to default theme', 'nggallery'); ?></p>
|
317 |
+
</li>
|
318 |
+
<li id="check2">
|
319 |
+
<strong><?php _e('Test image function', 'nggallery'); ?></strong>
|
320 |
+
<p class="default message"><?php _e('Not tested', 'nggallery'); ?></p>
|
321 |
+
<p class="success message" style="display: none;"><?php _e('The plugin could create images', 'nggallery'); ?></p>
|
322 |
+
<p class="failed message" style="display: none;"><?php _e('Couldn\'t create image, check your memory limit', 'nggallery'); ?></p>
|
323 |
+
</li>
|
324 |
+
<li id="check3">
|
325 |
+
<strong><?php _e('Check theme compatibility', 'nggallery'); ?></strong>
|
326 |
+
<p class="default message"><?php _e('Not tested', 'nggallery'); ?></p>
|
327 |
+
<p class="success message" style="display: none;"><?php _e('Your theme should work fine with NextGEN Gallery', 'nggallery'); ?></p>
|
328 |
+
<p class="failed message" style="display: none;"><?php _e('wp_head()/wp_footer() is missing, contact the theme author', 'nggallery'); ?></p>
|
329 |
+
</li>
|
330 |
+
</ul>
|
331 |
+
<p class="textright">
|
332 |
+
<input type="button" name="update" value="<?php _e('Check plugin', 'nggallery'); ?>" onclick="nggPluginCheck.run(1);" class="button-secondary" />
|
333 |
+
</p>
|
334 |
+
</div>
|
335 |
+
</div>
|
336 |
+
</div>
|
337 |
+
<?php
|
338 |
+
}
|
339 |
+
|
340 |
/**
|
341 |
* Show the server settings in a dashboard widget
|
342 |
*
|
436 |
$link = $item->get_link();
|
437 |
while ( stristr($link, 'http') != $link )
|
438 |
$link = substr($link, 1);
|
439 |
+
$link = esc_url(strip_tags($link));
|
440 |
$title = esc_attr(strip_tags($item->get_title()));
|
441 |
if ( empty($title) )
|
442 |
$title = __('Untitled');
|
493 |
<table>
|
494 |
<tbody>
|
495 |
<tr class="first">
|
496 |
+
<td class="first b"><a href="admin.php?page=nggallery-add-gallery"><?php echo $images; ?></a></td>
|
497 |
+
<td class="t"><a href="admin.php?page=nggallery-add-gallery"><?php echo _n( 'Image', 'Images', $images, 'nggallery' ); ?></a></td>
|
498 |
<td class="b"></td>
|
499 |
<td class="last"></td>
|
500 |
</tr>
|
546 |
<div class="table table_content musubtable">
|
547 |
<table>
|
548 |
<tr class="first">
|
549 |
+
<td class="first b b-posts"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB</a>' ), esc_url( admin_url( 'admin.php?page=nggallery-manage-gallery' ) ), $quota ); ?></td>
|
550 |
<td class="t posts"><?php _e( 'Space Allowed' ); ?></td>
|
551 |
</tr>
|
552 |
</table>
|
554 |
<div class="table table_discussion musubtable">
|
555 |
<table>
|
556 |
<tr class="first">
|
557 |
+
<td class="b b-comments"><?php printf( __( '<a href="%1$s" title="Manage Uploads" class="musublink">%2$sMB (%3$s%%)</a>' ), esc_url( admin_url( 'admin.php?page=nggallery-manage-gallery' ) ), $used, $percentused ); ?></td>
|
558 |
<td class="last t comments <?php echo $used_color;?>"><?php _e( 'Space Used' );?></td>
|
559 |
</tr>
|
560 |
</table>
|
586 |
?>
|
587 |
<p class="hint"><?php _e('Translation file successful updated. Please reload page.', 'nggallery'); ?></p>
|
588 |
<p class="textright">
|
589 |
+
<a class="button" href="<?php echo esc_url(strip_tags($overview_url)); ?>"><?php _e('Reload page', 'nggallery'); ?></a>
|
590 |
</p>
|
591 |
<?php
|
592 |
} else {
|
617 |
if ( !is_wp_error($locale->response) && $locale->response['response']['code'] == '200') {
|
618 |
?>
|
619 |
<p class="textright">
|
620 |
+
<a class="button" href="<?php echo esc_url( strip_tags($update_url) ); ?>"><?php _e('Update', 'nggallery'); ?></a>
|
621 |
</p>
|
622 |
<?php
|
623 |
}
|
628 |
?>
|
629 |
<p><strong>Download now your language file !</strong></p>
|
630 |
<p class="textright">
|
631 |
+
<a class="button" href="<?php echo esc_url( strip_tags($update_url) ); ?>"><?php _e('Download', 'nggallery'); ?></a>
|
632 |
</p>
|
633 |
<?php
|
634 |
}
|
697 |
if(ini_get('allow_url_fopen')) $allow_url_fopen = __('On', 'nggallery');
|
698 |
else $allow_url_fopen = __('Off', 'nggallery');
|
699 |
// Get PHP Max Upload Size
|
700 |
+
if(ini_get('upload_max_filesize')) $upload_max = ini_get('upload_max_filesize');
|
|
|
701 |
else $upload_max = __('N/A', 'nggallery');
|
702 |
// Get PHP Output buffer Size
|
703 |
if(ini_get('pcre.backtrack_limit')) $backtrack_limit = ini_get('pcre.backtrack_limit');
|
782 |
return $phpinfo;
|
783 |
}
|
784 |
|
785 |
+
/**
|
786 |
+
* Show NextGEN Gallery related plugins. Fetch plugins from wp.org which have added 'nextgen-gallery' as tag in readme.txt
|
787 |
+
*
|
788 |
+
* @return postbox output
|
789 |
+
*/
|
790 |
+
function ngg_widget_related_plugins() {
|
791 |
+
echo '<p class="widget-loading hide-if-no-js">' . __( 'Loading…' ) . '</p><p class="describe hide-if-js">' . __('This widget requires JavaScript.') . '</p>';
|
792 |
+
}
|
793 |
+
function ngg_related_plugins() {
|
794 |
+
include(ABSPATH . 'wp-admin/includes/plugin-install.php');
|
795 |
+
|
796 |
+
if ( false === ( $api = get_transient( 'ngg_related_plugins' ) ) ) {
|
797 |
+
// this api sucks , tags will not be used in the correct way : nextgen-gallery cannot be searched
|
798 |
+
$api = plugins_api('query_plugins', array('search' => 'nextgen') );
|
799 |
+
|
800 |
+
if ( is_wp_error($api) )
|
801 |
+
return;
|
802 |
+
|
803 |
+
set_transient( 'ngg_related_plugins', $api, 60*60*24 );
|
804 |
+
}
|
805 |
+
|
806 |
+
echo '<div style="margin-bottom:10px;padding:8px;font-size:110%;background:#eebbaa;"><b>Note</b>: these plugins are provided by third parties and are <b>NOT</b> supported by Photocrati Media in any way</div>';
|
807 |
+
|
808 |
+
// don't show my own plugin :-) and some other plugins, which come up with the search result
|
809 |
+
$blacklist = array(
|
810 |
+
'nextgen-gallery',
|
811 |
+
'galleria-wp',
|
812 |
+
'photosmash-galleries',
|
813 |
+
'flash-album-gallery',
|
814 |
+
'events-calendar',
|
815 |
+
'widgets',
|
816 |
+
'side-content',
|
817 |
+
'featurific-for-wordpress',
|
818 |
+
'smooth-gallery-replacement',
|
819 |
+
'livesig',
|
820 |
+
'wordpress-gallery-slideshow',
|
821 |
+
'nkmimagefield',
|
822 |
+
'nextgen-ajax',
|
823 |
+
'projectmanager'
|
824 |
+
);
|
825 |
+
|
826 |
+
$i = 0;
|
827 |
+
while ( $i < 4 ) {
|
828 |
+
|
829 |
+
// pick them randomly
|
830 |
+
if ( 0 == count($api->plugins) )
|
831 |
+
return;
|
832 |
+
|
833 |
+
$key = array_rand($api->plugins);
|
834 |
+
$plugin = $api->plugins[$key];
|
835 |
+
|
836 |
+
// don't forget to remove them
|
837 |
+
unset($api->plugins[$key]);
|
838 |
+
|
839 |
+
if ( !isset($plugin->name) )
|
840 |
+
continue;
|
841 |
+
|
842 |
+
if ( in_array($plugin->slug , $blacklist ) )
|
843 |
+
continue;
|
844 |
+
|
845 |
+
$link = esc_url( $plugin->homepage );
|
846 |
+
$title = esc_html( $plugin->name );
|
847 |
+
|
848 |
+
$description = esc_html( strip_tags(@html_entity_decode($plugin->short_description, ENT_QUOTES, get_option('blog_charset'))) );
|
849 |
+
|
850 |
+
$ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin->slug, 'install-plugin_' . $plugin->slug) .
|
851 |
+
'&TB_iframe=true&width=600&height=800';
|
852 |
+
|
853 |
+
echo "<h5><a href='{$link}' target='_blank'>{$title}</a></h5> <span>(<a href='$ilink' class='thickbox' title='$title'>" . __( 'Install' ) . "</a>)</span>\n";
|
854 |
+
echo "<p>$description<strong> " . __( 'Author' ) . " : </strong>$plugin->author</p>\n";
|
855 |
+
|
856 |
+
$i++;
|
857 |
+
}
|
858 |
+
|
859 |
+
}
|
860 |
+
|
861 |
function ngg_list_contributors() {
|
862 |
/* The list of my contributors. Thanks to all of them !*/
|
863 |
|
products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php
CHANGED
@@ -79,7 +79,7 @@ $preview_image = trailingslashit( home_url() ) . 'index.php?callback=image&
|
|
79 |
<table width="98%" align="center" style="border:1px solid #DADADA">
|
80 |
<tr style="height : 360px;">
|
81 |
<td valign="middle" align="center" style="background-color:#DADADA; width : 370px;">
|
82 |
-
<img src="<?php echo
|
83 |
</td>
|
84 |
<td>
|
85 |
<input type="radio" name="ra" value="cw" /><?php esc_html_e('90° clockwise', 'nggallery'); ?><br />
|
79 |
<table width="98%" align="center" style="border:1px solid #DADADA">
|
80 |
<tr style="height : 360px;">
|
81 |
<td valign="middle" align="center" style="background-color:#DADADA; width : 370px;">
|
82 |
+
<img src="<?php echo esc_url( $preview_image ); ?>" alt="" id="imageToEdit" />
|
83 |
</td>
|
84 |
<td>
|
85 |
<input type="radio" name="ra" value="cw" /><?php esc_html_e('90° clockwise', 'nggallery'); ?><br />
|
products/photocrati_nextgen/modules/ngglegacy/admin/wpmu.php
CHANGED
@@ -92,16 +92,16 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You
|
|
92 |
<td>
|
93 |
<select name="wpmuCSSfile">
|
94 |
<?php
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
$css_name = $a_cssfile['name'];
|
99 |
if ($key == $ngg_options['wpmuCSSfile']) {
|
|
|
100 |
$selected = " selected='selected'";
|
101 |
}
|
102 |
else $selected = '';
|
103 |
$css_name = esc_attr($css_name);
|
104 |
-
echo "\n\t<option value=\"
|
105 |
}
|
106 |
?>
|
107 |
</select><br />
|
92 |
<td>
|
93 |
<select name="wpmuCSSfile">
|
94 |
<?php
|
95 |
+
$csslist = ngg_get_cssfiles();
|
96 |
+
foreach ($csslist as $key =>$a_cssfile) {
|
97 |
+
$css_name = $a_cssfile['Name'];
|
|
|
98 |
if ($key == $ngg_options['wpmuCSSfile']) {
|
99 |
+
$file_show = $key;
|
100 |
$selected = " selected='selected'";
|
101 |
}
|
102 |
else $selected = '';
|
103 |
$css_name = esc_attr($css_name);
|
104 |
+
echo "\n\t<option value=\"$key\" $selected>$css_name</option>";
|
105 |
}
|
106 |
?>
|
107 |
</select><br />
|
products/photocrati_nextgen/modules/ngglegacy/changelog.txt
ADDED
@@ -0,0 +1,718 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
NextGEN Gallery
|
2 |
+
by Photocrati Media
|
3 |
+
|
4 |
+
= V1.9.5 - 05.07.2012 =
|
5 |
+
* Changed: Branding changes following Photocrati acquisition (removed donation messages and updated links)
|
6 |
+
* Secured: Use WordPress-bundled JavaScript libraries for swfobject and swfupload instead of bundling our own
|
7 |
+
* Bugfix: Adjusted thickbox effect styling to ensure that the lightbox is always displayed in the foreground
|
8 |
+
* Bugfix: Fixed compatibility issues with Contact Form 7 and other plugins by following WordPress Plugin conventions
|
9 |
+
* Bugfix: Fixed network-wide activation in WordPress 3.4
|
10 |
+
* Bugfix: Plugin is no longer dependent on it's folder name
|
11 |
+
|
12 |
+
= V1.9.3 - 26.02.2012 =
|
13 |
+
* Bugfix : Ensure to set the slug for "all" albums
|
14 |
+
* Bugfix : Updated german translation ( THX to Roger Hunziker )
|
15 |
+
* Bugfix : Ensure error checking on IPTC array (THX to Kristian Edlund)
|
16 |
+
* Bugfix : Handle IE8 cached images better in slideshow
|
17 |
+
* Bugfix : Show album preview image if selected (THX to Kristian Edlund)
|
18 |
+
|
19 |
+
= V1.9.2 - 17.01.2012 =
|
20 |
+
* NEW : Added more XMLRPC commands (THX to Vladimir Vinogradsky)
|
21 |
+
* Changed : Rework Post-thumbnail function (THX to Kristian Edlund)
|
22 |
+
* Bugfix : Check first for valid images on unzip (only Mac OS zip-files)
|
23 |
+
* Bugfix : Increase z-index for twenty eleven theme
|
24 |
+
* Bugfix : Support non latin chars in tagcloud
|
25 |
+
* Bugfix : Allow other tinymce intance
|
26 |
+
* Bugfix : Better support for WPML translation
|
27 |
+
|
28 |
+
= V1.9.1 - 10.12.2011 =
|
29 |
+
* Bugfix : Security hardness for untrusted filenames/meta data (THX to Brian St. Pierre)
|
30 |
+
* Bugfix : Fixed security vulnerability (TXH to Jon Cave)
|
31 |
+
* Bugfix : Load piclens script via other function
|
32 |
+
* Bugfix : IE7 script fix for add gallery
|
33 |
+
* Bugfix : IE7/IE8 width set correctly for edit album autocomplete field
|
34 |
+
|
35 |
+
= V1.9.0 - 27.11.2011 =
|
36 |
+
* NEW : Keep images transparency for PNG and GIF format
|
37 |
+
* NEW : Switch to Plupload, support now HTML5 Upload (only with WordPress 3.3)
|
38 |
+
* NEW : Added client side resize feature (only with WordPress 3.3)
|
39 |
+
* NEW : Support for gallery templates in album shortcodes [ album id=x template="name" gallery="templatename" ]
|
40 |
+
* NEW : Added new hook ngg_delete_picture
|
41 |
+
* Changed : Updated to jQuery Cycle Version 2.9995
|
42 |
+
* Changed : Always cache the single pictures, remove option
|
43 |
+
* Bugfix : Couldn't use bulk operation for search results
|
44 |
+
* Bugfix : Bugfix for Edit thumbnails under IE 8 + 9
|
45 |
+
* Bugfix : Allow empty altext in ngg.editImage
|
46 |
+
* Bugfix : Various PHP notice fixes
|
47 |
+
* Bugfix : Resize fix for Shutter effect and mobile Browser
|
48 |
+
* Bugfix : FTP Import missing slug field into database
|
49 |
+
* Bugfix : Check also EXIF field "DateTimeOriginal" for timestamp
|
50 |
+
|
51 |
+
= V1.8.4 - 26.10.2011 =
|
52 |
+
* Bugfix : Fixed security vulnerability (TXH to Alain Schneider)
|
53 |
+
|
54 |
+
= V1.8.3 - 07.08.2011 =
|
55 |
+
* Changed : Support for simple custom permalink structures (i.e. /%category%/%postname%/)
|
56 |
+
* Bugfix : Sub-Albums in Albums didn't create the correct link
|
57 |
+
* Bugfix : AJAX Pagination didn't work anymore
|
58 |
+
* Bugfix : Adding index.php to home_url()
|
59 |
+
* Bugfix : Preview picture lost on backend gallery page 2 or higher
|
60 |
+
|
61 |
+
= V1.8.2 - 12.07.2011 =
|
62 |
+
* Bugfix : Set pagination variables for search result, otherwise update failed
|
63 |
+
* Bugfix : Update failed for paged galleries since WordPress 3.2
|
64 |
+
|
65 |
+
= V1.8.1 - 18.06.2011 =
|
66 |
+
* Bugfix : Special case for pagination, instead of showing page-1, we show the clean url
|
67 |
+
* Bugfix : Various PHP notice fixes
|
68 |
+
* Bugfix : Typo in rewrite rules
|
69 |
+
* Bugfix : Flush rewrite rules during upgrade later
|
70 |
+
|
71 |
+
= V1.8.0 - 12.06.2011 =
|
72 |
+
* NEW : Full rework of permalink url structure
|
73 |
+
* NEW : Adding Google Sitemaps for Images (require WordPress SEO plugin by YOAST )
|
74 |
+
* NEW : Support for WPML ( WordPress Multilingual Plugin )
|
75 |
+
* NEW : Adding support for arrow key in shutter effect (THX to Flyvans)
|
76 |
+
* NEW : Adding sort operation for galleries overview page
|
77 |
+
* Changed : Updated pagination to new WP3.1 style
|
78 |
+
* Bugfix : Create unique slug in a better way
|
79 |
+
* Bugfix : Rework screen options filter for gallery and image table
|
80 |
+
* Bugfix : Empty values in XMLRPC update calls are ignored
|
81 |
+
* Bugfix : Create gallery failed when safe-mode on
|
82 |
+
* Bugfix : Permalink didn't work in combination with album & imagebrowser
|
83 |
+
|
84 |
+
= V1.7.4 - 15.02.2011 =
|
85 |
+
* Bugfix : Disallow direct call of ajax file to avoid path disclosure (THX to High-Tech Bridge SA)
|
86 |
+
* Bugfix : Rework jQuery Cycle slideshow for IE compat reason (THX to Justin Dickenson)
|
87 |
+
* Bugfix : Resize only larger images in slideshow
|
88 |
+
* Bugfix : Improved image format detection in gd.thumbnail class (THX to Kupar.b)
|
89 |
+
|
90 |
+
= V1.7.3 - 20.01.2011 =
|
91 |
+
* NEW : Introduce plugin health check for conflicts with other plugins/themes
|
92 |
+
* NEW : Adding new XMLRPC method ngg.deleteImage
|
93 |
+
* NEW : Adding new XMLRPC method ngg.editImage
|
94 |
+
* Changed : Rework register script for autocomplete feature
|
95 |
+
* Bugfix : Bugfix for Multisite setup and flash upload
|
96 |
+
* Bugfix : WP3.1 compat issue, show site admin page only on Multisite installation
|
97 |
+
|
98 |
+
= V1.7.2 - 13.12.2010 =
|
99 |
+
* Bugfix : Adding images to database require slug
|
100 |
+
|
101 |
+
= V1.7.1 - 13.12.2010 =
|
102 |
+
* Changed : Disable upgrade for PHP4 user
|
103 |
+
* Changed : Disable colorpicker for option page
|
104 |
+
* Bugfix : Compat fix for upgrade
|
105 |
+
|
106 |
+
= V1.7.0 - 11.12.2010 =
|
107 |
+
* NEW : Publish a new post direct from the gallery admin page
|
108 |
+
* NEW : Added filter hook 'ngg_get_image_metadata' to add more exif/iptc information
|
109 |
+
* NEW : Adding Autocomplete field to TinyMCE Popup and Album page
|
110 |
+
* NEW : More methods for XMLRPC interface
|
111 |
+
* Changed : New hooks for gallery table (THX to Alexander Schneider)
|
112 |
+
* Changed : Introduce jQuery dialog as new UI element
|
113 |
+
* Changed : Call TinyMCE window via admin-ajax
|
114 |
+
* Bugfix : Better support for SSL blogs
|
115 |
+
* Bugfix : Install/Upgrade failed when table prefix contain captial letters
|
116 |
+
* Bugfix : Fix validation issues in Media-RSS
|
117 |
+
* Bugfix : Empty tags in XMP Meta causes PHP error
|
118 |
+
* Bugfix : Rework load mechanism for slideshow
|
119 |
+
* Bugfix : Copy meta data when image is copied
|
120 |
+
* Bugfix : Icon Support for Ozh' Admin Drop Down Menu
|
121 |
+
* Bugfix : Use correct sort order in slideshow
|
122 |
+
|
123 |
+
= V1.6.2 - 19.09.2010 =
|
124 |
+
* NEW : Added constant NGG_SKIP_LOAD_SCRIPTS to avoid script load
|
125 |
+
* Bugfix : Load Tags library with core files
|
126 |
+
* Bugfix : Slideshow script failed in IE7, load script now in header
|
127 |
+
* Bugfix : Load slideshow widget always
|
128 |
+
* Changed : New admin notice for database upgrade
|
129 |
+
* Changed : Rework crop feature for featured images
|
130 |
+
* Changed : Use site_url() instead get_option ('siteurl'), required for SSL support
|
131 |
+
|
132 |
+
= V1.6.1 - 08.09.2010 =
|
133 |
+
* Bugfix : Script load of swfobject.js failed
|
134 |
+
* Bugfix : Show sideshow also with 1 or 2 images
|
135 |
+
* Bugfix : Rework null byte check in zip upload
|
136 |
+
|
137 |
+
= V1.6.0 - 07.09.2010 =
|
138 |
+
* NEW : Wordpress 3.0 Network (Multi-Site) support
|
139 |
+
* NEW : Integrate jQuery Cycle as NON-Flash slideshow
|
140 |
+
* NEW : Adding jQuery File Tree for import folder (THX to Sergey Pasyuk )
|
141 |
+
* NEW : Added action hook 'ngg_show_imagebrowser_first' on custom request
|
142 |
+
* NEW : Added filter hook 'ngg_slideshow_size' to resize sildeshow for mobile browser plugins
|
143 |
+
* Changed : Reorder tabs for upload
|
144 |
+
* Changed : New menu icon and screen icon (THX to Ben Dunkle)
|
145 |
+
* Changed : Load frontend libs always
|
146 |
+
* Changed : Rework of overview page
|
147 |
+
* Bugfix : Security bugfix for Zip-Upload (THX to Dominic Szablewski)
|
148 |
+
* Bugfix : Allow JPG, PNG, GIF extension
|
149 |
+
* Bugfix : New German translation (THX to Martin Kramarz)
|
150 |
+
* Bugfix : Copy/Move also backup file
|
151 |
+
* Bugfix : Calculate correct ratio for fix thumbnail size (THX to Alekz Keck)
|
152 |
+
|
153 |
+
= V1.5.5 - 14.06.2010 =
|
154 |
+
* Bugfix : Compat issue for post thumbnails with WP2.9
|
155 |
+
* NEW : Adding more hooks for custom fields plugin
|
156 |
+
|
157 |
+
= V1.5.4 - 14.06.2010 =
|
158 |
+
* Bugfix : No resize of smaller images
|
159 |
+
* Bugfix : Compat issues for Post Thumbnails under WP3.0
|
160 |
+
* Bugfix : Esc_URL in Media RSS
|
161 |
+
|
162 |
+
= V1.5.3 - 11.04.2010 =
|
163 |
+
* New : Adding pagination to footer
|
164 |
+
* Changed : Prepare new filter to replace slideshow
|
165 |
+
* Bugfix : Remove non-breaking space from navigation
|
166 |
+
* Bugfix : Pagination of galleries
|
167 |
+
* Bugfix : Fixed brackets position for old shortcode query
|
168 |
+
* Bugfix : Slideshow option 'Show next image on click" has wrong default value
|
169 |
+
|
170 |
+
= V1.5.2 - 25.03.2010 =
|
171 |
+
* Bugfix : XSS security vulnerability (THX to Core Security Advisories Team , Pedro Varangot)
|
172 |
+
* Bugfix : Missing $wpdb in shortcodes.php
|
173 |
+
|
174 |
+
= V1.5.1 - 23.03.2010 =
|
175 |
+
* Bugfix : PHP4 compat issue for Add gallery & options page
|
176 |
+
* Bugfix : Gallery widget can now have a empty title
|
177 |
+
* Bugfix : Adding correct stripslash for gallery title
|
178 |
+
|
179 |
+
= V1.5.0 - 18.03.2010 =
|
180 |
+
* NEW : Support for Post thumbnail feature
|
181 |
+
* NEW : Backup and Recover function for images (THX to Simone Fumagalli)
|
182 |
+
* NEW : Resize images after upload (THX to Simone Fumagalli)
|
183 |
+
* NEW : Added a JSON class for fetching galleries in a RESTful way (see xml/json.php)
|
184 |
+
* NEW : Adding various new capabilities for user roles
|
185 |
+
* NEW : Auto downloader for translation file
|
186 |
+
* Changed : Rename query var from slideshow to callback for compat reason with other plugin
|
187 |
+
* Changed : Convert widget function to new WP structure
|
188 |
+
* Changed : Include lookup for tags into the backend search
|
189 |
+
* Changed : Restructure addgallery and settings page to enable custom tabs
|
190 |
+
* Bugfix : Select album preview from gallery preview pics instead random list
|
191 |
+
* Bugfix : Keep fix dimension in edit thumbnail operation
|
192 |
+
* Bugfix : Import meta data didn't work correct for existing images
|
193 |
+
* Bugfix : Fix onload bug for Chrome 4 in Shutter script
|
194 |
+
* Bugfix : Remove various PHP notices for a better world
|
195 |
+
* Removed : Canonical link is now part of Wordpress 2.9
|
196 |
+
|
197 |
+
= V1.4.3 - 16.11.2009 =
|
198 |
+
* Bugfix : Urlencode XML file path for sildeshow
|
199 |
+
|
200 |
+
= V1.4.2 - 16.11.2009 =
|
201 |
+
* Changed : Load sildeshow XML not longer via relative path
|
202 |
+
* Bugfix : No imagebrowser in carousel mode
|
203 |
+
* Bugfix : JS Effect navigation based on wrong array structure
|
204 |
+
* Bugfix : Remove whitespaces from meta import
|
205 |
+
* Bugfix : Capability check for upgrade notice
|
206 |
+
* Removed : Hide "more settings" for now, causes problems with IE and jQuery UI tabs
|
207 |
+
|
208 |
+
= V1.4.1 - 10.11.2009 =
|
209 |
+
* Bugfix : Capabilites could not be saved
|
210 |
+
* Bugfix : Ajax pagination option not saved
|
211 |
+
* Bugfix : echo nggSlideshowWidget() for compat reason
|
212 |
+
|
213 |
+
= V1.4.0 - 08.11.2009 =
|
214 |
+
* NEW : Automatic rotate images during upload or via manage gallery page (THX to Simone Fumagalli)
|
215 |
+
* NEW : Include Bulkupdate for gallery overview, require PHP 5.2
|
216 |
+
* NEW : XMLRPC support with 4 new methods : see xmlrpc.php for more information
|
217 |
+
* NEW : Recent and random images can be taken from a specific gallery using the id=x parameter in the shortcode (THX to Prollius)
|
218 |
+
* NEW : Recent images can be recent by exif date (instead of database id) by using the mode=recentdate parameter in the shortcode (THX to Prollius)
|
219 |
+
* NEW : Introduce the WP_Object_cache and meta_data
|
220 |
+
* NEW : Various new hooks and filters
|
221 |
+
* Added : Better support for role manager plugin (THX to Mattias Buelens)
|
222 |
+
* Added : New option to add hidden images. Needed to show all images in a modal window (Thickbox, Lightbox et.)
|
223 |
+
* Added : New link parameter for the singlepic shortcode : [singlepic id=x w=x h=x link="http://google.com"]
|
224 |
+
* Added : New template gallery-carousel
|
225 |
+
* Added : New id parameter for recent and random shortcodes : [random max="7" template="filename" id="2"] takes only pictures from the gallery with id=2
|
226 |
+
* Added : New mode parameter for recent shortcode : [recent max="7" template="filename" id="3" mode="date" /] where mode can be one of (id, date, sort). Recent pictures are delivered by addition to database (id), exif date (date) or user sort order (sort).
|
227 |
+
* Added : Enable/Disable Ajax navigation via settings
|
228 |
+
* Added : New filter hook 'ngg_render_template' to render templates with a other plugin
|
229 |
+
* Changed : Added option to link an album with a page id
|
230 |
+
* Changed : Support templates for child themes, use STYLESHEETPATH instead TEMPLATEPATH (THX to Prollius)
|
231 |
+
* Changed : Rework of Media RSS Widget
|
232 |
+
* Bugfix : Check capability to create a new page
|
233 |
+
* Bugfix : Fix double call of filter name , changed to ngg_picturelist_object (THX to Prollius)
|
234 |
+
* Bugfix : Check for a deleted gallery in a album
|
235 |
+
|
236 |
+
= V1.3.6 - 20.09.2009 =
|
237 |
+
* Changed : Just change the feed link
|
238 |
+
|
239 |
+
= V1.3.5 - 17.07.2009 =
|
240 |
+
* Bugfix : Fixed XSS issue for Page title
|
241 |
+
|
242 |
+
= V1.3.4 - 07.07.2009 =
|
243 |
+
* Added : New filter ngg_gallery_object and ngg_image_object
|
244 |
+
* Bugfix : Fix double rendering of a gallery if two album shortcodes are used
|
245 |
+
* Bugfix : Fix for custom field ngg_gal_sort
|
246 |
+
* Bugfix : Changed capability check for upload
|
247 |
+
* Bugfix : Check for correct version OR memory limit
|
248 |
+
|
249 |
+
= V1.3.3 - 11.06.2009 =
|
250 |
+
* Changed : Load Thickbox images via wp_footer()
|
251 |
+
* Bugfix : Widget setting couldnot be saved
|
252 |
+
|
253 |
+
= V1.3.2 - 10.06.2009 =
|
254 |
+
* Changed : Resize maximum to 1280 x 1280 with nggshow (THX to onezero)
|
255 |
+
* Bugfix : Bugfix for Multifile upload
|
256 |
+
* Bugfix : Bugfix for sortorder under jQuery 1.3
|
257 |
+
* Bugfix : Workaround for more albums per page, need more rework
|
258 |
+
* Bugfix : AJAX reload didn't work if slideshow is shown by default
|
259 |
+
* Bugfix : Redirect links didn't work if permalinks are deactivates
|
260 |
+
* Bugfix : Add new gallery in manage-overview didn't use defaultpath
|
261 |
+
|
262 |
+
= V1.3.1 - 07.06.2009 =
|
263 |
+
* Bugfix : Fixed ZIP upload, wrong variable used
|
264 |
+
* Bugfix : Check for array before foreach in album missing
|
265 |
+
|
266 |
+
= V1.3.0 - 07.06.2009 =
|
267 |
+
* NEW : Subalbum support
|
268 |
+
* NEW : Search for images in the admin tab
|
269 |
+
* NEW : Add new gallery also in manage tab
|
270 |
+
* NEW : AJAX support for Imagebrowser and gallery navigation (THX to Anty)
|
271 |
+
* NEW : Added zip upload via URL (THX to Juan Jose Galvez)
|
272 |
+
* Added : jQuery Multiple File Upload Plugin v1.44
|
273 |
+
* Added : SWFUpload V2.2.0
|
274 |
+
* Changed : Remove extension for Alttext during first import
|
275 |
+
* Changed : Meta tag added via wp_head hook (THX to Viper)
|
276 |
+
* Bugfix : Correct various PHP notice messages
|
277 |
+
* Bugfix : Typo fix in custom fields for ngg_gal_ImageBrowser
|
278 |
+
* Bugfix : Avoid upload of images in gallery without correct capability
|
279 |
+
|
280 |
+
= V1.2.1 - 22.03.2009 =
|
281 |
+
* NEW : Support for IE8 Web Slices in widgets
|
282 |
+
* NEW : Add filter ngg_image_object
|
283 |
+
* Changed : Descending order in add gallery menu
|
284 |
+
* Bugfix : Exclude option didnT work for multi pages
|
285 |
+
* Bugfix : Check for correct capability in manage gallery
|
286 |
+
|
287 |
+
= V1.2.0 - 09.03.2009 =
|
288 |
+
* NEW : Support for image tag cloud with shortcode [tagcloud]
|
289 |
+
* NEW : Adding shortcode [recent max="7" template="filename" /] & [random max="7" template="filename" /] to show the most recent/random pictures (THX to Bernhard)
|
290 |
+
* NEW : Crop thumbnails manually (THX to Simone Fumagalli)
|
291 |
+
* NEW : Support for i18n with polyglot or qtrans plugin (THX to Boris Glumpler)
|
292 |
+
* NEW : Canonical meta link support
|
293 |
+
* Added : SWFUpload V2.2.0 B5
|
294 |
+
* Added : New memory limit check in upload screen
|
295 |
+
* Bugfix : Language typo fixes
|
296 |
+
* Bugfix : Admin Pagination fix
|
297 |
+
* Bugfix : Typo fix in widgets
|
298 |
+
* Bugfix : Init column script after document is ready
|
299 |
+
* Bugfix : htmlspecialchars() instead htmlentities() for links in the a href title description
|
300 |
+
* Bugfix : Upgrade routine didn't add sortorder to correct table (THX to Uwe)
|
301 |
+
* Bugfix : Correct shotcode in media upload tab
|
302 |
+
|
303 |
+
= V1.1.0 - 26.01.2009 =
|
304 |
+
* NEW : Pagination for album page via custom fields ('ngg_paged_Galleries')
|
305 |
+
* NEW : Support for fixed number of columns inside the gallery
|
306 |
+
* NEW : Added pagination for galleries and images in admin section
|
307 |
+
* NEW : New action hook after image is added to database, called 'ngg_added_new_image'
|
308 |
+
* NEW : New template for caption below images, called via [nggallery id=x template=caption]
|
309 |
+
* Added : SWFUpload V2.2.0 B4
|
310 |
+
* Changed : Rework of Manage image tables
|
311 |
+
* Changed : Move imagerotator.swf to wp-content/uploads
|
312 |
+
* Changed : Added a URL field to setup the path to the Imagerotator
|
313 |
+
* Changed : Add additional parameter to gallery object
|
314 |
+
* Changed : Load donators list external
|
315 |
+
* Bugfix : Style fixes for tables in IE7
|
316 |
+
* Bugfix : All albums code couldn't use the slideshow, query is empty for 0
|
317 |
+
* Bugfix : Htmlentities() for links in the a href title description
|
318 |
+
* Bugfix : Clean up mode for singlepic
|
319 |
+
* Bugfix : Typo in widget settings
|
320 |
+
|
321 |
+
= V1.0.2 - 19.12.2008 =
|
322 |
+
* Added : Option to enable/disable the MediaRSS Feed
|
323 |
+
* Added : For flash under FF3/WIN we should use outline: none;
|
324 |
+
* Added : Use sort order also for Media RSS
|
325 |
+
* Changed : Descending order for TinyMCE Editor
|
326 |
+
* Changed : Added screencolor flashvar as bgcolor for the flash slideshow
|
327 |
+
* Changed : Remove link to gallery in sidebar widget
|
328 |
+
* Bugfix : Check for empty gallery title and show name instead
|
329 |
+
* Bugfix : Album id=all / Album id=0 didn't show content
|
330 |
+
* Bugfix : Check for a empty description and alttext
|
331 |
+
* Bugfix : Remove HTML tags from slideshow
|
332 |
+
* Bugfix : Load SWFobject always when the imagerotator exist
|
333 |
+
* Bugfix : Zip-Upload in existing gallery failed
|
334 |
+
* Bugifx : Typo in functions.php (THX to David Horat)
|
335 |
+
|
336 |
+
= V1.0.1 - 11.12.2008 =
|
337 |
+
* Bugfix : Change upgrade routine, import_date_time could cause a memory problem
|
338 |
+
* Bugfix : Help pages will not show up in non-english enviroment
|
339 |
+
* Bugfix : Show gallery name if title is empty
|
340 |
+
|
341 |
+
= V1.0.0 - 11.12.2008 =
|
342 |
+
* NEW : Adding some rewrite rules for the Blog title for a better SEO (Will be continued...)
|
343 |
+
* NEW : Added ImageMagick support (currently a bit experimental) (THX to Frederic de Ranter)
|
344 |
+
* NEW : Automatic unistall via register_uninstall_hook()
|
345 |
+
* NEW : Added a presort option to sort easier the images
|
346 |
+
* NEW : Lookup for a nggallery.css in the theme folder
|
347 |
+
* NEW : Added Date/Time field to database and import it from EXIF, new sort option
|
348 |
+
* NEW : Multi Widgets to show links to Media RSS feeds (THX to Vincent Prat)
|
349 |
+
* NEW : PicLens support for galleries (THX to Vincent Prat)
|
350 |
+
* NEW : Copy/Move images between galleries (THX to Vincent Prat)
|
351 |
+
* NEW : Media RSS feeds (either for galleries, albums or global) (THX to Vincent Prat)
|
352 |
+
* NEW : Image tag management (THX to Vincent Prat)
|
353 |
+
* NEW : Convert all shortcodes to WP shortcodes API
|
354 |
+
* NEW : AJAX based thumbnail generator
|
355 |
+
* NEW : Create output via template files, more flexible and support for multiple templates
|
356 |
+
* NEW : Extended role system. Each gallery has now a author
|
357 |
+
* NEW : [thumb id="4,5,12,..."] shortcode. You can now insert thumbnails for one or more images (that are not necessarly inside the same gallery).
|
358 |
+
* Changed : Add swfupload 2.2.0. Support for Adobe Flash 10 upload
|
359 |
+
* Changed : Update all Admin pages for Wordpress 2.7 Admin UI
|
360 |
+
* Changed : New icon for TinyMCE and WP2.7 Menue from http://www.pinvoke.com/
|
361 |
+
* Changed : Move update message to admin.php
|
362 |
+
* Changed : Widgets are now core and doesn't need to be activate, rework as Multi Widgets
|
363 |
+
* Changed : Improved the gallery management page.
|
364 |
+
* Changed : Rename the filter 'ngg_create_gallery_thumbcode' to 'ngg_get_thumbcode'.
|
365 |
+
* Changed : Convert tags to WP-Taxonomy tables, no more need for ngg_tags, ngg_pic2tags
|
366 |
+
* Changed : Arrange manage fields in a new way
|
367 |
+
* Changed : Support now SSL
|
368 |
+
* Changed : Use JQuery UI instead of interface lib
|
369 |
+
* Changed : Updated to swfobject 2.1
|
370 |
+
* Changed : Rework of database queries and new central nggdb class
|
371 |
+
* Bugfix : Changed CSS for singlepic padding to margin
|
372 |
+
* Bugfix : Check for zero in Exif Focal Length
|
373 |
+
* Bugfix : Round instead inval for square thumbnails
|
374 |
+
* Removed : Do not longer check for myGallery folders
|
375 |
+
* Removed : Use now PclZip from WP Core
|
376 |
+
* Removed : Wordpress 2.1 - 2.3 files deleted
|
377 |
+
|
378 |
+
= V0.99 - 27.09.2008 =
|
379 |
+
* Changed : Included swfobject version 2.1
|
380 |
+
* Bugfix : Recognize the zip better
|
381 |
+
* Bugfix : Limit the length of the title in the media-upload
|
382 |
+
* Bugfix : Round instead inval for square thumbnails
|
383 |
+
|
384 |
+
= V0.98 - 15.07.2008 =
|
385 |
+
* Bugfix : Removed all whitespaces at EOF
|
386 |
+
|
387 |
+
= V0.97 - 10.07.2008 =
|
388 |
+
* Changed : Get new path contstant from WP2.6
|
389 |
+
* Changed : Minor updates for WP2.6
|
390 |
+
* Changed : Added new filters (THX to Vincent Prat)
|
391 |
+
* Removed : Revert singlepic wrapper, breaks validation
|
392 |
+
|
393 |
+
= V0.96 - 18.05.2008 =
|
394 |
+
* Changed : Use postbox for gallery settings
|
395 |
+
* Added : New filter function to add custom columns
|
396 |
+
* Bugfix : Fixed width for Thickbox in Manage gallery
|
397 |
+
* Bugfix : fixed width for media upload select box
|
398 |
+
* Bugfix : Remove <p> tag in singlepic regex
|
399 |
+
* Bugfix : Correct format of shutter speed
|
400 |
+
* Bugfix : Album name in Short code not useable
|
401 |
+
|
402 |
+
= V0.95 - 25.04.2008 =
|
403 |
+
* Bugfix : Correction in media-upload to fit with Wordpress 2.5.1
|
404 |
+
* Bugfix : Attribute_escape all objects in media-upload
|
405 |
+
* Bugfix : Correct sortorder for albums
|
406 |
+
* Bugfix : Typo correction (THX to Momo-I)
|
407 |
+
|
408 |
+
= V0.94 - 20.04.2008 =
|
409 |
+
* Added : New filter option ngg_create_gallery_link
|
410 |
+
* Changed : Reduce amount of DB queries in albums (Big THX to Alexandr Kindras)
|
411 |
+
* Changed : Revert wpautop priority change. Doesn't good for other plugins
|
412 |
+
|
413 |
+
= V0.93 - 12.04.2008 =
|
414 |
+
* Added : Select Full-Size or Singlepic in Media Upload
|
415 |
+
* Added : Check for minimum 8 MB Memory
|
416 |
+
* Changed : Priority from wpautop must be before gallery
|
417 |
+
* Bugfix : Added Screencolor to Widgets
|
418 |
+
* Bugfix : Clean CSS class in setup.php
|
419 |
+
* Bugfix : Change PHP short tag (Thx to Archedition)
|
420 |
+
* Bugfix : Remove tab.png from CSS (Thx to Frisco)
|
421 |
+
* Bugfix : Remove newline and encode quotes in Media-Upload (THX to Trip Mellinger)
|
422 |
+
|
423 |
+
= V0.92 - 30.03.2008 =
|
424 |
+
* Changed : Higher priority for filter in WP2.5 final
|
425 |
+
* Changed : Do not increase memory_limit with ini_set
|
426 |
+
* Added : Read EXIF field ImageDescription
|
427 |
+
|
428 |
+
= V0.91 - 24.03.2008 =
|
429 |
+
* Changed : Resample mode back to 3
|
430 |
+
* Changed : Add DIV "ngg-singlepic-wrapper" for SingelPic (THX to Travel-Junkie)
|
431 |
+
* Changed : Increase Tweakfactor for Memory Check
|
432 |
+
* Bugfix : Use admin.css only on NextGEN pages (THX tp Oliver)
|
433 |
+
* Bugfix : Updates widgets (V1.21) for ImageRotator 3.15
|
434 |
+
* Bugfix : Change order of rewrite rules for WP 2.5
|
435 |
+
* Bugfix : Include Dashboard CSS also for page "nextgen-gallery"
|
436 |
+
|
437 |
+
= V0.90 - 18.03.2008 =
|
438 |
+
* NEW : Sort order for images
|
439 |
+
* NEW : Updated style for Wp 2.5
|
440 |
+
* NEW : Media upload tab integration for WP 2.5
|
441 |
+
* Added : Change wp shortcode filter
|
442 |
+
* Added : TinyMCE V3 Button for WordPress 2.5
|
443 |
+
* Added : Singlepic center class
|
444 |
+
* Changed : New default parameter for ImageRotator 3.15
|
445 |
+
* Changed : By default enable metadata import
|
446 |
+
* Changed : Moved disable/enable flash setting to add gallery
|
447 |
+
* Changed : wpdb->escape gallerytag in nggfunctions
|
448 |
+
* Changed : Sort files after scan folder
|
449 |
+
* Changed : Check for filename during upload
|
450 |
+
* Changed : Remove jQuery plugin for navigation
|
451 |
+
* Changed : Remove myGallery import
|
452 |
+
* Changed : Resample mode default set to 5, causes problems at PHP 4.4.8 /PHP 5.2.4
|
453 |
+
* Bugfix : nggextractXML missing stripslashes
|
454 |
+
* Bugfix : P tags not closed in manage.php
|
455 |
+
* Bugfix : Remove " from singlepic class
|
456 |
+
* Bugfix : Rewrite rule for ImageBrowser added
|
457 |
+
|
458 |
+
= V0.83 - 14.02.2008 =
|
459 |
+
* Changed : New Interfaces.js from WP Core 2.5, for sortable bug under IE7
|
460 |
+
* Changed : Update to jQuery V1.2.2, deregister older version from WP
|
461 |
+
* Changed : Add ini_set 128MB for memory-limit
|
462 |
+
* Bugfix : SWFUpload Cookie Post_Params are overwritten , no upload possible
|
463 |
+
* Bugfix : WPMU options are not saved after installation
|
464 |
+
* Bugfix : Remove Flush rewrite rules during install
|
465 |
+
|
466 |
+
= V0.82 - 09.02.2008 =
|
467 |
+
* Bugfix : add_filter (searchnggallerytags) not proper included for some other plugins
|
468 |
+
|
469 |
+
= V0.81 - 04.02.2008 =
|
470 |
+
* Changed : Use stristr first to reduce CPU cycles (THX to Alakhnor)
|
471 |
+
* Changed : Flush Rewrites rules after option update
|
472 |
+
* Changed : Rework for folder check under Safe-Mode
|
473 |
+
* Bugfix : Check for array in get_option() (THX to Alessandro)
|
474 |
+
* Bugfix : Add Cookie to SWFUpload, show Error code included
|
475 |
+
* Bugfix : galShowOrder = Sildeshow at first didn't work
|
476 |
+
* Bugfix : Remove reference from ngg_getOnlyImages
|
477 |
+
|
478 |
+
= V0.80 - 02.02.2008 =
|
479 |
+
* NEW : SWFUpload integrated : Show upload progress and select multiple files in the file browser dialog.
|
480 |
+
* NEW : Progress bar for resize, watermark and thumbnail operation
|
481 |
+
* NEW : Import Meta data from images
|
482 |
+
* NEW : Show Meta data information
|
483 |
+
* NEW : Cache option for SinglePic
|
484 |
+
* NEW : Permalink support
|
485 |
+
* NEW : Custom fields support - Change the settings for each post/page
|
486 |
+
* Changed : Up to 10 Widgets, exclude galleries from random/recent images.
|
487 |
+
* Changed : Refactor permission check for Safe-Mode Check and mkdir/chmod
|
488 |
+
* Changed : Admin CSS in new folder/file for better structure
|
489 |
+
* Changed : Clean up folder structure
|
490 |
+
* Changed : Clean up code in manage.php, functions.php
|
491 |
+
* Changed : Moved several functions into nggAdmin Class (functions.php)
|
492 |
+
* Changed : Update to jQuery V1.1.4 (v1.2.1 causes problems with interface.js)
|
493 |
+
* Changed : Hide used galleries in album admin page
|
494 |
+
* Changed : Remove float in singlepic code and added class ngg-left , ngg-right (THX to Nathan Sylvain)
|
495 |
+
* Changed : Edit style setting (added new class .desc , THX to Sebastian)
|
496 |
+
* Changed : Check for galleryfolder instead name (THX to Luke Poland)
|
497 |
+
* Changed : Delete images per default
|
498 |
+
* Changed : Change CSS (ngg-album-compact) , remove width & height setting from code
|
499 |
+
* Bugfix : Fixed static front page problem
|
500 |
+
* Bugfix : Missing stripslashes & html_entity_decode
|
501 |
+
* Bugfix : Change Album CSS (THX to Thomas-DK)
|
502 |
+
* Bugfix : Watermark for GIF not correct supported
|
503 |
+
* Bugfix : Missing wp_nonce at setup page
|
504 |
+
* Bugfix : Add DIV in Slideshow link (for Safari & Opera)
|
505 |
+
* Added : Screencolor flashvar for JW Image Rotator 3.13 or higher
|
506 |
+
* Added : Set WP-CHARSET / COLLATE during installation
|
507 |
+
* Added : Updated to Pclzip.lib.php v2.6
|
508 |
+
* Added : CSS ID field for gallery & images
|
509 |
+
* WPMU : New site admin page (wpmu.php)
|
510 |
+
* WPMU : Integrated quota check
|
511 |
+
* WPMU : No update check
|
512 |
+
* WPMU : Remove edit style (THX to Kristin)
|
513 |
+
* WPMU : Remove uninstall button
|
514 |
+
* WPMU : Remove server settings
|
515 |
+
* WPMU : Gallery path set to blog.dir
|
516 |
+
* Added : Support for WPMU
|
517 |
+
|
518 |
+
= V0.74 - 01.12.2007 =
|
519 |
+
* NEW : Added meta reader class, first step to integrated meta data import
|
520 |
+
|
521 |
+
= V0.73 - 20.10.2007 =
|
522 |
+
* Added : Support for Shutter Reloaded
|
523 |
+
* Update to jQuery Tabs 2.7.4
|
524 |
+
* Changed : Remove $_SERVER['REQUEST_URI'] for IIS compatibility
|
525 |
+
* Bugfix : Option Sildeshow didn't jump to overview
|
526 |
+
|
527 |
+
= V0.72 - 13.09.2007 =
|
528 |
+
* Added : Missing overflow:hidden in ngg-album.css
|
529 |
+
* Added : New experimental stylesheet hovereffect.css
|
530 |
+
* Changed : Better check for memory limit in zip-files
|
531 |
+
* Bugfix : Missing stripslashes for alttext (THX to Lawrence)
|
532 |
+
* Bugfix : Navigation didn't highlight page 1 (THX to Brot)
|
533 |
+
* Bugfix : Albums automatic minimize if more than 4 galleries
|
534 |
+
* Bugfix : Missing check_admin_referer in style (THX again to Christopher)
|
535 |
+
|
536 |
+
= V0.71 - 07.09.2007 =
|
537 |
+
* Added : Add defer="defer" to Slideshow to avoid IE crash (THX to Simbo)
|
538 |
+
* Bugfix : Bugfix for slideshow to show all pictures
|
539 |
+
* Bugfix : Wrong check_admin_referer in albums (THX to Christopher)
|
540 |
+
* Bugfix : No exclude check in counter and widgets (THX to Christopher)
|
541 |
+
* Bugfix : Check for existing role (THX to Lost in Network)
|
542 |
+
* Bugfix : Label in roles are wrong (THX to Joern)
|
543 |
+
|
544 |
+
= V0.70 - 06.09.2007 =
|
545 |
+
* NEW : Add role manager page and capabilities
|
546 |
+
* NEW : Show gallery with [tags=list of tags]
|
547 |
+
* NEW : Show album with [albumtags=list of tags]
|
548 |
+
* NEW : Tag system for all images
|
549 |
+
* NEW : Option for append related images
|
550 |
+
* NEW : Option to show description below thumbnail
|
551 |
+
* NEW : Option to show ImageBrowser instead JS effect
|
552 |
+
* Added : Add Full size link to thickbox
|
553 |
+
* Added : Check for page/postid in tag processing
|
554 |
+
* Added : Sildeshow widget can now contain all images
|
555 |
+
* Added : Minimize/Maximize option for albums
|
556 |
+
* Added : Deregister jQuery V1.1.2 for WP2.2 (to use V1.1.3.1)
|
557 |
+
* Added : Integrate wp_nonce_field at all admin pages
|
558 |
+
* Changed : Update to Thickbox 3.1 + mods for NextGEN gallery
|
559 |
+
* Changed : Moved "clear:both" into class "ngg-clear" (THX to Gero)
|
560 |
+
* Changed : Switched from jQuery Interface to jQuery Tabs from Klaus Hartl
|
561 |
+
* Remove : Remove option for singlepic link
|
562 |
+
* Remove : Remove options for imagebrowser
|
563 |
+
* Bugfix : Most Recent image in Widget are wrong
|
564 |
+
* Bugfix : More XHTML valid , htmlspecialchars() after add_query_arg()
|
565 |
+
* Bugfix : Sanitize file name before upload
|
566 |
+
* Bugfix : Sanitize folder name (THX to Tom Fowler)
|
567 |
+
* Bugfix : Show title/alt in jQuery plugin (THX to Gregory Green)
|
568 |
+
* Bugfix : i18n support for Gallery tab
|
569 |
+
* Bugfix : Reduce memory-needs for plugin
|
570 |
+
* Bugfix : Typo/spelling correction
|
571 |
+
* Bugfix : Removed myGallery author from contribute list
|
572 |
+
|
573 |
+
= V0.64 - 31.07.2007 =
|
574 |
+
* Bugfix : Remove arrows in image browser text
|
575 |
+
* Bugfix : Include nggadmintab.php with dirname
|
576 |
+
* Bugfix : Zip-Upload under Mac > look for basename
|
577 |
+
|
578 |
+
= V0.63 - 10.07.2007 =
|
579 |
+
* NEW : You can now upload a zip file into a existing gallery
|
580 |
+
* Added : Remove subfolder in Zip-files
|
581 |
+
* Added : Show required memory for thumbnail creation
|
582 |
+
* Added : Updated to jQuery.multifile 1.22
|
583 |
+
* Added : Install-Upgrade for WordPress 2.3
|
584 |
+
* Bugfix : Supress unlink error message for thumbs
|
585 |
+
* Bugfix : Support upload of zip files from MAC
|
586 |
+
* Bugfix : Add Stripslash for image description
|
587 |
+
* Bugfix : Use for Singlepic not rel="Gallery name"
|
588 |
+
* Bugfix : Moved RSS/Snoopy includes into function
|
589 |
+
|
590 |
+
= V0.62 - 06.07.2007 =
|
591 |
+
* NEW : Import for myGallery
|
592 |
+
* Added : Updated to jQuery 1.1.3.1
|
593 |
+
* Bugfix : Check for memory_limit setting, otherwise pass the test
|
594 |
+
* Bugfix : Thumbcode not insert for nggDisplayRandomImages and nggDisplayRecentImages
|
595 |
+
|
596 |
+
= V0.61 - 29.06.2007 =
|
597 |
+
* Added : Forgot the file jquery.nextgen.pack.js and jquery.nextgen.js
|
598 |
+
|
599 |
+
= V0.60 - 27.06.2007 =
|
600 |
+
* NEW : Select a image from the Upload Tab
|
601 |
+
* NEW : Tag [imagebrowser=id] for a Inline Gallery Browser
|
602 |
+
* NEW : Show gallery without Subpages
|
603 |
+
* NEW : Manage gallery : Function "Add a new page"
|
604 |
+
* NEW : Manage gallery : Show/Hide thumbnails
|
605 |
+
* Added : Slideshow option : Watermark / Background music
|
606 |
+
* Added : Check for memory limit
|
607 |
+
* Added : Show actual memory usage in overview
|
608 |
+
* Added : Include function check in widget
|
609 |
+
* Added : Latest Sidebar widget from KeViN
|
610 |
+
* Added : Check for capability during installation
|
611 |
+
* Changed : Remove P Tag around gallery tags ( THX to the work from John Godley )
|
612 |
+
* Bugfix : Delete picture, check for pid
|
613 |
+
* Bugfix : admin/settings.php line #172: typos corrected (this=these,maxium=maximum). (THX to Helene D.)
|
614 |
+
* Bugfix : admin/settings.php line #311: missing </td> added. (THX to Helene D.)
|
615 |
+
|
616 |
+
= V0.52 - 31.05.2007 =
|
617 |
+
* Changed : Create better thubmnails in square mode (THX to Kees de Bruin)
|
618 |
+
* Changed : Again , fixed ratio create better thumbnails (Also for widescreen photos)
|
619 |
+
* Removed : Option "Resize image before cropping" removed and included in Create square thumbnail
|
620 |
+
* Bugfix : Scan folder for new picture didn't set exclude = 0
|
621 |
+
* Bugfix : If no option is checked in thumbnails, resize failed (THK to Joern Kretzschmar)
|
622 |
+
|
623 |
+
= V0.51 - 28.05.2007 =
|
624 |
+
* Bugfix : Thumbnail permission not set correct
|
625 |
+
* Bugfix : Folder permission check wrong
|
626 |
+
* Bugfix : Remove echo in album (THX to Lazy)
|
627 |
+
|
628 |
+
= V0.50 - 28.05.2007 =
|
629 |
+
* NEW : Select multiple files for upload (THX to Diego A., http://www.fyneworks.com)
|
630 |
+
* NEW : Sidebar widget contain now Slideshow, recent images and random images
|
631 |
+
* Added : New Option for Imagerotator 3.8 (Slow zoom effect)
|
632 |
+
* Added : Option for CDATA wrapper (not working proper)
|
633 |
+
* Added : Option for Thickbox Loading Image
|
634 |
+
* Added : CSS file for dKret2 (THK to Joern)
|
635 |
+
* Added : Better file permission check
|
636 |
+
* Changed : Fixed ratio create better thumbnails in portrait mode
|
637 |
+
* Changed : All jQuery scripts are now in "No Conflict" mode
|
638 |
+
* Changed : Script loading now via wp_enqueue_script
|
639 |
+
* Changed : Add constant values for folder/file permission
|
640 |
+
* Changed : Use description in <A href title>
|
641 |
+
* Bugfix : Remove wrong DIV tag in slideshow
|
642 |
+
* Bugfix : Tag [Slideshow=id,width,height] didn't work proper
|
643 |
+
* Bugfix : Name conflict in Album script (serialize) (THX to Die-Andis)
|
644 |
+
* Bugfix : Changed check for CSS activation
|
645 |
+
* Bugfix : Changed check for safe-mode (Don't ask)
|
646 |
+
|
647 |
+
= V0.43 - 20.05.2007 =
|
648 |
+
* Changed : Rename Thumbnail class to avoid php name collision
|
649 |
+
* Bugfix : Missing translation flag in setup
|
650 |
+
* Bugfix : Changed check for safe-mode
|
651 |
+
* Bugfix : Changed check for Zip-File
|
652 |
+
|
653 |
+
= V0.42 - 17.05.2007 =
|
654 |
+
* Bugfix : Float function for singlepic not integrated, sorry !
|
655 |
+
* Bugfix : Remove clear:both in widget
|
656 |
+
|
657 |
+
= V0.41 - 17.05.2007 =
|
658 |
+
* NEW : Sidebar widget from KeViN
|
659 |
+
* Update : Better album management for more galleries
|
660 |
+
* Update : Thickbox v3 integrated
|
661 |
+
* Added : Float selection for singlepic
|
662 |
+
* Added : CSS class for widget
|
663 |
+
* Added : CSS file for K2 theme
|
664 |
+
* Added : German translation (THX to Lazy)
|
665 |
+
* Added : Better check for safe-mode
|
666 |
+
* Added : CSS Class for single-pic : class="ngg-singlepic"
|
667 |
+
* Added : Option to resize image before cropping it (Setting reset of prior versions needed! Setup -> Reset Settings)
|
668 |
+
* Changed : Image quality by default 85% (THX to ArizonaGroovejet)
|
669 |
+
* Bugfix : Update wrong file when select other style
|
670 |
+
* Bugfix : Fixed Permalink in album (THX to Helene D.)
|
671 |
+
* Bugfix : Scan folder in empty gallery
|
672 |
+
* Bugfix : Swfobjects only added with Thickbox effect
|
673 |
+
* Bugfix : Umlauts are now handled correctly
|
674 |
+
|
675 |
+
= V0.40 - 29.04.2007 =
|
676 |
+
* NEW : TinyMCE Button integration
|
677 |
+
* Removed : CSS Style : remove width/height in album
|
678 |
+
|
679 |
+
= V0.39 - 28.04.2007 =
|
680 |
+
* Added : Set ORDER BY for gallery
|
681 |
+
* Bugfix : check now for Exclude != 1
|
682 |
+
* Bugfix : DB Query in function wrong
|
683 |
+
* Bugfix : DB exlude = DEFAULT '0'
|
684 |
+
* Bugfix : Scan folder in empty gallery
|
685 |
+
|
686 |
+
= V0.38 - 28.04.2007 =
|
687 |
+
* Bugfix : One time more remove get_settings :-)
|
688 |
+
* Bugfix : $_GET in Manage gallery
|
689 |
+
* Bugfix : exclude option
|
690 |
+
|
691 |
+
= V0.37 - 28.04.2007 =
|
692 |
+
* Bugfix : $_GET in Manage gallery
|
693 |
+
* Bugfix : update DB installation routine
|
694 |
+
|
695 |
+
= V0.36 - 26.04.2007 =
|
696 |
+
* Bugfix : Stupid PHP beginner failure in album management
|
697 |
+
|
698 |
+
= V0.35 - 26.04.2007 =
|
699 |
+
* Rework : Folder name can be flexible
|
700 |
+
* New option : Fullsize pic for Singlepic mode
|
701 |
+
* New option : Select show order
|
702 |
+
* Added : Check for WP2.1
|
703 |
+
* Added : Check for permission for default folder
|
704 |
+
* Bugfix : Remove get_settings
|
705 |
+
* Bugfix : Correction for Safe-Mode ON
|
706 |
+
* Bugfix : Set Default '0' for table album.sortorder
|
707 |
+
* Bugfix : Update sort order
|
708 |
+
|
709 |
+
= V0.34 - 24.04.2007 =
|
710 |
+
* Added : Add fix ration setting
|
711 |
+
* Added : Add language file file
|
712 |
+
* Bugfix : Change link in Album to get_bloginfo('wpurl')
|
713 |
+
* Bugfix : Album CSS file not loaded
|
714 |
+
|
715 |
+
= V0.33 - 23.04.2007 =
|
716 |
+
* NEW : Overview Page
|
717 |
+
* NEW : Core function
|
718 |
+
* NEW : Slideshow
|
products/photocrati_nextgen/modules/ngglegacy/class.ngglegacy_installer.php
CHANGED
@@ -4,103 +4,13 @@ class C_NggLegacy_Installer
|
|
4 |
{
|
5 |
function install()
|
6 |
{
|
7 |
-
global $wpdb;
|
8 |
include_once('admin/install.php');
|
9 |
-
|
10 |
-
$this->remove_transients();
|
11 |
-
|
12 |
-
if (is_multisite()) {
|
13 |
-
$network=isset($_SERVER['SCRIPT_NAME'])?$_SERVER['SCRIPT_NAME']:"";
|
14 |
-
$activate=isset($_GET['action'])?$_GET['action']:"";
|
15 |
-
$isNetwork=($network=='/wp-admin/network/plugins.php')?true:false;
|
16 |
-
$isActivation=($activate=='deactivate')?false:true;
|
17 |
-
|
18 |
-
if ($isNetwork and $isActivation){
|
19 |
-
$old_blog = $wpdb->blogid;
|
20 |
-
$blogids = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM $wpdb->blogs", NULL));
|
21 |
-
foreach ($blogids as $blog_id) {
|
22 |
-
switch_to_blog($blog_id);
|
23 |
-
nggallery_install($this);
|
24 |
-
}
|
25 |
-
switch_to_blog($old_blog);
|
26 |
-
return;
|
27 |
-
}
|
28 |
-
}
|
29 |
-
// remove the update message
|
30 |
-
delete_option( 'ngg_update_exists' );
|
31 |
-
nggallery_install($this);
|
32 |
}
|
33 |
|
34 |
function uninstall($hard=FALSE)
|
35 |
{
|
36 |
delete_option('ngg_init_check');
|
37 |
delete_option('ngg_update_exists');
|
38 |
-
delete_option( 'ngg_options' );
|
39 |
-
delete_option( 'ngg_db_version' );
|
40 |
-
delete_option( 'ngg_update_exists' );
|
41 |
-
delete_option( 'ngg_next_update' );
|
42 |
-
|
43 |
-
// now remove the capability
|
44 |
-
ngg_remove_capability("NextGEN Gallery overview");
|
45 |
-
ngg_remove_capability("NextGEN Use TinyMCE");
|
46 |
-
ngg_remove_capability("NextGEN Upload images");
|
47 |
-
ngg_remove_capability("NextGEN Manage gallery");
|
48 |
-
ngg_remove_capability("NextGEN Edit album");
|
49 |
-
ngg_remove_capability("NextGEN Change style");
|
50 |
-
ngg_remove_capability("NextGEN Change options");
|
51 |
-
ngg_remove_capability("NextGEN Attach Interface");
|
52 |
-
|
53 |
-
$this->remove_transients();
|
54 |
-
}
|
55 |
-
|
56 |
-
function remove_transients()
|
57 |
-
{
|
58 |
-
global $wpdb, $_wp_using_ext_object_cache;
|
59 |
-
|
60 |
-
// Fetch all transients
|
61 |
-
$query = "
|
62 |
-
SELECT option_name FROM {$wpdb->options}
|
63 |
-
WHERE option_name LIKE '%ngg_request%'
|
64 |
-
";
|
65 |
-
$transient_names = $wpdb->get_col($query);;
|
66 |
-
|
67 |
-
// Delete all transients in the database
|
68 |
-
$query = "
|
69 |
-
DELETE FROM {$wpdb->options}
|
70 |
-
WHERE option_name LIKE '%ngg_request%'
|
71 |
-
";
|
72 |
-
$wpdb->query($query);
|
73 |
-
|
74 |
-
// If using an external caching mechanism, delete the cached items
|
75 |
-
if ($_wp_using_ext_object_cache) {
|
76 |
-
foreach ($transient_names as $transient) {
|
77 |
-
wp_cache_delete($transient, 'transient');
|
78 |
-
wp_cache_delete(substr($transient, 11), 'transient');
|
79 |
-
}
|
80 |
-
}
|
81 |
-
}
|
82 |
-
|
83 |
-
function upgrade_schema($sql)
|
84 |
-
{
|
85 |
-
global $wpdb;
|
86 |
-
|
87 |
-
// upgrade function changed in WordPress 2.3
|
88 |
-
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
89 |
-
|
90 |
-
// add charset & collate like wp core
|
91 |
-
$charset_collate = '';
|
92 |
-
|
93 |
-
if ( version_compare(mysql_get_server_info(), '4.1.0', '>=') ) {
|
94 |
-
if ( ! empty($wpdb->charset) )
|
95 |
-
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
|
96 |
-
if ( ! empty($wpdb->collate) )
|
97 |
-
$charset_collate .= " COLLATE $wpdb->collate";
|
98 |
-
}
|
99 |
-
|
100 |
-
// Add charset to table creation query
|
101 |
-
$sql = str_replace($charset_collate, '', str_replace(';', '', $sql));
|
102 |
-
|
103 |
-
// Execute the query
|
104 |
-
dbDelta($sql. ' '. $charset_collate. ';');
|
105 |
}
|
106 |
}
|
4 |
{
|
5 |
function install()
|
6 |
{
|
|
|
7 |
include_once('admin/install.php');
|
8 |
+
nggallery_install();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
}
|
10 |
|
11 |
function uninstall($hard=FALSE)
|
12 |
{
|
13 |
delete_option('ngg_init_check');
|
14 |
delete_option('ngg_update_exists');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
}
|
products/photocrati_nextgen/modules/ngglegacy/lang/nggallery.pot
CHANGED
@@ -1128,11 +1128,11 @@ msgid "NextGEN Gallery : Tables could not created, please check your database se
|
|
1128 |
msgstr ""
|
1129 |
|
1130 |
#: ../admin/install.php:170
|
1131 |
-
msgid "[Show slideshow]"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
#: ../admin/install.php:171
|
1135 |
-
msgid "[Show
|
1136 |
msgstr ""
|
1137 |
|
1138 |
#: ../admin/manage-galleries.php:69
|
1128 |
msgstr ""
|
1129 |
|
1130 |
#: ../admin/install.php:170
|
1131 |
+
msgid "[Show as slideshow]"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
#: ../admin/install.php:171
|
1135 |
+
msgid "[Show picture list]"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
#: ../admin/manage-galleries.php:69
|
products/photocrati_nextgen/modules/ngglegacy/lib/media-rss.php
CHANGED
@@ -221,10 +221,10 @@ class nggMediaRss {
|
|
221 |
$out .= $indent . "\t<description><![CDATA[" . nggGallery::i18n($desc, 'pic_' . $image->pid . '_description') . "]]></description>\n";
|
222 |
$out .= $indent . "\t<link><![CDATA[" . $image->get_permalink() . "]]></link>\n";
|
223 |
$out .= $indent . "\t<guid>image-id:" . $image->pid . "</guid>\n";
|
224 |
-
$out .= $indent . "\t<media:content url='" .
|
225 |
$out .= $indent . "\t<media:title><![CDATA[" . nggGallery::i18n($title, 'pic_' . $image->pid . '_alttext') . "]]></media:title>\n";
|
226 |
$out .= $indent . "\t<media:description><![CDATA[" . nggGallery::i18n($desc, 'pic_' . $image->pid . '_description') . "]]></media:description>\n";
|
227 |
-
$out .= $indent . "\t<media:thumbnail url='" .
|
228 |
$out .= $indent . "\t<media:keywords><![CDATA[" . nggGallery::i18n($tag_names) . "]]></media:keywords>\n";
|
229 |
$out .= $indent . "\t<media:copyright><![CDATA[Copyright (c) " . get_option("blogname") . " (" . site_url() . ")]]></media:copyright>\n";
|
230 |
$out .= $indent . "</item>\n";
|
221 |
$out .= $indent . "\t<description><![CDATA[" . nggGallery::i18n($desc, 'pic_' . $image->pid . '_description') . "]]></description>\n";
|
222 |
$out .= $indent . "\t<link><![CDATA[" . $image->get_permalink() . "]]></link>\n";
|
223 |
$out .= $indent . "\t<guid>image-id:" . $image->pid . "</guid>\n";
|
224 |
+
$out .= $indent . "\t<media:content url='" . esc_url($image->imageURL) . "' medium='image' />\n";
|
225 |
$out .= $indent . "\t<media:title><![CDATA[" . nggGallery::i18n($title, 'pic_' . $image->pid . '_alttext') . "]]></media:title>\n";
|
226 |
$out .= $indent . "\t<media:description><![CDATA[" . nggGallery::i18n($desc, 'pic_' . $image->pid . '_description') . "]]></media:description>\n";
|
227 |
+
$out .= $indent . "\t<media:thumbnail url='" . esc_url($image->thumbURL) . "' width='" . $thumbwidth . "' height='" . $thumbheight . "' />\n";
|
228 |
$out .= $indent . "\t<media:keywords><![CDATA[" . nggGallery::i18n($tag_names) . "]]></media:keywords>\n";
|
229 |
$out .= $indent . "\t<media:copyright><![CDATA[Copyright (c) " . get_option("blogname") . " (" . site_url() . ")]]></media:copyright>\n";
|
230 |
$out .= $indent . "</item>\n";
|
products/photocrati_nextgen/modules/ngglegacy/lib/meta.php
CHANGED
@@ -129,8 +129,6 @@ class nggMeta{
|
|
129 |
$meta['created_timestamp'] = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $this->exif_date2ts($exif['DateTimeDigitized']));
|
130 |
else if (!empty($exif['DateTimeOriginal']))
|
131 |
$meta['created_timestamp'] = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $this->exif_date2ts($exif['DateTimeOriginal']));
|
132 |
-
else if (!empty($exif['FileDateTime']))
|
133 |
-
$meta['created_timestamp'] = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $this->exif_date2ts($exif['FileDateTime']));
|
134 |
if (!empty($exif['FocalLength']))
|
135 |
$meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __(' mm','nggallery');
|
136 |
if (!empty($exif['ISOSpeedRatings']))
|
@@ -500,37 +498,25 @@ class nggMeta{
|
|
500 |
*/
|
501 |
function get_date_time() {
|
502 |
|
503 |
-
|
504 |
|
505 |
-
|
506 |
-
|
507 |
-
$date = @strtotime($this->xmp_array['created_timestamp']);
|
508 |
-
}
|
509 |
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
$date = @strtotime($date);
|
522 |
-
}
|
523 |
-
|
524 |
-
// If all else fails, use the file creation time
|
525 |
-
else if ($this->image->imagePath) {
|
526 |
-
$date = @filectime($this->image->imagePath);
|
527 |
-
}
|
528 |
-
|
529 |
-
// Failback
|
530 |
-
if (!$date) $date = time();
|
531 |
|
532 |
// Return the MySQL format
|
533 |
-
$date_time = date( 'Y-m-d H:i:s', $
|
534 |
|
535 |
return $date_time;
|
536 |
}
|
129 |
$meta['created_timestamp'] = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $this->exif_date2ts($exif['DateTimeDigitized']));
|
130 |
else if (!empty($exif['DateTimeOriginal']))
|
131 |
$meta['created_timestamp'] = date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $this->exif_date2ts($exif['DateTimeOriginal']));
|
|
|
|
|
132 |
if (!empty($exif['FocalLength']))
|
133 |
$meta['focal_length'] = $this->exif_frac2dec( $exif['FocalLength'] ) . __(' mm','nggallery');
|
134 |
if (!empty($exif['ISOSpeedRatings']))
|
498 |
*/
|
499 |
function get_date_time() {
|
500 |
|
501 |
+
$date_time = time();
|
502 |
|
503 |
+
// get exif - data
|
504 |
+
if ( isset( $this->exif_data['EXIF']) ) {
|
|
|
|
|
505 |
|
506 |
+
// try to read the date / time from the exif
|
507 |
+
foreach (array('DateTimeDigitized', 'DateTimeOriginal', 'FileDateTime') as $key) {
|
508 |
+
if (isset($this->exif_data['EXIF'][$key])) {
|
509 |
+
$date_time = strtotime($this->exif_data['EXIF'][$key]);
|
510 |
+
break;
|
511 |
+
}
|
512 |
+
}
|
513 |
+
} else {
|
514 |
+
// if no other date available, get the filetime
|
515 |
+
$date_time = @filectime($this->image->imagePath );
|
516 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
517 |
|
518 |
// Return the MySQL format
|
519 |
+
$date_time = date( 'Y-m-d H:i:s', $date_time );
|
520 |
|
521 |
return $date_time;
|
522 |
}
|
products/photocrati_nextgen/modules/ngglegacy/lib/ngg-db.php
CHANGED
@@ -540,7 +540,7 @@ class nggdb {
|
|
540 |
* @param int|string The image ID or Slug
|
541 |
* @return object A nggImage object representing the image (false if not found)
|
542 |
*/
|
543 |
-
|
544 |
global $wpdb;
|
545 |
|
546 |
if( is_numeric($id) ) {
|
@@ -1040,7 +1040,7 @@ class nggdb {
|
|
1040 |
* @param array $values An array with existing or new values
|
1041 |
* @return bool result of query
|
1042 |
*/
|
1043 |
-
|
1044 |
global $wpdb;
|
1045 |
|
1046 |
// XXX nggdb is used statically, cannot inherit from Ngg_Serializable
|
@@ -1070,7 +1070,7 @@ class nggdb {
|
|
1070 |
* @param int (optional) $id of the object, so that it's not checked against itself
|
1071 |
* @return string unique slug for the object, based on $slug (with a -1, -2, etc. suffix)
|
1072 |
*/
|
1073 |
-
|
1074 |
|
1075 |
global $wpdb;
|
1076 |
|
540 |
* @param int|string The image ID or Slug
|
541 |
* @return object A nggImage object representing the image (false if not found)
|
542 |
*/
|
543 |
+
function find_image( $id ) {
|
544 |
global $wpdb;
|
545 |
|
546 |
if( is_numeric($id) ) {
|
1040 |
* @param array $values An array with existing or new values
|
1041 |
* @return bool result of query
|
1042 |
*/
|
1043 |
+
function update_image_meta( $id, $new_values ) {
|
1044 |
global $wpdb;
|
1045 |
|
1046 |
// XXX nggdb is used statically, cannot inherit from Ngg_Serializable
|
1070 |
* @param int (optional) $id of the object, so that it's not checked against itself
|
1071 |
* @return string unique slug for the object, based on $slug (with a -1, -2, etc. suffix)
|
1072 |
*/
|
1073 |
+
function get_unique_slug( $slug, $type, $id = 0 ) {
|
1074 |
|
1075 |
global $wpdb;
|
1076 |
|
products/photocrati_nextgen/modules/ngglegacy/lib/post-thumbnail.php
CHANGED
@@ -65,7 +65,7 @@ class nggPostThumbnail {
|
|
65 |
$iframe_src = add_query_arg('chromeless', '1', $iframe_src);
|
66 |
$iframe_src = add_query_arg('TB_iframe', '1', $iframe_src);
|
67 |
|
68 |
-
$set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set NextGEN featured image' ) . '" href="' .
|
69 |
|
70 |
$content .= sprintf($set_thumbnail_link, esc_html__( 'Set NextGEN featured image' ));
|
71 |
}
|
@@ -325,7 +325,7 @@ class nggPostThumbnail {
|
|
325 |
|
326 |
global $_wp_additional_image_sizes, $post_ID;
|
327 |
|
328 |
-
$set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="' .
|
329 |
$content = sprintf($set_thumbnail_link, esc_html__( 'Set featured image' ));
|
330 |
|
331 |
$image = nggdb::find_image($thumbnail_id);
|
65 |
$iframe_src = add_query_arg('chromeless', '1', $iframe_src);
|
66 |
$iframe_src = add_query_arg('TB_iframe', '1', $iframe_src);
|
67 |
|
68 |
+
$set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set NextGEN featured image' ) . '" href="' . esc_url( $iframe_src ) . '" id="set-ngg-post-thumbnail" class="thickbox">%s</a></p>';
|
69 |
|
70 |
$content .= sprintf($set_thumbnail_link, esc_html__( 'Set NextGEN featured image' ));
|
71 |
}
|
325 |
|
326 |
global $_wp_additional_image_sizes, $post_ID;
|
327 |
|
328 |
+
$set_thumbnail_link = '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set featured image' ) . '" href="' . esc_url( get_upload_iframe_src('image') ) . '" id="set-post-thumbnail" class="thickbox">%s</a></p>';
|
329 |
$content = sprintf($set_thumbnail_link, esc_html__( 'Set featured image' ));
|
330 |
|
331 |
$image = nggdb::find_image($thumbnail_id);
|
products/photocrati_nextgen/modules/ngglegacy/lib/shortcodes.php
CHANGED
@@ -13,12 +13,8 @@ class NextGEN_shortcodes {
|
|
13 |
// register the new shortcodes
|
14 |
function NextGEN_shortcodes() {
|
15 |
|
16 |
-
//
|
17 |
-
|
18 |
-
if ((int)ini_get('pcre.backtrack_limit') < $pcre_limit) {
|
19 |
-
@ini_set('pcre.backtrack_limit', $pcre_limit);
|
20 |
-
}
|
21 |
-
|
22 |
|
23 |
// convert the old shortcode
|
24 |
add_filter('the_content', array(&$this, 'convert_shortcode'));
|
13 |
// register the new shortcodes
|
14 |
function NextGEN_shortcodes() {
|
15 |
|
16 |
+
//Long posts should require a higher limit, see http://core.trac.wordpress.org/ticket/8553
|
17 |
+
@ini_set('pcre.backtrack_limit', 500000);
|
|
|
|
|
|
|
|
|
18 |
|
19 |
// convert the old shortcode
|
20 |
add_filter('the_content', array(&$this, 'convert_shortcode'));
|
products/photocrati_nextgen/modules/ngglegacy/lib/sitemap.php
CHANGED
@@ -44,11 +44,11 @@ class nggSitemaps {
|
|
44 |
remove_all_shortcodes();
|
45 |
|
46 |
// We cannot parse at this point a album, just galleries & single images
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
|
53 |
// Search now for shortcodes
|
54 |
do_shortcode( $p->post_content );
|
44 |
remove_all_shortcodes();
|
45 |
|
46 |
// We cannot parse at this point a album, just galleries & single images
|
47 |
+
add_shortcode( 'singlepic', array(&$this, 'add_images' ) );
|
48 |
+
add_shortcode( 'thumb', array(&$this, 'add_images' ) );
|
49 |
+
add_shortcode( 'nggallery', array(&$this, 'add_gallery') );
|
50 |
+
add_shortcode( 'imagebrowser', array(&$this, 'add_gallery' ) );
|
51 |
+
add_shortcode( 'slideshow', array(&$this, 'add_gallery' ) );
|
52 |
|
53 |
// Search now for shortcodes
|
54 |
do_shortcode( $p->post_content );
|
products/photocrati_nextgen/modules/ngglegacy/lib/xmlrpc.php
ADDED
@@ -0,0 +1,882 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* XML-RPC protocol support for NextGEN Gallery
|
4 |
+
*
|
5 |
+
* @package NextGEN Gallery
|
6 |
+
* @author Alex Rabe
|
7 |
+
*
|
8 |
+
*/
|
9 |
+
class nggXMLRPC{
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Init the methods for the XMLRPC hook
|
13 |
+
*
|
14 |
+
*/
|
15 |
+
function __construct() {
|
16 |
+
|
17 |
+
add_filter('xmlrpc_methods', array(&$this, 'add_methods') );
|
18 |
+
}
|
19 |
+
|
20 |
+
function add_methods($methods) {
|
21 |
+
|
22 |
+
$methods['ngg.installed'] = array(&$this, 'nggInstalled');
|
23 |
+
// Image methods
|
24 |
+
$methods['ngg.getImage'] = array(&$this, 'getImage');
|
25 |
+
$methods['ngg.getImages'] = array(&$this, 'getImages');
|
26 |
+
$methods['ngg.uploadImage'] = array(&$this, 'uploadImage');
|
27 |
+
$methods['ngg.editImage'] = array(&$this, 'editImage');
|
28 |
+
$methods['ngg.deleteImage'] = array(&$this, 'deleteImage');
|
29 |
+
// Gallery methods
|
30 |
+
$methods['ngg.getGallery'] = array(&$this, 'getGallery');
|
31 |
+
$methods['ngg.getGalleries'] = array(&$this, 'getGalleries');
|
32 |
+
$methods['ngg.newGallery'] = array(&$this, 'newGallery');
|
33 |
+
$methods['ngg.editGallery'] = array(&$this, 'editGallery');
|
34 |
+
$methods['ngg.deleteGallery'] = array(&$this, 'deleteGallery');
|
35 |
+
// Album methods
|
36 |
+
$methods['ngg.getAlbum'] = array(&$this, 'getAlbum');
|
37 |
+
$methods['ngg.getAlbums'] = array(&$this, 'getAlbums');
|
38 |
+
$methods['ngg.newAlbum'] = array(&$this, 'newAlbum');
|
39 |
+
$methods['ngg.editAlbum'] = array(&$this, 'editAlbum');
|
40 |
+
$methods['ngg.deleteAlbum'] = array(&$this, 'deleteAlbum');
|
41 |
+
|
42 |
+
return $methods;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Check if it's an csv string, then serialize it.
|
47 |
+
*
|
48 |
+
* @since 1.9.2
|
49 |
+
* @param string $data
|
50 |
+
* @return serialized string
|
51 |
+
*/
|
52 |
+
function is_serialized( $data ) {
|
53 |
+
|
54 |
+
// if it isn't a string, we don't serialize it.
|
55 |
+
if ( ! is_string( $data ) )
|
56 |
+
return false;
|
57 |
+
|
58 |
+
if ($data && !strpos( $data , '{')) {
|
59 |
+
$items = explode(',', $data);
|
60 |
+
return serialize($items);
|
61 |
+
}
|
62 |
+
|
63 |
+
return $data;
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Check if NextGEN Gallery is installed
|
68 |
+
*
|
69 |
+
* @since 1.4
|
70 |
+
*
|
71 |
+
* @param none
|
72 |
+
* @return string version number
|
73 |
+
*/
|
74 |
+
function nggInstalled($args) {
|
75 |
+
global $ngg;
|
76 |
+
return array( 'version' => $ngg->version );
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Log user in.
|
81 |
+
*
|
82 |
+
* @since 2.8
|
83 |
+
*
|
84 |
+
* @param string $username User's username.
|
85 |
+
* @param string $password User's password.
|
86 |
+
* @return mixed WP_User object if authentication passed, false otherwise
|
87 |
+
*/
|
88 |
+
function login($username, $password) {
|
89 |
+
global $wp_version;
|
90 |
+
|
91 |
+
if (version_compare($wp_version,"3.5","<")) {
|
92 |
+
if ( !get_option( 'enable_xmlrpc' ) ) {
|
93 |
+
$this->error = new IXR_Error( 405, sprintf( __('XML-RPC services are disabled on this blog. An admin user can enable them at %s'), admin_url('options-writing.php') ) );
|
94 |
+
return false;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
$user = wp_authenticate($username, $password);
|
99 |
+
|
100 |
+
if (is_wp_error($user)) {
|
101 |
+
$this->error = new IXR_Error(403, __('Bad login/pass combination.'));
|
102 |
+
return false;
|
103 |
+
}
|
104 |
+
|
105 |
+
set_current_user( $user->ID );
|
106 |
+
return $user;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Method "ngg.uploadImage"
|
111 |
+
* Uploads a image to a gallery
|
112 |
+
*
|
113 |
+
* @since 1.4
|
114 |
+
*
|
115 |
+
* @copyright addapted from WP Core
|
116 |
+
* @param array $args Method parameters.
|
117 |
+
* - int blog_id
|
118 |
+
* - string username
|
119 |
+
* - string password
|
120 |
+
* - struct data
|
121 |
+
* o string name
|
122 |
+
* o string type (optional)
|
123 |
+
* o base64 bits
|
124 |
+
* o bool overwrite (optional)
|
125 |
+
* o int gallery
|
126 |
+
* o int image_id (optional)
|
127 |
+
* @return array with image meta data
|
128 |
+
*/
|
129 |
+
function uploadImage($args) {
|
130 |
+
global $wpdb;
|
131 |
+
|
132 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
133 |
+
require_once ( 'meta.php' ); // meta data import
|
134 |
+
|
135 |
+
$blog_ID = (int) $args[0];
|
136 |
+
$username = $wpdb->escape($args[1]);
|
137 |
+
$password = $wpdb->escape($args[2]);
|
138 |
+
$data = $args[3];
|
139 |
+
|
140 |
+
$name = $data['name'];
|
141 |
+
$type = $data['type'];
|
142 |
+
$bits = $data['bits'];
|
143 |
+
|
144 |
+
// gallery & image id
|
145 |
+
$gid = (int) $data['gallery']; // required field
|
146 |
+
$pid = (int) $data['image_id']; // optional but more foolproof of overwrite
|
147 |
+
$image = false; // container for the image object
|
148 |
+
|
149 |
+
logIO('O', '(NGG) Received '.strlen($bits).' bytes');
|
150 |
+
|
151 |
+
if ( !$user = $this->login($username, $password) )
|
152 |
+
return $this->error;
|
153 |
+
|
154 |
+
// Check if you have the correct capability for upload
|
155 |
+
if ( !current_user_can('NextGEN Upload images') ) {
|
156 |
+
logIO('O', '(NGG) User does not have upload_files capability');
|
157 |
+
$this->error = new IXR_Error(401, __('You are not allowed to upload files to this site.'));
|
158 |
+
return $this->error;
|
159 |
+
}
|
160 |
+
|
161 |
+
// Look for the gallery , could we find it ?
|
162 |
+
if ( !$gallery = nggdb::find_gallery($gid) )
|
163 |
+
return new IXR_Error(404, __('Could not find gallery ' . $gid ));
|
164 |
+
|
165 |
+
// Now check if you have the correct capability for this gallery
|
166 |
+
if ( !nggAdmin::can_manage_this_gallery($gallery->author) ) {
|
167 |
+
logIO('O', '(NGG) User does not have upload_files capability');
|
168 |
+
$this->error = new IXR_Error(401, __('You are not allowed to upload files to this gallery.'));
|
169 |
+
return $this->error;
|
170 |
+
}
|
171 |
+
|
172 |
+
//clean filename and extract extension
|
173 |
+
$filepart = nggGallery::fileinfo( $name );
|
174 |
+
$name = $filepart['basename'];
|
175 |
+
|
176 |
+
// check for allowed extension and if it's an image file
|
177 |
+
$ext = array('jpg', 'png', 'gif');
|
178 |
+
if ( !in_array($filepart['extension'], $ext) ){
|
179 |
+
logIO('O', '(NGG) Not allowed file type');
|
180 |
+
$this->error = new IXR_Error(401, __('This is no valid image file.','nggallery'));
|
181 |
+
return $this->error;
|
182 |
+
}
|
183 |
+
|
184 |
+
// in the case you would overwrite the image, let's delete the old one first
|
185 |
+
if(!empty($data["overwrite"]) && ($data["overwrite"] == true)) {
|
186 |
+
|
187 |
+
// search for the image based on the filename, if it's not already provided
|
188 |
+
if ($pid == 0)
|
189 |
+
$pid = $wpdb->get_col(" SELECT pid FROM {$wpdb->nggpictures} WHERE filename = '{$name}' AND galleryid = '{$gid}' ");
|
190 |
+
|
191 |
+
if ( !$image = nggdb::find_image( $pid ) )
|
192 |
+
return new IXR_Error(404, __('Could not find image id ' . $pid ));
|
193 |
+
|
194 |
+
// sync the gallery<->image parameter, otherwise we may copy it to the wrong gallery
|
195 |
+
$gallery = $image;
|
196 |
+
|
197 |
+
// delete now the image
|
198 |
+
if ( !@unlink( $image->imagePath ) ) {
|
199 |
+
$errorString = sprintf(__('Failed to delete image %1$s ','nggallery'), $image->imagePath);
|
200 |
+
logIO('O', '(NGG) ' . $errorString);
|
201 |
+
return new IXR_Error(500, $errorString);
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
// upload routine from wp core, load first the image to the upload folder, $upload['file'] contain the path
|
206 |
+
$upload = wp_upload_bits($name, $type, $bits);
|
207 |
+
if ( ! empty($upload['error']) ) {
|
208 |
+
$errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
|
209 |
+
logIO('O', '(NGG) ' . $errorString);
|
210 |
+
return new IXR_Error(500, $errorString);
|
211 |
+
}
|
212 |
+
|
213 |
+
// this is the dir to the gallery
|
214 |
+
$path = WINABSPATH . $gallery->path;
|
215 |
+
|
216 |
+
// check if the filename already exist, if not add a counter index
|
217 |
+
$filename = wp_unique_filename( $path, $name );
|
218 |
+
$destination = $path . '/'. $filename;
|
219 |
+
|
220 |
+
// Move files to gallery folder
|
221 |
+
if ( !@rename($upload['file'], $destination ) ) {
|
222 |
+
$errorString = sprintf(__('Failed to move image %1$s to %2$s','nggallery'), '<strong>' . $upload['file'] . '</strong>', $destination);
|
223 |
+
logIO('O', '(NGG) ' . $errorString);
|
224 |
+
return new IXR_Error(500, $errorString);
|
225 |
+
}
|
226 |
+
|
227 |
+
//add to database if it's a new image
|
228 |
+
if(empty($data["overwrite"]) || ($data["overwrite"] == false)) {
|
229 |
+
$pid_array = nggAdmin::add_Images( $gallery->gid, array( $filename ) );
|
230 |
+
// the first element is our new image id
|
231 |
+
if (count($pid_array) == 1)
|
232 |
+
$pid = $pid_array[0];
|
233 |
+
}
|
234 |
+
|
235 |
+
//get all information about the image, in the case it's a new one
|
236 |
+
if (!$image)
|
237 |
+
$image = nggdb::find_image( $pid );
|
238 |
+
|
239 |
+
// create again the thumbnail, should return a '1'
|
240 |
+
nggAdmin::create_thumbnail( $image );
|
241 |
+
|
242 |
+
return apply_filters( 'ngg_upload_image', $image );
|
243 |
+
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* Method "ngg.deleteImage"
|
248 |
+
* Delete a Image from the database and gallery
|
249 |
+
*
|
250 |
+
* @since 1.7.3
|
251 |
+
*
|
252 |
+
* @param array $args Method parameters.
|
253 |
+
* - int blog_id
|
254 |
+
* - string username
|
255 |
+
* - string password
|
256 |
+
* - int image_id
|
257 |
+
* @return true
|
258 |
+
*/
|
259 |
+
function deleteImage($args) {
|
260 |
+
|
261 |
+
global $nggdb, $ngg;
|
262 |
+
|
263 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
264 |
+
|
265 |
+
$this->escape($args);
|
266 |
+
$blog_ID = (int) $args[0];
|
267 |
+
$username = $args[1];
|
268 |
+
$password = $args[2];
|
269 |
+
$id = (int) $args[3];
|
270 |
+
|
271 |
+
if ( !$user = $this->login($username, $password) )
|
272 |
+
return $this->error;
|
273 |
+
|
274 |
+
if ( !$image = nggdb::find_image($id) )
|
275 |
+
return(new IXR_Error(404, __("Invalid image ID")));
|
276 |
+
|
277 |
+
if ( !current_user_can( 'NextGEN Manage gallery' ) && !nggAdmin::can_manage_this_gallery($image->author) )
|
278 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to edit this image' ) );
|
279 |
+
|
280 |
+
if ($ngg->options['deleteImg']) {
|
281 |
+
@unlink($image->imagePath);
|
282 |
+
@unlink($image->thumbPath);
|
283 |
+
@unlink($image->imagePath . "_backup" );
|
284 |
+
}
|
285 |
+
|
286 |
+
nggdb::delete_image ( $id );
|
287 |
+
|
288 |
+
return true;
|
289 |
+
|
290 |
+
}
|
291 |
+
|
292 |
+
/**
|
293 |
+
* Method "ngg.editImage"
|
294 |
+
* Edit a existing Image
|
295 |
+
*
|
296 |
+
* @since 1.7.3
|
297 |
+
*
|
298 |
+
* @param array $args Method parameters.
|
299 |
+
* - int blog_id
|
300 |
+
* - string username
|
301 |
+
* - string password
|
302 |
+
* - int Image ID
|
303 |
+
* - string alt/title text
|
304 |
+
* - string description
|
305 |
+
* - int exclude from gallery (0 or 1)
|
306 |
+
* @return true if success
|
307 |
+
*/
|
308 |
+
function editImage($args) {
|
309 |
+
|
310 |
+
global $ngg;
|
311 |
+
|
312 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
313 |
+
|
314 |
+
$this->escape($args);
|
315 |
+
$blog_ID = (int) $args[0];
|
316 |
+
$username = $args[1];
|
317 |
+
$password = $args[2];
|
318 |
+
$id = (int) $args[3];
|
319 |
+
$alttext = $args[4];
|
320 |
+
$description= $args[5];
|
321 |
+
$exclude = (int) $args[6];
|
322 |
+
|
323 |
+
if ( !$user = $this->login($username, $password) )
|
324 |
+
return $this->error;
|
325 |
+
|
326 |
+
if ( !$image = nggdb::find_image($id) )
|
327 |
+
return(new IXR_Error(404, __( 'Invalid image ID' )));
|
328 |
+
|
329 |
+
if ( !current_user_can( 'NextGEN Manage gallery' ) && !nggAdmin::can_manage_this_gallery($image->author) )
|
330 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to edit this image' ) );
|
331 |
+
|
332 |
+
if ( !empty( $id ) )
|
333 |
+
$result = nggdb::update_image($id, false, false, $description, $alttext, $exclude);
|
334 |
+
|
335 |
+
if ( !$result )
|
336 |
+
return new IXR_Error(500, __('Sorry, could not update the image'));
|
337 |
+
|
338 |
+
return true;
|
339 |
+
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* Method "ngg.newGallery"
|
344 |
+
* Create a new gallery
|
345 |
+
*
|
346 |
+
* @since 1.4
|
347 |
+
*
|
348 |
+
* @param array $args Method parameters.
|
349 |
+
* - int blog_id
|
350 |
+
* - string username
|
351 |
+
* - string password
|
352 |
+
* - string new gallery name
|
353 |
+
* @return int with new gallery ID
|
354 |
+
*/
|
355 |
+
function newGallery($args) {
|
356 |
+
|
357 |
+
global $ngg;
|
358 |
+
|
359 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
360 |
+
|
361 |
+
$this->escape($args);
|
362 |
+
$blog_ID = (int) $args[0];
|
363 |
+
$username = $args[1];
|
364 |
+
$password = $args[2];
|
365 |
+
$name = $args[3];
|
366 |
+
$id = false;
|
367 |
+
|
368 |
+
if ( !$user = $this->login($username, $password) )
|
369 |
+
return $this->error;
|
370 |
+
|
371 |
+
if( !current_user_can( 'NextGEN Manage gallery' ) )
|
372 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries' ) );
|
373 |
+
|
374 |
+
if ( !empty( $name ) )
|
375 |
+
$id = nggAdmin::create_gallery($name, $ngg->options['gallerypath'], false);
|
376 |
+
|
377 |
+
if ( !$id )
|
378 |
+
return new IXR_Error(500, __('Sorry, could not create the gallery'));
|
379 |
+
|
380 |
+
return($id);
|
381 |
+
|
382 |
+
}
|
383 |
+
|
384 |
+
/**
|
385 |
+
* Method "ngg.editGallery"
|
386 |
+
* Edit a existing gallery
|
387 |
+
*
|
388 |
+
* @since 1.7.0
|
389 |
+
*
|
390 |
+
* @param array $args Method parameters.
|
391 |
+
* - int blog_id
|
392 |
+
* - string username
|
393 |
+
* - string password
|
394 |
+
* - int gallery ID
|
395 |
+
* - string gallery name
|
396 |
+
* - string title
|
397 |
+
* - string description
|
398 |
+
* - int ID of the preview picture
|
399 |
+
* @return true if success
|
400 |
+
*/
|
401 |
+
function editGallery($args) {
|
402 |
+
|
403 |
+
global $ngg;
|
404 |
+
|
405 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
406 |
+
|
407 |
+
$this->escape($args);
|
408 |
+
$blog_ID = (int) $args[0];
|
409 |
+
$username = $args[1];
|
410 |
+
$password = $args[2];
|
411 |
+
$id = (int) $args[3];
|
412 |
+
$name = $args[4];
|
413 |
+
$title = $args[5];
|
414 |
+
$description= $args[6];
|
415 |
+
$previewpic = (int) $args[7];
|
416 |
+
|
417 |
+
if ( !$user = $this->login($username, $password) )
|
418 |
+
return $this->error;
|
419 |
+
|
420 |
+
if ( !$gallery = nggdb::find_gallery($id) )
|
421 |
+
return(new IXR_Error(404, __("Invalid gallery ID")));
|
422 |
+
|
423 |
+
if ( !current_user_can( 'NextGEN Manage gallery' ) && !nggAdmin::can_manage_this_gallery($gallery->author) )
|
424 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage this gallery' ) );
|
425 |
+
|
426 |
+
if ( !empty( $name ) )
|
427 |
+
$result = nggdb::update_gallery($id, $name, false, $title, $description, false, $previewpic);
|
428 |
+
|
429 |
+
if ( !$result )
|
430 |
+
return new IXR_Error(500, __('Sorry, could not update the gallery'));
|
431 |
+
|
432 |
+
return true;
|
433 |
+
|
434 |
+
}
|
435 |
+
|
436 |
+
/**
|
437 |
+
* Method "ngg.newAlbum"
|
438 |
+
* Create a new album
|
439 |
+
*
|
440 |
+
* @since 1.7.0
|
441 |
+
*
|
442 |
+
* @param array $args Method parameters.
|
443 |
+
* - int blog_id
|
444 |
+
* - string username
|
445 |
+
* - string password
|
446 |
+
* - string new album name
|
447 |
+
* - int id of preview image
|
448 |
+
* - string description
|
449 |
+
* - string serialized array of galleries or a comma-separated string of gallery IDs
|
450 |
+
* @return int with new album ID
|
451 |
+
*/
|
452 |
+
function newAlbum($args) {
|
453 |
+
|
454 |
+
global $ngg;
|
455 |
+
|
456 |
+
$this->escape($args);
|
457 |
+
$blog_ID = (int) $args[0];
|
458 |
+
$username = $args[1];
|
459 |
+
$password = $args[2];
|
460 |
+
$name = $args[3];
|
461 |
+
$preview = (int) $args[4];
|
462 |
+
$description= $args[5];
|
463 |
+
$galleries = $this->is_serialized($args[6]);
|
464 |
+
$id = false;
|
465 |
+
|
466 |
+
if ( !$user = $this->login($username, $password) )
|
467 |
+
return $this->error;
|
468 |
+
|
469 |
+
if( !current_user_can( 'NextGEN Edit album' ) || !nggGallery::current_user_can( 'NextGEN Add/Delete album' ) )
|
470 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage albums' ) );
|
471 |
+
|
472 |
+
if ( !empty( $name ) )
|
473 |
+
$id = $result = nggdb::add_album( $name, $preview, $description, $galleries );
|
474 |
+
|
475 |
+
if ( !$id )
|
476 |
+
return new IXR_Error(500, __('Sorry, could not create the album'));
|
477 |
+
|
478 |
+
return($id);
|
479 |
+
|
480 |
+
}
|
481 |
+
|
482 |
+
/**
|
483 |
+
* Method "ngg.editAlbum"
|
484 |
+
* Edit a existing Album
|
485 |
+
*
|
486 |
+
* @since 1.7.0
|
487 |
+
*
|
488 |
+
* @param array $args Method parameters.
|
489 |
+
* - int blog_id
|
490 |
+
* - string username
|
491 |
+
* - string password
|
492 |
+
* - int album ID
|
493 |
+
* - string album name
|
494 |
+
* - int id of preview image
|
495 |
+
* - string description
|
496 |
+
* - string serialized array of galleries or a comma-separated string of gallery IDs
|
497 |
+
* @return true if success
|
498 |
+
*/
|
499 |
+
function editAlbum($args) {
|
500 |
+
|
501 |
+
global $ngg;
|
502 |
+
|
503 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
504 |
+
|
505 |
+
$this->escape($args);
|
506 |
+
$blog_ID = (int) $args[0];
|
507 |
+
$username = $args[1];
|
508 |
+
$password = $args[2];
|
509 |
+
$id = (int) $args[3];
|
510 |
+
$name = $args[4];
|
511 |
+
$preview = (int) $args[5];
|
512 |
+
$description= $args[6];
|
513 |
+
$galleries = $this->is_serialized($args[7]);
|
514 |
+
|
515 |
+
if ( !$user = $this->login($username, $password) )
|
516 |
+
return $this->error;
|
517 |
+
|
518 |
+
if ( !$album = nggdb::find_album($id) )
|
519 |
+
return(new IXR_Error(404, __("Invalid album ID")));
|
520 |
+
|
521 |
+
if( !current_user_can( 'NextGEN Edit album' ) )
|
522 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage albums' ) );
|
523 |
+
|
524 |
+
if ( !empty( $name ) )
|
525 |
+
$result = nggdb::update_album($id, $name, $preview, $description, $galleries);
|
526 |
+
|
527 |
+
if ( !$result )
|
528 |
+
return new IXR_Error(500, __('Sorry, could not update the album'));
|
529 |
+
|
530 |
+
return true;
|
531 |
+
|
532 |
+
}
|
533 |
+
|
534 |
+
/**
|
535 |
+
* Method "ngg.deleteAlbum"
|
536 |
+
* Delete a album from the database
|
537 |
+
*
|
538 |
+
* @since 1.7.0
|
539 |
+
*
|
540 |
+
* @param array $args Method parameters.
|
541 |
+
* - int blog_id
|
542 |
+
* - string username
|
543 |
+
* - string password
|
544 |
+
* - int album id
|
545 |
+
* @return true
|
546 |
+
*/
|
547 |
+
function deleteAlbum($args) {
|
548 |
+
|
549 |
+
global $nggdb;
|
550 |
+
|
551 |
+
$this->escape($args);
|
552 |
+
$blog_ID = (int) $args[0];
|
553 |
+
$username = $args[1];
|
554 |
+
$password = $args[2];
|
555 |
+
$id = (int) $args[3];
|
556 |
+
|
557 |
+
if ( !$user = $this->login($username, $password) )
|
558 |
+
return $this->error;
|
559 |
+
|
560 |
+
if ( !$album = nggdb::find_album($id) )
|
561 |
+
return(new IXR_Error(404, __("Invalid album ID")));
|
562 |
+
|
563 |
+
if( !current_user_can( 'NextGEN Edit album' ) && !nggGallery::current_user_can( 'NextGEN Add/Delete album' ) )
|
564 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage albums' ) );
|
565 |
+
|
566 |
+
$nggdb->delete_album($id);
|
567 |
+
|
568 |
+
return true;
|
569 |
+
|
570 |
+
}
|
571 |
+
|
572 |
+
/**
|
573 |
+
* Method "ngg.deleteGallery"
|
574 |
+
* Delete a gallery from the database, including all images
|
575 |
+
*
|
576 |
+
* @since 1.7.0
|
577 |
+
*
|
578 |
+
* @param array $args Method parameters.
|
579 |
+
* - int blog_id
|
580 |
+
* - string username
|
581 |
+
* - string password
|
582 |
+
* - int gallery_id
|
583 |
+
* @return true
|
584 |
+
*/
|
585 |
+
function deleteGallery($args) {
|
586 |
+
|
587 |
+
global $nggdb;
|
588 |
+
|
589 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
590 |
+
|
591 |
+
$this->escape($args);
|
592 |
+
$blog_ID = (int) $args[0];
|
593 |
+
$username = $args[1];
|
594 |
+
$password = $args[2];
|
595 |
+
$id = (int) $args[3];
|
596 |
+
|
597 |
+
if ( !$user = $this->login($username, $password) )
|
598 |
+
return $this->error;
|
599 |
+
|
600 |
+
if ( !$gallery = nggdb::find_gallery($id) )
|
601 |
+
return(new IXR_Error(404, __("Invalid gallery ID")));
|
602 |
+
|
603 |
+
if ( !current_user_can( 'NextGEN Manage gallery' ) && !nggAdmin::can_manage_this_gallery($gallery->author) )
|
604 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries' ) );
|
605 |
+
|
606 |
+
$nggdb->delete_gallery($id);
|
607 |
+
|
608 |
+
return true;
|
609 |
+
|
610 |
+
}
|
611 |
+
|
612 |
+
/**
|
613 |
+
* Method "ngg.getAlbums"
|
614 |
+
* Return the list of all albums
|
615 |
+
*
|
616 |
+
* @since 1.7.0
|
617 |
+
*
|
618 |
+
* @param array $args Method parameters.
|
619 |
+
* - int blog_id
|
620 |
+
* - string username
|
621 |
+
* - string password
|
622 |
+
* @return array with all galleries
|
623 |
+
*/
|
624 |
+
function getAlbums($args) {
|
625 |
+
|
626 |
+
global $nggdb;
|
627 |
+
|
628 |
+
$this->escape($args);
|
629 |
+
$blog_ID = (int) $args[0];
|
630 |
+
$username = $args[1];
|
631 |
+
$password = $args[2];
|
632 |
+
|
633 |
+
if ( !$user = $this->login($username, $password) )
|
634 |
+
return $this->error;
|
635 |
+
|
636 |
+
if( !current_user_can( 'NextGEN Edit album' ) )
|
637 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage albums' ) );
|
638 |
+
|
639 |
+
$album_list = $nggdb->find_all_album('id', 'ASC', 0, 0 );
|
640 |
+
|
641 |
+
return($album_list);
|
642 |
+
|
643 |
+
}
|
644 |
+
|
645 |
+
/**
|
646 |
+
* Method "ngg.getAlbum"
|
647 |
+
* Return the specified album
|
648 |
+
*
|
649 |
+
* @since 1.9.2
|
650 |
+
*
|
651 |
+
* @param array $args Method parameters.
|
652 |
+
* - int blog_id
|
653 |
+
* - string username
|
654 |
+
* - string password
|
655 |
+
* - int album_id
|
656 |
+
* @return array with the album object
|
657 |
+
*/
|
658 |
+
function getAlbum($args) {
|
659 |
+
|
660 |
+
global $nggdb;
|
661 |
+
|
662 |
+
$this->escape($args);
|
663 |
+
$blog_ID = (int) $args[0];
|
664 |
+
$username = $args[1];
|
665 |
+
$password = $args[2];
|
666 |
+
$id = (int) $args[3];
|
667 |
+
|
668 |
+
if ( !$user = $this->login($username, $password) )
|
669 |
+
return $this->error;
|
670 |
+
|
671 |
+
if( !current_user_can( 'NextGEN Edit album' ) )
|
672 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage albums' ) );
|
673 |
+
|
674 |
+
$album = $nggdb->find_album( $id );
|
675 |
+
|
676 |
+
return($album);
|
677 |
+
|
678 |
+
}
|
679 |
+
|
680 |
+
/**
|
681 |
+
* Method "ngg.getGalleries"
|
682 |
+
* Return the list of all galleries
|
683 |
+
*
|
684 |
+
* @since 1.4
|
685 |
+
*
|
686 |
+
* @param array $args Method parameters.
|
687 |
+
* - int blog_id
|
688 |
+
* - string username
|
689 |
+
* - string password
|
690 |
+
* @return array with all galleries
|
691 |
+
*/
|
692 |
+
function getGalleries($args) {
|
693 |
+
|
694 |
+
global $nggdb;
|
695 |
+
|
696 |
+
$this->escape($args);
|
697 |
+
$blog_ID = (int) $args[0];
|
698 |
+
$username = $args[1];
|
699 |
+
$password = $args[2];
|
700 |
+
|
701 |
+
if ( !$user = $this->login($username, $password) )
|
702 |
+
return $this->error;
|
703 |
+
|
704 |
+
if( !current_user_can( 'NextGEN Manage gallery' ) )
|
705 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries' ) );
|
706 |
+
|
707 |
+
$gallery_list = $nggdb->find_all_galleries('gid', 'asc', true, 0, 0, false);
|
708 |
+
|
709 |
+
return($gallery_list);
|
710 |
+
|
711 |
+
}
|
712 |
+
|
713 |
+
/**
|
714 |
+
* Method "ngg.getGallery"
|
715 |
+
* Return the specified gallery
|
716 |
+
*
|
717 |
+
* @since 1.9.2
|
718 |
+
*
|
719 |
+
* @param array $args Method parameters.
|
720 |
+
* - int blog_id
|
721 |
+
* - string username
|
722 |
+
* - string password
|
723 |
+
* - int gallery_id
|
724 |
+
* @return array with the gallery object
|
725 |
+
*/
|
726 |
+
function getGallery($args) {
|
727 |
+
|
728 |
+
global $nggdb;
|
729 |
+
|
730 |
+
$this->escape($args);
|
731 |
+
$blog_ID = (int) $args[0];
|
732 |
+
$username = $args[1];
|
733 |
+
$password = $args[2];
|
734 |
+
$gid = (int) $args[3];
|
735 |
+
|
736 |
+
if ( !$user = $this->login($username, $password) )
|
737 |
+
return $this->error;
|
738 |
+
|
739 |
+
if( !current_user_can( 'NextGEN Manage gallery' ) )
|
740 |
+
return new IXR_Error( 401, __( 'Sorry, you must be able to manage galleries' ) );
|
741 |
+
|
742 |
+
$gallery = $nggdb->find_gallery($gid);
|
743 |
+
|
744 |
+
return($gallery);
|
745 |
+
|
746 |
+
}
|
747 |
+
|
748 |
+
/**
|
749 |
+
* Method "ngg.getImages"
|
750 |
+
* Return the list of all images inside a gallery
|
751 |
+
*
|
752 |
+
* @since 1.4
|
753 |
+
*
|
754 |
+
* @param array $args Method parameters.
|
755 |
+
* - int blog_id
|
756 |
+
* - string username
|
757 |
+
* - string password
|
758 |
+
* - int gallery_id
|
759 |
+
* @return array with all images
|
760 |
+
*/
|
761 |
+
function getImages($args) {
|
762 |
+
|
763 |
+
global $nggdb;
|
764 |
+
|
765 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
766 |
+
|
767 |
+
$this->escape($args);
|
768 |
+
$blog_ID = (int) $args[0];
|
769 |
+
$username = $args[1];
|
770 |
+
$password = $args[2];
|
771 |
+
$gid = (int) $args[3];
|
772 |
+
|
773 |
+
if ( !$user = $this->login($username, $password) )
|
774 |
+
return $this->error;
|
775 |
+
|
776 |
+
// Look for the gallery , could we find it ?
|
777 |
+
if ( !$gallery = nggdb::find_gallery( $gid ) )
|
778 |
+
return new IXR_Error(404, __('Could not find gallery ' . $gid ));
|
779 |
+
|
780 |
+
// Now check if you have the correct capability for this gallery
|
781 |
+
if ( !nggAdmin::can_manage_this_gallery($gallery->author) ) {
|
782 |
+
logIO('O', '(NGG) User does not have upload_files capability');
|
783 |
+
$this->error = new IXR_Error(401, __('You are not allowed to upload files to this gallery.'));
|
784 |
+
return $this->error;
|
785 |
+
}
|
786 |
+
|
787 |
+
// get picture values
|
788 |
+
$picture_list = $nggdb->get_gallery( $gid, 'pid', 'ASC', false );
|
789 |
+
|
790 |
+
return($picture_list);
|
791 |
+
|
792 |
+
}
|
793 |
+
|
794 |
+
/**
|
795 |
+
* Method "ngg.getImage"
|
796 |
+
* Return a single image inside a gallery
|
797 |
+
*
|
798 |
+
* @since 1.9.2
|
799 |
+
*
|
800 |
+
* @param array $args Method parameters.
|
801 |
+
* - int blog_id
|
802 |
+
* - string username
|
803 |
+
* - string password
|
804 |
+
* - int picture_id
|
805 |
+
* @return array with image properties
|
806 |
+
*/
|
807 |
+
function getImage($args) {
|
808 |
+
|
809 |
+
global $nggdb;
|
810 |
+
|
811 |
+
require_once ( dirname ( dirname( __FILE__ ) ). '/admin/functions.php' ); // admin functions
|
812 |
+
|
813 |
+
$this->escape($args);
|
814 |
+
$blog_ID = (int) $args[0];
|
815 |
+
$username = $args[1];
|
816 |
+
$password = $args[2];
|
817 |
+
$pid = (int) $args[3];
|
818 |
+
|
819 |
+
if ( !$user = $this->login($username, $password) )
|
820 |
+
return $this->error;
|
821 |
+
|
822 |
+
// get picture
|
823 |
+
$image = $nggdb->find_image( $pid );
|
824 |
+
|
825 |
+
if ($image) {
|
826 |
+
$gid = $image->galleryid;
|
827 |
+
|
828 |
+
// Look for the gallery , could we find it ?
|
829 |
+
if ( !$gallery = nggdb::find_gallery( $gid ) )
|
830 |
+
return new IXR_Error(404, __('Could not find gallery ' . $gid ));
|
831 |
+
|
832 |
+
// Now check if you have the correct capability for this gallery
|
833 |
+
if ( !nggAdmin::can_manage_this_gallery($gallery->author) ) {
|
834 |
+
logIO('O', '(NGG) User does not have upload_files capability');
|
835 |
+
$this->error = new IXR_Error(401, __('You are not allowed to upload files to this gallery.'));
|
836 |
+
return $this->error;
|
837 |
+
}
|
838 |
+
}
|
839 |
+
|
840 |
+
return($image);
|
841 |
+
|
842 |
+
}
|
843 |
+
|
844 |
+
/**
|
845 |
+
* Sanitize string or array of strings for database.
|
846 |
+
*
|
847 |
+
* @since 1.7.0
|
848 |
+
* @author WordPress Core
|
849 |
+
* @filesource inludes/class-wp-xmlrpc-server.php
|
850 |
+
*
|
851 |
+
* @param string|array $array Sanitize single string or array of strings.
|
852 |
+
* @return string|array Type matches $array and sanitized for the database.
|
853 |
+
*/
|
854 |
+
function escape(&$array) {
|
855 |
+
global $wpdb;
|
856 |
+
|
857 |
+
if (!is_array($array)) {
|
858 |
+
return($wpdb->escape($array));
|
859 |
+
} else {
|
860 |
+
foreach ( (array) $array as $k => $v ) {
|
861 |
+
if ( is_array($v) ) {
|
862 |
+
$this->escape($array[$k]);
|
863 |
+
} else if ( is_object($v) ) {
|
864 |
+
//skip
|
865 |
+
} else {
|
866 |
+
$array[$k] = $wpdb->escape($v);
|
867 |
+
}
|
868 |
+
}
|
869 |
+
}
|
870 |
+
}
|
871 |
+
|
872 |
+
/**
|
873 |
+
* PHP5 style destructor and will run when database object is destroyed.
|
874 |
+
*
|
875 |
+
* @return bool Always true
|
876 |
+
*/
|
877 |
+
function __destruct() {
|
878 |
+
|
879 |
+
}
|
880 |
+
}
|
881 |
+
|
882 |
+
$nggxmlrpc = new nggXMLRPC();
|
products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php
CHANGED
@@ -24,7 +24,7 @@ class M_NggLegacy extends C_Base_Module
|
|
24 |
'photocrati-nextgen-legacy',
|
25 |
'NextGEN Legacy',
|
26 |
'Embeds the original version of NextGEN 1.9.3 by Alex Rabe',
|
27 |
-
'0.
|
28 |
'http://www.nextgen-gallery.com',
|
29 |
'Photocrati Media',
|
30 |
'http://www.photocrati.com'
|
24 |
'photocrati-nextgen-legacy',
|
25 |
'NextGEN Legacy',
|
26 |
'Embeds the original version of NextGEN 1.9.3 by Alex Rabe',
|
27 |
+
'0.1',
|
28 |
'http://www.nextgen-gallery.com',
|
29 |
'Photocrati Media',
|
30 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/ngglegacy/nggallery.php
CHANGED
@@ -11,7 +11,7 @@ if (!class_exists('nggLoader')) {
|
|
11 |
|
12 |
var $version = NEXTGEN_GALLERY_PLUGIN_VERSION;
|
13 |
var $dbversion = '1.8.1';
|
14 |
-
var $minimum_WP = '3.6
|
15 |
var $donators = 'http://www.nextgen-gallery.com/donators.php';
|
16 |
var $options = '';
|
17 |
var $manage_page;
|
@@ -36,6 +36,13 @@ if (!class_exists('nggLoader')) {
|
|
36 |
$this->load_dependencies();
|
37 |
$this->start_rewrite_module();
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
// Start this plugin once all other plugins are fully loaded
|
40 |
add_action( 'plugins_loaded', array(&$this, 'start_plugin') );
|
41 |
|
@@ -112,8 +119,6 @@ if (!class_exists('nggLoader')) {
|
|
112 |
case 'image':
|
113 |
require_once (dirname (__FILE__) . '/nggshow.php');
|
114 |
break;
|
115 |
-
default:
|
116 |
-
return;
|
117 |
}
|
118 |
C_NextGEN_Bootstrap::shutdown();
|
119 |
}
|
@@ -257,6 +262,10 @@ if (!class_exists('nggLoader')) {
|
|
257 |
require_once (dirname (__FILE__) . '/nggfunctions.php'); // n.a.
|
258 |
require_once (dirname (__FILE__) . '/lib/shortcodes.php'); // 92.664
|
259 |
|
|
|
|
|
|
|
|
|
260 |
// We didn't need all stuff during a AJAX operation
|
261 |
if ( defined('DOING_AJAX') )
|
262 |
require_once (dirname (__FILE__) . '/admin/ajax.php');
|
@@ -307,12 +316,99 @@ if (!class_exists('nggLoader')) {
|
|
307 |
if (is_plugin_active_for_network( $this->plugin_name )) {
|
308 |
$current_blog = $wpdb->blogid;
|
309 |
switch_to_blog($blog_id);
|
310 |
-
|
311 |
-
nggallery_install($installer);
|
312 |
switch_to_blog($current_blog);
|
313 |
}
|
314 |
}
|
315 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
function disable_upgrade($option){
|
317 |
|
318 |
// PHP5.2 is required for NGG V1.4.0
|
11 |
|
12 |
var $version = NEXTGEN_GALLERY_PLUGIN_VERSION;
|
13 |
var $dbversion = '1.8.1';
|
14 |
+
var $minimum_WP = '3.6';
|
15 |
var $donators = 'http://www.nextgen-gallery.com/donators.php';
|
16 |
var $options = '';
|
17 |
var $manage_page;
|
36 |
$this->load_dependencies();
|
37 |
$this->start_rewrite_module();
|
38 |
|
39 |
+
// Init options & tables during activation & deregister init option
|
40 |
+
register_activation_hook( $this->plugin_name, array(&$this, 'activate') );
|
41 |
+
register_deactivation_hook( $this->plugin_name, array(&$this, 'deactivate') );
|
42 |
+
|
43 |
+
// Register a uninstall hook to remove all tables & option automatic
|
44 |
+
register_uninstall_hook( $this->plugin_name, array(__CLASS__, 'uninstall') );
|
45 |
+
|
46 |
// Start this plugin once all other plugins are fully loaded
|
47 |
add_action( 'plugins_loaded', array(&$this, 'start_plugin') );
|
48 |
|
119 |
case 'image':
|
120 |
require_once (dirname (__FILE__) . '/nggshow.php');
|
121 |
break;
|
|
|
|
|
122 |
}
|
123 |
C_NextGEN_Bootstrap::shutdown();
|
124 |
}
|
262 |
require_once (dirname (__FILE__) . '/nggfunctions.php'); // n.a.
|
263 |
require_once (dirname (__FILE__) . '/lib/shortcodes.php'); // 92.664
|
264 |
|
265 |
+
//Just needed if you access remote to WordPress
|
266 |
+
if ( defined('XMLRPC_REQUEST') )
|
267 |
+
require_once (dirname (__FILE__) . '/lib/xmlrpc.php');
|
268 |
+
|
269 |
// We didn't need all stuff during a AJAX operation
|
270 |
if ( defined('DOING_AJAX') )
|
271 |
require_once (dirname (__FILE__) . '/admin/ajax.php');
|
316 |
if (is_plugin_active_for_network( $this->plugin_name )) {
|
317 |
$current_blog = $wpdb->blogid;
|
318 |
switch_to_blog($blog_id);
|
319 |
+
nggallery_install();
|
|
|
320 |
switch_to_blog($current_blog);
|
321 |
}
|
322 |
}
|
323 |
|
324 |
+
/**
|
325 |
+
* Removes all transients created by NextGEN. Called during activation
|
326 |
+
* and deactivation routines
|
327 |
+
*/
|
328 |
+
static function remove_transients()
|
329 |
+
{
|
330 |
+
global $wpdb, $_wp_using_ext_object_cache;
|
331 |
+
|
332 |
+
// Fetch all transients
|
333 |
+
$query = "
|
334 |
+
SELECT option_name FROM {$wpdb->options}
|
335 |
+
WHERE option_name LIKE '%ngg_request%'
|
336 |
+
";
|
337 |
+
$transient_names = $wpdb->get_col($query);;
|
338 |
+
|
339 |
+
// Delete all transients in the database
|
340 |
+
$query = "
|
341 |
+
DELETE FROM {$wpdb->options}
|
342 |
+
WHERE option_name LIKE '%ngg_request%'
|
343 |
+
";
|
344 |
+
$wpdb->query($query);
|
345 |
+
|
346 |
+
// If using an external caching mechanism, delete the cached items
|
347 |
+
if ($_wp_using_ext_object_cache) {
|
348 |
+
foreach ($transient_names as $transient) {
|
349 |
+
wp_cache_delete($transient, 'transient');
|
350 |
+
wp_cache_delete(substr($transient, 11), 'transient');
|
351 |
+
}
|
352 |
+
}
|
353 |
+
}
|
354 |
+
|
355 |
+
function activate() {
|
356 |
+
global $wpdb;
|
357 |
+
//Starting from version 1.8.0 it's works only with PHP5.2
|
358 |
+
if (version_compare(PHP_VERSION, '5.2.0', '<')) {
|
359 |
+
deactivate_plugins($this->plugin_name); // Deactivate ourself
|
360 |
+
wp_die("Sorry, but you can't run this plugin, it requires PHP 5.2 or higher.");
|
361 |
+
return;
|
362 |
+
}
|
363 |
+
|
364 |
+
// Clean up transients
|
365 |
+
self::remove_transients();
|
366 |
+
|
367 |
+
include_once (dirname (__FILE__) . '/admin/install.php');
|
368 |
+
|
369 |
+
if (is_multisite()) {
|
370 |
+
$network=isset($_SERVER['SCRIPT_NAME'])?$_SERVER['SCRIPT_NAME']:"";
|
371 |
+
$activate=isset($_GET['action'])?$_GET['action']:"";
|
372 |
+
$isNetwork=($network=='/wp-admin/network/plugins.php')?true:false;
|
373 |
+
$isActivation=($activate=='deactivate')?false:true;
|
374 |
+
|
375 |
+
if ($isNetwork and $isActivation){
|
376 |
+
$old_blog = $wpdb->blogid;
|
377 |
+
$blogids = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM $wpdb->blogs", NULL));
|
378 |
+
foreach ($blogids as $blog_id) {
|
379 |
+
switch_to_blog($blog_id);
|
380 |
+
nggallery_install();
|
381 |
+
}
|
382 |
+
switch_to_blog($old_blog);
|
383 |
+
return;
|
384 |
+
}
|
385 |
+
}
|
386 |
+
|
387 |
+
// check for tables
|
388 |
+
nggallery_install();
|
389 |
+
// remove the update message
|
390 |
+
delete_option( 'ngg_update_exists' );
|
391 |
+
|
392 |
+
}
|
393 |
+
|
394 |
+
function deactivate() {
|
395 |
+
|
396 |
+
// remove & reset the init check option
|
397 |
+
delete_option( 'ngg_init_check' );
|
398 |
+
delete_option( 'ngg_update_exists' );
|
399 |
+
|
400 |
+
// Clean up transients
|
401 |
+
self::remove_transients();
|
402 |
+
}
|
403 |
+
|
404 |
+
function uninstall() {
|
405 |
+
// Clean up transients
|
406 |
+
self::remove_transients();
|
407 |
+
|
408 |
+
include_once (dirname (__FILE__) . '/admin/install.php');
|
409 |
+
nggallery_uninstall();
|
410 |
+
}
|
411 |
+
|
412 |
function disable_upgrade($option){
|
413 |
|
414 |
// PHP5.2 is required for NGG V1.4.0
|
products/photocrati_nextgen/modules/ngglegacy/view/album-compact.php
CHANGED
@@ -22,24 +22,12 @@ Follow variables are useable :
|
|
22 |
<div class="ngg-album-compact">
|
23 |
<div class="ngg-album-compactbox">
|
24 |
<div class="ngg-album-link">
|
25 |
-
<a class="Link" href="<?php echo
|
26 |
-
<img class="Thumb" alt="<?php echo
|
27 |
</a>
|
28 |
</div>
|
29 |
</div>
|
30 |
-
|
31 |
-
$max_width = 'style="max-width: ' . ($image_gen_params['width'] + 20) . 'px"';
|
32 |
-
} else {
|
33 |
-
$max_width = '';
|
34 |
-
} ?>
|
35 |
-
<h4>
|
36 |
-
<a class="ngg-album-desc"
|
37 |
-
title="<?php echo esc_attr($gallery->title) ?>"
|
38 |
-
href="<?php echo nextgen_esc_url($gallery->pagelink) ?>"
|
39 |
-
<?php echo $max_width; ?>>
|
40 |
-
<?php echo $gallery->title ?>
|
41 |
-
</a>
|
42 |
-
</h4>
|
43 |
<?php if (@$gallery->counter > 0) : ?>
|
44 |
<p><strong><?php echo $gallery->counter ?></strong> <?php _e('Photos', 'nggallery') ?></p>
|
45 |
<?php endif; ?>
|
22 |
<div class="ngg-album-compact">
|
23 |
<div class="ngg-album-compactbox">
|
24 |
<div class="ngg-album-link">
|
25 |
+
<a class="Link" href="<?php echo $gallery->pagelink ?>">
|
26 |
+
<img class="Thumb" alt="<?php echo $gallery->title ?>" src="<?php echo $gallery->previewurl ?>"/>
|
27 |
</a>
|
28 |
</div>
|
29 |
</div>
|
30 |
+
<h4><a class="ngg-album-desc" title="<?php echo $gallery->title ?>" href="<?php echo $gallery->pagelink ?>" ><?php echo $gallery->title ?></a></h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
<?php if (@$gallery->counter > 0) : ?>
|
32 |
<p><strong><?php echo $gallery->counter ?></strong> <?php _e('Photos', 'nggallery') ?></p>
|
33 |
<?php endif; ?>
|
products/photocrati_nextgen/modules/ngglegacy/view/album-extend.php
CHANGED
@@ -19,10 +19,10 @@ Follow variables are useable :
|
|
19 |
<?php foreach ($galleries as $gallery) : ?>
|
20 |
|
21 |
<div class="ngg-album">
|
22 |
-
<div class="ngg-albumtitle"><a href="<?php echo
|
23 |
<div class="ngg-albumcontent">
|
24 |
<div class="ngg-thumbnail">
|
25 |
-
<a href="<?php echo
|
26 |
</div>
|
27 |
<div class="ngg-description">
|
28 |
<p><?php echo $gallery->galdesc ?></p>
|
@@ -40,4 +40,4 @@ Follow variables are useable :
|
|
40 |
|
41 |
</div>
|
42 |
|
43 |
-
<?php endif; ?>
|
19 |
<?php foreach ($galleries as $gallery) : ?>
|
20 |
|
21 |
<div class="ngg-album">
|
22 |
+
<div class="ngg-albumtitle"><a href="<?php echo $gallery->pagelink ?>"><?php echo $gallery->title ?></a></div>
|
23 |
<div class="ngg-albumcontent">
|
24 |
<div class="ngg-thumbnail">
|
25 |
+
<a href="<?php echo $gallery->pagelink ?>"><img class="Thumb" alt="<?php echo $gallery->title ?>" src="<?php echo $gallery->previewurl ?>"/></a>
|
26 |
</div>
|
27 |
<div class="ngg-description">
|
28 |
<p><?php echo $gallery->galdesc ?></p>
|
40 |
|
41 |
</div>
|
42 |
|
43 |
+
<?php endif; ?>
|
products/photocrati_nextgen/modules/ngglegacy/view/gallery-caption.php
CHANGED
@@ -14,12 +14,12 @@ Follow variables are useable :
|
|
14 |
?>
|
15 |
<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
|
16 |
|
17 |
-
<div class="ngg-galleryoverview
|
18 |
|
19 |
<?php if ($gallery->show_slideshow) { ?>
|
20 |
<!-- Slideshow link -->
|
21 |
<div class="slideshowlink">
|
22 |
-
<a class="slideshowlink" href="<?php echo
|
23 |
<?php echo $gallery->slideshow_link_text ?>
|
24 |
</a>
|
25 |
</div>
|
@@ -28,7 +28,7 @@ Follow variables are useable :
|
|
28 |
<?php if ($gallery->show_piclens) { ?>
|
29 |
<!-- Piclense link -->
|
30 |
<div class="piclenselink">
|
31 |
-
<a class="piclenselink" href="<?php echo
|
32 |
<?php _e('[View with PicLens]','nggallery'); ?>
|
33 |
</a>
|
34 |
</div>
|
@@ -40,16 +40,9 @@ Follow variables are useable :
|
|
40 |
|
41 |
<div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $image->style ?> >
|
42 |
<div class="ngg-gallery-thumbnail" >
|
43 |
-
<a href="<?php echo
|
44 |
-
title="<?php echo esc_attr($image->description) ?>"
|
45 |
-
data-src="<?php echo nextgen_esc_url($image->imageURL) ?>"
|
46 |
-
data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
|
47 |
-
data-image-id="<?php echo esc_attr($image->pid); ?>"
|
48 |
-
data-title="<?php echo esc_attr($image->alttext); ?>"
|
49 |
-
data-description="<?php echo esc_attr($image->description); ?>"
|
50 |
-
<?php echo $image->thumbcode ?> >
|
51 |
<?php if ( !$image->hidden ) { ?>
|
52 |
-
<img title="<?php echo
|
53 |
<?php } ?>
|
54 |
</a>
|
55 |
<span><?php echo $image->caption ?></span>
|
@@ -66,4 +59,4 @@ Follow variables are useable :
|
|
66 |
|
67 |
</div>
|
68 |
|
69 |
-
<?php endif; ?>
|
14 |
?>
|
15 |
<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($gallery)) : ?>
|
16 |
|
17 |
+
<div class="ngg-galleryoverview" id="<?php echo $gallery->anchor ?>">
|
18 |
|
19 |
<?php if ($gallery->show_slideshow) { ?>
|
20 |
<!-- Slideshow link -->
|
21 |
<div class="slideshowlink">
|
22 |
+
<a class="slideshowlink" href="<?php echo $gallery->slideshow_link ?>">
|
23 |
<?php echo $gallery->slideshow_link_text ?>
|
24 |
</a>
|
25 |
</div>
|
28 |
<?php if ($gallery->show_piclens) { ?>
|
29 |
<!-- Piclense link -->
|
30 |
<div class="piclenselink">
|
31 |
+
<a class="piclenselink" href="<?php echo $gallery->piclens_link ?>">
|
32 |
<?php _e('[View with PicLens]','nggallery'); ?>
|
33 |
</a>
|
34 |
</div>
|
40 |
|
41 |
<div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $image->style ?> >
|
42 |
<div class="ngg-gallery-thumbnail" >
|
43 |
+
<a href="<?php echo $image->imageURL ?>" title="<?php echo $image->description ?>" <?php echo $image->thumbcode ?> >
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
<?php if ( !$image->hidden ) { ?>
|
45 |
+
<img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
|
46 |
<?php } ?>
|
47 |
</a>
|
48 |
<span><?php echo $image->caption ?></span>
|
59 |
|
60 |
</div>
|
61 |
|
62 |
+
<?php endif; ?>
|
products/photocrati_nextgen/modules/ngglegacy/view/gallery-carousel.php
CHANGED
@@ -19,14 +19,14 @@ Follow variables are useable :
|
|
19 |
|
20 |
<div class="ngg-galleryoverview">
|
21 |
|
22 |
-
<div class="pic"><img title="<?php echo
|
23 |
|
24 |
<ul class="ngg-gallery-list">
|
25 |
|
26 |
<!-- PREV LINK -->
|
27 |
<?php if ($prev) : ?>
|
28 |
<li class="ngg-prev">
|
29 |
-
<a class="prev" href="<?php echo
|
30 |
</li>
|
31 |
<?php endif; ?>
|
32 |
|
@@ -34,9 +34,9 @@ Follow variables are useable :
|
|
34 |
<?php foreach ( $images as $image ) : ?>
|
35 |
<?php if ( $image->hidden ) continue; ?>
|
36 |
|
37 |
-
<li id="ngg-image-<?php echo
|
38 |
-
<a href="<?php echo
|
39 |
-
<img title="<?php echo
|
40 |
</a>
|
41 |
</li>
|
42 |
|
@@ -45,7 +45,7 @@ Follow variables are useable :
|
|
45 |
<!-- NEXT LINK -->
|
46 |
<?php if ($next) : ?>
|
47 |
<li class="ngg-next">
|
48 |
-
<a class="next" href="<?php echo
|
49 |
</li>
|
50 |
<?php endif; ?>
|
51 |
|
@@ -53,4 +53,4 @@ Follow variables are useable :
|
|
53 |
|
54 |
</div>
|
55 |
|
56 |
-
<?php endif; ?>
|
19 |
|
20 |
<div class="ngg-galleryoverview">
|
21 |
|
22 |
+
<div class="pic"><img title="<?php echo $current->alttext ?>" alt="<?php echo $current->alttext ?>" src="<?php echo $current->url; ?>" /></div>
|
23 |
|
24 |
<ul class="ngg-gallery-list">
|
25 |
|
26 |
<!-- PREV LINK -->
|
27 |
<?php if ($prev) : ?>
|
28 |
<li class="ngg-prev">
|
29 |
+
<a class="prev" href="<?php echo $prev ?>">◄</a>
|
30 |
</li>
|
31 |
<?php endif; ?>
|
32 |
|
34 |
<?php foreach ( $images as $image ) : ?>
|
35 |
<?php if ( $image->hidden ) continue; ?>
|
36 |
|
37 |
+
<li id="ngg-image-<?php echo $image->pid ?>" class="ngg-thumbnail-list <?php if ($image->pid == $current->pid) echo 'selected' ?>" >
|
38 |
+
<a href="<?php echo $image->pidlink ?>" title="<?php echo $image->description ?>" >
|
39 |
+
<img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
|
40 |
</a>
|
41 |
</li>
|
42 |
|
45 |
<!-- NEXT LINK -->
|
46 |
<?php if ($next) : ?>
|
47 |
<li class="ngg-next">
|
48 |
+
<a class="next" href="<?php echo $next ?>">►</a>
|
49 |
</li>
|
50 |
<?php endif; ?>
|
51 |
|
53 |
|
54 |
</div>
|
55 |
|
56 |
+
<?php endif; ?>
|
products/photocrati_nextgen/modules/ngglegacy/view/gallery.php
CHANGED
@@ -19,7 +19,7 @@ Follow variables are useable :
|
|
19 |
<?php if ($gallery->show_slideshow) { ?>
|
20 |
<!-- Slideshow link -->
|
21 |
<div class="slideshowlink">
|
22 |
-
<a class="slideshowlink" href="<?php echo
|
23 |
<?php echo $gallery->slideshow_link_text ?>
|
24 |
</a>
|
25 |
</div>
|
@@ -28,7 +28,7 @@ Follow variables are useable :
|
|
28 |
<?php if ($gallery->show_piclens) { ?>
|
29 |
<!-- Piclense link -->
|
30 |
<div class="piclenselink">
|
31 |
-
<a class="piclenselink" href="<?php echo
|
32 |
<?php _e('[View with PicLens]','nggallery'); ?>
|
33 |
</a>
|
34 |
</div>
|
@@ -40,16 +40,9 @@ Follow variables are useable :
|
|
40 |
|
41 |
<div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $image->style ?> >
|
42 |
<div class="ngg-gallery-thumbnail" >
|
43 |
-
<a href="<?php echo
|
44 |
-
title="<?php echo esc_attr($image->description) ?>"
|
45 |
-
data-src="<?php echo nextgen_esc_url($image->imageURL); ?>"
|
46 |
-
data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
|
47 |
-
data-image-id="<?php echo esc_attr($image->pid); ?>"
|
48 |
-
data-title="<?php echo esc_attr($image->alttext); ?>"
|
49 |
-
data-description="<?php echo esc_attr($image->description); ?>"
|
50 |
-
<?php echo $image->thumbcode ?> >
|
51 |
<?php if ( !$image->hidden ) { ?>
|
52 |
-
<img title="<?php echo
|
53 |
<?php } ?>
|
54 |
</a>
|
55 |
</div>
|
19 |
<?php if ($gallery->show_slideshow) { ?>
|
20 |
<!-- Slideshow link -->
|
21 |
<div class="slideshowlink">
|
22 |
+
<a class="slideshowlink" href="<?php echo $gallery->slideshow_link ?>">
|
23 |
<?php echo $gallery->slideshow_link_text ?>
|
24 |
</a>
|
25 |
</div>
|
28 |
<?php if ($gallery->show_piclens) { ?>
|
29 |
<!-- Piclense link -->
|
30 |
<div class="piclenselink">
|
31 |
+
<a class="piclenselink" href="<?php echo $gallery->piclens_link ?>">
|
32 |
<?php _e('[View with PicLens]','nggallery'); ?>
|
33 |
</a>
|
34 |
</div>
|
40 |
|
41 |
<div id="ngg-image-<?php echo $image->pid ?>" class="ngg-gallery-thumbnail-box" <?php echo $image->style ?> >
|
42 |
<div class="ngg-gallery-thumbnail" >
|
43 |
+
<a href="<?php echo $image->imageURL ?>" title="<?php echo $image->description ?>" <?php echo $image->thumbcode ?> >
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
<?php if ( !$image->hidden ) { ?>
|
45 |
+
<img title="<?php echo $image->alttext ?>" alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" <?php echo $image->size ?> />
|
46 |
<?php } ?>
|
47 |
</a>
|
48 |
</div>
|
products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-caption.php
CHANGED
@@ -23,10 +23,10 @@ Follow variables are useable :
|
|
23 |
<div class="pic"><?php echo $image->href_link ?></div>
|
24 |
<div class="ngg-imagebrowser-nav">
|
25 |
<div class="back">
|
26 |
-
<a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo
|
27 |
</div>
|
28 |
<div class="next">
|
29 |
-
<a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo
|
30 |
</div>
|
31 |
<div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
|
32 |
<div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
|
@@ -34,4 +34,4 @@ Follow variables are useable :
|
|
34 |
|
35 |
</div>
|
36 |
|
37 |
-
<?php endif; ?>
|
23 |
<div class="pic"><?php echo $image->href_link ?></div>
|
24 |
<div class="ngg-imagebrowser-nav">
|
25 |
<div class="back">
|
26 |
+
<a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo $image->previous_image_link ?>">◄ <?php _e('Back', 'nggallery') ?></a>
|
27 |
</div>
|
28 |
<div class="next">
|
29 |
+
<a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> ►</a>
|
30 |
</div>
|
31 |
<div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
|
32 |
<div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
|
34 |
|
35 |
</div>
|
36 |
|
37 |
+
<?php endif; ?>
|
products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser-exif.php
CHANGED
@@ -27,10 +27,10 @@ Please note : A Image resize or watermarking operation will remove all meta info
|
|
27 |
<div class="pic"><?php echo $image->href_link ?></div>
|
28 |
<div class="ngg-imagebrowser-nav">
|
29 |
<div class="back">
|
30 |
-
<a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo
|
31 |
</div>
|
32 |
<div class="next">
|
33 |
-
<a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo
|
34 |
</div>
|
35 |
<div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
|
36 |
<div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
|
27 |
<div class="pic"><?php echo $image->href_link ?></div>
|
28 |
<div class="ngg-imagebrowser-nav">
|
29 |
<div class="back">
|
30 |
+
<a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo $image->previous_image_link ?>">◄ <?php _e('Back', 'nggallery') ?></a>
|
31 |
</div>
|
32 |
<div class="next">
|
33 |
+
<a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> ►</a>
|
34 |
</div>
|
35 |
<div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
|
36 |
<div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
|
products/photocrati_nextgen/modules/ngglegacy/view/imagebrowser.php
CHANGED
@@ -20,13 +20,13 @@ Follow variables are useable :
|
|
20 |
|
21 |
<h3><?php echo $image->alttext ?></h3>
|
22 |
|
23 |
-
<div class="pic"><?php echo
|
24 |
<div class="ngg-imagebrowser-nav">
|
25 |
<div class="back">
|
26 |
-
<a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo
|
27 |
</div>
|
28 |
<div class="next">
|
29 |
-
<a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo
|
30 |
</div>
|
31 |
<div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
|
32 |
<div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
|
@@ -34,4 +34,4 @@ Follow variables are useable :
|
|
34 |
|
35 |
</div>
|
36 |
|
37 |
-
<?php endif; ?>
|
20 |
|
21 |
<h3><?php echo $image->alttext ?></h3>
|
22 |
|
23 |
+
<div class="pic"><?php echo $image->href_link ?></div>
|
24 |
<div class="ngg-imagebrowser-nav">
|
25 |
<div class="back">
|
26 |
+
<a class="ngg-browser-prev" id="ngg-prev-<?php echo $image->previous_pid ?>" href="<?php echo $image->previous_image_link ?>">◄ <?php _e('Back', 'nggallery') ?></a>
|
27 |
</div>
|
28 |
<div class="next">
|
29 |
+
<a class="ngg-browser-next" id="ngg-next-<?php echo $image->next_pid ?>" href="<?php echo $image->next_image_link ?>"><?php _e('Next', 'nggallery') ?> ►</a>
|
30 |
</div>
|
31 |
<div class="counter"><?php _e('Picture', 'nggallery') ?> <?php echo $image->number ?> <?php _e('of', 'nggallery')?> <?php echo $image->total ?></div>
|
32 |
<div class="ngg-imagebrowser-desc"><p><?php echo $image->description ?></p></div>
|
34 |
|
35 |
</div>
|
36 |
|
37 |
+
<?php endif; ?>
|
products/photocrati_nextgen/modules/ngglegacy/view/singlepic.php
CHANGED
@@ -18,19 +18,9 @@ Please note : A Image resize or watermarking operation will remove all meta info
|
|
18 |
**/
|
19 |
?>
|
20 |
<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
data-thumbnail="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
|
25 |
-
data-image-id="<?php echo esc_attr($image->pid); ?>"
|
26 |
-
data-title="<?php echo esc_attr($image->alttext); ?>"
|
27 |
-
data-description="<?php echo esc_attr($image->description); ?>"
|
28 |
-
<?php if(!empty($target)) { ?>target="<?php echo esc_attr($target); ?>"<?php } ?>
|
29 |
-
<?php echo $image->thumbcode; ?>>
|
30 |
-
<img class="<?php echo $image->classname; ?>"
|
31 |
-
src="<?php echo nextgen_esc_url($image->thumbnailURL); ?>"
|
32 |
-
alt="<?php echo esc_attr($image->alttext); ?>"
|
33 |
-
title="<?php echo esc_attr($image->alttext); ?>"/>
|
34 |
</a>
|
35 |
<?php if (!empty ($image->caption)) : ?><span><?php echo $image->caption ?></span><?php endif; ?>
|
36 |
-
<?php endif; ?>
|
18 |
**/
|
19 |
?>
|
20 |
<?php if (!defined ('ABSPATH')) die ('No direct access allowed'); ?><?php if (!empty ($image)) : ?>
|
21 |
+
|
22 |
+
<a href="<?php echo $image->imageURL ?>" title="<?php echo $image->linktitle ?>" <?php echo $image->thumbcode ?> >
|
23 |
+
<img class="<?php echo $image->classname ?>" src="<?php echo $image->thumbnailURL ?>" alt="<?php echo $image->alttext ?>" title="<?php echo $image->alttext ?>" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
</a>
|
25 |
<?php if (!empty ($image->caption)) : ?><span><?php echo $image->caption ?></span><?php endif; ?>
|
26 |
+
<?php endif; ?>
|
products/photocrati_nextgen/modules/router/class.router.php
CHANGED
@@ -150,11 +150,7 @@ class Mixin_Router extends Mixin
|
|
150 |
*/
|
151 |
function is_https()
|
152 |
{
|
153 |
-
return (
|
154 |
-
(!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') ||
|
155 |
-
(!empty($_SERVER['HTTP_USESSL']) && strtolower($_SERVER['HTTP_USESSL']) !== 'off') ||
|
156 |
-
(!empty($_SERVER['REDIRECT_HTTPS']) && strtolower($_SERVER['REDIRECT_HTTPS']) !== 'off') ||
|
157 |
-
$_SERVER['SERVER_PORT'] == 443);
|
158 |
}
|
159 |
|
160 |
|
150 |
*/
|
151 |
function is_https()
|
152 |
{
|
153 |
+
return isset($_SERVER['HTTPS']);
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
|
156 |
|
products/photocrati_nextgen/modules/router/class.router_installer.php
CHANGED
@@ -4,9 +4,9 @@ class C_Router_Installer
|
|
4 |
{
|
5 |
function install()
|
6 |
{
|
7 |
-
$settings =
|
8 |
$settings->set_default_value('router_param_separator', '--');
|
9 |
$settings->set_default_value('router_param_prefix', '');
|
10 |
-
$settings->set_default_value('router_param_slug', '
|
11 |
}
|
12 |
}
|
4 |
{
|
5 |
function install()
|
6 |
{
|
7 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
8 |
$settings->set_default_value('router_param_separator', '--');
|
9 |
$settings->set_default_value('router_param_prefix', '');
|
10 |
+
$settings->set_default_value('router_param_slug', 'params');
|
11 |
}
|
12 |
}
|
products/photocrati_nextgen/modules/router/class.routing_app.php
CHANGED
@@ -50,11 +50,11 @@ class Mixin_Routing_App extends Mixin
|
|
50 |
);
|
51 |
|
52 |
// We treat wildcards much differently then normal rewrites
|
53 |
-
if (preg_match("
|
54 |
$pattern = str_replace('{*}', '(.*?)', $src);
|
55 |
$pattern = str_replace('{.*}', '(.*?)', $pattern);
|
56 |
-
$pattern = str_replace('{
|
57 |
-
$pattern = str_replace('{
|
58 |
$src = '#'.(strpos($src, '/') === 0 ? '^':'').$pattern.'/?$#';
|
59 |
$definition['wildcards'] = TRUE;
|
60 |
}
|
@@ -168,7 +168,6 @@ class Mixin_Routing_App extends Mixin
|
|
168 |
function do_rewrites($request_uri=FALSE)
|
169 |
{
|
170 |
$redirect = FALSE;
|
171 |
-
static $stop_processing = FALSE;
|
172 |
|
173 |
// Get the request uri if not provided
|
174 |
if (!$request_uri) $request_uri = $this->object->get_app_request_uri();
|
@@ -179,7 +178,7 @@ class Mixin_Routing_App extends Mixin
|
|
179 |
|
180 |
// Process each rewrite rule
|
181 |
// start rewriting urls
|
182 |
-
|
183 |
|
184 |
// Remove this pattern from future processing for this request
|
185 |
unset($this->object->_rewrite_patterns[$pattern]);
|
@@ -190,8 +189,9 @@ class Mixin_Routing_App extends Mixin
|
|
190 |
foreach ($matches as $index => $match) {
|
191 |
if ($index == 0) {
|
192 |
$request_uri = str_replace($match, $details['dst'], $request_uri);
|
|
|
193 |
}
|
194 |
-
|
195 |
"{{$index}}", $match, $request_uri
|
196 |
);
|
197 |
}
|
@@ -204,10 +204,7 @@ class Mixin_Routing_App extends Mixin
|
|
204 |
}
|
205 |
|
206 |
// Stop processing rewrite patterns?
|
207 |
-
if ($details['stop'])
|
208 |
-
$stop_processing = TRUE;
|
209 |
-
|
210 |
-
}
|
211 |
}
|
212 |
}
|
213 |
|
@@ -236,8 +233,6 @@ class Mixin_Routing_App extends Mixin
|
|
236 |
|
237 |
}
|
238 |
}
|
239 |
-
|
240 |
-
if ($stop_processing) break;
|
241 |
}
|
242 |
|
243 |
// Cache all known data about the application request
|
@@ -450,7 +445,7 @@ class Mixin_Routing_App extends Mixin
|
|
450 |
$route_regex = '#' . $route_regex . '/?$#i';
|
451 |
|
452 |
// convert placeholders to regex as well
|
453 |
-
return preg_replace('/~([^~]+)~/i', ($param_slug ? '('.preg_quote($param_slug,'#').'\K)?' : '').'(
|
454 |
}
|
455 |
|
456 |
/**
|
@@ -524,7 +519,8 @@ class Mixin_Routing_App extends Mixin
|
|
524 |
if (!isset($parts['path'])) $parts['path'] = '';
|
525 |
$parts['path'] = $this->object->join_paths(
|
526 |
$parts['path'],
|
527 |
-
|
|
|
528 |
$this->object->create_parameter_segment($key, $value, $id, $use_prefix)
|
529 |
);
|
530 |
$retval = $this->object->construct_url_from_parts($parts);
|
@@ -569,7 +565,7 @@ class Mixin_Routing_App extends Mixin
|
|
569 |
$param_slug = $settings->router_param_slug ? preg_quote($settings->router_param_slug, '#') : FALSE;
|
570 |
|
571 |
// Is the parameter already part of the request? If so, modify that
|
572 |
-
//
|
573 |
if (($segment = $this->object->get_parameter_segment($key, $id, $url))) {
|
574 |
extract($segment);
|
575 |
|
@@ -618,7 +614,7 @@ class Mixin_Routing_App extends Mixin
|
|
618 |
{
|
619 |
$settings = $this->object->_settings;
|
620 |
$param_slug = $settings->router_param_slug;
|
621 |
-
|
622 |
$uri = $this->object->get_app_request_uri();
|
623 |
$parts = array($uri);
|
624 |
if ($param_slug && strpos($uri, $param_slug) === FALSE) $parts[] = $param_slug;
|
@@ -702,7 +698,7 @@ class Mixin_Routing_App extends Mixin
|
|
702 |
return array(
|
703 |
'querystring' => $this->object->get_formatted_querystring(),
|
704 |
'request_uri' => $this->object->get_app_request_uri(),
|
705 |
-
|
706 |
);
|
707 |
}
|
708 |
|
@@ -801,16 +797,16 @@ class C_Routing_App extends C_Component
|
|
801 |
$this->add_mixin('Mixin_Routing_App');
|
802 |
$this->implement('I_Routing_App');
|
803 |
}
|
804 |
-
|
805 |
function initialize()
|
806 |
{
|
807 |
parent::initialize();
|
808 |
$this->_settings = $this->object->get_routing_settings();
|
809 |
}
|
810 |
-
|
811 |
function get_routing_settings()
|
812 |
{
|
813 |
-
$settings =
|
814 |
$object = new stdClass();
|
815 |
$object->router_param_separator = $settings->router_param_separator;
|
816 |
$object->router_param_slug = $settings->router_param_slug;
|
50 |
);
|
51 |
|
52 |
// We treat wildcards much differently then normal rewrites
|
53 |
+
if (preg_match("/\{[\.\\\*]/", $src)) {
|
54 |
$pattern = str_replace('{*}', '(.*?)', $src);
|
55 |
$pattern = str_replace('{.*}', '(.*?)', $pattern);
|
56 |
+
$pattern = str_replace('{\w}', '([\w-_]*)', $pattern);
|
57 |
+
$pattern = str_replace('{\d}', '(\d*)', $pattern);
|
58 |
$src = '#'.(strpos($src, '/') === 0 ? '^':'').$pattern.'/?$#';
|
59 |
$definition['wildcards'] = TRUE;
|
60 |
}
|
168 |
function do_rewrites($request_uri=FALSE)
|
169 |
{
|
170 |
$redirect = FALSE;
|
|
|
171 |
|
172 |
// Get the request uri if not provided
|
173 |
if (!$request_uri) $request_uri = $this->object->get_app_request_uri();
|
178 |
|
179 |
// Process each rewrite rule
|
180 |
// start rewriting urls
|
181 |
+
foreach ($this->object->_rewrite_patterns as $pattern => $details) {
|
182 |
|
183 |
// Remove this pattern from future processing for this request
|
184 |
unset($this->object->_rewrite_patterns[$pattern]);
|
189 |
foreach ($matches as $index => $match) {
|
190 |
if ($index == 0) {
|
191 |
$request_uri = str_replace($match, $details['dst'], $request_uri);
|
192 |
+
continue;
|
193 |
}
|
194 |
+
$request_uri = str_replace(
|
195 |
"{{$index}}", $match, $request_uri
|
196 |
);
|
197 |
}
|
204 |
}
|
205 |
|
206 |
// Stop processing rewrite patterns?
|
207 |
+
if ($details['stop']) break;
|
|
|
|
|
|
|
208 |
}
|
209 |
}
|
210 |
|
233 |
|
234 |
}
|
235 |
}
|
|
|
|
|
236 |
}
|
237 |
|
238 |
// Cache all known data about the application request
|
445 |
$route_regex = '#' . $route_regex . '/?$#i';
|
446 |
|
447 |
// convert placeholders to regex as well
|
448 |
+
return preg_replace('/~([^~]+)~/i', ($param_slug ? '('.preg_quote($param_slug,'#').'\K)?' : '').'(?<\1>[^/]+)/?', $route_regex);
|
449 |
}
|
450 |
|
451 |
/**
|
519 |
if (!isset($parts['path'])) $parts['path'] = '';
|
520 |
$parts['path'] = $this->object->join_paths(
|
521 |
$parts['path'],
|
522 |
+
$param_slug && strpos($retval, $param_slug) === FALSE ?
|
523 |
+
$param_slug : '',
|
524 |
$this->object->create_parameter_segment($key, $value, $id, $use_prefix)
|
525 |
);
|
526 |
$retval = $this->object->construct_url_from_parts($parts);
|
565 |
$param_slug = $settings->router_param_slug ? preg_quote($settings->router_param_slug, '#') : FALSE;
|
566 |
|
567 |
// Is the parameter already part of the request? If so, modify that
|
568 |
+
// parmaeter
|
569 |
if (($segment = $this->object->get_parameter_segment($key, $id, $url))) {
|
570 |
extract($segment);
|
571 |
|
614 |
{
|
615 |
$settings = $this->object->_settings;
|
616 |
$param_slug = $settings->router_param_slug;
|
617 |
+
|
618 |
$uri = $this->object->get_app_request_uri();
|
619 |
$parts = array($uri);
|
620 |
if ($param_slug && strpos($uri, $param_slug) === FALSE) $parts[] = $param_slug;
|
698 |
return array(
|
699 |
'querystring' => $this->object->get_formatted_querystring(),
|
700 |
'request_uri' => $this->object->get_app_request_uri(),
|
701 |
+
'postdata' => $this->object->get_postdata()
|
702 |
);
|
703 |
}
|
704 |
|
797 |
$this->add_mixin('Mixin_Routing_App');
|
798 |
$this->implement('I_Routing_App');
|
799 |
}
|
800 |
+
|
801 |
function initialize()
|
802 |
{
|
803 |
parent::initialize();
|
804 |
$this->_settings = $this->object->get_routing_settings();
|
805 |
}
|
806 |
+
|
807 |
function get_routing_settings()
|
808 |
{
|
809 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
810 |
$object = new stdClass();
|
811 |
$object->router_param_separator = $settings->router_param_separator;
|
812 |
$object->router_param_slug = $settings->router_param_slug;
|
products/photocrati_nextgen/modules/router/mixin.url_manipulation.php
CHANGED
@@ -121,16 +121,9 @@ class Mixin_Url_Manipulation extends Mixin
|
|
121 |
*/
|
122 |
function construct_url_from_parts($parts)
|
123 |
{
|
124 |
-
// let relative paths be relative, and full paths full
|
125 |
-
$prefix = '';
|
126 |
-
if (!empty($parts['scheme']) && !empty($parts['host'])) {
|
127 |
-
$prefix = $parts['scheme'] . '://' . $parts['host'];
|
128 |
-
if (!empty($parts['port']))
|
129 |
-
$prefix .= ':' . $parts['port'];
|
130 |
-
}
|
131 |
-
|
132 |
$retval = $this->object->join_paths(
|
133 |
-
|
|
|
134 |
isset($parts['path']) ? $parts['path'] : ''
|
135 |
);
|
136 |
if (isset($parts['query']) && $parts['query']) $retval .= "?{$parts['query']}";
|
@@ -151,7 +144,7 @@ class Mixin_Url_Manipulation extends Mixin
|
|
151 |
function strip_param_segments($request_uri, $remove_slug=TRUE)
|
152 |
{
|
153 |
$retval = $request_uri ? $request_uri : '/';
|
154 |
-
$settings =
|
155 |
$sep = preg_quote($settings->router_param_separator, '#');
|
156 |
$param_regex = "#((?P<id>\w+){$sep})?(?<key>\w+){$sep}(?P<value>.+)/?$#";
|
157 |
$slug = $settings->router_param_slug && $remove_slug ? '/' . preg_quote($settings->router_param_slug,'#') : '';
|
121 |
*/
|
122 |
function construct_url_from_parts($parts)
|
123 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
$retval = $this->object->join_paths(
|
125 |
+
isset($parts['scheme']) && $parts['host'] ?
|
126 |
+
"{$parts['scheme']}://{$parts['host']}" : '',
|
127 |
isset($parts['path']) ? $parts['path'] : ''
|
128 |
);
|
129 |
if (isset($parts['query']) && $parts['query']) $retval .= "?{$parts['query']}";
|
144 |
function strip_param_segments($request_uri, $remove_slug=TRUE)
|
145 |
{
|
146 |
$retval = $request_uri ? $request_uri : '/';
|
147 |
+
$settings = C_NextGen_Global_Settings::get_instance();
|
148 |
$sep = preg_quote($settings->router_param_separator, '#');
|
149 |
$param_regex = "#((?P<id>\w+){$sep})?(?<key>\w+){$sep}(?P<value>.+)/?$#";
|
150 |
$slug = $settings->router_param_slug && $remove_slug ? '/' . preg_quote($settings->router_param_slug,'#') : '';
|
products/photocrati_nextgen/modules/router/module.router.php
CHANGED
@@ -13,7 +13,7 @@ class M_Router extends C_Base_Module
|
|
13 |
'photocrati-router',
|
14 |
'Router for Pope',
|
15 |
'Provides routing capabilities for Pope modules',
|
16 |
-
'0.
|
17 |
'http://www.photocrati.com',
|
18 |
'Photocrati Media',
|
19 |
'http://www.photocrati.com'
|
13 |
'photocrati-router',
|
14 |
'Router for Pope',
|
15 |
'Provides routing capabilities for Pope modules',
|
16 |
+
'0.2',
|
17 |
'http://www.photocrati.com',
|
18 |
'Photocrati Media',
|
19 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/security/class.wordpress_security_actor.php
CHANGED
@@ -105,19 +105,6 @@ class Mixin_WordPress_Security_Action_Converter extends Mixin
|
|
105 |
{
|
106 |
$capability_name = 'NextGEN Upload images';
|
107 |
|
108 |
-
break;
|
109 |
-
}
|
110 |
-
case 'nextgen_edit_album_settings':
|
111 |
-
{
|
112 |
-
$capability_name = 'NextGEN Edit album settings';
|
113 |
-
|
114 |
-
break;
|
115 |
-
}
|
116 |
-
|
117 |
-
case 'nextgen_edit_album':
|
118 |
-
{
|
119 |
-
$capability_name = 'NextGEN Edit album';
|
120 |
-
|
121 |
break;
|
122 |
}
|
123 |
}
|
105 |
{
|
106 |
$capability_name = 'NextGEN Upload images';
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
break;
|
109 |
}
|
110 |
}
|
products/photocrati_nextgen/modules/security/class.wordpress_security_manager.php
CHANGED
@@ -59,19 +59,6 @@ class Mixin_WordPress_Security_Manager extends Mixin
|
|
59 |
|
60 |
function get_current_actor()
|
61 |
{
|
62 |
-
// If the current_user has an id of 0, then perhaps something went wrong
|
63 |
-
// with trying to parse the cookie. In that case, we'll force WordPress to try
|
64 |
-
// again
|
65 |
-
global $current_user;
|
66 |
-
if ($current_user->ID == 0) {
|
67 |
-
if (isset($GLOBALS['HTTP_COOKIE_VARS']) && isset($GLOBALS['_COOKIE']))
|
68 |
-
$current_user = NULL;
|
69 |
-
foreach ($GLOBALS['HTTP_COOKIE_VARS'] as $key => $value)
|
70 |
-
if (!isset($_COOKIE[$key])) {
|
71 |
-
$_COOKIE[$key] = $value;
|
72 |
-
}
|
73 |
-
}
|
74 |
-
|
75 |
return $this->object->get_actor(get_current_user_id(), 'user');
|
76 |
}
|
77 |
|
59 |
|
60 |
function get_current_actor()
|
61 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
return $this->object->get_actor(get_current_user_id(), 'user');
|
63 |
}
|
64 |
|
products/photocrati_nextgen/modules/security/module.security.php
CHANGED
@@ -14,15 +14,11 @@ class M_Security extends C_Base_Module
|
|
14 |
'photocrati-security',
|
15 |
'Security',
|
16 |
'Provides utilities to check for credentials and security',
|
17 |
-
'0.
|
18 |
'http://www.nextgen-gallery.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
21 |
);
|
22 |
-
|
23 |
-
if (isset($GLOBALS['_COOKIE_NG_COPY'])) {
|
24 |
-
$_COOKIE = $GLOBALS['_COOKIE_NG_COPY'];
|
25 |
-
}
|
26 |
}
|
27 |
|
28 |
function _register_adapters()
|
14 |
'photocrati-security',
|
15 |
'Security',
|
16 |
'Provides utilities to check for credentials and security',
|
17 |
+
'0.1',
|
18 |
'http://www.nextgen-gallery.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
21 |
);
|
|
|
|
|
|
|
|
|
22 |
}
|
23 |
|
24 |
function _register_adapters()
|
products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php
DELETED
@@ -1,117 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/***
|
4 |
-
{
|
5 |
-
Module: photocrati-third_party_compat,
|
6 |
-
Depends: {}
|
7 |
-
}
|
8 |
-
***/
|
9 |
-
class M_Third_Party_Compat extends C_Base_Module
|
10 |
-
{
|
11 |
-
function define()
|
12 |
-
{
|
13 |
-
parent::define(
|
14 |
-
'photocrati-third_party_compat',
|
15 |
-
'Third Party Compatibility',
|
16 |
-
"Adds Third party compatibility hacks, adjustments, and modifications",
|
17 |
-
'0.1',
|
18 |
-
'http://www.nextgen-gallery.com',
|
19 |
-
'Photocrati Media',
|
20 |
-
'http://www.photocrati.com'
|
21 |
-
);
|
22 |
-
}
|
23 |
-
|
24 |
-
function _register_adapters()
|
25 |
-
{
|
26 |
-
}
|
27 |
-
|
28 |
-
function _register_hooks()
|
29 |
-
{
|
30 |
-
add_action('init', array(&$this, 'colorbox'), PHP_INT_MAX);
|
31 |
-
add_action('wp', array(&$this, 'bjlazyload'), PHP_INT_MAX);
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* Colorbox fires a filter (pri=100) to add class attributes to images via a the_content filter. We fire our
|
36 |
-
* shortcodes at PHP_INT_MAX-1 to avoid encoding issues with some themes. Here we move the Colorbox filters
|
37 |
-
* priority to PHP_INT_MAX so that they run after our shortcode text has been replaced with rendered galleries.
|
38 |
-
*/
|
39 |
-
function colorbox()
|
40 |
-
{
|
41 |
-
if (!class_exists('JQueryColorboxFrontend'))
|
42 |
-
return;
|
43 |
-
|
44 |
-
global $wp_filter;
|
45 |
-
|
46 |
-
if (empty($wp_filter['the_content'][100]))
|
47 |
-
return;
|
48 |
-
|
49 |
-
foreach ($wp_filter['the_content'][100] as $id => $filter) {
|
50 |
-
if (!strpos($id, 'addColorboxGroupIdToImages'))
|
51 |
-
continue;
|
52 |
-
|
53 |
-
$object = $filter['function'][0];
|
54 |
-
|
55 |
-
if (get_class($object) != 'JQueryColorboxFrontend')
|
56 |
-
continue;
|
57 |
-
|
58 |
-
remove_filter('the_content', array($object, 'addColorboxGroupIdToImages'), 100);
|
59 |
-
remove_filter('the_excerpt', array($object, 'addColorboxGroupIdToImages'), 100);
|
60 |
-
add_filter('the_content', array($object, 'addColorboxGroupIdToImages'), PHP_INT_MAX);
|
61 |
-
add_filter('the_excerpt', array($object, 'addColorboxGroupIdToImages'), PHP_INT_MAX);
|
62 |
-
break;
|
63 |
-
}
|
64 |
-
}
|
65 |
-
|
66 |
-
/**
|
67 |
-
* For the same reasons as Colorbox we move BJ-Lazy-load's filter() method to a later priority so it can access
|
68 |
-
* our rendered galleries.
|
69 |
-
*/
|
70 |
-
function bjlazyload()
|
71 |
-
{
|
72 |
-
if (!class_exists('BJLL'))
|
73 |
-
return;
|
74 |
-
|
75 |
-
global $wp_filter;
|
76 |
-
|
77 |
-
if (empty($wp_filter['the_content'][200]))
|
78 |
-
return;
|
79 |
-
|
80 |
-
foreach ($wp_filter['the_content'][200] as $id => $filter) {
|
81 |
-
if (!strpos($id, 'filter'))
|
82 |
-
continue;
|
83 |
-
|
84 |
-
$object = $filter['function'][0];
|
85 |
-
|
86 |
-
if (get_class($object) != 'BJLL')
|
87 |
-
continue;
|
88 |
-
|
89 |
-
remove_filter('the_content', array($object, 'filter'), 200);
|
90 |
-
add_filter('the_content', array($object, 'filter'), PHP_INT_MAX);
|
91 |
-
break;
|
92 |
-
}
|
93 |
-
|
94 |
-
add_filter('the_content', array($this, 'bjlazyload_filter'), PHP_INT_MAX-1);
|
95 |
-
}
|
96 |
-
|
97 |
-
/**
|
98 |
-
* BJ-Lazy-load's regex is lazy and doesn't handle multiline search or instances where <img is immediately followed
|
99 |
-
* by a newline. The following regex replaces newlines and strips unnecessary space. We fire this filter
|
100 |
-
* before BJ-Lazy-Load's to make our galleries compatible with its expectations.
|
101 |
-
*
|
102 |
-
* @param string $content
|
103 |
-
* @return string
|
104 |
-
*/
|
105 |
-
function bjlazyload_filter($content)
|
106 |
-
{
|
107 |
-
return trim(preg_replace("/\s\s+/", " ", $content));
|
108 |
-
}
|
109 |
-
|
110 |
-
function get_type_list()
|
111 |
-
{
|
112 |
-
return array(
|
113 |
-
);
|
114 |
-
}
|
115 |
-
}
|
116 |
-
|
117 |
-
new M_Third_Party_Compat();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
products/photocrati_nextgen/modules/widget/class.widget.php
CHANGED
@@ -30,6 +30,8 @@ class Mixin_Widget extends Mixin
|
|
30 |
*/
|
31 |
function echo_widget_random($number, $width = '75', $height = '50', $exclude = 'all', $list = '', $show = 'thumbnail')
|
32 |
{
|
|
|
|
|
33 |
$options = array(
|
34 |
'title' => FALSE,
|
35 |
'items' => $number,
|
@@ -52,6 +54,8 @@ class Mixin_Widget extends Mixin
|
|
52 |
*/
|
53 |
function echo_widget_recent($number, $width = '75', $height = '50', $exclude = 'all', $list = '', $show = 'thumbnail')
|
54 |
{
|
|
|
|
|
55 |
$options = array(
|
56 |
'title' => FALSE,
|
57 |
'items' => $number,
|
@@ -77,6 +81,8 @@ class Mixin_Widget extends Mixin
|
|
77 |
*/
|
78 |
function echo_widget_slideshow($galleryID, $width = '', $height = '')
|
79 |
{
|
|
|
|
|
80 |
$widget = new C_Widget_Slideshow();
|
81 |
$widget->render_slideshow($galleryID, $width, $height);
|
82 |
}
|
30 |
*/
|
31 |
function echo_widget_random($number, $width = '75', $height = '50', $exclude = 'all', $list = '', $show = 'thumbnail')
|
32 |
{
|
33 |
+
wp_enqueue_style('nextgen_widgets_style', $this->get_static_url('photocrati-widget#widgets.css'));
|
34 |
+
wp_enqueue_style('nextgen_basic_thumbnails_style', $this->get_static_url('nextgen_basic_thumbnails#nextgen_basic_thumbnails.css'));
|
35 |
$options = array(
|
36 |
'title' => FALSE,
|
37 |
'items' => $number,
|
54 |
*/
|
55 |
function echo_widget_recent($number, $width = '75', $height = '50', $exclude = 'all', $list = '', $show = 'thumbnail')
|
56 |
{
|
57 |
+
wp_enqueue_style('nextgen_widgets_style', $this->get_static_url('photocrati-widget#widgets.css'));
|
58 |
+
wp_enqueue_style('nextgen_basic_thumbnails_style', $this->get_static_url('nextgen_basic_thumbnails#nextgen_basic_thumbnails.css'));
|
59 |
$options = array(
|
60 |
'title' => FALSE,
|
61 |
'items' => $number,
|
81 |
*/
|
82 |
function echo_widget_slideshow($galleryID, $width = '', $height = '')
|
83 |
{
|
84 |
+
wp_enqueue_style('nextgen_widgets_style', $this->get_static_url('widgets.css'));
|
85 |
+
wp_enqueue_style('nextgen_basic_slideshow_style', $this->get_static_url('nextgen_basic_slideshow#nextgen_basic_slideshow.css'));
|
86 |
$widget = new C_Widget_Slideshow();
|
87 |
$widget->render_slideshow($galleryID, $width, $height);
|
88 |
}
|
products/photocrati_nextgen/modules/widget/class.widget_gallery.php
CHANGED
@@ -45,32 +45,6 @@ class C_Widget_Gallery extends WP_Widget
|
|
45 |
function update($new_instance, $old_instance)
|
46 |
{
|
47 |
$instance = $old_instance;
|
48 |
-
|
49 |
-
// do not allow 0 or less
|
50 |
-
if ((int)$new_instance['items'] <= 0)
|
51 |
-
$new_instance['items'] = 4;
|
52 |
-
|
53 |
-
// for clarity: empty the list if we're showing every gallery anyway
|
54 |
-
if ($new_instance['exclude'] == 'all')
|
55 |
-
$new_instance['list'] = '';
|
56 |
-
|
57 |
-
// remove gallery ids that do not exist
|
58 |
-
if (in_array($new_instance['exclude'], array('denied', 'allow')))
|
59 |
-
{
|
60 |
-
// do search
|
61 |
-
$mapper = C_Component_Registry::get_instance()->get_utility('I_Gallery_Mapper');
|
62 |
-
$ids = explode(',', $new_instance['list']);
|
63 |
-
foreach ($ids as $ndx => $id) {
|
64 |
-
if (!$mapper->find($id))
|
65 |
-
unset($ids[$ndx]);
|
66 |
-
}
|
67 |
-
$new_instance['list'] = implode(',', $ids);
|
68 |
-
}
|
69 |
-
|
70 |
-
// reset to show all galleries IF there are no valid galleries in the list
|
71 |
-
if ($new_instance['exclude'] !== 'all' && empty($new_instance['list']))
|
72 |
-
$new_instance['exclude'] = 'all';
|
73 |
-
|
74 |
$instance['title'] = strip_tags($new_instance['title']);
|
75 |
$instance['items'] = (int)$new_instance['items'];
|
76 |
$instance['type'] = $new_instance['type'];
|
@@ -85,24 +59,55 @@ class C_Widget_Gallery extends WP_Widget
|
|
85 |
|
86 |
function widget($args, $instance)
|
87 |
{
|
88 |
-
$router = C_Router::get_instance();
|
89 |
-
wp_enqueue_style('nextgen_widgets_style', $router->get_static_url('photocrati-widget#widgets.css'));
|
90 |
-
wp_enqueue_style('nextgen_basic_thumbnails_style', $router->get_static_url('photocrati-nextgen_basic_gallery#thumbnails/nextgen_basic_thumbnails.css'));
|
91 |
-
|
92 |
// these are handled by extract() but I want to silence my IDE warnings that these vars don't exist
|
93 |
$before_widget = NULL;
|
94 |
-
$before_title
|
95 |
-
$after_widget
|
96 |
-
$after_title
|
97 |
-
$widget_id
|
98 |
-
extract($args);
|
99 |
|
|
|
|
|
|
|
100 |
$title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title'], $instance, $this->id_base);
|
101 |
|
102 |
-
$renderer
|
103 |
-
$factory
|
|
|
104 |
$view = $factory->create('mvc_view', '');
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
// IE8 webslice support if needed
|
107 |
if ($instance['webslice'])
|
108 |
{
|
@@ -111,16 +116,15 @@ class C_Widget_Gallery extends WP_Widget
|
|
111 |
$after_widget = '</div>' . $after_widget;
|
112 |
}
|
113 |
|
114 |
-
$
|
115 |
-
|
116 |
-
|
117 |
-
'
|
118 |
-
'
|
119 |
'display_type' => NEXTGEN_GALLERY_BASIC_THUMBNAILS,
|
120 |
'images_per_page' => $instance['items'],
|
121 |
'maximum_entity_count' => $instance['items'],
|
122 |
'template' => $view->get_template_abspath('photocrati-widget#display_gallery'),
|
123 |
-
'image_type' => $instance['show'] == 'original' ? 'full' : 'thumb',
|
124 |
'show_all_in_lightbox' => FALSE,
|
125 |
'show_slideshow_link' => FALSE,
|
126 |
'disable_pagination' => TRUE,
|
@@ -136,26 +140,6 @@ class C_Widget_Gallery extends WP_Widget
|
|
136 |
'widget_setting_height' => $instance['height'],
|
137 |
'widget_setting_show_setting' => $instance['show'],
|
138 |
'widget_setting_widget_id' => $widget_id
|
139 |
-
);
|
140 |
-
|
141 |
-
switch ($instance['exclude']) {
|
142 |
-
case 'all':
|
143 |
-
break;
|
144 |
-
case 'denied':
|
145 |
-
$mapper = C_Component_Registry::get_instance()->get_utility('I_Gallery_Mapper');
|
146 |
-
$gallery_ids = array();
|
147 |
-
$list = explode(',', $instance['list']);
|
148 |
-
foreach ($mapper->find_all() as $gallery) {
|
149 |
-
if (!in_array($gallery->{$gallery->id_field}, $list))
|
150 |
-
$gallery_ids[] = $gallery->{$gallery->id_field};
|
151 |
-
}
|
152 |
-
$params['container_ids'] = implode(',', $gallery_ids);
|
153 |
-
break;
|
154 |
-
case 'allow':
|
155 |
-
$params['container_ids'] = $instance['list'];
|
156 |
-
break;
|
157 |
-
}
|
158 |
-
|
159 |
-
echo $renderer->display_images($params);
|
160 |
}
|
161 |
}
|
45 |
function update($new_instance, $old_instance)
|
46 |
{
|
47 |
$instance = $old_instance;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
$instance['title'] = strip_tags($new_instance['title']);
|
49 |
$instance['items'] = (int)$new_instance['items'];
|
50 |
$instance['type'] = $new_instance['type'];
|
59 |
|
60 |
function widget($args, $instance)
|
61 |
{
|
|
|
|
|
|
|
|
|
62 |
// these are handled by extract() but I want to silence my IDE warnings that these vars don't exist
|
63 |
$before_widget = NULL;
|
64 |
+
$before_title = NULL;
|
65 |
+
$after_widget = NULL;
|
66 |
+
$after_title = NULL;
|
67 |
+
$widget_id = NULL;
|
|
|
68 |
|
69 |
+
global $wpdb;
|
70 |
+
|
71 |
+
extract($args);
|
72 |
$title = apply_filters('widget_title', empty($instance['title']) ? ' ' : $instance['title'], $instance, $this->id_base);
|
73 |
|
74 |
+
$renderer = C_Component_Registry::get_instance()->get_utility('I_Displayed_Gallery_Renderer');
|
75 |
+
$factory = C_Component_Registry::get_instance()->get_utility('I_Component_Factory');
|
76 |
+
$mapper = C_Component_Registry::get_instance()->get_utility('I_Image_Mapper');
|
77 |
$view = $factory->create('mvc_view', '');
|
78 |
|
79 |
+
// To prevent huge db scans and/or the loading of every image available: we first retrieve X image
|
80 |
+
// ids and then create a gallery using the results for the image_ids parameter
|
81 |
+
$image_ids = array();
|
82 |
+
|
83 |
+
$sql = "SELECT `pid` FROM `{$wpdb->nggpictures}` WHERE `exclude` = 0";
|
84 |
+
// possibly filter images not from certain galleries
|
85 |
+
if ($instance['exclude'] == 'allow')
|
86 |
+
$sql .= sprintf(" AND `galleryid` IN (%s)", $instance['list']);
|
87 |
+
// possibly filter images from certain galleries
|
88 |
+
if ($instance['exclude'] == 'denied')
|
89 |
+
$sql .= sprintf(" AND `galleryid` NOT IN (%s)", $instance['list']);
|
90 |
+
if ($instance['type'] == 'random')
|
91 |
+
$sql .= ' ORDER BY RAND()';
|
92 |
+
else if ($instance['type'] == 'recent')
|
93 |
+
$sql .= ' ORDER BY `imagedate` DESC';
|
94 |
+
$sql .= " LIMIT {$instance['items']}";
|
95 |
+
foreach ($wpdb->get_results($sql, ARRAY_N) as $res) {
|
96 |
+
$image_ids[] = reset($res);
|
97 |
+
}
|
98 |
+
$image_ids = implode(',', $image_ids);
|
99 |
+
|
100 |
+
if ($instance['type'] == 'random')
|
101 |
+
{
|
102 |
+
$order_by = 'rand()';
|
103 |
+
$order_direction = 'DESC';
|
104 |
+
}
|
105 |
+
else if ($instance['type'] == 'recent')
|
106 |
+
{
|
107 |
+
$order_by = $mapper->get_primary_key_column();
|
108 |
+
$order_direction = 'DESC';
|
109 |
+
}
|
110 |
+
|
111 |
// IE8 webslice support if needed
|
112 |
if ($instance['webslice'])
|
113 |
{
|
116 |
$after_widget = '</div>' . $after_widget;
|
117 |
}
|
118 |
|
119 |
+
echo $renderer->display_images(array(
|
120 |
+
'source' => 'galleries',
|
121 |
+
'order_by' => $order_by,
|
122 |
+
'order_direction' => $order_direction,
|
123 |
+
'image_ids' => $image_ids,
|
124 |
'display_type' => NEXTGEN_GALLERY_BASIC_THUMBNAILS,
|
125 |
'images_per_page' => $instance['items'],
|
126 |
'maximum_entity_count' => $instance['items'],
|
127 |
'template' => $view->get_template_abspath('photocrati-widget#display_gallery'),
|
|
|
128 |
'show_all_in_lightbox' => FALSE,
|
129 |
'show_slideshow_link' => FALSE,
|
130 |
'disable_pagination' => TRUE,
|
140 |
'widget_setting_height' => $instance['height'],
|
141 |
'widget_setting_show_setting' => $instance['show'],
|
142 |
'widget_setting_widget_id' => $widget_id
|
143 |
+
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
144 |
}
|
145 |
}
|
products/photocrati_nextgen/modules/widget/class.widget_slideshow.php
CHANGED
@@ -58,10 +58,6 @@ class C_Widget_Slideshow extends WP_Widget
|
|
58 |
|
59 |
function widget($args, $instance)
|
60 |
{
|
61 |
-
$router = C_Router::get_instance();
|
62 |
-
wp_enqueue_style('nextgen_widgets_style', $router->get_static_url('photocrati-widget#widgets.css'));
|
63 |
-
wp_enqueue_style('nextgen_basic_slideshow_style', $router->get_static_url('photocrati-nextgen_basic_gallery#slideshow/nextgen_basic_slideshow.css'));
|
64 |
-
|
65 |
// these are handled by extract() but I want to silence my IDE warnings that these vars don't exist
|
66 |
$before_widget = NULL;
|
67 |
$before_title = NULL;
|
@@ -75,7 +71,7 @@ class C_Widget_Slideshow extends WP_Widget
|
|
75 |
|
76 |
$title = apply_filters('widget_title', empty($instance['title']) ? __('Slideshow', 'nggallery') : $instance['title'], $instance, $this->id_base);
|
77 |
|
78 |
-
$out = $this->render_slideshow($instance['galleryid'], $instance['width'], $instance['height']
|
79 |
|
80 |
$parent->render_partial(
|
81 |
'photocrati-widget#display_slideshow',
|
@@ -93,7 +89,7 @@ class C_Widget_Slideshow extends WP_Widget
|
|
93 |
);
|
94 |
}
|
95 |
|
96 |
-
function render_slideshow($galleryID, $irWidth = '', $irHeight = ''
|
97 |
{
|
98 |
$registry = C_Component_Registry::get_instance();
|
99 |
$renderer = $registry->get_utility('I_Displayed_Gallery_Renderer');
|
@@ -104,7 +100,6 @@ class C_Widget_Slideshow extends WP_Widget
|
|
104 |
'gallery_width' => $irWidth,
|
105 |
'gallery_height' => $irHeight,
|
106 |
'source' => 'galleries',
|
107 |
-
'slug' => 'widget-' . $args['widget_id'],
|
108 |
'entity_types' => array('image'),
|
109 |
'show_thumbnail_link' => FALSE,
|
110 |
'ngg_triggers_display' => 'never'
|
58 |
|
59 |
function widget($args, $instance)
|
60 |
{
|
|
|
|
|
|
|
|
|
61 |
// these are handled by extract() but I want to silence my IDE warnings that these vars don't exist
|
62 |
$before_widget = NULL;
|
63 |
$before_title = NULL;
|
71 |
|
72 |
$title = apply_filters('widget_title', empty($instance['title']) ? __('Slideshow', 'nggallery') : $instance['title'], $instance, $this->id_base);
|
73 |
|
74 |
+
$out = $this->render_slideshow($instance['galleryid'], $instance['width'], $instance['height']);
|
75 |
|
76 |
$parent->render_partial(
|
77 |
'photocrati-widget#display_slideshow',
|
89 |
);
|
90 |
}
|
91 |
|
92 |
+
function render_slideshow($galleryID, $irWidth = '', $irHeight = '')
|
93 |
{
|
94 |
$registry = C_Component_Registry::get_instance();
|
95 |
$renderer = $registry->get_utility('I_Displayed_Gallery_Renderer');
|
100 |
'gallery_width' => $irWidth,
|
101 |
'gallery_height' => $irHeight,
|
102 |
'source' => 'galleries',
|
|
|
103 |
'entity_types' => array('image'),
|
104 |
'show_thumbnail_link' => FALSE,
|
105 |
'ngg_triggers_display' => 'never'
|
products/photocrati_nextgen/modules/widget/module.widget.php
CHANGED
@@ -15,7 +15,7 @@ class M_Widget extends C_Base_Module
|
|
15 |
'photocrati-widget',
|
16 |
'Widget',
|
17 |
'Handles clearing of NextGen Widgets',
|
18 |
-
'0.
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
15 |
'photocrati-widget',
|
16 |
'Widget',
|
17 |
'Handles clearing of NextGen Widgets',
|
18 |
+
'0.1',
|
19 |
'http://www.nextgen-gallery.com',
|
20 |
'Photocrati Media',
|
21 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/modules/widget/templates/display_gallery.php
CHANGED
@@ -13,13 +13,13 @@ echo $settings['widget_setting_before_widget']
|
|
13 |
<?php // keep the following a/img on the same line ?>
|
14 |
<div class="ngg-widget entry-content">
|
15 |
<?php foreach ($images as $image) { ?>
|
16 |
-
<a href="<?php echo esc_attr($storage->get_image_url($image
|
17 |
title="<?php echo esc_attr($image->description)?>"
|
18 |
data-image-id='<?php echo esc_attr($image->pid); ?>'
|
19 |
<?php echo $effect_code ?>
|
20 |
><img title="<?php echo esc_attr($image->alttext)?>"
|
21 |
alt="<?php echo esc_attr($image->alttext)?>"
|
22 |
-
src="<?php echo esc_attr($storage->get_image_url($image,
|
23 |
width="<?php echo esc_attr($settings['image_width']); ?>"
|
24 |
height="<?php echo esc_attr($settings['image_height']); ?>"
|
25 |
/></a>
|
13 |
<?php // keep the following a/img on the same line ?>
|
14 |
<div class="ngg-widget entry-content">
|
15 |
<?php foreach ($images as $image) { ?>
|
16 |
+
<a href="<?php echo esc_attr($storage->get_image_url($image))?>"
|
17 |
title="<?php echo esc_attr($image->description)?>"
|
18 |
data-image-id='<?php echo esc_attr($image->pid); ?>'
|
19 |
<?php echo $effect_code ?>
|
20 |
><img title="<?php echo esc_attr($image->alttext)?>"
|
21 |
alt="<?php echo esc_attr($image->alttext)?>"
|
22 |
+
src="<?php echo esc_attr($storage->get_image_url($image, 'thumb')); ?>"
|
23 |
width="<?php echo esc_attr($settings['image_width']); ?>"
|
24 |
height="<?php echo esc_attr($settings['image_height']); ?>"
|
25 |
/></a>
|
products/photocrati_nextgen/modules/wordpress_routing/adapter.wordpress_router.php
CHANGED
@@ -37,7 +37,7 @@ class A_WordPress_Router extends Mixin
|
|
37 |
$retval
|
38 |
);
|
39 |
|
40 |
-
if ($retval &&
|
41 |
|
42 |
// Remove index.php from the url
|
43 |
$retval = $this->object->remove_url_segment('/index.php', $retval);
|
@@ -56,18 +56,6 @@ class A_WordPress_Router extends Mixin
|
|
56 |
return $retval;
|
57 |
}
|
58 |
|
59 |
-
function _add_index_dot_php_to_url($url)
|
60 |
-
{
|
61 |
-
if (strpos($url, '/index.php') === FALSE) {
|
62 |
-
$pattern = get_option('permalink_structure');
|
63 |
-
if (!$pattern OR strpos($pattern, '/index.php') !== FALSE) {
|
64 |
-
$url = $this->object->join_paths($url, '/index.php');
|
65 |
-
}
|
66 |
-
}
|
67 |
-
|
68 |
-
return $url;
|
69 |
-
}
|
70 |
-
|
71 |
|
72 |
function get_base_url($site_url = FALSE)
|
73 |
{
|
@@ -75,21 +63,27 @@ class A_WordPress_Router extends Mixin
|
|
75 |
if ($site_url)
|
76 |
{
|
77 |
if (!$this->_site_url) {
|
78 |
-
|
|
|
|
|
|
|
|
|
|
|
79 |
}
|
80 |
$retval = $this->_site_url;
|
81 |
}
|
82 |
else {
|
83 |
if (!$this->_home_url) {
|
84 |
-
$this->_home_url =
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
$retval = $this->_home_url;
|
87 |
}
|
88 |
-
|
89 |
-
if ($this->object->is_https()) {
|
90 |
-
$retval = preg_replace('/^http:\\/\\//i', 'https://', $retval, 1);
|
91 |
-
}
|
92 |
|
93 |
return $retval;
|
94 |
}
|
95 |
-
}
|
37 |
$retval
|
38 |
);
|
39 |
|
40 |
+
if ($retval && file_exists($filename) && $retval != $base_url) {
|
41 |
|
42 |
// Remove index.php from the url
|
43 |
$retval = $this->object->remove_url_segment('/index.php', $retval);
|
56 |
return $retval;
|
57 |
}
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
function get_base_url($site_url = FALSE)
|
61 |
{
|
63 |
if ($site_url)
|
64 |
{
|
65 |
if (!$this->_site_url) {
|
66 |
+
$this->_site_url = site_url();
|
67 |
+
if (!get_option('permalink_structure')) {
|
68 |
+
$this->_site_url = $this->object->join_paths(
|
69 |
+
$this->_site_url, '/index.php'
|
70 |
+
);
|
71 |
+
}
|
72 |
}
|
73 |
$retval = $this->_site_url;
|
74 |
}
|
75 |
else {
|
76 |
if (!$this->_home_url) {
|
77 |
+
$this->_home_url = home_url();
|
78 |
+
if (!get_option('permalink_structure')) {
|
79 |
+
$this->_home_url = $this->object->join_paths(
|
80 |
+
$this->_home_url, '/index.php'
|
81 |
+
);
|
82 |
+
}
|
83 |
}
|
84 |
$retval = $this->_home_url;
|
85 |
}
|
|
|
|
|
|
|
|
|
86 |
|
87 |
return $retval;
|
88 |
}
|
89 |
+
}
|
products/photocrati_nextgen/modules/wordpress_routing/adapter.wordpress_routing_app.php
CHANGED
@@ -4,18 +4,9 @@ class A_WordPress_Routing_App extends Mixin
|
|
4 |
{
|
5 |
function remove_parameter($key, $id=NULL, $url=FALSE)
|
6 |
{
|
7 |
-
|
8 |
|
9 |
-
|
10 |
-
if (preg_match("#(/{$this->object->_settings->router_param_slug}/.*)#", $url, $match)) {
|
11 |
-
$generated_url = home_url($match[1]);
|
12 |
-
}
|
13 |
-
else $generated_url = home_url();
|
14 |
-
}
|
15 |
-
else
|
16 |
-
$generated_url = $this->call_parent('remove_parameter', $key, $id, $url);
|
17 |
-
|
18 |
-
if ($this->is_postname_required_in_url() && $generated_url) {
|
19 |
$generated_url = $this->object->add_post_permalink_to_url($generated_url);
|
20 |
}
|
21 |
|
@@ -25,14 +16,9 @@ class A_WordPress_Routing_App extends Mixin
|
|
25 |
function is_postname_required_in_url()
|
26 |
{
|
27 |
global $wp_query;
|
28 |
-
return
|
29 |
}
|
30 |
|
31 |
-
function is_blog_page()
|
32 |
-
{
|
33 |
-
return is_home() OR is_archive();
|
34 |
-
}
|
35 |
-
|
36 |
function parse_url($url)
|
37 |
{
|
38 |
$parts = parse_url($url);
|
4 |
{
|
5 |
function remove_parameter($key, $id=NULL, $url=FALSE)
|
6 |
{
|
7 |
+
$generated_url = $this->call_parent('remove_parameter', $key, $id, $url);
|
8 |
|
9 |
+
if ($this->is_postname_required_in_url()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
$generated_url = $this->object->add_post_permalink_to_url($generated_url);
|
11 |
}
|
12 |
|
16 |
function is_postname_required_in_url()
|
17 |
{
|
18 |
global $wp_query;
|
19 |
+
return !$wp_query->is_single() && in_the_loop();
|
20 |
}
|
21 |
|
|
|
|
|
|
|
|
|
|
|
22 |
function parse_url($url)
|
23 |
{
|
24 |
$parts = parse_url($url);
|
products/photocrati_nextgen/modules/wordpress_routing/module.wordpress_routing.php
CHANGED
@@ -14,7 +14,7 @@ class M_WordPress_Routing extends C_Base_Module
|
|
14 |
'photocrati-wordpress_routing',
|
15 |
'WordPress Routing',
|
16 |
"Integrates the MVC module's routing implementation with WordPress",
|
17 |
-
'0.
|
18 |
'http://www.nextgen-gallery.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
14 |
'photocrati-wordpress_routing',
|
15 |
'WordPress Routing',
|
16 |
"Integrates the MVC module's routing implementation with WordPress",
|
17 |
+
'0.1',
|
18 |
'http://www.nextgen-gallery.com',
|
19 |
'Photocrati Media',
|
20 |
'http://www.photocrati.com'
|
products/photocrati_nextgen/product.photocrati_nextgen.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
/***
|
4 |
-
{
|
5 |
-
Product: photocrati-nextgen
|
6 |
-
}
|
7 |
-
|
8 |
|
9 |
define('NEXTGEN_GALLERY_CHANGE_OPTIONS_CAP', 'NextGEN Manage gallery');
|
10 |
|
@@ -17,8 +17,8 @@ class P_Photocrati_NextGen extends C_Base_Product
|
|
17 |
'photocrati-wordpress_routing',
|
18 |
'photocrati-security',
|
19 |
'photocrati-lzw',
|
20 |
-
'photocrati-nextgen_settings',
|
21 |
'photocrati-mvc',
|
|
|
22 |
'photocrati-ajax',
|
23 |
'photocrati-dynamic_stylesheet',
|
24 |
'photocrati-frame_communication',
|
@@ -43,18 +43,16 @@ class P_Photocrati_NextGen extends C_Base_Product
|
|
43 |
'photocrati-nextgen_basic_singlepic',
|
44 |
'photocrati-nextgen_basic_tagcloud',
|
45 |
'photocrati-nextgen_basic_album',
|
46 |
-
'photocrati-widget'
|
47 |
-
'photocrati-third_party_compat',
|
48 |
-
'photocrati-nextgen_xmlrpc'
|
49 |
);
|
50 |
|
51 |
function define()
|
52 |
{
|
53 |
parent::define(
|
54 |
'photocrati-nextgen',
|
55 |
-
'Photocrati
|
56 |
-
'Photocrati
|
57 |
-
'2.0.
|
58 |
'http://www.nextgen-gallery.com',
|
59 |
'Photocrati Media',
|
60 |
'http://www.photocrati.com'
|
1 |
<?php
|
2 |
|
3 |
/***
|
4 |
+
{
|
5 |
+
Product: photocrati-nextgen
|
6 |
+
}
|
7 |
+
***/
|
8 |
|
9 |
define('NEXTGEN_GALLERY_CHANGE_OPTIONS_CAP', 'NextGEN Manage gallery');
|
10 |
|
17 |
'photocrati-wordpress_routing',
|
18 |
'photocrati-security',
|
19 |
'photocrati-lzw',
|
|
|
20 |
'photocrati-mvc',
|
21 |
+
'photocrati-nextgen_settings',
|
22 |
'photocrati-ajax',
|
23 |
'photocrati-dynamic_stylesheet',
|
24 |
'photocrati-frame_communication',
|
43 |
'photocrati-nextgen_basic_singlepic',
|
44 |
'photocrati-nextgen_basic_tagcloud',
|
45 |
'photocrati-nextgen_basic_album',
|
46 |
+
'photocrati-widget'
|
|
|
|
|
47 |
);
|
48 |
|
49 |
function define()
|
50 |
{
|
51 |
parent::define(
|
52 |
'photocrati-nextgen',
|
53 |
+
'Photocrati NextGen',
|
54 |
+
'Photocrati NextGen',
|
55 |
+
'2.0.7',
|
56 |
'http://www.nextgen-gallery.com',
|
57 |
'Photocrati Media',
|
58 |
'http://www.photocrati.com'
|
readme.txt
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
=== NextGEN Gallery ===
|
2 |
Contributors: photocrati
|
3 |
Tags:gallery,image,images,photo,photos,picture,pictures,slideshow,flash,media,thumbnails,photo-albums,nextgen-gallery,nextgen
|
4 |
-
Requires at least: 3.6
|
5 |
-
Tested up to: 3.
|
6 |
Stable tag: trunk
|
7 |
License: GPLv2
|
8 |
|
@@ -112,17 +112,13 @@ If you do want to work with shortcodes, we've also introduce a new, more powerfu
|
|
112 |
|
113 |
**<a href="http://www.nextgen-gallery.com/nextgen-gallery-shortcodes">Learn About NextGEN Gallery 2.0 Shortcodes</a>**
|
114 |
|
115 |
-
Legacy shortcodes? For reference, we're also maintaining documentation on NextGEN Legacy
|
116 |
|
117 |
For more information, feel free to visit the official website for the NextGEN Gallery <a href="http://www.nextgen-gallery.com" target="_blank">WordPress Gallery Plugin</a>.
|
118 |
|
119 |
== Frequently Asked Questions ==
|
120 |
|
121 |
|
122 |
-
= Why are my galleries not opening up in a lightbox after I move my site? =
|
123 |
-
|
124 |
-
This is often due to the URL paths to the CSS and JavaScript files used by the Lightbox Effects not being changed to relevant addresses based on the new site. This article will help sort out this issue if that is the case: <a href="http://www.nextgen-gallery.com/galleries-opening-lightbox/" target="_blank">Why are my galleries not opening up in a lightbox?</a>.
|
125 |
-
|
126 |
= Do you have documentation or tutorials? =
|
127 |
|
128 |
Yes. See <a href="http://www.nextgen-gallery.com/help/" target="_blank">NextGEN Gallery Documentation</a>.
|
@@ -199,158 +195,6 @@ For more information, feel free to visit the official website for the NextGEN Ga
|
|
199 |
|
200 |
== Changelog ==
|
201 |
|
202 |
-
= V2.0.40 - 11.26.2013 =
|
203 |
-
* NEW: Added the ability to apply lightbox effects to non-NGG images
|
204 |
-
* NEW: Added NGG_HIDE_STRICT_ERRORS constant. Define and set to TRUE to hide strict errors
|
205 |
-
* NEW: Added NEXTGEN_GALLERY_IMPORT_ROOT constant. Define and set to TRUE to browse from a custom directory
|
206 |
-
* NEW: Added NGG_DEBUG constant. Define and set to TRUE to display helpful messages for debugging
|
207 |
-
* NEW: Each custom table record will have an associated custom post record for expansion
|
208 |
-
* NEW: Display helpful error messages when there's a problem uploading images
|
209 |
-
* NEW: Add data-(src|thumbnail|image-id|title|description) attribute to gallery image anchors
|
210 |
-
* NEW: Variant support for displayed gallery sources. Random images is limited to 5 variations
|
211 |
-
* Fixed: Excessive creation of transients for random galleries
|
212 |
-
* Fixed: Many issues prohibiting the ability to upload images
|
213 |
-
* Fixed: Compatibility with NextGEN Gallery Export Plugin for Adobe Lightroom (thanks Vladimir!)
|
214 |
-
* Fixed: Sorting in the Attach to Post interface
|
215 |
-
* Fixed: HTML allowed in gallery/album descriptions
|
216 |
-
* Fixed: Requests for galleries within albums that have numeric names are broken
|
217 |
-
* Fixed: Call to a non-member function get() on WP_Query
|
218 |
-
* Fixed: Ability to sort by Image ID in the Attach to Post interface
|
219 |
-
* Fixed: Isolate the Attach to Post from implicit third-party script inclusion
|
220 |
-
* Fixed: Check for the existance of thumbnails when generating urls, and if missing, generate new ones
|
221 |
-
* Fixed: Compatibility with NextGEN Facebook OpenGraph+ plugin
|
222 |
-
* Fixed: Various XML-RPC issues
|
223 |
-
* Fixed: Widgets stylesheet not included
|
224 |
-
* Fixed: Issue with color not being pre-selected when previewing Watermark
|
225 |
-
* Fixed: E_NOTICE emitted when cleaning up cached image files
|
226 |
-
* Fixed: E_NOTICE emitted when viewing display type settings
|
227 |
-
* Fixed: Typo adjusting pcre.backtrack_limit for shortcodes
|
228 |
-
* Fixed: Content within the tabs of the Attach to Post interface cut-off
|
229 |
-
* Fixed: Routing problem which would cause conflicts with different display types on the same page
|
230 |
-
* Fixed: Broken Dynamic CSS links on GoDaddy
|
231 |
-
* Fixed: Ability to use HTML in gallery/album descriptions
|
232 |
-
* Fixed: Sub-album requests conflicting with paginated galleries on the same page
|
233 |
-
* Merged: Pull request from andreasE (https://bitbucket.org/photocrati/nextgen-gallery/pull-request/6/)
|
234 |
-
|
235 |
-
= V2.0.33 - 10.21.2013 =
|
236 |
-
* NEW: Requests /ngg_tag/[tagname] will create a displayed gallery
|
237 |
-
* NEW: Option added to "Import Gallery" tab to use original images
|
238 |
-
* Fixed: Links are broken on the ngg_tags-sitemap.xml file by WordPress SEO
|
239 |
-
* Fixed: PHP notice: Attempt to assign property of non-object
|
240 |
-
* Fixed: Undefined property warnings when using NextGEN Basic Thumbnails
|
241 |
-
* Fixed: Detect if an applying a transient to a displayed gallery was successful
|
242 |
-
* Fixed: Compatibility issues with BJ-Lazy-Load and Colorbox
|
243 |
-
* Fixed: Pagination conflicts for multiple Imagebrowsers on the same page
|
244 |
-
* Fixed: Ability to display previous exception with debug mode
|
245 |
-
* Fixed: Tagclouds not working in multisite instances
|
246 |
-
* Fixed: Load widgets.css when a widget is being used
|
247 |
-
* Fixed: Installer should remove all instances of the component factory
|
248 |
-
* Fixed: Widget settings interface not intuitive
|
249 |
-
* Fixed: Inability to upload images in some Windows host environments
|
250 |
-
* Fixed: Sorting images/galleries using the Attach To Post interface
|
251 |
-
* Fixed: Fix detection of HTTPS (pull request by Leonhardt Wille)
|
252 |
-
* Fixed: Compilation errors of regular expressions
|
253 |
-
* Fixed: Pro galleries wouldn't display in environments using PHP 5.3.3 or less
|
254 |
-
* Fixed: Scanning of router slug is now limited to the uri, not the url
|
255 |
-
* Fixed: Show slideshow link isn't required for thumbnail/imagebrowser integration
|
256 |
-
* Fixed: WordPress media-upload with 'singlepic' image size
|
257 |
-
* Fixed: Use target=_blank when the link setting is provided for NextGEN Basic Singlepic
|
258 |
-
* Fixed: Only display rendering errors if WP_DEBUG is enabled
|
259 |
-
|
260 |
-
= V2.0.31 - 10.03.2013 =
|
261 |
-
* NEW: Restored AJAX pagination for NextGEN Basic ImageBrowser display type
|
262 |
-
* Fixed: Compatibility with WordPress Local SEO by Yoast
|
263 |
-
* Fixed: Inability to upload images if image_slug field was missing in database
|
264 |
-
* Fixed: Integration of NextGEN Basic Thumbnail and NextGEN Basic Slideshow display types
|
265 |
-
* Fixed: Photocrati Resource Manager further adjusted to be third-party friendly
|
266 |
-
* Fixed: Added the ability to find legacy templates in both the child/parent theme directories
|
267 |
-
* Fixed: JavaScript errors in Attach to Post interface
|
268 |
-
* Fixed: Router can handle port numbers in urls
|
269 |
-
* Fixed: Carousel template was linking to NextGEN Basic ImageBrowser view
|
270 |
-
* Fixed: SQL query generated for displayed galleries using tags as source
|
271 |
-
* Fixed: 3rd party compat: raise & never lower pcre.backtrack_limit
|
272 |
-
|
273 |
-
= V2.0.30 - 09.25.2013 =
|
274 |
-
* NEW: Restored the ability to use imagebrowser display type instead of a lightbox effect
|
275 |
-
* Changed: Displayed galleries are no longer rendered in RSS feeds
|
276 |
-
* Changed: Removed "Plugin Check" widget from overview page
|
277 |
-
* Fixed: Silence PHP warnings/errors in an output buffer for AJAX actions
|
278 |
-
* Fixed: Compatibility issue with WordPress SEO and broken site maps (and large error_logs)
|
279 |
-
* Fixed: Compatibility issue with AJAX Event Calendar (and possibly others)
|
280 |
-
* Fixed: Adjusted Photocrati Resource Manager to be third-party friendly
|
281 |
-
* Fixed: Fixed empty result set for displayed galleries selecting 'All' tags
|
282 |
-
* Fixed: URL generation for imagebrowser pagination links
|
283 |
-
* Fixed: Ensure that image meta is imported on creation
|
284 |
-
* Fixed: Ensure that transients are removed when an external object cache is used
|
285 |
-
* Fixed: Don't load pluggable.php. This will fix plugin conflicts
|
286 |
-
* Fixed: In Attach to Post interface, galleries created in one tab weren't showing in another
|
287 |
-
* Fixed: Don't output frame events cookie for XML-RPC requests
|
288 |
-
|
289 |
-
= V2.0.27 - 09.18.2013 =
|
290 |
-
* Fixed: Reduce performance impact of purging displayed gallery transients
|
291 |
-
|
292 |
-
= V2.0.25 - 09.18.2013 =
|
293 |
-
* Reverting to the 2.0.21 codebase, due to major performance issues in 2.0.23 and 2.0.24
|
294 |
-
|
295 |
-
= V2.0.23 - 09.16.2013 =
|
296 |
-
* NEW: WP-Cron job to periodically clean-up displayed gallery transients
|
297 |
-
* NEW: Added "excluded_container_ids" as parameter for ngg_images shortcode
|
298 |
-
* Fixed: Lightbox effect is honoured by all display types
|
299 |
-
* Fixed: Highslide displays images from the correct displayed galleries
|
300 |
-
* Fixed: Ensure that sub-albums display correctly when the word "album" is part of a slug
|
301 |
-
* Fixed: Ensure that sub-albums display correctly when numerical slugs are used
|
302 |
-
* Fixed: Related images heading only added when Related Images functionality is enabled
|
303 |
-
* Fixed: PHP Warning about undefined index when viewing basic albums
|
304 |
-
* Fixed: AJAX handling is third-party compatible
|
305 |
-
* Fixed: Image date is no longer overwritten when an image is modified
|
306 |
-
* Fixed: Fixed issue with displayed galleries using source='tags'
|
307 |
-
* Fixed: Problem with transient cache not getting flushed properly from Other Options page
|
308 |
-
* Fixed: Use correct gallery/transient ID when ajax pagination is used
|
309 |
-
|
310 |
-
= V2.0.21 - 09.09.2013 =
|
311 |
-
* NEW: Multisite support
|
312 |
-
* Changed: Default image quality set to 100 for generated images
|
313 |
-
* Changed: Removed dependence on simplehtmldom library
|
314 |
-
* Fixed: Related images functionality works as it did in 1.9.x
|
315 |
-
* Fixed: Don't compress inline JavaScript in post/page content
|
316 |
-
* Fixed: Click-to-advance slideshow behavior for slideshows
|
317 |
-
* Fixed: Security warnings from VaultPress
|
318 |
-
* Fixed: View as Slideshow link works with AJAX pagination
|
319 |
-
* Fixed: Broken links on Overview page
|
320 |
-
* Fixed: Backup images option
|
321 |
-
* Fixed: Stylesheet url generated correctly for Windows hosts
|
322 |
-
* Fixed: Compatibility with NextGen Custom Fields plugin
|
323 |
-
* Fixed: Compatibility with Adsense Explosion plugin
|
324 |
-
* Fixed: Suppress wp_footer notices unless WP_DEBUG is set to TRUE
|
325 |
-
|
326 |
-
= V2.0.17 - 08.30.2013 =
|
327 |
-
Fixed: Match legacy behaviour when changing gallery path, i.e. don't move files
|
328 |
-
|
329 |
-
= V2.0.14 - 08.27.2013 =
|
330 |
-
* NEW: Added the ability to override thumbnail settings for NextGEN Basic Albums
|
331 |
-
* NEW: Shortcode Manager API, which ensures that shortcodes are outputted as intended
|
332 |
-
* Changed: Re-added the ability to select the original image size for widgets
|
333 |
-
* Fixed: Ensure that stylesheet url returned is correct for Windows hosts
|
334 |
-
* Fixed: Broken links and lightbox effects with AJAX pagination
|
335 |
-
* Fixed: Try to ensure that third party plugins don't add content to our dynamic JS
|
336 |
-
* Fixed: Improved reliability of iframely.js
|
337 |
-
* Fixed: Ensure that urls are generated correctly in HTTPs environments
|
338 |
-
* Fixed: Datamapper works correctly in environments where temporary tables aren't supported
|
339 |
-
* Fixed: Fixed an issue with thickbox loading animation when home url differs from site url
|
340 |
-
|
341 |
-
= V2.0.11 - 08.19.2013 =
|
342 |
-
* NEW: Added "run_ngg_resource_manager" hook to by-pass our resource manager
|
343 |
-
* Changed: Removed "Reset & Uninstall" tab, for now
|
344 |
-
* Fixed: Compatibility with W3 Total Cache. Please flush cache after updating.
|
345 |
-
* Fixed: Conflicts with Photocrati Theme Galleries
|
346 |
-
* Fixed: Blank Attach to Post interface window
|
347 |
-
* Fixed: Fixed ability to change Lightbox Effect settings
|
348 |
-
* Fixed: Implemented techniques to ensure WP_Query variables aren't overwritten
|
349 |
-
* Fixed: Enqueuing AJAX JS libraries twice in wp-admin
|
350 |
-
* Fixed: Encoding issues
|
351 |
-
* Fixed: PHP warnings caused by accessing unserialized data as array
|
352 |
-
* Fixed: Fixed installer issues
|
353 |
-
|
354 |
= V2.0.7 - 08.09.2013 =
|
355 |
* NEW: New resource manager that fixes many plugin and theme incompatibilities
|
356 |
* NEW: Styles (custom stylesheets) should reside in wp-content/ngg_styles
|
@@ -656,4 +500,4 @@ Fixed: Match legacy behaviour when changing gallery path, i.e. don't move fi
|
|
656 |
== Upgrade Notice ==
|
657 |
|
658 |
= 1.5.5 =
|
659 |
-
* Compatibility issue for post thumbnails with WP2.9 and WP3.0. No Database changes...
|
1 |
=== NextGEN Gallery ===
|
2 |
Contributors: photocrati
|
3 |
Tags:gallery,image,images,photo,photos,picture,pictures,slideshow,flash,media,thumbnails,photo-albums,nextgen-gallery,nextgen
|
4 |
+
Requires at least: 3.6
|
5 |
+
Tested up to: 3.6
|
6 |
Stable tag: trunk
|
7 |
License: GPLv2
|
8 |
|
112 |
|
113 |
**<a href="http://www.nextgen-gallery.com/nextgen-gallery-shortcodes">Learn About NextGEN Gallery 2.0 Shortcodes</a>**
|
114 |
|
115 |
+
Legacy shortcodes? For reference, we're also maintaining documentation on NextGEN Legacy shortcakes used in NextGEN 1.9.x and earlier. <a href="http://www.nextgen-gallery.com/shortcodes">See more on Legacy shortcakes</a>.
|
116 |
|
117 |
For more information, feel free to visit the official website for the NextGEN Gallery <a href="http://www.nextgen-gallery.com" target="_blank">WordPress Gallery Plugin</a>.
|
118 |
|
119 |
== Frequently Asked Questions ==
|
120 |
|
121 |
|
|
|
|
|
|
|
|
|
122 |
= Do you have documentation or tutorials? =
|
123 |
|
124 |
Yes. See <a href="http://www.nextgen-gallery.com/help/" target="_blank">NextGEN Gallery Documentation</a>.
|
195 |
|
196 |
== Changelog ==
|
197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
= V2.0.7 - 08.09.2013 =
|
199 |
* NEW: New resource manager that fixes many plugin and theme incompatibilities
|
200 |
* NEW: Styles (custom stylesheets) should reside in wp-content/ngg_styles
|
500 |
== Upgrade Notice ==
|
501 |
|
502 |
= 1.5.5 =
|
503 |
+
* Compatibility issue for post thumbnails with WP2.9 and WP3.0. No Database changes...
|