123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- /**
- * @file
- * Import User Relationships.
- */
- /**
- * Destination class implementing migration into user_relationships table.
- */
- class MigrateDestinationUserRelationships extends MigrateDestination {
- protected $typeID;
- protected $typeName;
- /**
- * Construct a destination for the specified user relationship type. Interprets
- * the type as a type name - if that fails, assumes it's a type ID (rtid).
- *
- * @param mixed $type_name
- * Name of a user relationship type, or its rtid.
- */
- public function __construct($type_name) {
- parent::__construct();
- $type = user_relationships_type_load(array('name' => $type_name));
- if ($type) {
- $this->typeName = $type_name;
- $this->typeID = $type->rtid;
- }
- else {
- $type = user_relationships_type_load($type_name);
- $this->typeName = $type->name;
- $this->typeID = $type_name;
- }
- }
- static public function getKeySchema() {
- return array(
- 'rid' => array(
- 'type' => 'int',
- 'not null' => TRUE,
- 'description' => 'Relationship ID',
- ),
- );
- }
- /**
- * Delete a membership.
- *
- * @param $id
- * ID to be deleted.
- */
- public function rollback(array $id) {
- migrate_instrument_start(__METHOD__);
- if ($relationship = user_relationships_load(array('rid' => $id['destid1']))) {
- $account = new stdClass;
- user_relationships_delete_relationship(current($relationship), $account);
- }
- migrate_instrument_stop(__METHOD__);
- }
- /**
- * Import a single membership.
- *
- * @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) {
- // Normalize to unix timestamps.
- foreach (array('created_at', 'updated_at') as $property) {
- if (isset($entity->$property)) {
- $entity->$property = Migration::timestamp($entity->$property);
- }
- }
- $entity->rtid = $this->typeID;
- $op = isset($entity->op) ? $entity->op : 'approve';
- if ($saved = user_relationships_save_relationship($entity, $op)) {
- return array($saved->rid);
- }
- }
- public function fields() {
- return array(
- 'rid' => 'Relationship ID',
- 'requester_id' => 'User ID of relationship requestor',
- 'requestee_id' => 'User ID of relationship requestee',
- 'approved' => 'Whether the requestee approved the relationship',
- 'created_at' => 'Timestamp when the relationship was created',
- 'updated_at' => 'Timestamp when the relationship was last updated',
- 'flags' => 'UR_OK (0) or UR_BANNED (1)',
- 'op' => 'Default value is \'approve\'. Sent as second param to user_relationships_save_relationship().'
- );
- }
- public function __toString() {
- return t('User relationship type: !type', array('!type' => $this->typeName));
- }
- }
|