From 5040adebb5c4e1e491fbb6c3b98783f5809020a3 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Fri, 22 Apr 2011 16:30:37 -0700 Subject: Totally revamp the G2 Import UI to make it sexxxy. Fixes #1683. --- modules/g2_import/helpers/g2_import.php | 21 ++++++++++++++++++++- modules/g2_import/helpers/g2_import_task.php | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 22fb68c6..23fb29e5 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -219,7 +219,7 @@ class g2_import_Core { * Return a set of statistics about the number of users, groups, albums, photos, movies and * comments available for import from the Gallery 2 instance. */ - static function stats() { + static function g2_stats() { global $gallery; $root_album_id = g2(GalleryCoreApi::getDefaultAlbumId()); $stats["users"] = g2(GalleryCoreApi::fetchUserCount()); @@ -247,6 +247,25 @@ class g2_import_Core { return $stats; } + /** + * Return a set of statistics about the number of users, groups, albums, photos, movies and + * comments already imported into the Gallery 3 instance. + */ + static function g3_stats() { + $g3_stats = array( + "album" => 0, "comment" => 0, "item" => 0, "user" => 0, "group" => 0, "tag" => 0); + foreach (db::build() + ->select("resource_type") + ->select(array("C" => 'COUNT("*")')) + ->from("g2_maps") + ->where("resource_type", "IN", array("album", "comment", "item", "user", "group")) + ->group_by("resource_type") + ->execute() as $row) { + $g3_stats[$row->resource_type] = $row->C; + } + return $g3_stats; + } + /** * Import a single group. */ diff --git a/modules/g2_import/helpers/g2_import_task.php b/modules/g2_import/helpers/g2_import_task.php index 6bda8f17..5e908676 100644 --- a/modules/g2_import/helpers/g2_import_task.php +++ b/modules/g2_import/helpers/g2_import_task.php @@ -56,7 +56,7 @@ class g2_import_task_Core { $mode = $task->get("mode"); $queue = $task->get("queue"); if (!isset($mode)) { - $stats = g2_import::stats(); + $stats = g2_import::g2_stats(); $stats["items"] = $stats["photos"] + $stats["movies"]; unset($stats["photos"]); unset($stats["movies"]); -- cgit v1.2.3 From b89c40242f85ecb49393e4fe6aeb3659550f60a4 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 24 Apr 2011 07:49:41 -0700 Subject: Sentence-case the url. Fixes #1706. --- modules/g2_import/helpers/g2_import_event.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import_event.php b/modules/g2_import/helpers/g2_import_event.php index 0e078d08..0afa62d8 100644 --- a/modules/g2_import/helpers/g2_import_event.php +++ b/modules/g2_import/helpers/g2_import_event.php @@ -34,7 +34,7 @@ class g2_import_event_Core { ->get("settings_menu") ->append(Menu::factory("link") ->id("g2_import") - ->label(t("Gallery 2 Import")) + ->label(t("Gallery 2 import")) ->url(url::site("admin/g2_import"))); } } -- cgit v1.2.3 From ea2127c3b2ddef5709e02b4804c074bd1f942159 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 24 Apr 2011 21:02:34 -0700 Subject: Fix a bug introduced in f2477703faa7cd05ff1aa16da3ecef7b666bef40 which was a fix for #1581 that caused us to skip adding highlights for any albums that had no sub-albums. --- modules/g2_import/helpers/g2_import.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 23fb29e5..e9c19c9d 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -518,12 +518,11 @@ class g2_import_Core { static function set_album_highlight(&$queue) { // Dequeue the current album and enqueue its children list($g2_album_id, $children) = each($queue); - if (empty($children)) { - return; - } unset($queue[$g2_album_id]); - foreach ($children as $key => $value) { - $queue[$key] = $value; + if (!empty($children)) { + foreach ($children as $key => $value) { + $queue[$key] = $value; + } } $messages = array(); -- cgit v1.2.3 From 701c1fb12f2f254d8d7e7756a09cb5e825123a2f Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 24 Apr 2011 22:45:45 -0700 Subject: Ignore the presort when transferring over sort orders. Fixes #1710. --- modules/g2_import/helpers/g2_import.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index e9c19c9d..50ab8a23 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -475,9 +475,10 @@ class g2_import_Core { 1 => "ASC", ORDER_ASCENDING => "ASC", ORDER_DESCENDING => "DESC"); - // Only consider G2's first sort order + // G2 sorts can either be or |. Right now we can't + // map presorts so ignore them. $g2_order = explode("|", $g2_album->getOrderBy() . ""); - $g2_order = $g2_order[0]; + $g2_order = end($g2_order); if (empty($g2_order)) { $g2_order = g2(GalleryCoreApi::getPluginParameter('module', 'core', 'default.orderBy')); } -- cgit v1.2.3 From 953be781dc91254599224fa6e95fcc435e787975 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 24 Apr 2011 22:51:14 -0700 Subject: Refactor the meat of g2_import::import_album() off into a separate function so taht we can call it on the root album as well. Fixes --- modules/g2_import/helpers/g2_import.php | 96 +++++++++++++++------------- modules/g2_import/helpers/g2_import_task.php | 6 ++ 2 files changed, 58 insertions(+), 44 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 50ab8a23..22a054ac 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -448,50 +448,8 @@ class g2_import_Core { $album = ORM::factory("item"); $album->type = "album"; $album->parent_id = self::map($g2_album->getParentId()); - $album->name = $g2_album->getPathComponent(); - $album->title = self::_decode_html_special_chars($g2_album->getTitle()); - $album->title or $album->title = $album->name; - $album->description = self::_decode_html_special_chars(self::extract_description($g2_album)); - $album->owner_id = self::map($g2_album->getOwnerId()); - try { - $album->view_count = (int) g2(GalleryCoreApi::fetchItemViewCount($g2_album_id)); - } catch (Exception $e) { - // @todo log - $album->view_count = 0; - } - $album->created = $g2_album->getCreationTimestamp(); - - $order_map = array( - "originationTimestamp" => "captured", - "creationTimestamp" => "created", - "description" => "description", - "modificationTimestamp" => "updated", - "orderWeight" => "weight", - "pathComponent" => "name", - "summary" => "description", - "title" => "title", - "viewCount" => "view_count"); - $direction_map = array( - 1 => "ASC", - ORDER_ASCENDING => "ASC", - ORDER_DESCENDING => "DESC"); - // G2 sorts can either be or |. Right now we can't - // map presorts so ignore them. - $g2_order = explode("|", $g2_album->getOrderBy() . ""); - $g2_order = end($g2_order); - if (empty($g2_order)) { - $g2_order = g2(GalleryCoreApi::getPluginParameter('module', 'core', 'default.orderBy')); - } - $g2_order_direction = explode("|", $g2_album->getOrderDirection() . ""); - $g2_order_direction = $g2_order_direction[0]; - if (empty($g2_order_direction)) { - $g2_order_direction = - g2(GalleryCoreApi::getPluginParameter('module', 'core', 'default.orderDirection')); - } - if (array_key_exists($g2_order, $order_map)) { - $album->sort_column = $order_map[$g2_order]; - $album->sort_order = $direction_map[$g2_order_direction]; - } + + g2_import::set_album_values($album, $g2_album); try { $album->save(); @@ -513,6 +471,56 @@ class g2_import_Core { self::_import_permissions($g2_album, $album); } + /** + * Transfer over all the values from a G2 album to a G3 album. + */ + static function set_album_values($album, $g2_album) { + $album->name = $g2_album->getPathComponent(); + $album->title = self::_decode_html_special_chars($g2_album->getTitle()); + $album->title or $album->title = $album->name; + $album->description = self::_decode_html_special_chars(self::extract_description($g2_album)); + $album->owner_id = self::map($g2_album->getOwnerId()); + try { + $album->view_count = (int) g2(GalleryCoreApi::fetchItemViewCount($g2_album_id)); + } catch (Exception $e) { + // @todo log + $album->view_count = 0; + } + $album->created = $g2_album->getCreationTimestamp(); + + $order_map = array( + "originationTimestamp" => "captured", + "creationTimestamp" => "created", + "description" => "description", + "modificationTimestamp" => "updated", + "orderWeight" => "weight", + "pathComponent" => "name", + "summary" => "description", + "title" => "title", + "viewCount" => "view_count"); + $direction_map = array( + 1 => "ASC", + ORDER_ASCENDING => "ASC", + ORDER_DESCENDING => "DESC"); + // G2 sorts can either be or |. Right now we can't + // map presorts so ignore them. + $g2_order = explode("|", $g2_album->getOrderBy() . ""); + $g2_order = end($g2_order); + if (empty($g2_order)) { + $g2_order = g2(GalleryCoreApi::getPluginParameter('module', 'core', 'default.orderBy')); + } + $g2_order_direction = explode("|", $g2_album->getOrderDirection() . ""); + $g2_order_direction = $g2_order_direction[0]; + if (empty($g2_order_direction)) { + $g2_order_direction = + g2(GalleryCoreApi::getPluginParameter('module', 'core', 'default.orderDirection')); + } + if (array_key_exists($g2_order, $order_map)) { + $album->sort_column = $order_map[$g2_order]; + $album->sort_order = $direction_map[$g2_order_direction]; + } + } + /** * Set the highlight properly for a single album */ diff --git a/modules/g2_import/helpers/g2_import_task.php b/modules/g2_import/helpers/g2_import_task.php index 5e908676..31615a55 100644 --- a/modules/g2_import/helpers/g2_import_task.php +++ b/modules/g2_import/helpers/g2_import_task.php @@ -127,6 +127,12 @@ class g2_import_task_Core { $g2_root_id = g2(GalleryCoreApi::getDefaultAlbumId()); $tree = g2(GalleryCoreApi::fetchAlbumTree()); $task->set("queue", $queue = array($g2_root_id => $tree)); + + // Update the root album to reflect the Gallery2 root album. + $root_album = item::root(); + g2_import::set_album_values( + $root_album, g2(GalleryCoreApi::loadEntitiesById($g2_root_id))); + $root_album->save(); } $log_message = g2_import::import_album($queue); if ($log_message) { -- cgit v1.2.3 From 9e080efff3cf9c706dfb2c69dacc19328196ec01 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 30 Apr 2011 15:43:57 -0700 Subject: Differentiate between invalid, missing and broken G2 configs and present the user with feedback in the form. Fixes #1727. --- modules/g2_import/controllers/admin_g2_import.php | 8 +- modules/g2_import/helpers/g2_import.php | 265 ++++++++++++---------- 2 files changed, 147 insertions(+), 126 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/controllers/admin_g2_import.php b/modules/g2_import/controllers/admin_g2_import.php index 5c4995c9..1a705bea 100644 --- a/modules/g2_import/controllers/admin_g2_import.php +++ b/modules/g2_import/controllers/admin_g2_import.php @@ -78,12 +78,12 @@ class Admin_g2_import_Controller extends Admin_Controller { $embed_path = "$embed_path/embed.php"; } - if (g2_import::is_valid_embed_path($embed_path)) { + if (($g2_init_error = g2_import::is_valid_embed_path($embed_path)) == "ok") { message::success(t("Gallery 2 path saved")); module::set_var("g2_import", "embed_path", $embed_path); url::redirect("admin/g2_import"); } else { - $form->configure_g2_import->embed_path->add_error("invalid", 1); + $form->configure_g2_import->embed_path->add_error($g2_init_error, 1); } } @@ -120,6 +120,10 @@ class Admin_g2_import_Controller extends Admin_Controller { ->value($embed_path); $group->embed_path->error_messages( "invalid", t("The path you entered is not a Gallery 2 installation.")); + $group->embed_path->error_messages( + "broken", t("Your Gallery 2 install isn't working properly. Please verify it!")); + $group->embed_path->error_messages( + "missing", t("The path you entered does not exist.")); $group->submit("")->value($embed_path ? t("Change") : t("Continue")); return $form; } diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 22a054ac..3606c7ef 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -31,7 +31,7 @@ class g2_import_Core { } static function is_initialized() { - return g2_import::$init; + return g2_import::$init == "ok"; } static function init() { @@ -52,146 +52,163 @@ class g2_import_Core { if (file_exists($mod_path)) { dir::unlink($mod_path); } - return file_exists($embed_path) && g2_import::init_embed($embed_path); + return g2_import::init_embed($embed_path); } /** * Initialize the embedded Gallery 2 instance. Call this before any other Gallery 2 calls. + * + * Return values: + * "ok" - the Gallery 2 install is fine + * "missing" - the embed path does not exist + * "invalid" - the install path is not a valid Gallery 2 code base + * "broken" - the embed path is correct, but the Gallery 2 install is broken */ static function init_embed($embed_path) { if (!is_file($embed_path)) { - return false; + return "missing"; } - // Gallery 2 defines a class called Gallery. So does Gallery 3. They don't get along. So do - // a total hack here and copy over a few critical files (embed.php, main.php, bootstrap.inc - // and Gallery.class) and munge them so that we can rename the Gallery class to be - // G2_Gallery. Is this retarded? Why yes it is. - // - // Store the munged files in a directory that's the md5 hash of the embed path so that - // multiple import sources don't interfere with each other. - - $mod_path = VARPATH . "modules/g2_import/" . md5($embed_path); - if (!file_exists($mod_path) || !file_exists("$mod_path/embed.php")) { - @dir::unlink($mod_path); - mkdir($mod_path); - - $config_dir = dirname($embed_path); - if (filesize($embed_path) > 200) { - // Regular install - $base_dir = $config_dir; - } else { - // Multisite install. Line 2 of embed.php will be something like: - // require('/usr/home/bharat/public_html/gallery2/embed.php'); - $lines = file($embed_path); - preg_match("#require\('(.*)/embed.php'\);#", $lines[2], $matches); - $base_dir = $matches[1]; + try { + // Gallery 2 defines a class called Gallery. So does Gallery 3. They don't get along. So do + // a total hack here and copy over a few critical files (embed.php, main.php, bootstrap.inc + // and Gallery.class) and munge them so that we can rename the Gallery class to be + // G2_Gallery. Is this retarded? Why yes it is. + // + // Store the munged files in a directory that's the md5 hash of the embed path so that + // multiple import sources don't interfere with each other. + + $mod_path = VARPATH . "modules/g2_import/" . md5($embed_path); + if (!file_exists($mod_path) || !file_exists("$mod_path/embed.php")) { + @dir::unlink($mod_path); + mkdir($mod_path); + + $config_dir = dirname($embed_path); + if (filesize($embed_path) > 200) { + // Regular install + $base_dir = $config_dir; + } else { + // Multisite install. Line 2 of embed.php will be something like: + // require('/usr/home/bharat/public_html/gallery2/embed.php'); + $lines = file($embed_path); + preg_match("#require\('(.*)/embed.php'\);#", $lines[2], $matches); + $base_dir = $matches[1]; + } + + file_put_contents( + "$mod_path/embed.php", + str_replace( + array( + "require_once(dirname(__FILE__) . '/modules/core/classes/GalleryDataCache.class');", + "require(dirname(__FILE__) . '/modules/core/classes/GalleryEmbed.class');"), + array( + "require_once('$base_dir/modules/core/classes/GalleryDataCache.class');", + "require('$base_dir/modules/core/classes/GalleryEmbed.class');"), + array_merge( + array("\n"), + file("$base_dir/embed.php")))); + + file_put_contents( + "$mod_path/main.php", + str_replace( + array( + "include(dirname(__FILE__) . '/bootstrap.inc');", + "require_once(dirname(__FILE__) . '/init.inc');"), + array( + "include(dirname(__FILE__) . '/bootstrap.inc');", + "require_once('$base_dir/init.inc');"), + array_merge( + array("\n"), + file("$base_dir/main.php")))); + + file_put_contents( + "$mod_path/bootstrap.inc", + str_replace( + array( + "require_once(dirname(__FILE__) . '/modules/core/classes/Gallery.class');", + "require_once(dirname(__FILE__) . '/modules/core/classes/GalleryDataCache.class');", + "define('GALLERY_CONFIG_DIR', dirname(__FILE__));", + "\$gallery =& new Gallery();", + "\$GLOBALS['gallery'] =& new Gallery();", + "\$gallery = new Gallery();"), + array( + "require_once(dirname(__FILE__) . '/Gallery.class');", + "require_once('$base_dir/modules/core/classes/GalleryDataCache.class');", + "define('GALLERY_CONFIG_DIR', '$config_dir');", + "\$gallery =& new G2_Gallery();", + "\$GLOBALS['gallery'] =& new G2_Gallery();", + "\$gallery = new G2_Gallery();"), + array_merge( + array("\n"), + file("$base_dir/bootstrap.inc")))); + + file_put_contents( + "$mod_path/Gallery.class", + str_replace( + array("class Gallery", + "function Gallery"), + array("class G2_Gallery", + "function G2_Gallery"), + array_merge( + array("\n"), + file("$base_dir/modules/core/classes/Gallery.class")))); + } else { + // Ok, this is a good one. If you're running a bytecode accelerator and you move your + // Gallery install, these files sometimes get cached with the wrong path and then fail to + // load properly. + // Documented in https://sourceforge.net/apps/trac/gallery/ticket/1253 + touch("$mod_path/embed.php"); + touch("$mod_path/main.php"); + touch("$mod_path/bootstrap.inc"); + touch("$mod_path/Gallery.class.inc"); + } + + require("$mod_path/embed.php"); + if (!class_exists("GalleryEmbed")) { + return "invalid"; } - file_put_contents( - "$mod_path/embed.php", - str_replace( - array( - "require_once(dirname(__FILE__) . '/modules/core/classes/GalleryDataCache.class');", - "require(dirname(__FILE__) . '/modules/core/classes/GalleryEmbed.class');"), - array( - "require_once('$base_dir/modules/core/classes/GalleryDataCache.class');", - "require('$base_dir/modules/core/classes/GalleryEmbed.class');"), - array_merge(array("\n"), - file("$base_dir/embed.php")))); - - file_put_contents( - "$mod_path/main.php", - str_replace( - array( - "include(dirname(__FILE__) . '/bootstrap.inc');", - "require_once(dirname(__FILE__) . '/init.inc');"), - array( - "include(dirname(__FILE__) . '/bootstrap.inc');", - "require_once('$base_dir/init.inc');"), - array_merge(array("\n"), - file("$base_dir/main.php")))); - - file_put_contents( - "$mod_path/bootstrap.inc", - str_replace( - array("require_once(dirname(__FILE__) . '/modules/core/classes/Gallery.class');", - "require_once(dirname(__FILE__) . '/modules/core/classes/GalleryDataCache.class');", - "define('GALLERY_CONFIG_DIR', dirname(__FILE__));", - "\$gallery =& new Gallery();", - "\$GLOBALS['gallery'] =& new Gallery();", - "\$gallery = new Gallery();"), - array("require_once(dirname(__FILE__) . '/Gallery.class');", - "require_once('$base_dir/modules/core/classes/GalleryDataCache.class');", - "define('GALLERY_CONFIG_DIR', '$config_dir');", - "\$gallery =& new G2_Gallery();", - "\$GLOBALS['gallery'] =& new G2_Gallery();", - "\$gallery = new G2_Gallery();"), - array_merge(array("\n"), - file("$base_dir/bootstrap.inc")))); - - file_put_contents( - "$mod_path/Gallery.class", - str_replace( - array("class Gallery", - "function Gallery"), - array("class G2_Gallery", - "function G2_Gallery"), - array_merge(array("\n"), - file("$base_dir/modules/core/classes/Gallery.class")))); - } else { - // Ok, this is a good one. If you're running a bytecode accelerator and you move your - // Gallery install, these files sometimes get cached with the wrong path and then fail to - // load properly. - // Documented in https://sourceforge.net/apps/trac/gallery/ticket/1253 - touch("$mod_path/embed.php"); - touch("$mod_path/main.php"); - touch("$mod_path/bootstrap.inc"); - touch("$mod_path/Gallery.class.inc"); - } - - require("$mod_path/embed.php"); - if (!class_exists("GalleryEmbed")) { - return false; - } - - $ret = GalleryEmbed::init(); - if ($ret) { - Kohana_Log::add("error", "Gallery 2 call failed with: " . $ret->getAsText()); - return false; - } - - $admin_group_id = g2(GalleryCoreApi::getPluginParameter("module", "core", "id.adminGroup")); - $admins = g2(GalleryCoreApi::fetchUsersForGroup($admin_group_id, 1)); - $admin_id = current(array_flip($admins)); - $admin = g2(GalleryCoreApi::loadEntitiesById($admin_id)); - $GLOBALS["gallery"]->setActiveUser($admin); + $ret = GalleryEmbed::init(); + if ($ret) { + Kohana_Log::add("error", "Gallery 2 call failed with: " . $ret->getAsText()); + return "broken"; + } - // 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")); + $admin_group_id = g2(GalleryCoreApi::getPluginParameter("module", "core", "id.adminGroup")); + $admins = g2(GalleryCoreApi::fetchUsersForGroup($admin_group_id, 1)); + $admin_id = current(array_flip($admins)); + $admin = g2(GalleryCoreApi::loadEntitiesById($admin_id)); + $GLOBALS["gallery"]->setActiveUser($admin); - if (empty($g2_embed_location)) { + // 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.galleryLocation")); - g2(GalleryCoreApi::setPluginParameter( - "module", "rewrite", "modrewrite.embeddedLocation", $g2_embed_location)); - g2($gallery->getStorage()->checkPoint()); - } + 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()); + } - if ($g2_embed_location) { - self::$g2_base_url = $g2_embed_location; - } else { - self::$g2_base_url = $GLOBALS["gallery"]->getUrlGenerator()->generateUrl( - array(), - array("forceSessionId" => false, - "htmlEntities" => false, - "urlEncode" => false, - "useAuthToken" => false)); + if ($g2_embed_location) { + self::$g2_base_url = $g2_embed_location; + } else { + self::$g2_base_url = $GLOBALS["gallery"]->getUrlGenerator()->generateUrl( + array(), + array("forceSessionId" => false, + "htmlEntities" => false, + "urlEncode" => false, + "useAuthToken" => false)); + } + } catch (ErrorException $e) { + Kohana_Log::add("error", $e->getMessage() . "\n" . $e->getTraceAsString()); + return "broken"; } - return true; + return "ok"; } /** -- cgit v1.2.3 From 68370b92f5f6fa68744655f8c68b4b0ca59bf4fd Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 2 May 2011 21:36:17 -0700 Subject: Map the G2 album highlight thumbnail derivative id to the G3 album's thumbnail. Fixes #1729. --- modules/g2_import/helpers/g2_import.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 3606c7ef..c79a8d36 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -560,7 +560,7 @@ class g2_import_Core { $table = g2(GalleryCoreApi::fetchThumbnailsByItemIds(array($g2_album_id))); if (isset($table[$g2_album_id])) { // Backtrack the source id to an item - $g2_source = $table[$g2_album_id]; + $orig_g2_source = $g2_source = $table[$g2_album_id]; while (GalleryUtilities::isA($g2_source, "GalleryDerivative")) { $g2_source = g2(GalleryCoreApi::loadEntitiesById($g2_source->getDerivativeSourceId())); } @@ -584,6 +584,11 @@ class g2_import_Core { array("name" => $g3_album->name)), $e); } + + self::set_map( + $orig_g2_source->getId(), $g3_album->id, + "thumbnail", + self::g2_url(array("view" => "core.DownloadItem", "itemId" => $orig_g2_source->getId()))); } } } -- cgit v1.2.3 From 784ebe75321304fe3f83cddaf3cb1030410fb5ed Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 22 May 2011 21:24:27 -0700 Subject: Leave the "updated" field alone when importing comments so that if Akismet marks them as spam, we don't immediately flush them out of the database on the next visit to Admin > Content > Comments. Also warn the user about Akismet, and fix up the G2 import code to reimport deleted comments. --- modules/g2_import/controllers/admin_g2_import.php | 5 +++++ modules/g2_import/helpers/g2_import.php | 26 ++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/controllers/admin_g2_import.php b/modules/g2_import/controllers/admin_g2_import.php index 1a705bea..4c8af852 100644 --- a/modules/g2_import/controllers/admin_g2_import.php +++ b/modules/g2_import/controllers/admin_g2_import.php @@ -60,6 +60,11 @@ class Admin_g2_import_Controller extends Admin_Controller { array("url" => url::site("admin/modules"), "module_id" => $module_id))); } } + if (module::is_active("akismet")) { + message::warning( + t("The Akismet module may mark some or all of your imported comments as spam. Deactivate it to avoid that outcome.", + array("url" => url::site("admin/modules")))); + } } else if (g2_import::is_configured()) { $view->content->form->configure_g2_import->embed_path->add_error("invalid", 1); } diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index c79a8d36..5c690da4 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -908,9 +908,14 @@ class g2_import_Core { array("id" => $g2_comment_id, "exception" => (string)$e)); } - if (self::map($g2_comment->getId())) { - // Already imported - return; + if ($id = self::map($g2_comment->getId())) { + if (ORM::factory("comment", $id)->loaded()) { + // Already imported and still exists + return; + } + // This comment was already imported, but now it no longer exists. Import it again, per + // ticket #1736. + self::clear_map($g2_comment_id); } $item_id = self::map($g2_comment->getParentId()); @@ -948,10 +953,11 @@ class g2_import_Core { self::set_map($g2_comment->getId(), $comment->id, "comment"); // Backdate the creation date. We can't do this at creation time because - // Comment_Model::save() will override it. + // Comment_Model::save() will override it. Leave the updated date alone + // so that if the comments get marked as spam, they don't immediately get + // flushed (see ticket #1736) db::update("comments") ->set("created", $g2_comment->getDate()) - ->set("updated", $g2_comment->getDate()) ->where("id", "=", $comment->id) ->execute(); } @@ -1306,6 +1312,16 @@ class g2_import_Core { self::$map[$g2_id] = $g3_id; } + /** + * Remove all map entries associated with the given Gallery 2 id. + */ + static function clear_map($g2_id) { + db::build() + ->delete("g2_maps") + ->where("g2_id", "=", $g2_id) + ->execute(); + } + static function log($msg) { message::warning($msg); Kohana_Log::add("alert", $msg); -- cgit v1.2.3 From f567bdde2817a52afbd436421b61adad8f4a9fd8 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 22 May 2011 21:36:16 -0700 Subject: Clear any existing, matching g2_map rows before mapping new rows. This is an extra query, but should keep duplicate rows out of the database and let new rows supercede old ones. Fixes #1737. --- modules/g2_import/helpers/g2_import.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'modules/g2_import/helpers') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 5c690da4..8a5d2c5f 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -915,7 +915,6 @@ class g2_import_Core { } // This comment was already imported, but now it no longer exists. Import it again, per // ticket #1736. - self::clear_map($g2_comment_id); } $item_id = self::map($g2_comment->getParentId()); @@ -1298,6 +1297,7 @@ class g2_import_Core { * Associate a Gallery 2 id with a Gallery 3 item id. */ static function set_map($g2_id, $g3_id, $resource_type, $g2_url=null) { + self::clear_map($g2_id, $resource_type); $g2_map = ORM::factory("g2_map"); $g2_map->g3_id = $g3_id; $g2_map->g2_id = $g2_id; @@ -1315,10 +1315,11 @@ class g2_import_Core { /** * Remove all map entries associated with the given Gallery 2 id. */ - static function clear_map($g2_id) { + static function clear_map($g2_id, $resource_type) { db::build() ->delete("g2_maps") ->where("g2_id", "=", $g2_id) + ->where("resource_type", "=", $resource_type) ->execute(); } -- cgit v1.2.3