Jump to content

Move content from blogs to database


Recommended Posts

17 minutes ago, Ryan Ashbrook said:

Unfortunately, there is no functionality to do this in the software at this time.

I see your post saying there is no such solution at all is marked as a solution. That is both funny and sad.

Link to comment
Share on other sites

1 hour ago, virap1 said:

I see your post saying there is no such solution at all is marked as a solution. That is both funny and sad.

Keep in mind, it is the answer to your question pertaining to our core software we're going with here. Of course, that may not be a resolution to your problem. I have unmarked the solution and moved this to our Community Support forum as it is moving towards a custom resolution.

Link to comment
Share on other sites

So tried to see if I can use the Rest api to get the blog records and move them to the database, but I am getting "401 Unauthorized" error saying

"errorCode": "3S290\/9",

"errorMessage": "INVALID_ACCESS_TOKEN"

Here is the base php code

<?php

// IPB REST API settings
$api_url = 'https://your-forum-url.com/api/rest/';
$api_key = 'your-api-key';

// Set up the API request
$request_url = $api_url . 'blog/posts?sortField=date&sortOrder=asc&limit=1';
$request_headers = [
    'Authorization: Bearer ' . $api_key,
    'Content-Type: application/json',
];

// Send the API request
$ch = curl_init($request_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

// Check for errors
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
} else {
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code !== 200) {
        echo 'Error: API returned HTTP code ' . $http_code;
    } else {
        // Parse the API response
        $posts = json_decode($response, true);

        // Display the oldest post data
        $oldest_post = $posts['results'][0];
        echo '<h1>' . $oldest_post['title'] . '</h1>';
        echo '<p>' . $oldest_post['content'] . '</p>';
    }
}

// Clean up
curl_close($ch);

 

Link to comment
Share on other sites

49 minutes ago, Adriano Faria said:

I’m not 100% sure of this but I think I have a converter for this task.

I’ll reply back tomorrow in the morning after confirming.

 

48 minutes ago, virap1 said:

Thank you Adriano 

FYI, the converter I may have, beyond copying the entry into a record, it also take care of comments, reactions and followers.

Link to comment
Share on other sites

I've been trying for some while now to do this and was hoping Adriano had a plugin to do it!

My members have not used Blogs for several years, but of the 30 or so blogs with 400 comments, I really wanted to preserve a few from members who have passed away or where they were behind-the-scenes-style community project blogs.

I've had mixed results with RSS, as some RSS feeds don't include the formatting and of course, you lose the associated comments, tags and reactions. I didn't try REST API for this but I did use that to convert from IPS Gallery to WordPress Gallery which worked fine for my needs.

I've just started getting familiar with GraphQL which seems useful.

I know it's a one-time conversion to move Blogs to Pages, but Adriano if you have an existing solution that would be a big time saver.

Link to comment
Share on other sites

17 hours ago, virap1 said:

So tried to see if I can use the Rest api to get the blog records and move them to the database, but I am getting "401 Unauthorized" error saying

"errorCode": "3S290\/9",

"errorMessage": "INVALID_ACCESS_TOKEN"

If you get your key working, you may not need this but I had a similar difficulty and found that it was easier to Authorize the requests by sending the API key as the key parameter in the request, a key locked down to the server by IP in IPS.

Also to avoid "PHP Warning:  parse_url() expects parameter 1 to be string, array given", the request needs to be a concatenated string, not an array.

$request = $communityUrl . $endpoint . "?key=". $apiKey;

 

Link to comment
Share on other sites

17 hours ago, virap1 said:
$api_url = 'https://your-forum-url.com/api/rest/';

The endpoint might not be correct, I used /api/core/hello for example but we were on 4.3 back then.

// Test Connection to IPS REST API and display response
		function invTest_ipsHelloTest_shortcode (){

	// Authorize the requests by sending the API key as the key parameter in the request. Locked down to server by IP in IPS.
		
		$communityUrl = 'https://example.com/mycommunity';
		
		$apiKey = 'hfquhgfhwuhguwhruggqwrhghwrhg blah';

      $endpoint = '/api/core/hello';
      
	// NB To avoid "PHP Warning:  parse_url() expects parameter 1 to be string, array given", the request needs to be a concatenated string not an array! GS

      $request = $communityUrl . $endpoint . "?key=". $apiKey;

	// GET the remote request headers and body
		$response = wp_remote_get( $request );

	// GET just the remote response body
		$response_body = wp_remote_retrieve_body( $response );

	// GET the remote response code and message
		$http_code = wp_remote_retrieve_response_code( $response );
		$http_message = wp_remote_retrieve_response_message( $response );


	// Check for error
		if ( is_wp_error( $response ) ) {
		return sprintf( 'Oops. The URL %1s could not be retrieved.', $request );
	}
	
	// return something if not an error
		if ( ! is_wp_error( $response )  ) {


	// Uncomment to debug and show headers and body

	return $results = '<pre>' . print_r($response, true) . '</pre>';

	// Uncomment to debug and show just the body!

	// return $results = '<pre>' . print_r($response_body, true) . '</pre>';

	// Uncomment to debug and show the status code e.g. int(200)
	// return $http_code.'&nbsp;'.$http_message;

	}

}

 

Edited by The Old Man
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...