class views_plugin_row_rdf_node in Views Atom 7
Same name and namespace in other branches
- 6 views/views_plugin_row_rdf_node.inc \views_plugin_row_rdf_node
Plugin which performs a node_view on the resulting object and formats it as an RSS item.
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_row
- class \views_plugin_row_rdf
- class \views_plugin_row_rdf_node
- class \views_plugin_row_rdf
- class \views_plugin_row
- class \views_plugin
Expanded class hierarchy of views_plugin_row_rdf_node
1 string reference to 'views_plugin_row_rdf_node'
- views_atom_views_plugins in ./
views_atom.views.inc - Implements hook_views_plugins().
File
- ./
views_plugin_row_rdf_node.inc, line 12 - Contains the RDF row style plugin.
View source
class views_plugin_row_rdf_node extends views_plugin_row_rdf {
// Basic properties that let the row style follow relationships.
var $base_table = 'node';
var $base_field = 'nid';
function render($row) {
// For the most part, this code is taken from node_feed() in node.module
global $base_url;
$nid = $row->{$this->field_alias};
if (!is_numeric($nid)) {
return;
}
if (!empty($this->view->views_atom_nodes[$nid])) {
$node = $this->view->views_atom_nodes[$nid];
}
else {
$node = node_load($nid);
}
// Allow other modules to modify the node before we start serializing it.
module_invoke_all('views_atom_prerender', $node);
module_invoke_all('views_atom_prerender_node', $node);
// We need to start with a DOMDocument because SimpleXML's namespace handling
// is abysmal. Fortunately we can swap back and forth as needed.
// @todo: Add more common namespaces here if needed.
$dom = new DOMDocument('1.0');
$rdf_xml = $dom
->createElementNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'rdf:RDF');
$dom
->appendChild($rdf_xml);
// Get a SimpleXML version of the object for serious manipulation, since
// its API is much easier to work with.
$xml = simplexml_import_dom($dom);
// Create the base entity element that wraps all Drupal data objects.
$entity_xml = $xml
->addChild('entity', NULL, 'http://drupal.org/');
// Node type is more generically "bundle", at least in Drupal 7 speak.
$entity_xml
->addAttribute('type', 'node');
$entity_xml
->addAttribute('bundle', check_plain($node->type));
$entity_xml
->addChild('title', views_atom_sanitize($node->title));
// Properties are primitive data associated with the entity. These are
// standard by entity type. Those all get wrapped in a <properties> element.
$properties_xml = $entity_xml
->addChild('properties');
// Since we don't have a complete map of available properties, we'll just
// treat any primitive values on the node object as properties. That will
// get more than we need, but it works well enough.
foreach ($node as $property => $value) {
// @todo, reexamine the use of empty() here. I've had to add the check for '0'
if (is_scalar($value) && (!empty($value) || $value === '0')) {
// We want to map the date fields to Atom/RDF format properly. The others
// we'll just send along as is.
if (in_array($property, array(
'created',
'changed',
))) {
$properties_xml
->addChild($property, date('c', $value));
}
else {
$properties_xml
->addChild($property, views_atom_sanitize($value));
}
}
}
// Allow other modules the opportunity to get in on the XML conversion action.
module_invoke_all('views_atom_render', $node, $entity_xml);
module_invoke_all('views_atom_render_node', $entity_xml);
drupal_alter('views_atom_render_rdf', $entity_xml, $node);
// Force pretty formatting to make debugging easier. It doesn't actually
// affect parsing. Note that because all objects in PHP are references
// this $dom variable still has all of the changes made above using SimpleXML.
// That's neat.
$dom->formatOutput = TRUE;
// This is stupid and bad, but I don't know of another way to supress the
// <?xml crap.
// @todo Find a better way to not get the XML declaration in the output.
$output = $dom
->saveXML();
return str_replace('<?xml version="1.0"?>' . "\n", '', $output);
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
views_object:: |
public | property | Handler's definition. | |
views_object:: |
public | property | Except for displays, options for the object will be held here. | 1 |
views_object:: |
function | Collect this handler's option definition and alter them, ready for use. | ||
views_object:: |
public | function | Views handlers use a special construct function. | 4 |
views_object:: |
public | function | Destructor. | 2 |
views_object:: |
public | function | 1 | |
views_object:: |
public | function | ||
views_object:: |
public | function | Always exports the option, regardless of the default value. | |
views_object:: |
public | function | Set default options on this object. | 1 |
views_object:: |
public | function | Set default options. | |
views_object:: |
public | function | Let the handler know what its full definition is. | |
views_object:: |
public | function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | |
views_object:: |
public | function | Unpack a single option definition. | |
views_object:: |
public | function | Unpacks each handler to store translatable texts. | |
views_object:: |
public | function | ||
views_plugin:: |
public | property | The current used views display. | |
views_plugin:: |
public | property | The plugin name of this plugin, for example table or full. | |
views_plugin:: |
public | property | The plugin type of this plugin, for example style or query. | |
views_plugin:: |
public | property |
The top object of a view. Overrides views_object:: |
1 |
views_plugin:: |
public | function | Provide a list of additional theme functions for the theme info page. | |
views_plugin:: |
public | function | Return the human readable name of the display. | |
views_plugin:: |
public | function | Returns the summary of the settings in the display. | 8 |
views_plugin:: |
public | function | Provide a full list of possible theme templates used by this style. | |
views_plugin:: |
public | function | Validate that the plugin is correct and can be saved. | 3 |
views_plugin_row:: |
public | function | 2 | |
views_plugin_row:: |
public | function |
Provide a form for setting options. Overrides views_plugin:: |
9 |
views_plugin_row:: |
public | function |
Perform any necessary changes to the form values prior to storage.
There is no need for this function to actually store the data. Overrides views_plugin:: |
1 |
views_plugin_row:: |
public | function |
Validate the options form. Overrides views_plugin:: |
|
views_plugin_row:: |
public | function |
Information about options for all kinds of purposes will be held here. Overrides views_object:: |
9 |
views_plugin_row:: |
public | function | Allow the style to do stuff before each row is rendered. | 5 |
views_plugin_row:: |
public | function |
Add anything to the query that we might need to. Overrides views_plugin:: |
|
views_plugin_row:: |
public | function | ||
views_plugin_row_rdf_node:: |
property |
Overrides views_plugin_row_rdf:: |
||
views_plugin_row_rdf_node:: |
property |
Overrides views_plugin_row_rdf:: |
||
views_plugin_row_rdf_node:: |
function |
Render a row object. This usually passes through to a theme template
of some form, but not always. Overrides views_plugin_row_rdf:: |