summaryrefslogtreecommitdiff
path: root/modules/exif/helpers/exif_task.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/exif/helpers/exif_task.php')
-rw-r--r--modules/exif/helpers/exif_task.php47
1 files changed, 12 insertions, 35 deletions
diff --git a/modules/exif/helpers/exif_task.php b/modules/exif/helpers/exif_task.php
index 620d0791..375503e3 100644
--- a/modules/exif/helpers/exif_task.php
+++ b/modules/exif/helpers/exif_task.php
@@ -25,9 +25,9 @@ class exif_task_Core {
"WHERE {exif_records}.`item_id` NOT IN " .
"(SELECT `id` FROM {items} WHERE {items}.`type` = 'photo')");
- list ($remaining, $total, $percent) = self::_get_stats();
+ list ($remaining, $total, $percent) = exif::stats();
return array(Task_Definition::factory()
- ->callback("exif_task::extract_exif")
+ ->callback("exif_task::update_index")
->name(t("Extract EXIF data"))
->description($remaining
? t2("1 photo needs to be scanned",
@@ -37,7 +37,7 @@ class exif_task_Core {
->severity($remaining ? log::WARNING : log::SUCCESS));
}
- static function extract_exif($task) {
+ static function update_index($task) {
$completed = $task->get("completed", 0);
$start = microtime(true);
@@ -57,41 +57,18 @@ class exif_task_Core {
exif::extract($item);
}
- list ($remaining, $total, $percent) = self::_get_stats();
- if ($remaining + $completed) {
- $task->percent_complete = round(100 * $completed / ($remaining + $completed));
- $task->status = t2("one record updated, index is %percent% up-to-date",
- "%count records updated, index is %percent% up-to-date",
- $completed, array("percent" => $percent));
- } else {
- $task->percent_complete = 100;
- }
-
+ list ($remaining, $total, $percent) = exif::stats();
$task->set("completed", $completed);
- if ($remaining == 0) {
+ if ($remaining == 0 || !($remaining + $completed)) {
$task->done = true;
$task->state = "success";
+ site_status::clear("exif_index_out_of_date");
+ $task->percent_complete = 100;
+ } else {
+ $task->percent_complete = round(100 * $completed / ($remaining + $completed));
}
- }
-
- private static function _get_stats() {
- $missing_exif = Database::instance()
- ->select("items.id")
- ->from("items")
- ->join("exif_records", "items.id", "exif_records.item_id", "left")
- ->where("type", "photo")
- ->open_paren()
- ->where("exif_records.item_id", null)
- ->orwhere("exif_records.dirty", 1)
- ->close_paren()
- ->get()
- ->count();
-
- $total_items = ORM::factory("item")->where("type", "photo")->count_all();
- if (!$total_items) {
- return array(0, 0, 0);
- }
- return array($missing_exif, $total_items,
- round(100 * (($total_items - $missing_exif) / $total_items)));
+ $task->status = t2("one record updated, index is %percent% up-to-date",
+ "%count records updated, index is %percent% up-to-date",
+ $completed, array("percent" => $percent));
}
}