summaryrefslogtreecommitdiff
path: root/modules/g2_import/helpers/g2_import_task.php
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-04-15 07:23:22 +0000
committerBharat Mediratta <bharat@menalto.com>2009-04-15 07:23:22 +0000
commita7f345476f80cde43589069825a256534de7745c (patch)
treed90dfe15263af64b9194e5dcef8810c40b75765e /modules/g2_import/helpers/g2_import_task.php
parent8c1d1a9d0df5e1501d8beccbadeaf93c95313a62 (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.php102
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);
+ }
+}