I am developing a module for migrating data from html file to drupal node. Each Html file is having 500+ logs. I want to create node for each log record. I have started development of module as it is explained in DRPAL DOCUMENTATION i.e.: https://www.drupal.org/node/2029713/
But I am not getting exact solution for resolving it. Getting this error:
An AJAX HTTP error occurred. HTTP Result Code: 500 Debugging information follows. Path: /batch?id=40&op=do StatusText: Service unavailable (with message) ResponseText: PDOException: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '/Chat Log - 07:01:2014.html' for column 'sourceid1' at row 1: INSERT INTO {migrate_map_alertnodemigrate} (sourceid1, needs_update, rollback_action) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2); Array ( [:db_insert_placeholder_0] => /Chat Log - 07:01:2014.html [:db_insert_placeholder_1] => 3 [:db_insert_placeholder_2] => 0 ) in MigrateSQLMap->saveIDMapping() (line 337 of /data/disk/o1/static/chartz_2/sites/all/modules/contrib/migrate/plugins/sources/sqlmap.inc).
Here is my code for this:
class AlertNodeMigration extends Migration {
public function __construct($arguments)
{
parent::__construct();
// SOURCE OBJECT
$directories = array('/data/disk/o1/static/chat_log/html');
$base_dir = '/data/disk/o1/static/chat_log/html';
$regex = '/(.*\.htm$|.*\.html$)/i';
$list_files = new MigrateListFiles($directories, $base_dir, $regex);
$item_file = new MigrateItemFile($base_dir);
$fields = array(
'title' => t('Node: Title'),
'uid' => t('Node: User Id'),
'created' => t('Node: Created Timestamp'),
'changed' => t('Node: Modified timestamp'),
'status' => t('Node: Published'),
'promote' => t('Node: Promoted to front page'),
'sticky' => t('Node: Sticky at top of lists'),
'revision' => t('Node: Create new revision'),
'log' => t('Node: Revision Log message'),
'language' => t('Node: Language (fr, en, ...)'),
'tnid' => t('Node: The translation set id for this node'),
'translate' => t('Node: A boolean indicating whether this translation page needs to be updated'),
'revision_uid' => t('Node: Modified (uid)'),
'is_new' => t('Option: Indicates a new node with the specified nid should be created'),
'field_instrument' => t('Field: Instrument (entityreference)'),
'field_alert' => t('Field: Alert (text_long)'),
'field_alert:language' => t('Subfield: Language for the field'),
'field_sentiment_analysis' => t('Field: Sentiment Analysis (list_text)'),
'field_tags' => t('Field: Tags (taxonomy_term_reference)'),
'field_tags:source_type' => t('Option: Set to \'tid\' when the value is a source ID'),
'field_tags:create_term' => t('Option: Set to TRUE to create referenced terms when necessary'),
'field_tags:ignore_case' => t('Option: Set to TRUE to ignore case differences between source data and existing term names'),
'field_source' => t('Field: Source (list_text)'),
'path' => t('Node: Path alias'),
'comment' => t('Whether comments may be posted to the node')
);
$this->team = array(new MigrateTeamMember('alertnode', '[email protected]', t('Implementor')));
$this->description = t('Alert Node Migration');
$this->source = new MigrateSourceList($list_files, $item_file, $fields);
// DESTINATION Object
$this->destination = new MigrateDestinationNode('alert');
// MAP OBJECT
$this->map = new MigrateSQLMap($this->machineName,
array(
'sourceid' => array('type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
)
),
MigrateDestinationNode::getKeySchema()
);
// FIELD MAPPING OBJECT
$this->addFieldMapping('title', 'title');
$this->addFieldMapping('uid', 'uid');
$this->addFieldMapping('created', 'created');
$this->addFieldMapping('changed', 'changed');
$this->addFieldMapping('status', 'status');
$this->addFieldMapping('promote', 'promote');
$this->addFieldMapping('sticky', 'sticky');
$this->addFieldMapping('revision', 'revision');
$this->addFieldMapping('log', 'log');
$this->addFieldMapping('language', 'language');
$this->addFieldMapping('tnid', 'tnid');
$this->addFieldMapping('translate', 'translate');
$this->addFieldMapping('revision_uid', 'revision_uid');
$this->addFieldMapping('is_new', 'is_new');
$this->addFieldMapping('field_instrument', 'field_instrument');
$this->addFieldMapping('field_alert', 'field_alert');
$this->addFieldMapping('field_alert:language', 'field_alert:language');
$this->addFieldMapping('field_sentiment_analysis', 'field_sentiment_analysis');
$this->addFieldMapping('field_tags', 'field_tags');
$this->addFieldMapping('field_tags:source_type', 'field_tags:source_type');
$this->addFieldMapping('field_tags:create_term', 'field_tags:create_term');
$this->addFieldMapping('field_tags:ignore_case', 'field_tags:ignore_case');
$this->addFieldMapping('field_source', 'field_source');
$this->addFieldMapping('path', 'path');
$this->addFieldMapping('comment', 'comment');
}
public function prepareRow($row)
{
return true;
}
public function prepare($node, stdClass $row) {
// Set to admin for now.
$node->uid = 1;
// Create a new SourceParser to handle HTML content.
$source_parser = new SourceParser(substr($row->sourceid, 1), $row->filedata);
$alerthtml = $source_parser->parse_alert_html($row->html);
$node->title = $alerthtml['title']; // Node: Title
$node->uid = '1'; //Node: User Id
$node->created = $alerthtml['timestamp']; //Node: Created Timestamp
$node->changed = '0'; //Node: Modified timestamp
$node->status = 'published'; //Node: Published
$node->promote = '0'; //Node: Promoted to front page
$node->sticky = '0'; //Node: Sticky at top of lists
$node->revision = '0'; //Node: Create new revision
$row->log = '0'; //Node: Revision Log message
$node->language = 'en'; //Node: Language (fr, en, ...)
$node->tnid = '0'; //Node: The translation set id for this node
$node->translate = '0'; //Node: A boolean indicating whether this translation page
$node->revision_uid = '1'; //Node: Modified (uid)
$node->is_new = '1'; //Option: Indicates a new node with the specified nid
$node->field_instrument = $alerthtml['inst'];//Field: Instrument (entityreference)
$node->field_alert = $alerthtml['alert_text'];//Field: Alert (text_long)
$node->field_alert['language'] = 'en'; //Subfield: Language for the field
$node->field_sentiment_analysis = 'positive';//Field: Sentiment Analysis (list_text)
$node->field_tags = '0'; //Field: Tags (taxonomy_term_reference)
$node->field_tags['source_type'] = $alerthtml['src_typ'];//Option: Set to \'tid\' when the value is a source ID
$node->field_tags['create_term'] = $alerthtml['term'];//Option: Set to TRUE to create referenced terms
$node->field_tags['ignore_case'] = $alerthtml['ignr'];//Option: Set to TRUE to ignore case differences
$node->field_source = $alerthtml['src']; //Field: Source (list_text)
$node->path = $alerthtml['title']; //Node: Path alias
$node->comment = $alerthtml['comments']; //Whether comments may be posted to the node
}
}
Is anyone can help me ? Thanks in advance.