--- original/gallery_assist.module 2010-02-16 15:20:15.000000000 +0100 +++ patched/gallery_assist.module 2010-02-16 15:22:09.000000000 +0100 @@ -1374,6 +1374,9 @@ function gallery_assist_insert(&$node) { * Implementation of hook_update(). */ function gallery_assist_update($node) { + if (arg(2) == 'revisions' && (arg(4) == 'revert' || arg(4) == 'delete')) { + return; + } // Get data from principal gallery (the origen node from the translation) // in_profile-, comments- and show_title-changes affecting the gallery and its dependencies $q = db_query("SELECT gid, gref, lang FROM {gallery_assist} WHERE ref = %d", $node->ref); @@ -1771,24 +1774,31 @@ function gallery_assist_save(&$node) { */ function gallery_assist_delete(&$node) { global $user; - - $galleries = db_result(db_query("SELECT count(*) FROM {gallery_assist} WHERE ref = %d", $node->ref)); - - if ($galleries == 1 and count($node->gallitems) > 0) { - foreach ($node->gallitems as $pid => $item) { - db_query("DELETE FROM {files} WHERE fid = %d", $item->fid); - db_query("DELETE FROM {gallery_assist_item} WHERE pid = %d", $pid); - db_query("DELETE FROM {gallery_assist_translated} WHERE pid = %d", $pid); - gallery_assist_delete_items($item); - } - - gallery_assist_delete_directory(variable_get('gallery_assist_directory', file_directory_path() .'/gallery_assist') .'/'. $node->uid .'/'. $node->ganame); + if (arg(2) == 'revisions' && (arg(4) == 'revert' || arg(4) == 'delete')) { + return; } else { - db_query("DELETE FROM {gallery_assist_translated} WHERE gref = %d and lang = '%s'", $node->gref, $node->language); + if (user_access('delete own gallery_assist content', $user) || + user_access('delete any gallery_assist content', $user) || + user_access('delete own gallery_assist_'. $node->type .' content', $user) || + user_access('delete any gallery_assist_'. $node->type .' content', $user)) { + if ($galleries == 1 and count($node->gallitems) > 0) { + foreach ($node->gallitems as $pid => $item) { + db_query("DELETE FROM {files} WHERE fid = %d", $item->fid); + db_query("DELETE FROM {gallery_assist_item} WHERE pid = %d", $pid); + db_query("DELETE FROM {gallery_assist_translated} WHERE pid = %d", $pid); + gallery_assist_delete_items($item); + } + + gallery_assist_delete_directory(variable_get('gallery_assist_directory', file_directory_path() .'/gallery_assist') .'/'. $node->uid .'/'. $node->ganame); + } + else { + db_query("DELETE FROM {gallery_assist_translated} WHERE gref = %d and lang = '%s'", $node->gref, $node->language); + } + + db_query("DELETE FROM {gallery_assist} WHERE nid = %d", $node->nid); + } } - - db_query("DELETE FROM {gallery_assist} WHERE nid = %d", $node->nid); } /**