Version 4.7.13

This commit is contained in:
Neo committed 2025-12-19 16:14:56 -08:00
1 parent fd22d99e69
commit 7124a02564
954 files changed
+29277 -59308

No files matched your search

-9
View File
@@ -329,15 +329,6 @@
"large image"
]
},
"app=gallery&module=gallery&controller=settings&searchResult=form_gallery_medium_dims": {
"lang_key": "gallery_medium_dims",
"restriction": "settings_manage",
"keywords": [
"image dimensions",
"image size",
"medium image size"
]
},
"app=gallery&module=gallery&controller=settings&searchResult=form_gallery_rss_enabled": {
"lang_key": "gallery_rss_enabled",
"restriction": "settings_manage",
+9 -1
View File
@@ -9,8 +9,17 @@
<setting key="gallery_detailed_bandwidth"><![CDATA[{"key":"gallery_detailed_bandwidth","default":"1","report":"full"}]]></setting>
<setting key="gallery_large_dims"><![CDATA[{"key":"gallery_large_dims","default":"1600x1200","report":"full"}]]></setting>
<setting key="gallery_maps_default"><![CDATA[{"key":"gallery_maps_default","default":"0","report":"full"}]]></setting>
<setting key="gallery_new_images_count"><![CDATA[{"key":"gallery_new_images_count","default":"16","report":"none"}]]></setting>
<setting key="gallery_nsfw"><![CDATA[{"key":"gallery_nsfw","default":"0","report":"bool"}]]></setting>
<setting key="gallery_overview_carousel_count"><![CDATA[{"key":"gallery_overview_carousel_count","default":"20","report":"full"}]]></setting>
<setting key="gallery_overview_carousel_type"><![CDATA[{"key":"gallery_overview_carousel_type","default":"featured","report":"full"}]]></setting>
<setting key="gallery_overview_show_carousel"><![CDATA[{"key":"gallery_overview_show_carousel","default":"1","report":"full"}]]></setting>
<setting key="gallery_overview_show_categories"><![CDATA[{"key":"gallery_overview_show_categories","default":"1","report":"none"}]]></setting>
<setting key="gallery_recent_updated_albums_count"><![CDATA[{"key":"gallery_recent_updated_albums_count","default":"4","report":"none"}]]></setting>
<setting key="gallery_rss_enabled"><![CDATA[{"key":"gallery_rss_enabled","default":"1","report":"full"}]]></setting>
<setting key="gallery_show_new_images"><![CDATA[{"key":"gallery_show_new_images","default":"1","report":"none"}]]></setting>
<setting key="gallery_show_recent_comments"><![CDATA[{"key":"gallery_show_recent_comments","default":"1","report":"none"}]]></setting>
<setting key="gallery_show_recent_updated_albums"><![CDATA[{"key":"gallery_show_recent_updated_albums","default":"1","report":"none"}]]></setting>
<setting key="gallery_small_dims"><![CDATA[{"key":"gallery_small_dims","default":"600x600","report":"full"}]]></setting>
<setting key="gallery_use_square_thumbnails"><![CDATA[{"key":"gallery_use_square_thumbnails","default":"0","report":"full"}]]></setting>
<setting key="gallery_use_watermarks"><![CDATA[{"key":"gallery_use_watermarks","default":"0","report":"full"}]]></setting>
@@ -63,7 +72,6 @@
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_bandwidth_period"><![CDATA[{"lang_key":"gallery_bandwidth_period","restriction":"settings_manage","keywords":["bandwidth log retention","bandwidth logs","number of hours"]}]]></acpsearch>
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_detailed_bandwidth"><![CDATA[{"lang_key":"gallery_detailed_bandwidth","restriction":"settings_manage","keywords":["bandwidth","bandwidth logs","store bandwidth logs"]}]]></acpsearch>
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_large_dims"><![CDATA[{"lang_key":"gallery_large_dims","restriction":"settings_manage","keywords":["image dimensions","image size","large image"]}]]></acpsearch>
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_medium_dims"><![CDATA[{"lang_key":"gallery_medium_dims","restriction":"settings_manage","keywords":["image dimensions","image size","medium image size"]}]]></acpsearch>
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_rss_enabled"><![CDATA[{"lang_key":"gallery_rss_enabled","restriction":"settings_manage","keywords":["gallery rss","image rss"]}]]></acpsearch>
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_small_dims"><![CDATA[{"lang_key":"gallery_small_dims","restriction":"settings_manage","keywords":["image dimensions","image size","small image dimensions","thumbnail dimensions"]}]]></acpsearch>
<acpsearch key="app=gallery&amp;module=gallery&amp;controller=settings&amp;searchResult=form_gallery_use_square_thumbnails"><![CDATA[{"lang_key":"gallery_use_square_thumbnails","restriction":"settings_manage","keywords":["square thumbnails"]}]]></acpsearch>
+45 -42
View File
@@ -1,68 +1,71 @@
{
"core": {
"MemberACPProfileContentTab": {
"Gallery": "IPS\\gallery\\extensions\\core\\MemberACPProfileContentTab\\Gallery"
"AdvertisementLocations": {
"ImageLightbox": "IPS\\gallery\\extensions\\core\\AdvertisementLocations\\ImageLightbox"
},
"ContentRouter": {
"gallery": "IPS\\gallery\\extensions\\core\\ContentRouter\\gallery"
},
"LiveSearch": {
"Categories": "IPS\\gallery\\extensions\\core\\LiveSearch\\Categories"
},
"FileStorage": {
"Images": "IPS\\gallery\\extensions\\core\\FileStorage\\Images"
},
"Sitemap": {
"Videos": "IPS\\gallery\\extensions\\core\\Sitemap\\Videos",
"Images": "IPS\\gallery\\extensions\\core\\Sitemap\\Images"
},
"GroupForm": {
"Gallery": "IPS\\gallery\\extensions\\core\\GroupForm\\Gallery"
},
"EditorLocations": {
"Gallery": "IPS\\gallery\\extensions\\core\\EditorLocations\\Gallery",
"Albums": "IPS\\gallery\\extensions\\core\\EditorLocations\\Albums",
"Categories": "IPS\\gallery\\extensions\\core\\EditorLocations\\Categories",
"Images": "IPS\\gallery\\extensions\\core\\EditorLocations\\Images"
},
"Permissions": {
"Permissions": "IPS\\gallery\\extensions\\core\\Permissions\\Permissions"
},
"CreateMenu": {
"gallery": "IPS\\gallery\\extensions\\core\\CreateMenu\\gallery"
},
"Dashboard": {
"Overview": "IPS\\gallery\\extensions\\core\\Dashboard\\Overview"
},
"EditorLocations": {
"Albums": "IPS\\gallery\\extensions\\core\\EditorLocations\\Albums",
"Categories": "IPS\\gallery\\extensions\\core\\EditorLocations\\Categories",
"Gallery": "IPS\\gallery\\extensions\\core\\EditorLocations\\Gallery",
"Images": "IPS\\gallery\\extensions\\core\\EditorLocations\\Images"
},
"EditorMedia": {
"Images": "IPS\\gallery\\extensions\\core\\EditorMedia\\Images"
},
"FileStorage": {
"Images": "IPS\\gallery\\extensions\\core\\FileStorage\\Images"
},
"FrontNavigation": {
"Gallery": "IPS\\gallery\\extensions\\core\\FrontNavigation\\Gallery"
},
"GroupForm": {
"Gallery": "IPS\\gallery\\extensions\\core\\GroupForm\\Gallery"
},
"GroupLimits": {
"Album": "IPS\\gallery\\extensions\\core\\GroupLimits\\Album"
},
"LiveSearch": {
"Categories": "IPS\\gallery\\extensions\\core\\LiveSearch\\Categories"
},
"MemberACPProfileContentTab": {
"Gallery": "IPS\\gallery\\extensions\\core\\MemberACPProfileContentTab\\Gallery"
},
"MemberFilter": {
"Album": "IPS\\gallery\\extensions\\core\\MemberFilter\\Album"
},
"MemberRestrictions": {
"Gallery": "IPS\\gallery\\extensions\\core\\MemberRestrictions\\Gallery"
},
"MemberSync": {
"Gallery": "IPS\\gallery\\extensions\\core\\MemberSync\\Gallery"
},
"Permissions": {
"Permissions": "IPS\\gallery\\extensions\\core\\Permissions\\Permissions"
},
"Profile": {
"gallery": "IPS\\gallery\\extensions\\core\\Profile\\gallery",
"galleryImages": "IPS\\gallery\\extensions\\core\\Profile\\galleryImages"
},
"EditorMedia": {
"Images": "IPS\\gallery\\extensions\\core\\EditorMedia\\Images"
},
"GroupLimits": {
"Album": "IPS\\gallery\\extensions\\core\\GroupLimits\\Album"
},
"Queue": {
"CleanUpGalleryImages": "IPS\\gallery\\extensions\\core\\Queue\\CleanUpGalleryImages",
"RebuildGalleryImages": "IPS\\gallery\\extensions\\core\\Queue\\RebuildGalleryImages",
"Follow": "IPS\\gallery\\extensions\\core\\Queue\\Follow"
"Follow": "IPS\\gallery\\extensions\\core\\Queue\\Follow",
"RebuildGalleryImages": "IPS\\gallery\\extensions\\core\\Queue\\RebuildGalleryImages"
},
"MemberFilter": {
"Album": "IPS\\gallery\\extensions\\core\\MemberFilter\\Album"
"Sitemap": {
"Images": "IPS\\gallery\\extensions\\core\\Sitemap\\Images",
"Videos": "IPS\\gallery\\extensions\\core\\Sitemap\\Videos"
},
"FrontNavigation": {
"Gallery": "IPS\\gallery\\extensions\\core\\FrontNavigation\\Gallery"
},
"MemberSync": {
"Gallery": "IPS\\gallery\\extensions\\core\\MemberSync\\Gallery"
},
"AdvertisementLocations": {
"ImageLightbox": "IPS\\gallery\\extensions\\core\\AdvertisementLocations\\ImageLightbox"
"Statistics": {
"Bandwidth": "IPS\\gallery\\extensions\\core\\Statistics\\Bandwidth"
}
}
}
+14 -15
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="gallery">
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.carousel.js" javascript_type="controller" javascript_version="107643" javascript_position="1000050"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.carousel.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -61,7 +61,7 @@
});
}());]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.list.js" javascript_type="controller" javascript_version="107643" javascript_position="1000050">/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.list.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -90,7 +90,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="107643" javascript_position="1000100">;( function($, _, undefined){
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="107712" javascript_position="1000100">;( function($, _, undefined){
&quot;use strict&quot;;
ips.controller.register('gallery.front.global.nsfw', {
@@ -112,7 +112,7 @@
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="107643" javascript_position="1000050">/**
<file javascript_app="gallery" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="107712" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -169,7 +169,7 @@
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="107643" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="107712" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -369,7 +369,7 @@
});
}(jQuery, _));
]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="107643" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="107712" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -416,7 +416,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="107643" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="107712" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -547,7 +547,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="107643" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="107712" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1311,7 +1311,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="107643" javascript_position="1000200">/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="107712" javascript_position="1000200">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1453,7 +1453,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="107643" javascript_position="1000200"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="107712" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1911,7 +1911,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="107643" javascript_position="1000200"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="107712" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1994,8 +1994,8 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="107643" javascript_position="1000250">// Empty</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="107643" javascript_position="1000250"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="107712" javascript_position="1000250">// Empty</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="107712" javascript_position="1000250"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
<div class='ipsAttach ipsImageAttach ipsPad_half ipsAreaBackground_light {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-isImage='1'>\
<ul class='ipsList_inline ipsImageAttach_controls'>\
<li data-role='insert' {{#insertable}}style='display: none'{{/insertable}}><a href='#' data-action='insertFile' class='ipsAttach_selection' data-ipsTooltip title='{{#lang}}insertIntoPost{{/lang}}'><i class='fa fa-plus'></i></a></li>\
@@ -2022,7 +2022,7 @@
ips.templates.set('gallery.submit.imageItemWrapper', " \
<div class='cGallerySubmit_fileList'>{{{content}}}</div>\
");]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="107643" javascript_position="1000250"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="107712" javascript_position="1000250"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
<div class='cGalleryNote' data-controller='gallery.front.view.note' data-noteID='{{id}}' data-note=\"{{note}}\" {{#editable}}data-editable{{/editable}} data-posLeft='{{left}}' data-posTop='{{top}}' data-dimWidth='{{width}}' data-dimHeight='{{height}}'>\
<div class='cGalleryNote_border'></div>\
<div class='cGalleryNote_note' style='display: none'>\
@@ -2051,7 +2051,6 @@ controllers</order>
<order app="global" path="/dev/js//library/">underscore
jquery
mustache
IntersectionObserver
Debug.js
app.js</order>
<order app="global" path="/dev/js//library//jquery">jquery.js
+18 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="gallery" version="107643">
<app key="gallery" version="107712">
<word key="__app_gallery" js="0">Gallery</word>
<word key="frontnavigation_gallery" js="0">Gallery</word>
<word key="gallery_title" js="0">Gallery</word>
@@ -849,6 +849,23 @@
<word key="gallery_recently_commented_images" js="0">Recently Commented Images</word>
<word key="gallery_view_all_categories" js="0">View all categories</word>
<word key="gallery_recently_updated_albums" js="0">Recently Updated Albums</word>
<word key="gallery_overview_settings" js="0">Overview</word>
<word key="gallery_featured_images" js="0">Featured Images Carousel</word>
<word key="gallery_overview_show_carousel" js="0">Show carousel?</word>
<word key="gallery_overview_carousel_type" js="0">Show</word>
<word key="gallery_overview_carousel_featured" js="0">Featured images</word>
<word key="gallery_overview_carousel_new" js="0">New images</word>
<word key="gallery_overview_carousel_count" js="0">Number of images to show</word>
<word key="gallery_overview_recent_comments" js="0">Recent Comments</word>
<word key="gallery_show_recent_comments" js="0">Show recent comments?</word>
<word key="gallery_overview_categories" js="0">Categories</word>
<word key="gallery_overview_show_categories" js="0">Show categories?</word>
<word key="gallery_overview_recent_updated_albums" js="0">Recently Updated Albums</word>
<word key="gallery_show_recent_updated_albums" js="0">Show recently updated albums?</word>
<word key="gallery_recent_updated_albums_count" js="0">Number of recently updated albums to show</word>
<word key="gallery_overview_new_images" js="0">New Images</word>
<word key="gallery_show_new_images" js="0">Show new images?</word>
<word key="gallery_new_images_count" js="0">Number of new images to show</word>
<word key="gallery_nsfw" js="0">Enable NSFW?</word>
<word key="gallery_nsfw_desc" js="0">Images can be set as not safe for work (NSFW) and will appear blurred unless the member opts in to viewing them.</word>
<word key="gallery_image_is_nsfw" js="0">This image is NSFW</word>
+37 -31
View File
@@ -587,6 +587,18 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"album_views": {
"name": "album_views",
"type": "BIGINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
@@ -1413,18 +1425,16 @@
"zerofill": false
},
"comment_text": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
"length": 0,
"name": "comment_text",
"type": "TEXT",
"unsigned": false,
"type": "MEDIUMTEXT",
"length": 0,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"comment_approved": {
"allow_null": false,
@@ -1692,18 +1702,16 @@
"zerofill": false
},
"image_file_size": {
"allow_null": false,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": "0",
"length": 10,
"name": "image_file_size",
"type": "INT",
"unsigned": false,
"type": "BIGINT",
"length": 20,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"image_file_type": {
"allow_null": true,
@@ -2242,7 +2250,7 @@
"decimals": null,
"values": null,
"allow_null": false,
"default": "",
"default": 0,
"comment": "",
"unsigned": true,
"auto_increment": false
@@ -3039,18 +3047,16 @@
"zerofill": false
},
"comment_text": {
"allow_null": true,
"auto_increment": false,
"binary": false,
"comment": "",
"decimals": null,
"default": null,
"length": 0,
"name": "comment_text",
"type": "TEXT",
"unsigned": false,
"type": "MEDIUMTEXT",
"length": 0,
"decimals": null,
"values": [],
"zerofill": false
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"comment_approved": {
"allow_null": false,
+45
View File
@@ -19,16 +19,61 @@
"default": "0",
"report": "full"
},
{
"key": "gallery_new_images_count",
"default": "16",
"report": "none"
},
{
"key": "gallery_nsfw",
"default": "0",
"report": "bool"
},
{
"key": "gallery_overview_carousel_count",
"default": "20",
"report": "full"
},
{
"key": "gallery_overview_carousel_type",
"default": "featured",
"report": "full"
},
{
"key": "gallery_overview_show_carousel",
"default": "1",
"report": "full"
},
{
"key": "gallery_overview_show_categories",
"default": "1",
"report": "none"
},
{
"key": "gallery_recent_updated_albums_count",
"default": "4",
"report": "none"
},
{
"key": "gallery_rss_enabled",
"default": "1",
"report": "full"
},
{
"key": "gallery_show_new_images",
"default": "1",
"report": "none"
},
{
"key": "gallery_show_recent_comments",
"default": "1",
"report": "none"
},
{
"key": "gallery_show_recent_updated_albums",
"default": "1",
"report": "none"
},
{
"key": "gallery_small_dims",
"default": "600x600",
+149 -128
View File
@@ -85,6 +85,16 @@
{{endif}}
{{if $album->use_reviews && $album->reviews > 0}}
<li><i class='fa fa-comment'></i> {lang="gallery_album_num_reviews_lc" pluralize="$album->reviews"}</li>
{{endif}}
{{if $album->views > -1}}
<li id='elAlbumViews'>
{{if \IPS\Application::appIsEnabled('cloud') and \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
{{$url = "app=cloud&module=analytics&controller=analytics&contentClass=\IPS\gallery\Album\Item&contentId=" . $album->id;}}
<i class='fa fa-eye'></i> <a href='{url="$url"}' data-ipsDialog data-ipsDialog-title='{lang="analytics"}' data-ipsTooltip title='{lang="analytics"}'>{lang="num_views_with_number" pluralize="$album->views"}</a>
{{else}}
<i class='fa fa-eye'></i> {lang="num_views_with_number" pluralize="$album->views"}
{{endif}}
</li>
{{endif}}
</ul>
@@ -143,6 +153,10 @@
{{if $album->asItem()->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$album->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a data-ipsDialog data-ipsDialogTitle="{lang="moderation_log"}" href='{$album->url()->setQueryString( array( 'do' => 'modLog' ) )}'>{lang="moderation_log"}</a></li>
{{endif}}
</ul>
</li>
{{elseif $album->asItem()->canReportOrRevoke() === TRUE}}
@@ -505,6 +519,9 @@
{{endif}}
<hr class='ipsHr ipsResponsive_hidePhone'>
<div class='ipsPos_right ipsResponsive_noFloat ipsResponsive_hidePhone'>
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="analyticsButton" app="cloud" group="analytics" params="$category, $category->id"}
{{endif}}
{{$followerCount = \IPS\gallery\Image::containerFollowerCount( $category );}}
{template="follow" app="core" group="global" params="'gallery', 'category', $category->_id, $followerCount"}
</div>
@@ -850,141 +867,143 @@
{{endif}}
</div>
{{if !empty( $featured )}}
{{if !empty( $featured ) or !empty($recentComments)}}
<div class='ipsColumns ipsColumns_collapseTablet ipsMargin_bottom ipsColumns--gallery-featured-carousel'{{if settings.gallery_nsfw}} data-controller="gallery.front.global.nsfw"{{endif}}>
<div class='ipsColumn ipsColumn_fluid'>
<div class='ipsPos_relative'>
<h2 class='ipsHide'>{lang="featured_images"}</h2>
<ol class='cGalleryCarousel cGalleryCarousel--wallpaper cGalleryCarousel--pull' id='gallery-carousel'>
{{foreach $featured as $image}}
<li class='cGalleryCarousel__item'>
<div class='ipsImageBlock ipsImageBlock--contain'>
<a href="{$image->url()->setQueryString( 'context', 'featured' )}" class='ipsImageBlock__main'>
{{if $image->media }}
<video loading="lazy"{{if $image->masked_file_name }} poster="{file="$image->masked_file_name" extension="gallery_Images"}"{{else}} preload="metadata"{{endif}}>
<source src="{file="$image->original_file_name" extension="gallery_Images"}{{if !$image->masked_file_name }}#t=1{{endif}}" type='{$image->file_type}' />
</video>
<div class='ipsImageBlock__video-icon'></div>
{{else}}
<img src='{file="$image->masked_file_name" extension="gallery_Images"}' alt="{$image->caption}" loading="lazy" />
{{endif}}
</a>
<div class='ipsImageBlock__header'>
{{if $image->hidden() === -1 || $image->hidden() === 1 || $image->mapped('pinned') || $image->mapped('featured')}}
<div>
{{if $image->hidden() === -1}}
<span class="ipsBadge ipsBadge_warning" data-ipsTooltip title='{$image->hiddenBlurb()}'><i class='fa fa-eye-slash'></i> {lang="hidden"}</span>
{{elseif $image->hidden() === 1}}
<span class="ipsBadge ipsBadge_warning"><i class='fa fa-warning'></i> {lang="pending_approval"}</span>
{{endif}}
{{if $image->mapped('featured')}}
<span class="ipsBadge ipsBadge_positive"><i class='fa fa-star'></i> {lang="featured"}</span>
{{endif}}
</div>
{{endif}}
</div>
<div class='ipsImageBlock__footer'>
<div class='ipsImageBlock__title'>
{{if $image->unread()}}
<span class='ipsItemStatus ipsItemStatus_small' data-ipsTooltip title='{{if $image->unread() === -1}}{lang="new"}{{else}}{lang="updated"}{{endif}}'><i class='fa fa-circle'></i></span>
{{if !empty( $featured )}}
<div class='ipsColumn ipsColumn_fluid'>
<div class='ipsPos_relative'>
<h2 class='ipsHide'>{lang="featured_images"}</h2>
<ol class='cGalleryCarousel cGalleryCarousel--wallpaper cGalleryCarousel--pull' id='gallery-carousel'>
{{foreach $featured as $image}}
<li class='cGalleryCarousel__item'>
<div class='ipsImageBlock ipsImageBlock--contain'>
<a href="{$image->url()->setQueryString( 'context', 'featured' )}" class='ipsImageBlock__main'>
{{if $image->media }}
<video loading="lazy"{{if $image->masked_file_name }} poster="{file="$image->masked_file_name" extension="gallery_Images"}"{{else}} preload="metadata"{{endif}}>
<source src="{file="$image->original_file_name" extension="gallery_Images"}{{if !$image->masked_file_name }}#t=1{{endif}}" type='{$image->file_type}' />
</video>
<div class='ipsImageBlock__video-icon'></div>
{{else}}
<img src='{file="$image->masked_file_name" extension="gallery_Images"}' alt="{$image->caption}" loading="lazy" />
{{endif}}
<a href="{$image->url()->setQueryString( 'context', 'featured' )}" tabindex='-1'>{$image->caption}</a>
</div>
<div>
{lang="byline_nodate_itemprop" htmlsprintf="$image->author()->link( $image->warningRef() )"}
</div>
</div>
{template="nsfwOverlay" app="gallery" location="front" group="global" params="$image"}
</div>
</li>
{{endforeach}}
</ol>
{{if \count( $featured ) > 1}}
<div class='cGalleryCarouselNav cGalleryCarouselNav--overlay' data-carousel-controls='gallery-carousel' data-controller="gallery.front.browse.carousel">
<button class='cGalleryCarouselNav__button' data-carousel-arrow='prev' aria-label='Previous' role='button'>
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="10"><path d="M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"/></svg>
</button>
<button class='cGalleryCarouselNav__button' data-carousel-arrow='next' aria-label='Next' role='button'>
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="10"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg>
</button>
</div>
{{endif}}
</div>
</div>
{{if \count( $recentComments )}}
<div class='ipsColumn ipsColumn_veryWide'>
<div class='ipsBox ipsWidget ipsWidget--gallery-comments ipsResponsive_pull ipsFlex ipsFlex-fd:column'>
<h2 class='ipsType_reset ipsWidget_title ipsFlex-flex:00 ipsFlex ipsFlex-ai:center ipsFlex-jc:between ipsFlex-fw:wrap'>
<span>{lang="gallery_recently_commented_images"}</span>
</h2>
<div class='ipsWidget_inner ipsPos_relative ipsFlex-flex:11'>
<div class='cGalleryLatestComments'>
<ul>
{{foreach $recentComments as $image}}
{{$lastComment = $image->comments( 1, 0, 'date', 'desc', NULL, TRUE );}}
<li class='cGalleryLatestComments__item'>
<div class='cGalleryLatestComments__thumb'>
<div class='ipsImageBlock'>
<a href="{$image->url()->setQueryString( 'context', 'new' )}" class='ipsImageBlock__main' data-ipsToolTip title="{$image->caption}">
{{if $image->media }}
<video loading="lazy"{{if $image->masked_file_name }} poster="{file="$image->masked_file_name" extension="gallery_Images"}" preload="metadata"{{endif}}>
<source src="{file="$image->original_file_name" extension="gallery_Images"}{{if !$image->masked_file_name }}#t=1{{endif}}" type='{$image->file_type}' />
</video>
<div class='ipsImageBlock__video-icon'></div>
{{else}}
<img src='{file="$image->small_file_name" extension="gallery_Images"}' alt="{$image->caption}" loading="lazy" />
{{endif}}
</a>
{template="nsfwOverlay" app="gallery" location="front" group="global" params="$image, FALSE"}
</div>
</div>
<div class='cGalleryLatestComments__text'>
<a href="{$image->url()->setQueryString( 'context', 'new' )}">
<div class='ipsType_richText'>
{$lastComment->truncated(TRUE)|raw}
</div>
</a>
<div class='ipsType_blendLinks ipsType_light ipsType_small'>
{$image->lastCommenter()->link()|raw}
&middot; <a href='{$image->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>{datetime="$image->mapped('last_comment')"}</a>
</div>
</div>
</li>
{{endforeach}}
</ul>
</div>
<div class='ipsImageBlock__header'>
{{if $image->hidden() === -1 || $image->hidden() === 1 || $image->mapped('pinned') || $image->mapped('featured')}}
<div>
{{if $image->hidden() === -1}}
<span class="ipsBadge ipsBadge_warning" data-ipsTooltip title='{$image->hiddenBlurb()}'><i class='fa fa-eye-slash'></i> {lang="hidden"}</span>
{{elseif $image->hidden() === 1}}
<span class="ipsBadge ipsBadge_warning"><i class='fa fa-warning'></i> {lang="pending_approval"}</span>
{{endif}}
{{if $image->mapped('featured')}}
<span class="ipsBadge ipsBadge_positive"><i class='fa fa-star'></i> {lang="featured"}</span>
{{endif}}
</div>
{{endif}}
</div>
<div class='ipsImageBlock__footer'>
<div class='ipsImageBlock__title'>
{{if $image->unread()}}
<span class='ipsItemStatus ipsItemStatus_small' data-ipsTooltip title='{{if $image->unread() === -1}}{lang="new"}{{else}}{lang="updated"}{{endif}}'><i class='fa fa-circle'></i></span>
{{endif}}
<a href="{$image->url()->setQueryString( 'context', 'featured' )}" tabindex='-1'>{$image->caption}</a>
</div>
<div>
{lang="byline_nodate_itemprop" htmlsprintf="$image->author()->link( $image->warningRef() )"}
</div>
</div>
{template="nsfwOverlay" app="gallery" location="front" group="global" params="$image"}
</div>
</li>
{{endforeach}}
</ol>
{{if \count( $featured ) > 1}}
<div class='cGalleryCarouselNav cGalleryCarouselNav--overlay' data-carousel-controls='gallery-carousel' data-controller="gallery.front.browse.carousel">
<button class='cGalleryCarouselNav__button' data-carousel-arrow='prev' aria-label='Previous' role='button'>
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="10"><path d="M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"/></svg>
</button>
<button class='cGalleryCarouselNav__button' data-carousel-arrow='next' aria-label='Next' role='button'>
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" width="10"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg>
</button>
</div>
{{endif}}
</div>
</div>
{{endif}}
{{if \count( $recentComments )}}
<div class='ipsColumn ipsColumn_veryWide'>
<div class='ipsBox ipsWidget{{if \count( $featured )}} ipsWidget--gallery-comments {{endif}}ipsResponsive_pull ipsFlex ipsFlex-fd:column'>
<h2 class='ipsType_reset ipsWidget_title ipsFlex-flex:00 ipsFlex ipsFlex-ai:center ipsFlex-jc:between ipsFlex-fw:wrap'>
<span>{lang="gallery_recently_commented_images"}</span>
</h2>
<div class='ipsWidget_inner ipsPos_relative ipsFlex-flex:11'>
<div {{if \count( $featured )}} class='cGalleryLatestComments'{{endif}}>
<ul>
{{foreach $recentComments as $image}}
{{$lastComment = $image->comments( 1, 0, 'date', 'desc', NULL, TRUE );}}
<li class='cGalleryLatestComments__item'>
<div class='cGalleryLatestComments__thumb'>
<div class='ipsImageBlock'>
<a href="{$image->url()->setQueryString( 'context', 'new' )}" class='ipsImageBlock__main' data-ipsToolTip title="{$image->caption}">
{{if $image->media }}
<video loading="lazy"{{if $image->masked_file_name }} poster="{file="$image->masked_file_name" extension="gallery_Images"}" preload="metadata"{{endif}}>
<source src="{file="$image->original_file_name" extension="gallery_Images"}{{if !$image->masked_file_name }}#t=1{{endif}}" type='{$image->file_type}' />
</video>
<div class='ipsImageBlock__video-icon'></div>
{{else}}
<img src='{file="$image->small_file_name" extension="gallery_Images"}' alt="{$image->caption}" loading="lazy" />
{{endif}}
</a>
{template="nsfwOverlay" app="gallery" location="front" group="global" params="$image, FALSE"}
</div>
</div>
<div class='cGalleryLatestComments__text'>
<a href="{$image->url()->setQueryString( 'context', 'new' )}">
<div class='ipsType_richText'>
{$lastComment->truncated(TRUE)|raw}
</div>
</a>
<div class='ipsType_blendLinks ipsType_light ipsType_small'>
{$image->lastCommenter()->link()|raw}
&middot; <a href='{$image->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>{datetime="$image->mapped('last_comment')"}</a>
</div>
</div>
</li>
{{endforeach}}
</ul>
</div>
</div>
</div>
</div>
</div>
{{endif}}
</div>
{{endif}}
{{$clubNodes = settings.club_nodes_in_apps ? \IPS\gallery\Category::clubNodes() : array();}}
{{if $rootCategories = \IPS\gallery\Category::roots()}}
<div class="ipsBox ipsResponsive_pull ipsSpacer_bottom">
<h2 class='ipsType_sectionTitle ipsFlex ipsFlex-ai:center ipsFlex-jc:between ipsFlex-fw:wrap'>
<span class='ipsType_reset'>{{if $clubNodes}}{lang="community_image_categories"}{{else}}{lang="gallery_categories"}{{endif}}</span>
<span class='ipsType_small ipsType_light ipsType_blendLinks ipsType_semiBold'>
<a href='{url="app=gallery&module=gallery&controller=browse&do=categories" seoTemplate="gallery_categories"}'>{lang="gallery_view_all_categories"}</a>
</span>
</h2>
<div class="ipsPadding">
{template="categoryGrid" group="browse" app="gallery" params="$rootCategories"}
</div>
</div>
{{endif}}
{{if settings.gallery_overview_show_categories}}
{{$clubNodes = settings.club_nodes_in_apps ? \IPS\gallery\Category::clubNodes() : array();}}
{{if $rootCategories = \IPS\gallery\Category::roots()}}
<div class="ipsBox ipsResponsive_pull ipsSpacer_bottom">
<h2 class='ipsType_sectionTitle ipsFlex ipsFlex-ai:center ipsFlex-jc:between ipsFlex-fw:wrap'>
<span class='ipsType_reset'>{{if $clubNodes}}{lang="community_image_categories"}{{else}}{lang="gallery_categories"}{{endif}}</span>
<span class='ipsType_small ipsType_light ipsType_blendLinks ipsType_semiBold'>
<a href='{url="app=gallery&module=gallery&controller=browse&do=categories" seoTemplate="gallery_categories"}'>{lang="gallery_view_all_categories"}</a>
</span>
</h2>
<div class="ipsPadding">
{template="categoryGrid" group="browse" app="gallery" params="$rootCategories"}
</div>
</div>
{{endif}}
{{if settings.club_nodes_in_apps and $clubNodes = \IPS\gallery\Category::clubNodes()}}
<div class="ipsBox ipsResponsive_pull ipsSpacer_bottom">
{{if $rootCategories}}<h2 class="ipsType_sectionTitle">{lang="club_node_gallery"}</h2>{{endif}}
<div class="ipsPadding">
{template="categoryGrid" group="browse" app="gallery" params="$clubNodes"}
</div>
</div>
{{if settings.club_nodes_in_apps and $clubNodes = \IPS\gallery\Category::clubNodes()}}
<div class="ipsBox ipsResponsive_pull ipsSpacer_bottom">
{{if $rootCategories}}<h2 class="ipsType_sectionTitle">{lang="club_node_gallery"}</h2>{{endif}}
<div class="ipsPadding">
{template="categoryGrid" group="browse" app="gallery" params="$clubNodes"}
</div>
</div>
{{endif}}
{{endif}}
{{if \count( $recentlyUpdatedAlbums )}}
<div class='ipsBox ipsResponsive_pull ipsSpacer_bottom' {{if settings.gallery_nsfw}}data-controller="gallery.front.global.nsfw"{{endif}}>
<h2 class='ipsType_reset ipsType_sectionTitle ipsFlex ipsFlex-ai:center ipsFlex-jc:between ipsFlex-fw:wrap'>
@@ -3805,6 +3824,7 @@
{{if \count( $image->shareLinks() )}}
{template="shareButton" app="core" group="sharelinks" params="$image"}
{{endif}}
{template="analyticsItemLink" app="core" group="system" params="$image"}
{template="promote" app="core" group="global" params="$image"}
{template="follow" app="core" group="global" params="'gallery', 'image', $image->id, $image->followersCount()"}
</div>
@@ -3906,10 +3926,10 @@
{{if $image->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$image->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a href='{$image->url()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a data-ipsDialog data-ipsDialogTitle="{lang="moderation_log"}" href='{$image->url()->setQueryString( array( 'do' => 'modLog' ) )}'>{lang="moderation_log"}</a></li>
{{endif}}
{{endif}}
</ul>
</li>
@@ -4060,6 +4080,7 @@
{{if \count( $image->shareLinks() )}}
{template="shareButton" app="core" group="sharelinks" params="$image, 'verySmall', 'light'"}
{{endif}}
{template="analyticsItemLink" app="core" group="system" params="$image"}
{template="promote" app="core" group="global" params="$image"}
{template="follow" app="core" group="global" params="'gallery', 'image', $image->id, $image->followersCount()"}
</div>
+31 -1
View File
@@ -548,5 +548,35 @@
"107640": "4.7.8 Beta 1",
"107641": "4.7.8 Beta 2",
"107642": "4.7.8 Beta 3",
"107643": "4.7.8"
"107643": "4.7.8",
"107644": "4.7.8",
"107645": "4.7.8",
"107660": "4.7.9 Beta 1",
"107661": "4.7.9 Beta 2",
"107662": "4.7.9 Beta 3",
"107663": "4.7.9",
"107664": "4.7.9",
"107665": "4.7.9",
"107666": "4.7.9",
"107667": "4.7.9",
"107668": "4.7.9",
"107680": "4.7.10 Beta 1",
"107681": "4.7.10 Beta 2",
"107682": "4.7.10",
"107683": "4.7.10",
"107684": "4.7.10",
"107690": "4.7.11 Beta 1",
"107691": "4.7.11 Beta 2",
"107692": "4.7.11",
"107693": "4.7.11",
"107694": "4.7.11",
"107695": "4.7.11.1",
"107700": "4.7.12 Beta 1",
"107701": "4.7.12 Beta 2",
"107702": "4.7.12 Beta 3",
"107703": "4.7.12 Beta 4",
"107704": "4.7.12",
"107710": "4.7.13 Beta 1",
"107711": "4.7.13 Beta 2",
"107712": "4.7.13"
}
@@ -36,12 +36,25 @@ class _Images
$where = array(
array( "image_member_id=? AND image_approved=?", $member->member_id, 1 ),
);
if ( $search )
{
$where[] = array( "image_caption LIKE ( CONCAT( '%', ?, '%' ) )", $search );
$albumIds = [];
foreach( \IPS\Db::i()->select( 'album_id', 'gallery_albums', array( "album_owner_id=? AND album_name LIKE ( CONCAT( '%', ?, '%' ) )", $member->member_id, $search ), NULL, 250 ) as $album )
{
$albumIds[] = $album;
}
if ( count( $albumIds ) )
{
$where[] = array( "( image_caption LIKE ( CONCAT( '%', ?, '%' ) ) OR ( " . \IPS\Db::i()->in( 'image_album_id', $albumIds ) . " ) )", $search );
}
else
{
$where[] = array( "image_caption LIKE ( CONCAT( '%', ?, '%' ) )", $search );
}
}
return \IPS\Db::i()->select( 'COUNT(*)', 'gallery_images', $where )->first();
}
@@ -60,17 +73,31 @@ class _Images
$where = array(
array( "image_member_id=? AND image_approved=?", $member->member_id, 1 ),
);
if ( $search )
{
$where[] = array( "image_caption LIKE ( CONCAT( '%', ?, '%' ) )", $search );
$albumIds = [];
foreach( \IPS\Db::i()->select( 'album_id', 'gallery_albums', array( "album_owner_id=? AND album_name LIKE ( CONCAT( '%', ?, '%' ) )", $member->member_id, $search ), NULL, 250 ) as $album )
{
$albumIds[] = $album;
}
if ( count( $albumIds ) )
{
$where[] = array( "( image_caption LIKE ( CONCAT( '%', ?, '%' ) ) OR ( " . \IPS\Db::i()->in( 'image_album_id', $albumIds ) . " ) )", $search );
}
else
{
$where[] = array( "image_caption LIKE ( CONCAT( '%', ?, '%' ) )", $search );
}
}
$return = array();
foreach ( \IPS\Db::i()->select( '*', 'gallery_images', $where, 'image_date DESC', array( ( $page - 1 ) * $limit, $limit ) ) as $row )
{
$image = \IPS\gallery\Image::load( $row['image_id'] );
$obj = \IPS\File::get( 'gallery_Images', $image->masked_file_name );
$fileName = $image->masked_file_name ?: $image->original_file_name;
$obj = \IPS\File::get( 'gallery_Images', $fileName );
$obj->contextInfo = $image->caption;
$return[ (string) $image->url() ] = $obj;
}
@@ -0,0 +1,94 @@
<?php
/**
* @brief Statistics Chart Extension
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @subpackage Gallery
* @since 26 Jan 2023
*/
namespace IPS\gallery\extensions\core\Statistics;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Statistics Chart Extension
*/
class _Bandwidth extends \IPS\core\Statistics\Chart
{
/**
* @brief Controller
*/
public $controller = 'gallery_stats_bandwidth';
/**
* Render Chart
*
* @param \IPS\Http\Url $url URL the chart is being shown on.
* @return \IPS\Helpers\Chart
*/
public function getChart( \IPS\Http\Url $url ): \IPS\Helpers\Chart
{
$chart = new \IPS\Helpers\Chart\Database( \IPS\Http\Url::internal( "app=gallery&module=stats&controller=bandwidth" ), 'gallery_bandwidth', 'bdate', '', array(
'backgroundColor' => '#ffffff',
'colors' => array( '#10967e' ),
'hAxis' => array( 'gridlines' => array( 'color' => '#f5f5f5' ) ),
'lineWidth' => 1,
'areaOpacity' => 0.4,
'chartArea' => array( 'left' => 120, 'width' => '75%' ),
'vAxis' => array(
'title' => \IPS\Member::loggedIn()->language()->addToStack( 'filesize_raw_k' )
)
), 'AreaChart', 'daily', array( 'start' => 0, 'end' => 0 ), array( 'member_id', 'image_id', 'bdate', 'bsize' ) );
$chart->setExtension( $this );
$chart->addSeries( \IPS\Member::loggedIn()->language()->addToStack('bandwidth'), 'number', 'ROUND((SUM(bsize)/1024),2)', FALSE );
$chart->tableParsers = array(
'member_id' => function( $val )
{
$member = \IPS\Member::load( $val );
if( $member->member_id )
{
$url = \IPS\Http\Url::internal( "app=gallery&module=stats&controller=member&do=images&id={$member->member_id}" );
return \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->basicUrl( $url, FALSE, $member->name );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack('deleted_member');
}
},
'image_id' => function( $val )
{
try
{
$image = \IPS\gallery\Image::load( $val );
return \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->basicUrl( $image->url(), TRUE, $image->caption );
}
catch ( \OutOfRangeException $e )
{
return \IPS\Member::loggedIn()->language()->addToStack('deleted_image');
}
},
'bdate' => function( $val )
{
return (string) \IPS\DateTime::ts( $val );
},
'bsize' => function( $val )
{
return \IPS\Output\Plugin\Filesize::humanReadableFilesize( $val );
}
);
$chart->availableTypes = array( 'AreaChart', 'ColumnChart', 'BarChart' );
return $chart;
}
}
@@ -45,6 +45,27 @@ class _settings extends \IPS\Dispatcher\Controller
* @return void
*/
protected function manage()
{
$form = $this->_getForm();
if ( $values = $form->values() )
{
$this->_saveSettingsForm( $form, $values );
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=gallery&module=gallery&controller=settings' ), 'saved' );
}
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('settings');
\IPS\Output::i()->output = $form;
}
/**
* Build and return the settings form
*
* @note Abstracted to allow third party devs to extend easier
* @return \IPS\Helpers\Form
*/
protected function _getForm()
{
$form = new \IPS\Helpers\Form;
@@ -52,6 +73,7 @@ class _settings extends \IPS\Dispatcher\Controller
$form->attributes['data-controller'] = 'gallery.admin.settings.settings';
$form->hiddenValues['rebuildWatermarkScreenshots'] = \IPS\Request::i()->rebuildWatermarkScreenshots ?: 0;
$form->addTab( 'basic_settings' );
$form->addHeader( 'gallery_images' );
$form->addMessage( \IPS\Member::loggedIn()->language()->addToStack('gallery_dims_explanation'), '', FALSE );
$large = ( isset( \IPS\Settings::i()->gallery_large_dims ) ) ? explode( 'x', \IPS\Settings::i()->gallery_large_dims ) : array( 1600, 1200 );
@@ -88,32 +110,70 @@ class _settings extends \IPS\Dispatcher\Controller
$form->add( new \IPS\Helpers\Form\YesNo( 'gallery_nsfw', \IPS\Settings::i()->gallery_nsfw ) );
$form->addTab( 'gallery_overview_settings' );
$form->addHeader( 'gallery_featured_images' );
$form->add( new \IPS\Helpers\Form\YesNo( 'gallery_overview_show_carousel', \IPS\Settings::i()->gallery_overview_show_carousel, FALSE, array( 'togglesOn' => array( 'gallery_overview_carousel_count', 'gallery_overview_carousel_type' ) ) ) );
$options = array(
'featured' => 'gallery_overview_carousel_featured',
'new' => 'gallery_overview_carousel_new'
);
$form->add( new \IPS\Helpers\Form\Radio( 'gallery_overview_carousel_type', \IPS\Settings::i()->gallery_overview_carousel_type, TRUE, array( 'options' => $options ), NULL, NULL, NULL, 'gallery_overview_carousel_type' ) );
$form->add( new \IPS\Helpers\Form\Number( 'gallery_overview_carousel_count', \IPS\Settings::i()->gallery_overview_carousel_count, FALSE, array(), NULL, NULL, NULL, 'gallery_overview_carousel_count' ) );
if ( $values = $form->values() )
$form->addHeader( 'gallery_overview_recent_comments' );
$form->add( new \IPS\Helpers\Form\YesNo( 'gallery_show_recent_comments', \IPS\Settings::i()->gallery_show_recent_comments, FALSE, array() ) );
$form->addHeader('gallery_overview_categories');
$form->add( new \IPS\Helpers\Form\YesNo( 'gallery_overview_show_categories', \IPS\Settings::i()->gallery_overview_show_categories, FALSE, array() ) );
$form->addHeader( 'gallery_overview_recent_updated_albums' );
$form->add( new \IPS\Helpers\Form\YesNo( 'gallery_show_recent_updated_albums', \IPS\Settings::i()->gallery_show_recent_updated_albums, FALSE, array( 'togglesOn' => array( 'gallery_recent_updated_albums_count' ) ) ) );
$form->add( new \IPS\Helpers\Form\Number( 'gallery_recent_updated_albums_count', \IPS\Settings::i()->gallery_recent_updated_albums_count, FALSE, array(), NULL, NULL, NULL, 'gallery_recent_updated_albums_count' ) );
$form->addHeader( 'gallery_overview_new_images' );
$form->add( new \IPS\Helpers\Form\YesNo( 'gallery_show_new_images', \IPS\Settings::i()->gallery_show_new_images, FALSE, array( 'togglesOn' => array( 'gallery_new_images_count' ) ) ) );
$form->add( new \IPS\Helpers\Form\Number( 'gallery_new_images_count', \IPS\Settings::i()->gallery_new_images_count, FALSE, array(), NULL, NULL, NULL, 'gallery_new_images_count' ) );
return $form;
}
/**
* Save the settings form
*
* @param \IPS\Helpers\Form $form The Form Object
* @param array $values Values
*/
protected function _saveSettingsForm( \IPS\Helpers\Form $form, array $values )
{
$form->saveAsSettings( array(
'gallery_large_dims' => implode( 'x', $values['gallery_large_dims'] ),
'gallery_small_dims' => implode( 'x', $values['gallery_small_dims'] ),
'gallery_use_square_thumbnails' => $values['gallery_use_square_thumbnails'],
'gallery_watermark_path' => (string) $values['gallery_watermark_path'],
'gallery_detailed_bandwidth' => $values['gallery_detailed_bandwidth'],
'gallery_bandwidth_period' => $values['gallery_bandwidth_period'],
'gallery_rss_enabled' => $values['gallery_rss_enabled'],
'gallery_watermark_images' => implode( ',', $values['gallery_watermark_images'] ),
'gallery_use_watermarks' => $values['gallery_use_watermarks'],
'gallery_maps_default' => $values['gallery_maps_default'] ?? 0,
'gallery_nsfw' => $values['gallery_nsfw'],
'gallery_overview_show_carousel' => $values['gallery_overview_show_carousel'],
'gallery_overview_carousel_type' => $values['gallery_overview_carousel_type'],
'gallery_overview_carousel_count' => $values['gallery_overview_carousel_count'],
'gallery_show_recent_comments' => $values['gallery_show_recent_comments'],
'gallery_overview_show_categories' => $values['gallery_overview_show_categories'],
'gallery_show_recent_updated_albums' => $values['gallery_show_recent_updated_albums'],
'gallery_recent_updated_albums_count' => $values['gallery_recent_updated_albums_count'],
'gallery_show_new_images' => $values['gallery_show_new_images'],
'gallery_new_images_count' => $values['gallery_new_images_count'],
) );
\IPS\Session::i()->log( 'acplogs__gallery_settings' );
if( $values['rebuildWatermarkScreenshots'] )
{
$form->saveAsSettings( array(
'gallery_large_dims' => implode( 'x', $values['gallery_large_dims'] ),
'gallery_small_dims' => implode( 'x', $values['gallery_small_dims'] ),
'gallery_use_square_thumbnails' => $values['gallery_use_square_thumbnails'],
'gallery_watermark_path' => (string) $values['gallery_watermark_path'],
'gallery_detailed_bandwidth' => $values['gallery_detailed_bandwidth'],
'gallery_bandwidth_period' => $values['gallery_bandwidth_period'],
'gallery_rss_enabled' => $values['gallery_rss_enabled'],
'gallery_watermark_images' => implode( ',', $values['gallery_watermark_images'] ),
'gallery_use_watermarks' => $values['gallery_use_watermarks'],
'gallery_maps_default' => $values['gallery_maps_default'] ?? 0,
'gallery_nsfw' => $values['gallery_nsfw']
) );
\IPS\Session::i()->log( 'acplogs__gallery_settings' );
if( $values['rebuildWatermarkScreenshots'] )
{
\IPS\Db::i()->delete( 'core_queue', array( '`app`=? OR `key`=?', 'gallery', 'RebuildGalleryImages' ) );
\IPS\Task::queue( 'gallery', 'RebuildGalleryImages', array( ), 2 );
}
\IPS\Db::i()->delete( 'core_queue', array( '`app`=? OR `key`=?', 'gallery', 'RebuildGalleryImages' ) );
\IPS\Task::queue( 'gallery', 'RebuildGalleryImages', array( ), 2 );
}
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('settings');
\IPS\Output::i()->output = $form;
}
}
@@ -51,60 +51,7 @@ class _bandwidth extends \IPS\Dispatcher\Controller
*/
protected function manage()
{
$chart = new \IPS\Helpers\Chart\Database( \IPS\Http\Url::internal( "app=gallery&module=stats&controller=bandwidth" ), 'gallery_bandwidth', 'bdate', '', array(
'backgroundColor' => '#ffffff',
'colors' => array( '#10967e' ),
'hAxis' => array( 'gridlines' => array( 'color' => '#f5f5f5' ) ),
'lineWidth' => 1,
'areaOpacity' => 0.4,
'chartArea' => array( 'left' => 120, 'width' => '75%' ),
'vAxis' => array(
'title' => \IPS\Member::loggedIn()->language()->addToStack( 'filesize_raw_k' )
)
), 'AreaChart', 'daily', array( 'start' => 0, 'end' => 0 ), array( 'member_id', 'image_id', 'bdate', 'bsize' ) );
$chart->addSeries( \IPS\Member::loggedIn()->language()->addToStack('bandwidth'), 'number', 'ROUND((SUM(bsize)/1024),2)', FALSE );
$chart->tableParsers = array(
'member_id' => function( $val )
{
$member = \IPS\Member::load( $val );
if( $member->member_id )
{
$url = \IPS\Http\Url::internal( "app=gallery&module=stats&controller=member&do=images&id={$member->member_id}" );
return \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->basicUrl( $url, FALSE, $member->name );
}
else
{
return \IPS\Member::loggedIn()->language()->addToStack('deleted_member');
}
},
'image_id' => function( $val )
{
try
{
$image = \IPS\gallery\Image::load( $val );
return \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->basicUrl( $image->url(), TRUE, $image->caption );
}
catch ( \OutOfRangeException $e )
{
return \IPS\Member::loggedIn()->language()->addToStack('deleted_image');
}
},
'bdate' => function( $val )
{
return (string) \IPS\DateTime::ts( $val );
},
'bsize' => function( $val )
{
return \IPS\Output\Plugin\Filesize::humanReadableFilesize( $val );
}
);
$chart->availableTypes = array( 'AreaChart', 'ColumnChart', 'BarChart' );
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('bandwidth_stats');
\IPS\Output::i()->output = (string) $chart;
\IPS\Output::i()->output = (string) \IPS\core\Statistics\Chart::loadFromExtension( 'gallery', 'Bandwidth' )->getChart( \IPS\Http\Url::internal( "app=gallery&module=stats&controller=bandwidth" ) );
}
}
@@ -128,6 +128,8 @@ class _browse extends \IPS\Content\Controller
$album = \IPS\gallery\Album::loadAndCheckPerms( \IPS\Request::i()->album, 'view' );
$album->category()->clubCheckRules();
$album->asItem()->updateViews();
/* Add RSS feed */
if ( \IPS\Settings::i()->gallery_rss_enabled )
@@ -195,18 +197,43 @@ class _browse extends \IPS\Content\Controller
protected function _index()
{
/* Get stuff */
$featured = iterator_to_array( \IPS\gallery\Image::featured( 20, NULL ) );
/* If there aren't any featured images grab some recent instead */
if( !\count( $featured ) )
$featured = array();
if( \IPS\Settings::i()->gallery_overview_show_carousel )
{
$featured = \IPS\gallery\Image::getItemsWithPermission( \IPS\gallery\Image::clubImageExclusion(), 'image_updated DESC', 5, 'view' );
switch( \IPS\Settings::i()->gallery_overview_carousel_type )
{
case 'featured':
$featured = iterator_to_array( \IPS\gallery\Image::featured( \IPS\Settings::i()->gallery_overview_carousel_count, NULL ) );
break;
case 'new':
$featured = \IPS\gallery\Image::getItemsWithPermission( \IPS\gallery\Image::clubImageExclusion(), 'image_updated DESC', \IPS\Settings::i()->gallery_overview_carousel_count, 'view' );
break;
}
}
$new = iterator_to_array( \IPS\gallery\Image::getItemsWithPermission( \IPS\gallery\Image::clubImageExclusion(), NULL, 16, 'read', \IPS\Content\Hideable::FILTER_AUTOMATIC, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps ) );
$recentlyUpdatedAlbums = \IPS\gallery\Album\Item::getItemsWithPermission( \IPS\gallery\Album\Item::clubAlbumExclusion(), 'album_last_img_date DESC', 4, 'view' );
$commentWhere = \IPS\gallery\Image::clubImageExclusion();
$commentWhere[] = array( 'image_comments > 0' );
$recentComments = \IPS\gallery\Image::getItemsWithPermission( $commentWhere, 'image_last_comment DESC', 10, 'read', \IPS\Content\Hideable::FILTER_PUBLIC_ONLY, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps );
/* New images */
$new = array();
if( \IPS\Settings::i()->gallery_show_new_images )
{
$new = iterator_to_array( \IPS\gallery\Image::getItemsWithPermission( \IPS\gallery\Image::clubImageExclusion(), NULL, \IPS\Settings::i()->gallery_new_images_count, 'read', \IPS\Content\Hideable::FILTER_AUTOMATIC, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps ) );
}
/* Recently updated albums */
$recentlyUpdatedAlbums = array();
if( \IPS\Settings::i()->gallery_show_recent_updated_albums )
{
$recentlyUpdatedAlbums = \IPS\gallery\Album\Item::getItemsWithPermission( \IPS\gallery\Album\Item::clubAlbumExclusion(), 'album_last_img_date DESC', \IPS\Settings::i()->gallery_recent_updated_albums_count, 'view' );
}
/* Recently commented */
$recentComments = array();
if( \IPS\Settings::i()->gallery_show_recent_comments )
{
$commentWhere = \IPS\gallery\Image::clubImageExclusion();
$commentWhere[] = array( 'image_comments > 0' );
$recentComments = \IPS\gallery\Image::getItemsWithPermission( $commentWhere, 'image_last_comment DESC', 10, 'read', \IPS\Content\Hideable::FILTER_PUBLIC_ONLY, 0, NULL, !\IPS\Settings::i()->club_nodes_in_apps );
}
/* Online User Location */
\IPS\Session::i()->setLocation( \IPS\Http\Url::internal( 'app=gallery', 'front', 'gallery' ), array(), 'loc_gallery_browsing' );
@@ -322,6 +349,11 @@ class _browse extends \IPS\Content\Controller
}
}
if ( !\IPS\Request::i()->isAjax() )
{
$category->updateViews();
}
\IPS\Output::i()->contextualSearchOptions[ \IPS\Member::loggedIn()->language()->addToStack( 'search_contextual_item_categories' ) ] = array( 'type' => 'gallery_image', 'nodes' => $category->_id );
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'browse' )->category( $category, $albums, (string) $table );
}
@@ -452,6 +484,11 @@ class _browse extends \IPS\Content\Controller
'item_type' => isset( $albumItem::$contentType ) ? $albumItem::$contentType : $albumItem::$title,
'category_name' => $albumItem->container()->_title
);
if ( !\IPS\Request::i()->isAjax() )
{
$albumItem->updateViews();
}
\IPS\Output::i()->breadcrumb[] = array( NULL, $album->_title );
\IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'browse' )->album( $album, (string) $table, $commentsAndReviews );
@@ -810,7 +810,7 @@ class _view extends \IPS\Content\Controller
{
foreach ( \IPS\Request::i()->url()->queryString as $k => $v )
{
if ( $k != 'do' )
if ( !in_array( $k, array( 'id', 'do' ) ) )
{
$url = $url->setQueryString( $k, $v );
}
@@ -1,21 +1,5 @@
{
"1": {
"method": "addIndex",
"params": [
"gallery_images",
{
"type": "key",
"name": "caption",
"columns": [
"image_caption"
],
"length": [
250
]
}
]
},
"2": {
"method": "addIndex",
"params": [
"gallery_images",
@@ -0,0 +1,23 @@
{
"id": 107644,
"name": "4.7.8",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107645,
"name": "4.7.8",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107660,
"name": "4.7.9 Beta 1",
"steps": {
"queries": false,
"lang": true,
"theme": true,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": true,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,30 @@
{
"normal": {
"added": [
"gallery_overview_settings",
"gallery_featured_images",
"gallery_overview_show_carousel",
"gallery_overview_carousel_type",
"gallery_overview_carousel_featured",
"gallery_overview_carousel_new",
"gallery_overview_carousel_count",
"gallery_overview_recent_comments",
"gallery_show_recent_comments",
"gallery_overview_categories",
"gallery_overview_show_categories",
"gallery_overview_recent_updated_albums",
"gallery_show_recent_updated_albums",
"gallery_recent_updated_albums_count",
"gallery_overview_new_images",
"gallery_show_new_images",
"gallery_new_images_count"
],
"edited": [],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,15 @@
{
"added": [
"gallery_new_images_count",
"gallery_overview_carousel_count",
"gallery_overview_carousel_type",
"gallery_overview_show_carousel",
"gallery_overview_show_categories",
"gallery_recent_updated_albums_count",
"gallery_show_new_images",
"gallery_show_recent_comments",
"gallery_show_recent_updated_albums"
],
"edited": [],
"removed": []
}
@@ -0,0 +1,19 @@
{
"html": {
"added": [],
"edited": [
"front\/browse\/index"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107661,
"name": "4.7.9 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107662,
"name": "4.7.9 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107663,
"name": "4.7.9",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107664,
"name": "4.7.9",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107665,
"name": "4.7.9",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107666,
"name": "4.7.9",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107667,
"name": "4.7.9",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107668,
"name": "4.7.9",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,7 @@
{
"added": [],
"edited": [],
"removed": [
"app=gallery&module=gallery&controller=settings&searchResult=form_gallery_medium_dims"
]
}
@@ -0,0 +1,23 @@
{
"id": 107680,
"name": "4.7.10 Beta 1",
"steps": {
"queries": true,
"lang": false,
"theme": true,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": true,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,40 @@
{
"1": {
"method": "changeColumn",
"params": [
"gallery_album_comments",
"comment_text",
{
"name": "comment_text",
"type": "MEDIUMTEXT",
"length": 0,
"decimals": null,
"values": [],
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
},
"2": {
"method": "changeColumn",
"params": [
"gallery_comments",
"comment_text",
{
"name": "comment_text",
"type": "MEDIUMTEXT",
"length": 0,
"decimals": null,
"values": [],
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
}
}
@@ -0,0 +1,19 @@
{
"html": {
"added": [],
"edited": [
"front\/browse\/index"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107681,
"name": "4.7.10 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107682,
"name": "4.7.10",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107683,
"name": "4.7.10",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": true
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,42 @@
<?php
/**
* @brief 4.7.10 Upgrade Code
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Gallery
* @since 15 May 2023
*/
namespace IPS\gallery\setup\upg_107683;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* 4.7.10 Upgrade Code
*/
class _Upgrade
{
/**
* ...
*
* @return bool|array If returns TRUE, upgrader will proceed to next step. If it returns any other value, it will set this as the value of the 'extra' GET parameter and rerun this step (useful for loops)
*/
public function step1()
{
try
{
\IPS\Db::i()->select( '*', 'gallery_albums', [ 'album_type!=?', \IPS\gallery\Album::AUTH_TYPE_PUBLIC ], NULL, 1 )->first();
\IPS\Task::queue( 'core', 'RebuildSearchIndex', array( 'class' => 'IPS\gallery\Album\Item' ), 5, TRUE );
}
catch( \UnderflowException $e ) {}
return TRUE;
}
}
@@ -0,0 +1,23 @@
{
"id": 107684,
"name": "4.7.10",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107690,
"name": "4.7.11 Beta 1",
"steps": {
"queries": true,
"lang": false,
"theme": true,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": true
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,20 @@
{
"1": {
"method": "addColumn",
"params": [
"gallery_albums",
{
"name": "album_views",
"type": "BIGINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
}
}
@@ -0,0 +1,21 @@
{
"html": {
"added": [],
"edited": [
"front\/browse\/album",
"front\/browse\/category",
"front\/view\/imageInfo"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,42 @@
<?php
/**
* @brief 4.7.11 Beta 1 Upgrade Code
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
* @copyright (c) Invision Power Services, Inc.
* @license https://www.invisioncommunity.com/legal/standards/
* @package Invision Community
* @subpackage Gallery
* @since 15 May 2023
*/
namespace IPS\gallery\setup\upg_107690;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* 4.7.11 Beta 1 Upgrade Code
*/
class _Upgrade
{
/**
* ...
*
* @return bool|array If returns TRUE, upgrader will proceed to next step. If it returns any other value, it will set this as the value of the 'extra' GET parameter and rerun this step (useful for loops)
*/
public function step1()
{
try
{
\IPS\Db::i()->select( '*', 'gallery_albums', [ 'album_type!=?', \IPS\gallery\Album::AUTH_TYPE_PUBLIC ], NULL, 1 )->first();
\IPS\Task::queue( 'core', 'RebuildSearchIndex', array( 'class' => 'IPS\gallery\Album\Item' ), 5, TRUE );
}
catch( \UnderflowException $e ) {}
return TRUE;
}
}
@@ -0,0 +1,23 @@
{
"id": 107691,
"name": "4.7.11 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107692,
"name": "4.7.11",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107693,
"name": "4.7.11",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107694,
"name": "4.7.11",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107695,
"name": "4.7.11.1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107700,
"name": "4.7.12 Beta 1",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": true,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": true,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"files": {
"added": [],
"edited": [],
"removed": []
},
"orders": {
"added": [],
"edited": [
"global\/\/dev\/js\/\/library\/"
],
"removed": []
}
}
@@ -0,0 +1,23 @@
{
"id": 107701,
"name": "4.7.12 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107702,
"name": "4.7.12 Beta 3",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107703,
"name": "4.7.12 Beta 4",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107704,
"name": "4.7.12",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107710,
"name": "4.7.13 Beta 1",
"steps": {
"queries": true,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,21 @@
{
"1": {
"method": "changeColumn",
"params": [
"gallery_images",
"image_file_size",
{
"name": "image_file_size",
"type": "BIGINT",
"length": 20,
"decimals": null,
"values": [],
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
}
}
@@ -0,0 +1,23 @@
{
"id": 107711,
"name": "4.7.13 Beta 2",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,23 @@
{
"id": 107712,
"name": "4.7.13",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
+1 -1
View File
@@ -1437,7 +1437,7 @@ class _Album extends \IPS\Node\Model implements \IPS\Node\Ratings, \IPS\Content\
if ( $this->type != static::AUTH_TYPE_PUBLIC )
{
$return = ( $return === '*' ) ? array() : explode( ',', $return );
$return = [];
if ( $this->owner_id )
{
+2 -1
View File
@@ -33,7 +33,7 @@ class _Item extends \IPS\Content\Item implements
\IPS\Content\Lockable,
\IPS\Content\MetaData
{
use \IPS\Content\Reactable, \IPS\Content\Reportable;
use \IPS\Content\Reactable, \IPS\Content\Reportable, \IPS\Content\Statistics, \IPS\Content\ViewUpdates;
/**
* @brief Application
@@ -101,6 +101,7 @@ class _Item extends \IPS\Content\Item implements
'featured' => 'featured',
'locked' => 'locked',
'hidden' => 'hidden',
'views' => 'views'
);
/**
@@ -23,7 +23,7 @@ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
*/
class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
{
use \IPS\Content\ClubContainer;
use \IPS\Content\ClubContainer, \IPS\Content\ViewUpdates;
/**
* @brief [ActiveRecord] Multiton Store
@@ -334,7 +334,7 @@ class _Category extends \IPS\Node\Model implements \IPS\Node\Permissions
$form->addHeader( 'category_tags' );
$form->add( new \IPS\Helpers\Form\YesNo( 'category_can_tag', $this->id ? $this->can_tag : TRUE, FALSE, array( 'togglesOn' => array( 'category_tag_prefixes', 'category_preset_tags' ) ), NULL, NULL, NULL, 'category_can_tag' ) );
$form->add( new \IPS\Helpers\Form\YesNo( 'category_tag_prefixes', $this->id ? $this->tag_prefixes : TRUE, FALSE, array(), NULL, NULL, NULL, 'category_tag_prefixes' ) );
$form->add( new \IPS\Helpers\Form\Text( 'category_preset_tags', $this->preset_tags, FALSE, array( 'autocomplete' => array( 'unique' => 'true' ), 'nullLang' => 'ctags_predefined_unlimited' ), NULL, NULL, NULL, 'category_preset_tags' ) );
$form->add( new \IPS\Helpers\Form\Text( 'category_preset_tags', $this->preset_tags, FALSE, array( 'autocomplete' => array( 'unique' => 'true', 'alphabetical' => \IPS\Settings::i()->tags_alphabetical ), 'nullLang' => 'ctags_predefined_unlimited' ), NULL, NULL, NULL, 'category_preset_tags' ) );
}
$form->addTab( 'category_rules' );
+2 -3
View File
@@ -26,7 +26,6 @@ class _Image extends \IPS\Content\Item implements
\IPS\Content\Tags,
\IPS\Content\Followable,
\IPS\Content\ReadMarkers,
\IPS\Content\Views,
\IPS\Content\Hideable, \IPS\Content\Featurable, \IPS\Content\Pinnable, \IPS\Content\Lockable,
\IPS\Content\Shareable,
\IPS\Content\Ratings,
@@ -35,7 +34,7 @@ class _Image extends \IPS\Content\Item implements
\IPS\Content\MetaData,
\IPS\Content\Anonymous
{
use \IPS\Content\Reactable, \IPS\Content\Reportable;
use \IPS\Content\Reactable, \IPS\Content\Reportable, \IPS\Content\Statistics, \IPS\Content\ViewUpdates;
/**
* @brief Application
@@ -787,7 +786,7 @@ class _Image extends \IPS\Content\Item implements
$categoryIdColumn = $category::$databaseColumnId;
$albumIdColumn = $album ? $album::$databaseColumnId : NULL;
if ( $count > static::NOTIFICATIONS_PER_BATCH )
if ( $count > \IPS\NOTIFICATION_BACKGROUND_THRESHOLD )
{
$queueData = array(
'followerCount' => $count,