From df001700dd071c59c47afd07d2c756487d20684e Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Fri, 1 Jan 2010 12:17:04 -0800
Subject: Don't enable the rest module by default yet; we should make sure that
we do a more thorough security audit on it first.
---
modules/gallery/controllers/packager.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'modules')
diff --git a/modules/gallery/controllers/packager.php b/modules/gallery/controllers/packager.php
index 03d56fff..cb64f1bf 100644
--- a/modules/gallery/controllers/packager.php
+++ b/modules/gallery/controllers/packager.php
@@ -63,7 +63,7 @@ class Packager_Controller extends Controller {
module::load_modules();
- foreach (array("user", "comment", "organize", "info", "rest", "rss",
+ foreach (array("user", "comment", "organize", "info", "rss",
"search", "slideshow", "tag") as $module_name) {
module::install($module_name);
module::activate($module_name);
--
cgit v1.2.3
From 6d5d68a3f963109230b898bc1b559af7ac7585f7 Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Fri, 1 Jan 2010 17:41:20 -0800
Subject: Start tracking the original G2 url and id for all entities. This
will allow us to map G2 image urls to the appropriate G3 ones.
---
modules/g2_import/helpers/g2_import.php | 69 ++++++++++++++++++-----
modules/g2_import/helpers/g2_import_installer.php | 15 ++++-
modules/g2_import/module.info | 2 +-
3 files changed, 71 insertions(+), 15 deletions(-)
(limited to 'modules')
diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php
index a7a69746..478fd75d 100644
--- a/modules/g2_import/helpers/g2_import.php
+++ b/modules/g2_import/helpers/g2_import.php
@@ -21,6 +21,7 @@
class g2_import_Core {
public static $init = false;
public static $map = array();
+ public static $g2_base_url = null;
private static $current_g2_item = null;
@@ -155,6 +156,20 @@ class g2_import_Core {
$admin = g2(GalleryCoreApi::loadEntitiesById($admin_id));
$GLOBALS["gallery"]->setActiveUser($admin);
+ // Make sure we have an embed location so that embedded url generation comes out ok. Without
+ // this, the Gallery2 ModRewrite code won't try to do url generation.
+ $g2_embed_location =
+ g2(GalleryCoreApi::getPluginParameter("module", "rewrite", "modrewrite.embeddedLocation"));
+
+ if (empty($g2_embed_location)) {
+ $g2_embed_location =
+ g2(GalleryCoreApi::getPluginParameter("module", "rewrite", "modrewrite.galleryLocation"));
+ g2(GalleryCoreApi::setPluginParameter(
+ "module", "rewrite", "modrewrite.embeddedLocation", $g2_embed_location));
+ g2($gallery->getStorage()->checkPoint());
+ }
+ self::$g2_base_url = $g2_embed_location;
+
return true;
}
@@ -254,7 +269,7 @@ class g2_import_Core {
}
if (isset($group)) {
- self::set_map($g2_group->getId(), $group->id);
+ self::set_map($g2_group->getId(), $group->id, "group");
}
return $message;
@@ -270,7 +285,7 @@ class g2_import_Core {
}
if (g2(GalleryCoreApi::isAnonymousUser($g2_user_id))) {
- self::set_map($g2_user_id, identity::guest()->id);
+ self::set_map($g2_user_id, identity::guest()->id, "group");
return t("Skipping anonymous user");
}
@@ -308,7 +323,7 @@ class g2_import_Core {
}
$user->save();
- self::set_map($g2_user->getId(), $user->id);
+ self::set_map($g2_user->getId(), $user->id, "user");
return $message;
}
@@ -376,7 +391,11 @@ class g2_import_Core {
$album->save();
self::import_keywords_as_tags($g2_album->getKeywords(), $album);
- self::set_map($g2_album_id, $album->id);
+
+ self::set_map(
+ $g2_album_id, $album->id,
+ "album",
+ self::g2_url(array("view" => "core.ShowItem", "itemId" => $g2_album->getId())));
// @todo import album highlights
}
@@ -515,19 +534,30 @@ class g2_import_Core {
self::import_keywords_as_tags($g2_item->getKeywords(), $item);
}
+ $g2_item_url = self::g2_url(array("view" => "core.ShowItem", "itemId" => $g2_item->getId()));
if (isset($item)) {
- self::set_map($g2_item_id, $item->id);
$item->view_count = g2(GalleryCoreApi::fetchItemViewCount($g2_item_id));
$item->save();
+
+ self::set_map($g2_item_id, $item->id, "item", $g2_item_url);
+ $derivatives = g2(GalleryCoreApi::fetchDerivativesByItemIds(array($g2_item_id)));
+ if (!empty($derivatives[$g2_item_id])) {
+ foreach ($derivatives[$g2_item_id] as $derivative) {
+ switch ($derivative->getDerivativeType()) {
+ case DERIVATIVE_TYPE_IMAGE_THUMBNAIL: $resource_type = "thumbnail"; break;
+ case DERIVATIVE_TYPE_IMAGE_RESIZE: $resource_type = "resize"; break;
+ case DERIVATIVE_TYPE_IMAGE_PREFERRED: $resource_type = "full"; break;
+ }
+
+ self::set_map(
+ $derivative->getId(), $item->id,
+ $resource_type,
+ self::g2_url(array("view" => "core.DownloadItem", "itemId" => $derivative->getId())));
+ }
+ }
}
if ($corrupt) {
- $url_generator = $GLOBALS["gallery"]->getUrlGenerator();
- // @todo we need a more persistent warning
- $g2_item_url = $url_generator->generateUrl(array("itemId" => $g2_item->getId()));
- // Why oh why did I ever approve the session id placeholder idea in G2?
- $g2_item_url =
- str_replace('&g2_GALLERYSID=TMP_SESSION_ID_DI_NOISSES_PMT', '', $g2_item_url);
if (!empty($item)) {
$message[] =
t("%title from Gallery 2 could not be processed; " .
@@ -874,10 +904,12 @@ class g2_import_Core {
/**
* Associate a Gallery 2 id with a Gallery 3 item id.
*/
- static function set_map($g2_id, $g3_id) {
+ static function set_map($g2_id, $g3_id, $resource_type, $g2_url=null) {
$g2_map = ORM::factory("g2_map");
$g2_map->g3_id = $g3_id;
$g2_map->g2_id = $g2_id;
+ $g2_map->resource_type = $resource_type;
+ $g2_map->g2_url = $g2_url;
$g2_map->save();
self::$map[$g2_id] = $g3_id;
}
@@ -886,6 +918,17 @@ class g2_import_Core {
message::warning($msg);
Kohana_Log::add("alert", $msg);
}
+
+ static function g2_url($params) {
+ global $gallery;
+ $url = $gallery->getUrlGenerator()->generateUrl(
+ $params,
+ array("forceSessionId" => false,
+ "htmlEntities" => false,
+ "urlEncode" => false,
+ "useAuthToken" => false));
+ return str_replace(self::$g2_base_url, "", $url);
+ }
}
/**
@@ -901,7 +944,7 @@ class g2_import_Core {
*/
function g2() {
$args = func_get_arg(0);
- $ret = array_shift($args);
+ $ret = is_array($args) ? array_shift($args) : $args;
if ($ret) {
Kohana_Log::add("error", "Gallery 2 call failed with: " . $ret->getAsText());
throw new Exception("@todo G2_FUNCTION_FAILED");
diff --git a/modules/g2_import/helpers/g2_import_installer.php b/modules/g2_import/helpers/g2_import_installer.php
index feacb518..77b61d3e 100644
--- a/modules/g2_import/helpers/g2_import_installer.php
+++ b/modules/g2_import/helpers/g2_import_installer.php
@@ -24,14 +24,27 @@ class g2_import_installer {
`id` int(9) NOT NULL auto_increment,
`g2_id` int(9) NOT NULL,
`g3_id` int(9) NOT NULL,
+ `g2_url` varchar(255) default NULL,
+ `resource_type` varchar(64) default NULL,
PRIMARY KEY (`id`),
- KEY (`g2_id`))
+ KEY `g2_url` (`g2_url`),
+ KEY `g2_id` (`g2_id`))
DEFAULT CHARSET=utf8;");
module::set_version("g2_import", 1);
mkdir(VARPATH . "modules/g2_import");
}
+ static function upgrade($version) {
+ $db = Database::instance();
+ if ($version == 1) {
+ $db->query("ALTER TABLE {g2_maps} ADD COLUMN `g2_url` VARCHAR(255)");
+ $db->query("ALTER TABLE {g2_maps} ADD COLUMN `resource_type` VARCHAR(64)");
+ $db->query("ALTER TABLE {g2_maps} ADD KEY `g2_url` (`g2_url`)");
+ module::set_version("g2_import", $version = 2);
+ }
+ }
+
static function uninstall() {
@dir::unlink(VARPATH . "modules/g2_import");
}
diff --git a/modules/g2_import/module.info b/modules/g2_import/module.info
index 554cf33b..977af251 100644
--- a/modules/g2_import/module.info
+++ b/modules/g2_import/module.info
@@ -1,3 +1,3 @@
name = "Gallery2 Import"
description = "Import your Gallery 2 content into Gallery 3"
-version = 1
+version = 2
--
cgit v1.2.3
From 161366e51d17a3a31fcce79505948c5945603ff3 Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Fri, 1 Jan 2010 21:02:52 -0800
Subject: New controller for remapping Gallery 2 urls to Gallery 3 urls.
---
modules/g2_import/controllers/g2.php | 73 ++++++++++++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
create mode 100644 modules/g2_import/controllers/g2.php
(limited to 'modules')
diff --git a/modules/g2_import/controllers/g2.php b/modules/g2_import/controllers/g2.php
new file mode 100644
index 00000000..f303d604
--- /dev/null
+++ b/modules/g2_import/controllers/g2.php
@@ -0,0 +1,73 @@
+get("id")) {
+ $where = array("g2_id", "=", $g2_id);
+ } else if ($g2_url = $input->get("url")) {
+ $where = array("g2_url", "=", $g2_url);
+ } else {
+ throw new Kohana_404_Exception();
+ }
+
+ $g2_map = ORM::factory("g2_map")
+ ->merge_where(array($where))
+ ->find();
+
+ if (!$g2_map->loaded()) {
+ throw new Kohana_404_Exception();
+ }
+
+ $item = ORM::factory("item")->where("id", "=", $g2_map->g3_id)->find();
+ if (!$item->loaded() || !access::can("view", $item)) {
+ throw new Kohana_404_Exception();
+ }
+
+
+ // Redirect the user to the new url
+ switch ($g2_map->resource_type) {
+ case "thumbnail":
+ url::redirect($item->thumb_url(true));
+
+ case "resize":
+ url::redirect($item->resize_url(true));
+
+ case "full":
+ url::redirect($item->file_url(true));
+
+ case "item":
+ case "album":
+ url::redirect($item->abs_url());
+
+ case "group":
+ case "user":
+ default:
+ throw new Kohana_404_Exception();
+ }
+ }
+}
\ No newline at end of file
--
cgit v1.2.3
From 80e35affcb20e9ec1ded7ae2e750444718f8bffe Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Fri, 1 Jan 2010 21:56:29 -0800
Subject: Improve the PHPdoc for map()
We now expect to either get query parameters from the Gallery2 url so
we can pick off g2_itemId, or we'll get the rewrite url in the path
query param.
---
modules/g2_import/controllers/g2.php | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
(limited to 'modules')
diff --git a/modules/g2_import/controllers/g2.php b/modules/g2_import/controllers/g2.php
index f303d604..3e002758 100644
--- a/modules/g2_import/controllers/g2.php
+++ b/modules/g2_import/controllers/g2.php
@@ -21,16 +21,23 @@ class G2_Controller extends Admin_Controller {
/**
* Redirect Gallery 2 urls to their appropriate matching Gallery 3 url.
*
- * Inputs look like this:
- * /g2/map?url=v/Family/Wedding/IMG_3.jpg.html
- * /g2/map?id=1931
+ * We use mod_rewrite to create this path, so Gallery2 urls like this:
+ * /gallery2/v/Family/Wedding.jpg.html
+ * /gallery2/main.php?g2_view=core.ShowItem&g2_itemId=1234
+ *
+ * Show up here like this:
+ * /g2/map?path=v/Family/Wedding.jpg.html
+ * /g2/map?g2_view=core.ShowItem&g2_itemId=1931
*/
public function map() {
$input = Input::instance();
- if ($g2_id = $input->get("id")) {
- $where = array("g2_id", "=", $g2_id);
- } else if ($g2_url = $input->get("url")) {
- $where = array("g2_url", "=", $g2_url);
+ $path = $input->get("path");
+ $id = $input->get("g2_itemId");
+
+ if ($id) {
+ $where = array("g2_id", "=", $id);
+ } else if ($path) {
+ $where = array("g2_url", "=", $path);
} else {
throw new Kohana_404_Exception();
}
--
cgit v1.2.3
From c3075d81815ee059658e5cd29ef849ab194ef0fa Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Fri, 1 Jan 2010 21:58:07 -0800
Subject: Add a code block showing how to add a mod_rewrite block to the old
Gallery2 install to redirect urls to Gallery 3.
---
modules/g2_import/views/admin_g2_import.html.php | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
(limited to 'modules')
diff --git a/modules/g2_import/views/admin_g2_import.html.php b/modules/g2_import/views/admin_g2_import.html.php
index 9a5e3f05..5bac9e9e 100644
--- a/modules/g2_import/views/admin_g2_import.html.php
+++ b/modules/g2_import/views/admin_g2_import.html.php
@@ -26,6 +26,7 @@
+
= $form ?>
if (g2_import::is_initialized()): ?>
@@ -91,6 +92,21 @@
+
+
+
= t("Migrating from Gallery 2") ?>
+
+ = t("Once your migration is complete, put this block at the top of your gallery2/.htaccess file and all Gallery 2 urls will be redirected to Gallery 3") ?>
+
+
+
+ <IfModule mod_rewrite.c>
+ RewriteEngine On
+ RewriteBase = g2_import::$g2_base_url ?>
+ RewriteRule ^(.*)$ = url::site("g2/map?path=\$1") ?> [QSA,L]
+ </IfModule>
+
+
endif ?>
--
cgit v1.2.3
From 0be0111b74c2a971b9c79f1dad29791eabe763b2 Mon Sep 17 00:00:00 2001
From: Bharat Mediratta
Date: Fri, 1 Jan 2010 22:11:08 -0800
Subject: Remove an obsolete todo.
---
modules/g2_import/helpers/g2_import.php | 2 --
1 file changed, 2 deletions(-)
(limited to 'modules')
diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php
index 478fd75d..8724ae50 100644
--- a/modules/g2_import/helpers/g2_import.php
+++ b/modules/g2_import/helpers/g2_import.php
@@ -396,8 +396,6 @@ class g2_import_Core {
$g2_album_id, $album->id,
"album",
self::g2_url(array("view" => "core.ShowItem", "itemId" => $g2_album->getId())));
-
- // @todo import album highlights
}
/**
--
cgit v1.2.3