Mercurial > hg > mgallery
comparison mgallery.php @ 290:19fbf800b1f7
Work on very early form of virtual gallery support.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 28 Jul 2019 07:53:36 +0300 |
parents | cad9e459e12f |
children | 486398fb60ea |
comparison
equal
deleted
inserted
replaced
289:13cff35dfbec | 290:19fbf800b1f7 |
---|---|
503 { | 503 { |
504 require($filename); | 504 require($filename); |
505 flock($fp, LOCK_UN); | 505 flock($fp, LOCK_UN); |
506 } | 506 } |
507 fclose($fp); | 507 fclose($fp); |
508 } | |
509 | |
510 // Check for chosen backend mode | |
511 if (($galBackend = mgGetSetting("backend")) === null) | |
512 die("MGallery backend mode not set.\n"); | |
513 | |
514 switch ($galBackend = strtolower($galBackend)) | |
515 { | |
516 case "sql": | |
517 // If SQL backend, and gallery is virtual, attempt a select | |
518 if (isset($galData["virtual"])) | |
519 { | |
520 // Connect to database | |
521 if (mgConnectSQLDB() === FALSE) | |
522 die("Could not open database connection.\n"); | |
523 | |
524 $asql = ["SELECT * FROM images ". | |
525 "LEFT JOIN paths ON images.path_id=paths.id ". | |
526 "WHERE"]; | |
527 | |
528 $ccmds = preg_split("/\s*([,|])\s*/", | |
529 strtolower($galData["virtual"]), -1, | |
530 PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); | |
531 | |
532 foreach ($ccmds as $ccmd) | |
533 switch ($ccmd) | |
534 { | |
535 case "keyword": | |
536 if (!isset($galData["v_keyword"])) | |
537 die("Invalid definition.\n"); | |
538 | |
539 $asql[] = mgPrepareSQL( | |
540 "images.id IN (SELECT image_id FROM images_meta ". | |
541 "LEFT JOIN metadata ON images_meta.meta_id=metadata.id ". | |
542 "WHERE metadata.field='keywords' AND data=%s)", | |
543 $galData["v_keyword"]); | |
544 break; | |
545 | |
546 case "month_range": | |
547 if (!isset($galData["v_month_begin"]) || | |
548 !isset($galData["v_month_end"])) | |
549 die("Invalid definition.\n"); | |
550 | |
551 $asql[] = mgPrepareSQL( | |
552 "date_part('month', datetime) BETWEEN %d AND %d", | |
553 $galData["v_month_begin"], | |
554 $galData["v_month_end"]); | |
555 break; | |
556 | |
557 case "date_range": | |
558 if (!isset($galData["v_date_begin"]) || | |
559 !isset($galData["v_date_end"])) | |
560 die("Invalid definition.\n"); | |
561 | |
562 $asql[] = mgPrepareSQL( | |
563 "datetime BETWEEN %s AND %s", | |
564 $galData["v_date_begin"], | |
565 $galData["v_date_end"]); | |
566 break; | |
567 | |
568 case "year": | |
569 if (!isset($galData["v_year"])) | |
570 die("Invalid definition.\n"); | |
571 | |
572 // Laatuklunssi | |
573 $v_year = strtolower($galData["v_year"]); | |
574 if (substr($v_year, 0, 7) == "parent:") | |
575 { | |
576 if (isset($galData["parent"])) | |
577 { | |
578 $v_field = substr($v_year, 7); | |
579 if (isset($galData["parent"]["caption"])) | |
580 $galData["v_year"] = $galData["parent"][$v_field]; | |
581 else | |
582 die("Foobar\n"); | |
583 } | |
584 else | |
585 die("Fazboo\n"); | |
586 } | |
587 | |
588 $asql[] = mgPrepareSQL( | |
589 "date_part('year', datetime)=%d", | |
590 $galData["v_year"]); | |
591 break; | |
592 | |
593 case "|": | |
594 $asql[] = "OR"; | |
595 break; | |
596 | |
597 case ",": | |
598 $asql[] = "AND"; | |
599 break; | |
600 | |
601 default: | |
602 die("Invalid virtual gallery definition.\n"); | |
603 } | |
604 | |
605 $asql[] = "ORDER BY datetime DESC"; | |
606 $sql = implode(" ", $asql); | |
607 | |
608 // Query images for this gallery | |
609 $galData["header"] .= "<p>".$sql."</p>"; | |
610 | |
611 if (($res = mgExecSQL($sql)) === FALSE) | |
612 die("Could not execute virtual gallery.\n"); | |
613 | |
614 // Push the entries into our data structures | |
615 foreach ($res as $entry) | |
616 if (!in_array($entry["filename"], $galImagesIndex)) | |
617 { | |
618 $entry["datetime"] = mgSQLToDateTime($db, $entry["datetime"]); | |
619 $entry["type"] = 0; | |
620 | |
621 $galEntries[$entry["filename"]] = $entry; | |
622 $galImagesIndex[] = $entry["filename"]; | |
623 } | |
624 } | |
625 //print_r($galEntries); | |
626 break; | |
627 | |
628 case "php": | |
629 break; | |
630 | |
631 default: | |
632 die("Invalid MGallery backend mode '".$galBackend."'.\n"); | |
508 } | 633 } |
509 | 634 |
510 | 635 |
511 // If no data available, show an error page | 636 // If no data available, show an error page |
512 if (!isset($galData) || !isset($galEntries) || | 637 if (!isset($galData) || !isset($galEntries) || |