Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Here are two different scripts for converting weburl fields in 4.7 up to 5.
Submitted by Nilard:
Here is my way of converting weburl fields. First, you should create a link field named 'link', then run the following script:
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
drupal_bootstrap(DRUPAL_BOOTSTRAP_CONFIGURATION);
$result = db_query("SELECT nid FROM {node}");
while($node = db_fetch_object($result)) {
$node = node_load($node->nid);
if (empty($node->field_link)) {
$weburl = db_result(db_query("SELECT field_weburl FROM {node_field_weburl_data} WHERE nid = %d", $node->nid));
if (!empty($weburl)) {
$node->field_link[0]['url'] = $weburl;
$node->field_link[0]['title'] = $node->title;
node_save($node);
}
}
}
Submitted by reikiman (note that this is a pure PHP script and not a "Drupal" script):
if ($db = mysql_connect('dbhost', 'username', 'pass')) {
mysql_select_db('dbname');
$result = mysql_query('SELECT node.nid as nid, node_field_weburl_data.field_weburl as field_weburl, node.title as title FROM node, node_field_weburl_data WHERE node.nid = node_field_weburl_data.nid', $db);
while ($row = mysql_fetch_assoc($result)) {
if ($res2 = mysql_query('SELECT nid FROM content_type_content_website WHERE nid = '.$row['nid'])) {
if (mysql_num_rows($res2) > 0) {
$query = sprintf("UPDATE content_type_content_website SET field_url_0_url = '%s', field_url_0_title = '%s' WHERE nid = %d",
mysql_real_escape_string($row['field_weburl'], $db),
mysql_real_escape_string($row['title'], $db),
$row['nid']);
mysql_query($query, $db);
} else {
$query = sprintf("INSERT INTO content_type_content_website (vid, nid, field_url_0_url, field_url_0_title, field_url_0_attributes) "
." VALUES(%d,%d,'%s','%s','N;')",
$row['nid'], $row['nid'],
mysql_real_escape_string($row['field_weburl'], $db),
mysql_real_escape_string($row['title'], $db));
mysql_query($query, $db);
}
}
}
}