class MigrateDestinationVotingapi in Migrate Extras 7.2
Same name and namespace in other branches
- 6.2 votingapi.inc \MigrateDestinationVotingapi
Destination class for the votingapi_vote table.
Hierarchy
- class \MigrateDestination
- class \MigrateDestinationVotingapi
Expanded class hierarchy of MigrateDestinationVotingapi
File
- ./
votingapi.inc, line 12 - VotingAPI module integration
View source
class MigrateDestinationVotingapi extends MigrateDestination {
public function __toString() {
return t('votingapi');
}
/**
* An array with content ids of imported votes. Used for recalculating results.
*/
var $importedIds = array();
public static function getKeySchema() {
return array(
'vote_id' => array(
'type' => 'int',
'not null' => TRUE,
),
);
}
/**
* Delete the provided votes and recalculate the results.
*
* @param $id
* IDs to be deleted.
*/
public function bulkRollback(array $ids) {
migrate_instrument_start(__METHOD__);
foreach ($ids as $id) {
$votes[]['vote_id'] = $id;
}
votingapi_delete_votes($votes);
// foreach($votes as $vote) {
// votingapi_recalculate_results($vote['content_type'], $vote['content_id'], TRUE);
// }
migrate_instrument_stop(__METHOD__);
}
/**
* Import a single vote.
*
* @param $entity
* Object object to build. Prefilled with any fields mapped in the Migration.
* @param $row
* Raw source data object - passed through to prepare/complete handlers.
* @return array
* Array of key fields of the object that was saved if
* successful. FALSE on failure.
*/
public function import(stdClass $entity, stdClass $row) {
$this
->prepare($entity, $row);
// Votes have to be assigned to an entity.
if (empty($entity->entity_id)) {
watchdog('VotingAPI Import', 'Skipped import due to empty entity_id for vote import: @serial', array(
'@serial' => json_encode($row),
), WATCHDOG_ERROR);
return FALSE;
}
if (isset($entity->timestamp)) {
$entity->timestamp = Migration::timestamp($entity->timestamp);
}
// Just converting $entity to an array doesn't work...
$vote = array();
$vote['entity_type'] = $entity->entity_type;
$vote['entity_id'] = $entity->entity_id;
$vote['value_type'] = $entity->value_type;
$vote['value'] = $entity->value;
$vote['uid'] = $entity->uid;
$vote['tag'] = $entity->tag;
$vote['timestamp'] = $entity->timestamp;
$vote['vote_source'] = $entity->vote_source;
votingapi_add_votes($vote);
if (isset($vote[0]['vote_id'])) {
$entity->vote_id = $vote[0]['vote_id'];
$this
->complete($entity, $row);
$this->importedIds[$entity->entity_type][] = $entity->entity_id;
return array(
$entity->vote_id,
);
}
else {
return FALSE;
}
}
/**
* We're done with importing votes, recalculate the results.
*/
function postImport() {
foreach ($this->importedIds as $entity_type => $entity_ids) {
$this->importedIds = array_unique($this->importedIds);
foreach ($entity_ids as $entity_id) {
votingapi_recalculate_results($entity_type, $entity_id, TRUE);
}
}
}
/**
* Returns a list of fields available to be mapped/
*
* @return array
* Keys: machine names of the fields (to be passed to addFieldMapping)
* Values: Human-friendly descriptions of the fields.
*/
public function fields() {
return array(
'vote_id' => 'Vote ID',
'entity_type' => "Entity Type (defaults to 'node')",
'entity_id' => 'Entity ID',
'value' => 'Numeric vote value',
'value_type' => "Value type (percent/points, defaults to 'percent')",
'tag' => "Tag (defaults to 'vote')",
'uid' => 'User ID',
'timestamp' => 'Timestamp',
'vote_source' => 'Vote Source IP Address',
);
}
/**
* Give handlers a shot at modifying the object before saving it.
*
* @param $entity
* Entity object to build. Prefilled with any fields mapped in the Migration.
* @param $source_row
* Raw source data object - passed through to prepare handlers.
*/
public function prepare(stdClass $entity, stdClass $source_row) {
$migration = Migration::currentMigration();
$entity->migrate = array(
'machineName' => $migration
->getMachineName(),
);
// Call any prepare handler for this specific Migration.
if (method_exists($migration, 'prepare')) {
$migration
->prepare($entity, $source_row);
}
}
/**
* Give handlers a shot at modifying the object (or taking additional action)
* after saving it.
*
* @param $object
* Entity object to build. This is the complete object after saving.
* @param $source_row
* Raw source data object - passed through to complete handlers.
*/
public function complete(stdClass $entity, stdClass $source_row) {
$migration = Migration::currentMigration();
// Call any complete handler for this specific Migration.
if (method_exists($migration, 'complete')) {
$migration
->complete($entity, $source_row);
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MigrateDestination:: |
protected | property | Maintain stats on the number of destination objects created or updated. | |
MigrateDestination:: |
protected | property | ||
MigrateDestination:: |
public | function | ||
MigrateDestination:: |
public | function | ||
MigrateDestination:: |
public | function | Reset numCreated and numUpdated back to 0. | |
MigrateDestination:: |
public | function | Null constructor | 7 |
MigrateDestinationVotingapi:: |
property | An array with content ids of imported votes. Used for recalculating results. | ||
MigrateDestinationVotingapi:: |
public | function | Delete the provided votes and recalculate the results. | |
MigrateDestinationVotingapi:: |
public | function | Give handlers a shot at modifying the object (or taking additional action) after saving it. | |
MigrateDestinationVotingapi:: |
public | function |
Returns a list of fields available to be mapped/ Overrides MigrateDestination:: |
|
MigrateDestinationVotingapi:: |
public static | function | ||
MigrateDestinationVotingapi:: |
public | function |
Import a single vote. Overrides MigrateDestination:: |
|
MigrateDestinationVotingapi:: |
function | We're done with importing votes, recalculate the results. | ||
MigrateDestinationVotingapi:: |
public | function | Give handlers a shot at modifying the object before saving it. | |
MigrateDestinationVotingapi:: |
public | function |
Derived classes must implement __toString(). Overrides MigrateDestination:: |