uuid_path.module in Universally Unique IDentifier 7
UUID path module functions.
File
uuid_path/uuid_path.moduleView source
<?php
/**
* @file
* UUID path module functions.
*/
/**
* Implements hook_entity_uuid_load().
*/
function uuid_path_entity_uuid_load(&$entities, $entity_type) {
_uuid_path_load_url_aliases($entities, $entity_type);
}
/**
* Implements hook_entity_uuid_save().
*/
function uuid_path_entity_uuid_save(&$entity, $entity_type) {
_uuid_path_save_url_aliases($entity, $entity_type);
}
/**
* Loads url aliases in the corresponding entity.
*/
function _uuid_path_load_url_aliases(&$entities, $entity_type) {
$info = entity_get_info($entity_type);
// We only care about entities with URLs.
if (!isset($info['uri callback'])) {
return;
}
$callback = $info['uri callback'];
foreach ($entities as $id => $entity) {
$path = $callback($entity);
$aliases = _uuid_path_url_alias_load($path['path']);
// Ignore local IDs.
foreach ($aliases as &$alias) {
unset($alias->pid);
unset($alias->source);
}
$entities[$id]->url_alias = $aliases;
}
}
/**
* Saves the received url aliases.
*/
function _uuid_path_save_url_aliases(&$entity, $entity_type) {
$info = entity_get_info($entity_type);
// We only care when there is a url callback.
if (!isset($info['uri callback'])) {
return FALSE;
}
$callback = $info['uri callback'];
$uri = $callback($entity);
$path = $uri['path'];
// Delete existing aliases.
path_delete(array(
'source' => $path,
));
// Continue if aliases are present.
if (empty($entity->url_alias)) {
return FALSE;
}
foreach ($entity->url_alias as $alias) {
$entry = (array) $alias;
$entry['source'] = $path;
path_save($entry);
}
}
/**
* Loads all aliases associated with a path.
*
* @param string $path
* The source path to look up.
*
* @return array
* Array of paths or NULL if none found.
*/
function _uuid_path_url_alias_load($path) {
return db_select('url_alias')
->condition('source', $path)
->fields('url_alias')
->execute()
->fetchAll(PDO::FETCH_OBJ);
}
Functions
Name | Description |
---|---|
uuid_path_entity_uuid_load | Implements hook_entity_uuid_load(). |
uuid_path_entity_uuid_save | Implements hook_entity_uuid_save(). |
_uuid_path_load_url_aliases | Loads url aliases in the corresponding entity. |
_uuid_path_save_url_aliases | Saves the received url aliases. |
_uuid_path_url_alias_load | Loads all aliases associated with a path. |