diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-04-15 07:23:22 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-04-15 07:23:22 +0000 |
commit | a7f345476f80cde43589069825a256534de7745c (patch) | |
tree | d90dfe15263af64b9194e5dcef8810c40b75765e /modules/g2_import/helpers/g2_import_task.php | |
parent | 8c1d1a9d0df5e1501d8beccbadeaf93c95313a62 (diff) |
Very early round of Gallery 2 import code. It can import users (with
the wrong password) and import groups, with a basic UI. Needs a ton
more work.
Diffstat (limited to 'modules/g2_import/helpers/g2_import_task.php')
-rw-r--r-- | modules/g2_import/helpers/g2_import_task.php | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/modules/g2_import/helpers/g2_import_task.php b/modules/g2_import/helpers/g2_import_task.php new file mode 100644 index 00000000..1ddc95d6 --- /dev/null +++ b/modules/g2_import/helpers/g2_import_task.php @@ -0,0 +1,102 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class g2_import_task_Core { + static function available_tasks() { + if (g2_import::is_configured()) { + g2_import::init(); + return array(Task_Definition::factory() + ->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); + } +} |