Commit Graph

153 Commits

Author SHA1 Message Date
Aaron 0c13a39d04 Image: don't re-queue thumbnails when deleting them 2023-11-11 15:34:45 +01:00
Aaron e28fcd8b03 Move photo deletion from ViewPhoto to EditAsset
Removes the intermediate confirmation page, instead using JavaScript for confirmation.

Fixes an XSS issue, in that the previous method was not passing or checking the session (!)
2023-11-11 15:29:32 +01:00
Aaron 83da4a26ac EditAsset: allow users to edit their own photos 2023-11-11 15:14:57 +01:00
Aaron 978d6461c5 Database: add fetch_object, queryObject, queryObjects methods 2023-06-12 12:49:22 +02:00
Aaron 03ad26655c Remove unused Cache class
Kabuki CMS uses a Cache class to cache objects using APCU, but Pics has never used it.
2023-06-06 12:25:36 +02:00
Aaron 6930c0a06a Misc: use the correct copyright headers 2023-04-08 21:32:38 +02:00
Aaron ed07668b2e Database: connect using utf8mb4 2023-04-08 14:54:55 +02:00
Aaron be909bf54d PhotosIndex: rename 'row' layout to 'landscapes' 2023-04-01 14:41:24 +02:00
Aaron 68ef80fb9f PhotoMosaic: improve heuristic for landscape/portrait row 2023-04-01 14:40:19 +02:00
Aaron a260f4ff88 ErrorHandler: use var_export for dumping superglobals as well 2023-03-28 19:21:19 +02:00
Aaron 2a528f2830 ErrorHandling: improve argument handling for debug info
`var_dump` was the wrong function to call for objects, as it would just output all object
data to the output buffer... Let's generalise and use `var_export` instead :-)
2023-03-28 19:21:07 +02:00
Aaron b2bcb6a124 Fix error handling for functions without arguments 2023-03-15 09:49:55 +01:00
Aaron d1741f2478 User: less strict typing for $reset_key property 2023-03-14 21:22:35 +01:00
Aaron 41881594e9 PhotoMosaic: make photo order more intuitive 2023-03-12 12:34:47 +01:00
Aaron 29bf6af1f8 Asset: delete thumbnails when deleting an assets 2023-03-12 12:21:43 +01:00
Aaron 244af88a9a Asset: cleaner handling of conflicting filenames 2023-03-12 12:02:21 +01:00
Aaron 3cf281b24d AdminMenu: add error count to badge iff count > 0 2023-03-12 01:04:28 +01:00
Aaron 1b7e745f11 Clean up Tag::resetIdAsset 2023-03-11 21:41:23 +01:00
Aaron aa3a54f237 Asset: guard using property_exists in constructor 2023-03-11 21:39:20 +01:00
Aaron a76dde927b AccountSettings: list tags owned by current user 2023-03-11 20:27:09 +01:00
Aaron ad816f10a3 EditTag: allow designating a tag owner 2023-03-11 19:57:19 +01:00
Aaron 6d0aef4df6 EditTag: allow updating the thumbnail visually 2023-03-11 19:49:17 +01:00
Aaron 4684482d67 ManageAlbums: move hierarchy logic to PhotoAlbum model 2023-03-11 17:28:21 +01:00
Aaron 02b43035f3 AccountSettings: allow users to change their personal details 2023-03-11 15:32:07 +01:00
Aaron 277611e0ac Introduce new menu classes and navigation templates 2023-03-11 15:14:05 +01:00
Aaron 0366df9b5f Alerts: replace 'error' class with 'danger' 2023-03-11 13:30:02 +01:00
Aaron f9eefe7b41 Replace generic alert, form and table templates with new Bootstrap equivalents 2023-03-11 13:20:59 +01:00
Aaron 09f498695d Router: split off from Dispatcher 2023-01-01 19:48:19 +01:00
Aaron 4d05cebc40 PhotoMosaic: address deprecation notice in usort call 2022-12-25 14:06:54 +01:00
Aaron 7897172256 Address dynamic class property deprecation warnings 2022-12-25 13:56:42 +01:00
Aaron 49390c372d Use triple-equals in a few more places 2022-12-25 13:50:03 +01:00
Aaron 2174e1d08b PhotoPage: show software used to edit photo 2022-12-25 13:44:19 +01:00
Aaron 3de87809bb GenericTable: prevent passing NULL to strtotime 2022-07-14 16:45:32 +02:00
Aaron c763967463 Prevent current page from being 0 if no items are present 2022-07-14 16:45:17 +02:00
Aaron b3808144ca Address deprecation notices for certain function signatures 2022-07-08 23:52:03 +02:00
Aaron d8858c78bb Thumbnails: crop from original size if 2x is unavailable 2022-07-07 14:54:00 +02:00
Aaron c0d69f7205 Do not delete thumbnail queue when replacing an asset
Thumbnails are normally created on demand, e.g. when processing the format codes in a post's body text.
Normally, the temporary URL is only used once to generate thumbnails ad-hoc. However, when cache is
enabled, a reference to the asset may be used in a cached version of a formatted body text, skipping
the normal thumbnail generation routine.

When an asset is replaced, currently, all thumbnails are removed and references to them are removed
from the database. In case the asset is still referenced in a cached formatted body text, this could lead
to an error when requesting the thumbnail, as the thumbnail request is no longer present in the system.

As we do not know what posts use particular assets at this point in the code, it is best to work around this
issue by unsetting the thumbnail filenames rather than deleting the entries outright. This effectively
generates them again on the next request.

In the future, we should aim to keep track of what posts make use of assets, so cache may be invalidated
in a more targeted way.
2022-07-07 14:22:22 +02:00
Aaron b5edf09a69 Don't try to generate double-density thumbs for small images 2022-07-07 14:05:33 +02:00
Aaron 54fb7ab410 Write new thumbnail filenames to parent Image object as well 2022-07-07 13:55:55 +02:00
Aaron 086102d007 Thumbnail class: minor refactor of generate method 2022-07-07 13:51:03 +02:00
Aaron 56b60b74bc Thumbnail class: refactor getUrl method 2022-07-07 13:33:40 +02:00
Aaron fc59708914 Split Image::getImageUrls from Image::getInlineImage 2022-07-05 12:01:02 +02:00
Aaron 1c02cbea93 Rewrite Image::getInlineImage to support double density displays 2022-07-05 11:41:40 +02:00
Aaron 52420b8715 Add Image::getInlineImage method 2022-06-30 15:22:08 +02:00
electricdusk b7a37c85f6 Complete date-ordered orderings
Bug as reported by Yorick: When two Assets have the same capture
date, a bug occurs in the interface where the user gets stuck in
a loop when moving to the next image.

This patch uses the primary key as a fallback when ordering the
images by capture date.  This way, the asset ordering is complete
and it should resolve the bug.
2022-11-22 12:00:53 +01:00
Aaron 0ec0de4414 Replace deprecated strftime calls 2022-05-07 13:25:19 +02:00
minnozz f2d8a32e67 EXIF: prefer DateTimeOriginal over DateTimeDigitized 2022-02-16 21:43:55 +01:00
Aaron 237f4005bd Apply htmlspecialchars to basic values. 2021-02-17 22:44:26 +01:00
Aaron 4bf4641428 Minor refactor of generateColumnHeaders function 2021-02-17 20:45:58 +01:00
Aaron ff808ba18d Refactor processing of raw rows and their cell data. 2021-02-17 20:45:22 +01:00