class views_plugin_display_services in Services Views 7
The plugin that handles a Services callback.
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_display
- class \views_plugin
Expanded class hierarchy of views_plugin_display_services
2 string references to 'views_plugin_display_services'
- services_views_form_views_ui_config_item_form_alter in ./
services_views.module - Alter form views_ui_config_item_form.
- services_views_views_plugins in ./
services_views.module - Implements hook_views_plugins().
File
- includes/
views/ views_plugin_display_services.inc, line 13 - Contains the page display plugin.
View source
class views_plugin_display_services extends views_plugin_display {
/**
* {@inheritdoc}
*/
public function has_path() {
return TRUE;
}
/**
* {@inheritdoc}
*/
public function option_definition() {
$options = parent::option_definition();
$options['path'] = array(
'default' => '',
);
return $options;
}
/**
* {@inheritdoc}
*/
public function execute() {
if (!$this
->access()) {
global $user;
module_load_include('inc', 'services', 'includes/services.runtime');
return services_error(t('Access denied for user @user', array(
'@user' => isset($user->name) ? $user->name : 'anonymous',
)), 401);
}
// Prior to this being called, the $view should already be set to this
// display, and arguments should be set on the view.
$this->view
->build();
// Execute a view.
$this->view
->execute();
foreach ($this->view->field as $field) {
$field
->pre_render($this->view->result);
}
// Render the fields.
if (isset($this->view->style_plugin)) {
$this->view->style_plugin
->render_fields($this->view->result);
}
// Map fields.
$result = array();
foreach ($this->view->result as $row_id => $item) {
$new_item = new stdClass();
foreach ($this->view->field as $field_name => $field) {
// Skip this field?
if (isset($field->options['exclude']) && $field->options['exclude'] == TRUE) {
continue;
}
// Make sure new keys are alphanumerical, underscore and dash.
$custom_key = !empty($field->options['label']) && preg_match('/^[0-9A-Za-z_-]*$/', $field->options['label']) ? $field->options['label'] : FALSE;
if (isset($item->{$field->field_alias})) {
$key = $custom_key ? $custom_key : $field->field_alias;
$new_item->{$key} = $item->{$field->field_alias};
}
elseif (!empty($this->view->style_plugin->rendered_fields[$row_id][$field_name])) {
$key = $custom_key ? $custom_key : $field_name;
$new_item->{$key} = $this->view->style_plugin->rendered_fields[$row_id][$field_name];
}
}
if (!empty($new_item)) {
$result[] = $new_item;
}
}
return $result;
}
/**
* {@inheritdoc}
*/
public function render() {
return $this
->execute();
}
/**
* {@inheritdoc}
*/
public function preview() {
module_load_include('resource.inc', 'services_views');
return '<pre>' . json_encode(services_views_execute_view(NULL, $this->view, $this->display->id), JSON_PRETTY_PRINT) . '</pre>';
}
/**
* Provide the summary for page options in the views UI.
*
* This output is returned as an array.
*/
public function options_summary(&$categories, &$options) {
// It is very important to call the parent function here:
parent::options_summary($categories, $options);
$categories['page'] = array(
'title' => t('Services settings'),
'column' => 'second',
'build' => array(
'#weight' => -10,
),
);
$path = strip_tags('/' . $this
->get_option('path'));
if (empty($path)) {
$path = t('None');
}
$options['path'] = array(
'category' => 'page',
'title' => t('Path'),
'value' => views_ui_truncate($path, 24),
);
}
/**
* Provide the default form for setting options.
*/
public function options_form(&$form, &$form_state) {
// It is very important to call the parent function here:
parent::options_form($form, $form_state);
switch ($form_state['section']) {
case 'path':
$form['#title'] .= t('Path of the Services resource');
$form['#help_topic'] = 'path';
$form['path'] = array(
'#type' => 'textfield',
'#description' => t('This is path element that comes after endpoint path.'),
'#default_value' => $this
->get_option('path'),
);
}
}
/**
* {@inheritdoc}
*/
public function options_validate(&$form, &$form_state) {
// It is very important to call the parent function here.
parent::options_validate($form, $form_state);
if ($form_state['section'] == 'path') {
if (preg_match('/[^a-zA-Z0-9-_]+/', $form_state['values']['path'])) {
form_error($form['path'], t('Use only alphanumeric characters, "-" and "_" for resource name'));
}
// Get current path and see if it was changed.
$current_path = $this
->get_option('path');
if ($current_path != $form_state['values']['path']) {
// We build resources from database to bypass cache.
module_load_include('inc', 'services', 'includes/services.resource_build');
$resources = _services_build_resources();
if (array_key_exists($form_state['values']['path'], $resources)) {
form_error($form['path'], t('Resource with this path already exists.'));
}
}
}
}
/**
* {@inheritdoc}
*/
public function options_submit(&$form, &$form_state) {
// It is very important to call the parent function here.
parent::options_submit($form, $form_state);
switch ($form_state['section']) {
case 'path':
$this
->set_option('path', $form_state['values']['path']);
break;
}
}
}
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 | ||
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 | 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_display:: |
public | property | Stores all available display extenders. | |
views_plugin_display:: |
public | property | List of handlers for this display. | |
views_plugin_display:: |
public | property |
The top object of a view. Overrides views_plugin:: |
|
views_plugin_display:: |
public | function | Can this display accept attachments? | |
views_plugin_display:: |
public | function | Determine if the user has access to this display of the view. | |
views_plugin_display:: |
public | function | Allow displays to attach to other views. | 2 |
views_plugin_display:: |
public | function | List which sections are defaultable and what items each section contains. | 1 |
views_plugin_display:: |
public | function |
Destructor. Overrides views_object:: |
|
views_plugin_display:: |
public | function | Determine if this display should display the exposed filters widgets. | 1 |
views_plugin_display:: |
public | function | Special method to export items that have handlers. | |
views_plugin_display:: |
public | function |
Override of export_option() Overrides views_object:: |
|
views_plugin_display:: |
public | function | Special handling for plugin export. | |
views_plugin_display:: |
public | function | Special handling for the style export. | |
views_plugin_display:: |
public | function | Format a list of theme templates for output by the theme info helper. | |
views_plugin_display:: |
public | function | Returns to tokens for arguments. | |
views_plugin_display:: |
public | function | Provide some helpful text for the arguments. | 1 |
views_plugin_display:: |
public | function | List of fields for the current display with the associated relationship. | |
views_plugin_display:: |
public | function | Get the handler object for a single handler. | |
views_plugin_display:: |
public | function | Get a full array of handlers for $type. This caches them. | |
views_plugin_display:: |
public | function | Check to see which display to use when creating links. | |
views_plugin_display:: |
public | function | Intelligently get an option either from this or default display. | |
views_plugin_display:: |
public | function | Provide some helpful text for pagers. | 1 |
views_plugin_display:: |
public | function | Return the base path to use for this display. | |
views_plugin_display:: |
public | function | Get the instance of a plugin, for example style or row. | |
views_plugin_display:: |
public | function | Provide the block system with any exposed widget blocks for this display. | |
views_plugin_display:: |
public | function | Displays can require a certain type of style plugin. | 1 |
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | If this display creates a block, implement one of these. | |
views_plugin_display:: |
public | function | If this display creates a page with a menu item, implement it here. | |
views_plugin_display:: |
public | function | 1 | |
views_plugin_display:: |
public | function | Determine if a given option is set to use the default or current display. | |
views_plugin_display:: |
public | function | If this display is the 'default' display which contains fallback settings. | 1 |
views_plugin_display:: |
public | function | Check if the provided identifier is unique. | |
views_plugin_display:: |
public | function | If override/revert was clicked, perform the proper toggle. | |
views_plugin_display:: |
public | function | Because forms may be split up into sections, this provides an easy URL to exactly the right section. Don't override this. | |
views_plugin_display:: |
public | function | Set an option and force it to be an override. | |
views_plugin_display:: |
public | function | Set up any variables on the view prior to execution. | |
views_plugin_display:: |
public | function |
Inject anything into the query that the display handler needs. Overrides views_plugin:: |
|
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | Not all display plugins will support filtering. | |
views_plugin_display:: |
public | function | Render the footer of the view. | |
views_plugin_display:: |
public | function | Render the header of the view. | |
views_plugin_display:: |
public | function | Render the 'more' link. | |
views_plugin_display:: |
public | function | Not all display plugins will suppert pager rendering. | 1 |
views_plugin_display:: |
public | function | Intelligently set an option either from this display or from the default display, if directed to do so. | |
views_plugin_display:: |
public | function | Flip the override setting for the given section. | |
views_plugin_display:: |
public | function | Special method to unpack items that have handlers. | |
views_plugin_display:: |
public | function | Special handling for plugin unpacking. | |
views_plugin_display:: |
public | function | ||
views_plugin_display:: |
public | function | Check to see if the display needs a breadcrumb. | 1 |
views_plugin_display:: |
public | function | Does this display uses exposed filters? | 2 |
views_plugin_display:: |
public | function | Check to see if the display can put the exposed form in a block. | |
views_plugin_display:: |
public | function | Determine if the display's style uses fields. | |
views_plugin_display:: |
public | function | Check to see if the display has some need to link to another display. | 1 |
views_plugin_display:: |
public | function | Does the display use AJAX? | |
views_plugin_display:: |
public | function | Does the display have groupby enabled? | |
views_plugin_display:: |
public | function | Does the display have a more link enabled? | |
views_plugin_display:: |
public | function | Should the enabled display more link be shown when no more items? | |
views_plugin_display:: |
public | function | Should the enabled display more link being opened in an new window? | |
views_plugin_display:: |
public | function | Does the display have custom link text? | |
views_plugin_display:: |
public | function | Does the display have a pager enabled? | 1 |
views_plugin_display:: |
public | function |
Make sure the display and all associated handlers are valid. Overrides views_plugin:: |
1 |
views_plugin_display:: |
public | function | Render any special blocks provided for this display. | |
views_plugin_display_services:: |
public | function |
When used externally, this is how a view gets run and returns
data in the format required. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Check to see if the display has a 'path' field. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Provide the default form for setting options. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Perform any necessary changes to the form values prior to storage. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Provide the summary for page options in the views UI. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Validate the options form. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Information about options for all kinds of purposes will be held here. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Fully render the display. Overrides views_plugin_display:: |
|
views_plugin_display_services:: |
public | function |
Render this display. Overrides views_plugin_display:: |