? flexiconvert.module.tar_.gz
Index: flexiconvert.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flexiconvert/flexiconvert.module,v
retrieving revision 1.1.1.1.2.6
diff -u -u -r1.1.1.1.2.6 flexiconvert.module
--- flexiconvert.module 11 Oct 2007 21:17:33 -0000 1.1.1.1.2.6
+++ flexiconvert.module 30 Apr 2009 16:17:47 -0000
@@ -5,8 +5,6 @@
*/
function flexiconvert_help($section) {
switch ($section) {
- case 'admin/modules#description':
- return t('Tool to help convert flexinodes to cck nodes');
case 'admin/help#flexiconvert':
return t('Flexiconvert will convert some kinds of flexinode types into cck types.
' .
'Limitations:
' .
@@ -47,37 +45,27 @@
function flexiconvert_form_submit($form_id, $form_values) {
$flexitype = $form_values['flexitype'];
$ccktype = $form_values['ccktype'];
- variable_set( 'flexiconvert_flexitype', $flexitype );
- variable_set( 'flexiconvert_ccktype', $ccktype );
+ variable_set('flexiconvert_flexitype', $flexitype);
+ variable_set('flexiconvert_ccktype', $ccktype);
$flexitype_name = 'flexinode-'. $flexitype;
- drupal_set_message( "Syncing flexinode: $flexitype_name to cck: $ccktype " );
+ drupal_set_message("Syncing flexinode: $flexitype_name to cck: $ccktype ");
- // Map flexinode fields to cck fields
$fields = array();
- $result = db_query( "SELECT field_id, label FROM {flexinode_field} WHERE ctype_id = ". $flexitype );
+ $result = db_query("SELECT field_id, label FROM {flexinode_field} WHERE ctype_id = '%s'", $flexitype);
while( $row = db_fetch_array( $result ) ) {
$label = $row['label'];
$cckfield = strtolower( $label );
- $cckfield = str_replace("(", "", $cckfield);
- $cckfield = str_replace(")", "", $cckfield);
- $cckfield = str_replace("#", "", $cckfield);
- $cckfield = str_replace("/", "", $cckfield);
- $cckfield = str_replace("\\", "", $cckfield);
- $cckfield = 'field_'. str_replace( ' ', '_', $cckfield ); // .'_value';
- $cckfield = substr($cckfield, 0, 31);
-
- $fields[ $row['field_id'] ] = $cckfield;
- drupal_set_message( "Mapping $label (flexifield-".$row['field_id'].") to $cckfield" );
+ $cckfield = 'field_'. str_replace(' ', '_', $cckfield); // .'_value';
+ $fields[ $row['field_id'] ] = $cckfield;
+ drupal_set_message("Mapping $label (flexifield-".$row['field_id'].") to $cckfield");
}
// gather all the field data, ordered per node
$nodes = array();
- foreach( $fields as $flexifield_id => $cckfield ) {
- $sql = "SELECT ff.field_type, fd.nid, fd.textual_data, fd.numeric_data, fd.serialized_data FROM {flexinode_data} fd, {flexinode_field} ff WHERE fd.field_id = $flexifield_id AND fd.field_id = ff.field_id";
- //drupal_set_message( $sql );
- $result = db_query( $sql );
- while( $row = db_fetch_array( $result ) ) {
+ foreach($fields as $flexifield_id => $cckfield) {
+ $result = db_query("SELECT ff.field_type, fd.nid, fd.textual_data, fd.numeric_data, fd.serialized_data FROM {flexinode_data} fd, {flexinode_field} ff WHERE fd.field_id = '%s' AND fd.field_id = ff.field_id", $flexifield_id);
+ while($row = db_fetch_array($result)) {
if ($row['field_type'] == 'textfield' || $row['field_type'] == 'textarea') {
$nodes[ $row['nid'] ][$cckfield]['text'] = $row['textual_data'];
$nodes[ $row['nid'] ][$cckfield]['format'] = $row['numeric_data'];
@@ -91,95 +79,73 @@
else if ($row['field_type'] == 'file') {
$nodes[ $row['nid'] ][$cckfield]['file'] = $row['serialized_data'];
}
- else if ($row['field_type'] == 'email') {
- $nodes[ $row['nid'] ][$cckfield]['email'] = $row['textual_data'];
- }
- else if ($row['field_type'] == 'checkbox' || $row['field_type'] == 'timestamp' || $row['field_type'] == 'select') {
- $nodes[ $row['nid'] ][$cckfield]['number'] = $row['numeric_data'];
- }
//drupal_set_message( 'Nodes['. $row['nid'] . "][$cckfield] = ". $row['textual_data'] );
}
}
- $sql = "SELECT nid, vid FROM {node} WHERE type = '$flexitype_name'";
- // drupal_set_message( $sql );
- $result = db_query( $sql );
+ $result = db_query("SELECT nid, vid FROM {node} WHERE type = '%s'", $flexitype_name);
$count_to_convert = db_num_rows($result);
- drupal_set_message( "There are $count_to_convert items to convert" );
+ drupal_set_message("There are $count_to_convert items to convert");
$fields_str = '';
$count = 0;
- while( $row = db_fetch_array( $result ) ) {
+ while($row = db_fetch_array($result)) {
$count++;
// INSERT flexinode data as rows in cck table
$nid = $row['nid'];
$vid = $row['vid'];
$node = $nodes[$nid];
- $cck_table = "node_$ccktype";
- $sql = "insert into {$cck_table} (nid, vid) value ('$nid', '$vid')";
+ $cck_table = "content_type_" . $ccktype;
//drupal_set_message( "$count: $sql" );
- db_query( $sql );
- foreach( $node as $cckfield => $value ) {
-// db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_value', $value['text'], $nid );
-// if( $value['format'] != 0 ) {
-// db_query( "UPDATE {%s} SET %s = '%d' WHERE nid = %d", $cck_table, $cckfield . '_format', $value['format'], $nid );
- if ( array_key_exists( 'image', $value) ) {
+ db_query("INSERT INTO {%s} (nid, vid) VALUES (%d, %d)", $cck_table, $nid, $vid);
+ foreach($node as $cckfield => $value) {
+ if ($value['image']) {
$file = unserialize($value['image']);
$fid = db_next_id('{files}_fid');
db_query("INSERT into {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s','%s','%s',%d)", $fid, $nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
- db_query( "UPDATE {%s} SET %s = '%s', %s = '%s', %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_fid', $fid, $cckfield . '_title', $file->filename, $cckfield . '_alt', $file->filename, $nid);
+ db_query("UPDATE {%s} SET %s = '%s', %s = '%s', %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_fid', $fid, $cckfield . '_title', $file->filename, $cckfield . '_alt', $file->filename, $nid);
}
- else if (array_key_exists( 'url', $value) ) {
- db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_url', $value['url'], $nid);
+ else if ($value['url']) {
+ db_query("UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_url', $value['url'], $nid);
}
- else if (array_key_exists( 'text', $value)) {
- db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_value', $value['text'], $nid );
+ else if ($value['text']) {
+ db_query("UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_value', $value['text'], $nid);
if( $value['format'] != 0 ) {
- // check to see if the column exists before trying to make it. I know that putting the query in this inner-loop is
- // dreadfully inefficient, but it's easy, and efficiency isn't such a big deal here since the update will only
- // be run once.
- $does_format_col_exist = db_query( "show columns from " . $cck_table . " like '".$cckfield . "_format'" );
- $format_col_exists = db_num_rows($does_format_col_exist);
- if( $format_col_exists ) {
- db_query( "UPDATE {%s} SET %s = '%d' WHERE nid = %d", $cck_table, $cckfield . '_format', $value['format'], $nid );
- }
+ db_query("UPDATE {%s} SET %s = %d WHERE nid = %d", $cck_table, $cckfield . '_format', $value['format'], $nid);
}
}
- else if (array_key_exists( 'file', $value ) ) {
+ else if ($value['file']) {
$file = unserialize($value['file']);
$fid = db_next_id('{files}_fid');
db_query("INSERT into {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s','%s','%s',%d)", $fid, $nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
- db_query( "UPDATE {%s} SET %s = '%s', %s = '%s', %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_fid', $fid, $cckfield . '_description', $file->filename, $cckfield . '_list', 0, $nid);
- }
- else if ($value['email']) {
- db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_email', $value['email'], $nid);
- }
- else if (array_key_exists('number', $value) ) {
- db_query( "UPDATE {%s} SET %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_value', $value['number'], $nid);
+ db_query("UPDATE {%s} SET %s = '%s', %s = '%s', %s = '%s' WHERE nid = %d", $cck_table, $cckfield . '_fid', $fid, $cckfield . '_description', $file->filename, $cckfield . '_list', 0, $nid);
}
}
}
- $result = db_query( "SELECT nid FROM {$cck_table}" );
+ $result = db_query("SELECT nid FROM {%s}", $cck_table);
$count_converted = db_num_rows($result);
- drupal_set_message( "Inserted '$count_converted' items ($count)" );
+ drupal_set_message("Inserted '$count_converted' items ($count)");
if( $count_converted == $count_to_convert ) {
- drupal_set_message( "Yay, all nodes converted" );
+ drupal_set_message("Yay, all nodes converted");
// finally convert the node type fields
- $sql = "UPDATE {node} SET type = '$ccktype' WHERE type = '$flexitype_name'";
- //drupal_set_message( "Not Done: ". $sql );
- db_query( $sql );
+ db_query("UPDATE {node} SET type = '%s' WHERE type = '%s'", $ccktype, $flexitype_name);
+ cache_clear_all(NULL, 'cache_content');
}
else {
- drupal_set_message( "Boo!!");
+ drupal_set_message("Boo!!");
}
}
function flexiconvert_page() {
- drupal_set_title( "Flexiconvert" );
+ drupal_set_title("Flexiconvert");
+ return drupal_get_form('flexiconvert_form');
+}
+
+function flexiconvert_form() {
$types = array();
- $result = db_query( "SELECT name, ctype_id FROM {flexinode_type}" );
- while( $row = db_fetch_array( $result ) ) {
+ $result = db_query("SELECT name, ctype_id FROM {flexinode_type}");
+ while($row = db_fetch_array($result)) {
$types[ $row['ctype_id'] ] = $row['name'];
}
@@ -188,19 +154,19 @@
'#type' => 'select',
'#title' => t('Flexinode to read from'),
'#options' => $types,
- '#default_value' => variable_get( 'flexiconvert_flexitype', NULL ),
+ '#default_value' => variable_get('flexiconvert_flexitype', NULL),
);
$ccktypes = array();
- $result = db_query( "SELECT label, type_name FROM {node_type_content}" );
+ $result = db_query("SELECT type, name FROM {node_type}");
while( $row = db_fetch_array( $result ) ) {
- $ccktypes[ $row['type_name'] ] = $row['label'];
+ $ccktypes[ $row['type'] ] = $row['name'];
}
$form['ccktype'] = array(
'#type' => 'select',
'#title' => t('CCK Type to insert into'),
'#options' => $ccktypes,
- '#default_value' => variable_get( 'flexiconvert_ccktype', NULL ),
+ '#default_value' => variable_get('flexiconvert_ccktype', NULL),
);
$form['submit'] = array(
@@ -208,7 +174,7 @@
'#value' => t('Do It'),
);
- return drupal_get_form('flexiconvert_form', $form);
+ return $form;
}