class MigrateItemJSON in Migrate 7.2
Same name and namespace in other branches
- 6.2 plugins/sources/json.inc \MigrateItemJSON
Implementation of MigrateItem, for retrieving a parsed JSON object given an ID provided by a MigrateList class.
Hierarchy
- class \MigrateItem
- class \MigrateItemJSON
Expanded class hierarchy of MigrateItemJSON
File
- plugins/
sources/ json.inc, line 108 - Support for migration from JSON sources.
View source
class MigrateItemJSON extends MigrateItem {
/**
* A URL pointing to a JSON object containing the data for one item to be
* migrated.
*
* @var string
*/
protected $itemUrl;
protected $httpOptions;
public function __construct($item_url, $http_options = array()) {
parent::__construct();
$this->itemUrl = $item_url;
$this->httpOptions = $http_options;
}
/**
* Implementors are expected to return an object representing a source item.
*
* @param mixed $id
*
* @return stdClass
*/
public function getItem($id) {
$item_url = $this
->constructItemUrl($id);
// Get the JSON object at the specified URL
$json = $this
->loadJSONUrl($item_url);
if ($json) {
return $json;
}
else {
$migration = Migration::currentMigration();
$message = t('Loading of !objecturl failed:', array(
'!objecturl' => $item_url,
));
$migration
->getMap()
->saveMessage(array(
$id,
), $message, MigrationBase::MESSAGE_ERROR);
return NULL;
}
}
/**
* The default implementation simply replaces the :id token in the URL with
* the ID obtained from MigrateListJSON. Override if the item URL is not
* so easily expressed from the ID.
*
* @param mixed $id
*/
protected function constructItemUrl($id) {
$count = is_array($id) ? count($id) : 1;
return preg_replace(array_fill(0, $count, '/:id/'), $id, $this->itemUrl, 1);
}
/**
* Default JSON loader - just pull and decode. This can be overridden for
* preprocessing of JSON (removal of unwanted elements, caching of JSON if the
* source service is slow, etc.)
*/
protected function loadJSONUrl($item_url) {
if (empty($this->httpOptions)) {
$json = file_get_contents($item_url);
}
else {
$response = drupal_http_request($item_url, $this->httpOptions);
$json = $response->data;
}
return json_decode($json);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MigrateItemJSON:: |
protected | property | ||
MigrateItemJSON:: |
protected | property | A URL pointing to a JSON object containing the data for one item to be migrated. | |
MigrateItemJSON:: |
protected | function | The default implementation simply replaces the :id token in the URL with the ID obtained from MigrateListJSON. Override if the item URL is not so easily expressed from the ID. | |
MigrateItemJSON:: |
public | function |
Implementors are expected to return an object representing a source item. Overrides MigrateItem:: |
|
MigrateItemJSON:: |
protected | function | Default JSON loader - just pull and decode. This can be overridden for preprocessing of JSON (removal of unwanted elements, caching of JSON if the source service is slow, etc.) | |
MigrateItemJSON:: |
public | function |
Overrides MigrateItem:: |