summaryrefslogtreecommitdiffstats
path: root/apps/bookmarks
diff options
context:
space:
mode:
authorTom Needham <needham.thomas@gmail.com>2012-03-10 15:52:38 +0000
committerTom Needham <needham.thomas@gmail.com>2012-03-10 15:52:38 +0000
commit3ca76d24a9b27101661c454be84c7126315315d6 (patch)
treeb9c3b505694a5a73bc89357b95e00eb6515691be /apps/bookmarks
parentc3dfcc5b21620476b6e5bf356b42aee9f0da5874 (diff)
downloadnextcloud-server-3ca76d24a9b27101661c454be84c7126315315d6.tar.gz
nextcloud-server-3ca76d24a9b27101661c454be84c7126315315d6.zip
Add OC_Migrate::copyRows() method
Diffstat (limited to 'apps/bookmarks')
-rw-r--r--apps/bookmarks/lib/migrate.php89
1 files changed, 32 insertions, 57 deletions
diff --git a/apps/bookmarks/lib/migrate.php b/apps/bookmarks/lib/migrate.php
index f50a8c46334..7d8ad8bfc53 100644
--- a/apps/bookmarks/lib/migrate.php
+++ b/apps/bookmarks/lib/migrate.php
@@ -2,73 +2,48 @@
class OC_Migrate_Provider_Bookmarks extends OC_Migrate_Provider{
// Create the xml for the user supplied
- function export($uid){
+ function export( $uid ){
- $bookmarks = array();
-
- $query = OC_DB::prepare("SELECT * FROM *PREFIX*bookmarks WHERE *PREFIX*bookmarks.user_id = ?");
- $bookmarksdata =& $query->execute(array($uid));
- // Foreach bookmark
- while ($row = $bookmarksdata->fetchRow()) {
-
- // Get the tags
- $query = OC_DB::prepare("SELECT * FROM *PREFIX*bookmarks_tags WHERE *PREFIX*bookmarks_tags.bookmark_id = ?");
- $tagsdata =& $query->execute(array($row['id']));
+ $options = array(
+ 'table'=>'bookmarks',
+ 'matchcol'=>'user_id',
+ 'matchval'=>$uid,
+ 'idcol'=>'id'
+ );
+ $ids = OC_Migrate::copyRows( $options );
- $tags = array();
- // Foreach tag
- while ($row = $tagsdata->fetchRow()) {
- $tags[] = $row['tag'];
- }
-
- $bookmarks[] = array(
- 'url' => $row['url'],
- 'title' => $row['title'],
- 'public' => $row['public'],
- 'added' => $row['added'],
- 'lastmodified' => $row['lastmodified'],
- 'clickcount' => $row['clickcount'],
- 'tags' => $tags
- );
-
- }
+ $options = array(
+ 'table'=>'bookmarks_tags',
+ 'matchcol'=>'id',
+ 'matchval'=>$ids
+ );
- return array('bookmarks' => $bookmarks);
+ // Export tags
+ OC_Migrate::copyRows( $options );
}
// Import function for bookmarks
- function import($data,$uid){
+ function import( $data, $uid ){
+
+ // new id mapping
+ $newids = array();
+
+ // Import bookmarks
+ foreach($data['bookmarks'] as $bookmark){
+ $bookmark['user_id'] = $uid;
+ // import to the db now
+ $newids[$bookmark['id']] = OC_DB::insertid();
+ }
- // Different import code for different versions of the app
- switch($data['info']['version']){
- default:
- // Foreach bookmark
- foreach($data['data']['bookmarks'] as $bookmark){
-
- $query = OC_DB::prepare( "INSERT INTO `*PREFIX*bookmarks` ( `url`, `title`, `user_id`, `public`, `added`, `lastmodified`, `clickcount` ) VALUES( ?, ?, ?, ?, ?, ?, ? )" );
- $result = $query->execute( array(
- $bookmark['url'],
- $bookmark['title'],
- $uid,
- $bookmark['public'],
- $bookmark['added'],
- $bookmark['lastmodified'],
- $bookmark['clickcount']
- ) );
- // Now add the tags
- $id = OC_DB::insertid();
- foreach($bookmark['tags'] as $tag){
- $query = OC_DB::prepare( "INSERT INTO `*PREFIX*bookmarks_tags` ( `id`, `tag` ) VALUES( ?, ? )" );
- $result = $query->execute( array( $id, $tag));
- }
-
- }
- break;
+ // Import tags
+ foreach($data['bookmarks_tags'] as $tag){
+ // Map the new ids
+ $tag['id'] = $newids[$tag['id']];
+ // Import to the db now using OC_DB
}
- // Finished import
}
}
-new OC_Migrate_Provider_Bookmarks('bookmarks'); \ No newline at end of file
+new OC_Migrate_Provider_Bookmarks( 'bookmarks' ); \ No newline at end of file