callback("g2_import_task::import") ->name(t("Import from Gallery 2")) ->description( t("Gallery %version detected", array("version" => g2_import::version()))) ->severity(log::SUCCESS)); } } static function import($task) { $start = microtime(true); g2_import::init(); $stats = $task->get("stats"); $total = $task->get("total"); $completed = $task->get("completed"); $i = $task->get("i"); $mode = $task->get("mode"); if (!isset($mode)) { $task->set("stats", $stats = g2_import::stats()); $task->set("total", $total = array_sum(array_values($stats))); $completed = 0; $i = 0; $mode = 0; } $modes = array("groups", "users", "albums", "photos", "comments", "done"); while (!$task->done && microtime(true) - $start < 1) { if ($i >= $stats[$modes[$mode]]) { $i = 0; $mode++; } $i++; switch($modes[$mode]) { case "groups": g2_import::import_group($i); $task->status = t( "Importing groups %count / %total", array("count" => $i, "total" => $stats["groups"])); break; case "users": g2_import::import_user($i); $task->status = t( "Importing users %count / %total", array("count" => $i, "total" => $stats["users"])); break; case "albums": $task->status = t( "Importing albums %count / %total", array("count" => $i, "total" => $stats["albums"])); break; case "photos": $task->status = t( "Importing photos %count / %total", array("count" => $i, "total" => $stats["photos"])); break; case "comments": $task->status = t("Importing comments %count / %total", array("count" => $i, "total" => $stats["comments"])); break; case "done": $task->status = t("Import complete"); $task->done = true; $task->state = "success"; break; } if (!$task->done) { $completed++; } } $task->percent_complete = 100 * ($completed / $total); $task->set("completed", $completed); $task->set("mode", $mode); $task->set("i", $i); } }