Example #1
0
/**
 * Utility function used by import_entity_plugin_hook() to
 * process an ODDEntity into an unsaved ElggEntity.
 *
 * @param ODDEntity $element The OpenDD element
 *
 * @return ElggEntity the unsaved entity which should be populated by items.
 * @todo Remove this.
 * @access private
 */
function oddentity_to_elggentity(ODDEntity $element)
{
    $class = $element->getAttribute('class');
    $subclass = $element->getAttribute('subclass');
    // See if we already have imported this uuid
    $tmp = get_entity_from_uuid($element->getAttribute('uuid'));
    if (!$tmp) {
        // Construct new class with owner from session
        $classname = get_subtype_class($class, $subclass);
        if ($classname != "") {
            if (class_exists($classname)) {
                $tmp = new $classname();
                if (!$tmp instanceof ElggEntity) {
                    $msg = elgg_echo('ClassException:ClassnameNotClass', array($classname, get_class()));
                    throw new ClassException($msg);
                }
            } else {
                error_log(elgg_echo('ClassNotFoundException:MissingClass', array($classname)));
            }
        } else {
            switch ($class) {
                case 'object':
                    $tmp = new ElggObject($row);
                    break;
                case 'user':
                    $tmp = new ElggUser($row);
                    break;
                case 'group':
                    $tmp = new ElggGroup($row);
                    break;
                case 'site':
                    $tmp = new ElggSite($row);
                    break;
                default:
                    $msg = elgg_echo('InstallationException:TypeNotSupported', array($class));
                    throw new InstallationException($msg);
            }
        }
    }
    if ($tmp) {
        if (!$tmp->import($element)) {
            $msg = elgg_echo('ImportException:ImportFailed', array($element->getAttribute('uuid')));
            throw new ImportException($msg);
        }
        return $tmp;
    }
    return NULL;
}
Example #2
0
/**
 *  Handler called by trigger_plugin_hook on the "import" event.
 *
 * @param string $hook        volatile
 * @param string $entity_type metadata
 * @param string $returnvalue Return value from previous hook
 * @param array  $params      The parameters
 *
 * @return null
 * @elgg_plugin_hook_handler volatile metadata
 * @todo investigate more.
 * @throws ImportException
 * @access private
 * @deprecated 1.9
 */
function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
{
    $element = $params['element'];
    $tmp = NULL;
    if ($element instanceof ODDMetaData) {
        /* @var ODDMetaData $element */
        // Recall entity
        $entity_uuid = $element->getAttribute('entity_uuid');
        $entity = get_entity_from_uuid($entity_uuid);
        if (!$entity) {
            throw new \ImportException("Entity '" . $entity_uuid . "' could not be found.");
        }
        oddmetadata_to_elggextender($entity, $element);
        // Save
        if (!$entity->save()) {
            $attr_name = $element->getAttribute('name');
            $msg = "There was a problem updating '" . $attr_name . "' on entity '" . $entity_uuid . "'";
            throw new \ImportException($msg);
        }
        return true;
    }
}
Example #3
0
 /**
  * Import a relationship
  *
  * @param ODD $data ODD data
  * @return bool
  * @throws ImportException
  */
 public function import(ODD $data)
 {
     if (!$data instanceof ODDRelationship) {
         throw new InvalidParameterException(elgg_echo('InvalidParameterException:UnexpectedODDClass'));
     }
     $uuid_one = $data->getAttribute('uuid1');
     $uuid_two = $data->getAttribute('uuid2');
     // See if this entity has already been imported, if so then we need to link to it
     $entity1 = get_entity_from_uuid($uuid_one);
     $entity2 = get_entity_from_uuid($uuid_two);
     if ($entity1 && $entity2) {
         // Set the item ID
         $this->attributes['guid_one'] = $entity1->getGUID();
         $this->attributes['guid_two'] = $entity2->getGUID();
         // Map verb to relationship
         //$verb = $data->getAttribute('verb');
         //$relationship = get_relationship_from_verb($verb);
         $relationship = $data->getAttribute('type');
         if ($relationship) {
             $this->attributes['relationship'] = $relationship;
             // save
             $result = $this->save();
             if (!$result) {
                 throw new ImportException(elgg_echo('ImportException:ProblemSaving', array(get_class())));
             }
             return true;
         }
     }
 }
Example #4
0
/**
 *  Handler called by trigger_plugin_hook on the "import" event.
 *
 * @param string $hook        volatile
 * @param string $entity_type metadata
 * @param string $returnvalue Return value from previous hook
 * @param array  $params      The parameters
 *
 * @return null
 * @elgg_plugin_hook_handler volatile metadata
 * @todo investigate more.
 * @throws ImportException
 * @access private
 */
function import_extender_plugin_hook($hook, $entity_type, $returnvalue, $params)
{
    $element = $params['element'];
    $tmp = NULL;
    if ($element instanceof ODDMetaData) {
        /* @var ODDMetaData $element */
        // Recall entity
        $entity_uuid = $element->getAttribute('entity_uuid');
        $entity = get_entity_from_uuid($entity_uuid);
        if (!$entity) {
            throw new ImportException(elgg_echo('ImportException:GUIDNotFound', array($entity_uuid)));
        }
        oddmetadata_to_elggextender($entity, $element);
        // Save
        if (!$entity->save()) {
            $attr_name = $element->getAttribute('name');
            $msg = elgg_echo('ImportException:ProblemUpdatingMeta', array($attr_name, $entity_uuid));
            throw new ImportException($msg);
        }
        return true;
    }
}
Example #5
0
 /**
  * Import a relationship
  *
  * @param ODD $data ODD data
  * @return bool
  * @throws ImportException|InvalidParameterException
  * @deprecated 1.9
  */
 public function import(ODD $data)
 {
     elgg_deprecated_notice(__METHOD__ . ' has been deprecated', 1.9);
     if (!$data instanceof ODDRelationship) {
         throw new \InvalidParameterException("import() passed an unexpected ODD class");
     }
     $uuid_one = $data->getAttribute('uuid1');
     $uuid_two = $data->getAttribute('uuid2');
     // See if this entity has already been imported, if so then we need to link to it
     $entity1 = get_entity_from_uuid($uuid_one);
     $entity2 = get_entity_from_uuid($uuid_two);
     if ($entity1 && $entity2) {
         // Set the item ID
         $this->attributes['guid_one'] = $entity1->getGUID();
         $this->attributes['guid_two'] = $entity2->getGUID();
         // Map verb to relationship
         //$verb = $data->getAttribute('verb');
         //$relationship = get_relationship_from_verb($verb);
         $relationship = $data->getAttribute('type');
         if ($relationship) {
             $this->attributes['relationship'] = $relationship;
             // save
             $result = $this->save();
             if (!$result) {
                 throw new \ImportException("There was a problem saving " . get_class());
             }
             return true;
         }
     }
     return false;
 }