Fix better way to use filter on cover

This commit is contained in:
Laurent Destailleur (aka Eldy) 2025-02-05 10:42:16 +01:00
parent 31daa4a2f0
commit 7f53089663

View file

@ -1080,11 +1080,11 @@ function getNbOfImagePublicURLOfObject($object)
* @param Object $object Object
* @param int $no Numero of image (if there is several images. 1st one by default)
* @param string $extName Extension to differentiate thumb file name ('', '_small', '_mini')
* @param int $cover 1=Add a filter on field "cover", 0=Exclude "cover" images, -1=No filter
* @param int $cover 1=Sort with cover then position, -1=Filter on cover last then position, 0=Exclude cover and filter on position first
* @return string HTML img content or '' if no image found
* @see getNbOfImagePublicURLOfObject(), getPublicFilesOfObject(), getImageFromHtmlContent()
*/
function getImagePublicURLOfObject($object, $no = 1, $extName = '', $cover = -1)
function getImagePublicURLOfObject($object, $no = 1, $extName = '', $cover = 1)
{
global $db;
@ -1099,8 +1099,12 @@ function getImagePublicURLOfObject($object, $no = 1, $extName = '', $cover = -1)
$sql .= " WHERE entity IN (".getEntity($object->element).")";
$sql .= " AND src_object_type = '".$db->escape($object->element)."' AND src_object_id = ".((int) $object->id); // Filter on object
$sql .= " AND ".$db->regexpsql('filename', $regexforimg, 1);
$sql .= ($cover >= 0 ? " AND cover = ".((int) $cover) : "");
$sql .= $db->order("cover,position,rowid", "ASC,ASC,ASC");
$sql .= ($cover ? "" : " AND cover <> 1");
if ($cover == 1) {
$sql .= $db->order("cover,position,rowid", "ASC,ASC,ASC");
} else {
$sql .= $db->order("cover,position,rowid", "DESC,ASC,ASC");
}
$resql = $db->query($sql);
if ($resql) {