Installation:
- Save to below script to the root of your Elgg install as importelgg.php
- Change the bits in bold to suit your environment.
- Log into your elgg site as the user you want to upload as then browse to the script.
Code:
<?php
// Modified from edit.php from Elgg doc’s by John McLear – www.mclear.co.uk
set_time_limit(0); // We dont want the script to time out
require_once ‘engine/start.php’;
// Load configuration
global $CONFIG;
$dbhost = ‘localhost‘; // The MySql Hostname
$dbuser = ‘root‘; // MySQL Username
$dbpass = ‘yourpassword‘; // MySQL Password
$conn = mysql_connect($dbhost, $dbuser, $dbpass, TRUE) or die (‘Error connecting to mysql’); // TRUE so we dont overwrite connection
$dbname2 = ‘mydatabase‘; // The databasename
mysql_select_db($dbname2);
$sql=”SELECT title,contents FROM pages“; // Get the content from the source database
$result=mysql_query($sql);
// Go through the records and create what you need from that
while ($row=mysql_fetch_array($result)) {
$title=$row[“title“]; //Set the title value from the mysql title field
$content=$row[“contents“]; // Same as above but for contents
gatekeeper();
set_context(‘pages’);
// Get group fields
$input = array();
foreach($CONFIG->pages as $shortname => $valuetype) {
$input[$shortname] = get_input($shortname);
if ($valuetype == ‘tags’)
$input[$shortname] = string_to_tag_array($input[$shortname]);
}
// Get parent
$parent_guid = (int)get_input(‘parent_guid’, 0);
// New or old?
$page = NULL;
$pages_guid = (int)get_input(‘pages_guid’);
if ($pages_guid)
{
$page = get_entity($pages_guid);
if (!$page->canEdit())
$page = NULL; // if we can’t edit it, go no further.
}
else
{
$page = new ElggObject();
if (!$parent_guid)
$page->subtype = ‘page_top’;
else
$page->subtype = ‘page’;
// New instance, so set container_guid
$container_guid = get_input(‘container_guid’,’8849‘); // Set the container GUID to a static user
$page->container_guid = $container_guid;
}
// Have we got it? Can we edit it?
if ($page instanceof ElggObject)
{
// Save fields – note we always save latest description as both description and annotation
if (sizeof($input) > 0)
{
foreach($input as $shortname => $value) {
if ((!$pages_guid) || (($pages_guid) && ($shortname != ‘title’)))
$page->$shortname = $value;
}
}
// Validate create
$page->title = $title;
if (!$page->title)
{
register_error(elgg_echo(“pages:notitle”));
forward($_SERVER[‘HTTP_REFERER’]);
exit;
}
// Access ids (Make it public)
$page->access_id = 2;
// Get the content
$page->description = $content;
// Write access id (Make it public)
$page->write_access_id = 2;
// Set parent
$page->parent_guid = $parent_guid;
// Ensure ultimate owner
$page->owner_guid = ($page->owner_guid ? $page->owner_guid : $_SESSION[‘user’]->guid);
// finally save
if ($page->save())
{
// Now save description as an annotation
$page->annotate(‘page’, $page->description, $page->access_id);
system_message(elgg_echo(“pages:saved”));
//add to river
add_to_river(‘river/object/page’,’create’,$_SESSION[‘user’]->guid,$page->guid);
echo “$title – DONE<br/>”;
}
else
register_error(elgg_echo(‘pages:notsaved’));
}
else
{
register_error(elgg_echo(“pages:noaccess”));
}
usleep(250000); // Just a little rest not to be overspammy
}
?>