commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-new / entity / views / entity_views_example_query.php
1 <?php
2
3 /**
4 * @file
5 * Contains an example for a Views query plugin that could use the data selection tables.
6 */
7
8 /**
9 * Describes the additional methods looked for on a query plugin if data selection based tables or fields are used.
10 *
11 * Only get_result_entities() needs to be present, so results can be retrieved.
12 * The other methods are optional.
13 *
14 * If the table does not contain entities, however, the get_result_wrappers()
15 * method is necessary, too. If this is the case and there are no relations to
16 * entity tables, the get_result_entities() method is not needed.
17 *
18 * @see entity_views_table_definition()
19 */
20 abstract class entity_views_example_query extends views_plugin_query {
21
22 /**
23 * Add a sort to the query.
24 *
25 * This is used to add a sort based on an Entity API data selector instead
26 * of a field alias.
27 *
28 * This method has to be present if click-sorting on fields should be allowed
29 * for some fields using the default Entity API field handlers.
30 *
31 * @param $selector
32 * The field to sort on, as an Entity API data selector.
33 * @param $order
34 * The order to sort items in - either 'ASC' or 'DESC'. Defaults to 'ASC'.
35 */
36 public abstract function add_selector_orderby($selector, $order = 'ASC');
37
38 /**
39 * Returns the according entity objects for the given query results.
40 *
41 * This is compatible to the get_result_entities() method used by Views.
42 *
43 * The method is responsible for resolving the relationship and returning the
44 * entity objects for that relationship. The helper methods
45 * EntityFieldHandlerHelper::construct_property_selector() and
46 * EntityFieldHandlerHelper::extract_property_multiple() can be used to do
47 * this.
48 *
49 * @param $results
50 * The results of the query, as returned by this query plugin.
51 * @param $relationship
52 * (optional) A relationship for which the entities should be returned.
53 * @param $field
54 * (optional) The field for which the entity should be returned. This is
55 * only needed in case a field is derived via a referenced entity without
56 * using a relationship. For example, if the node's field "author:name" is
57 * used, the user entity would be returned instead of the node entity.
58 *
59 * @return
60 * A numerically indexed array containing two items: the entity type of
61 * entities returned by this method; and the array of entities, keyed by the
62 * same indexes as the results.
63 *
64 * @see EntityFieldHandlerHelper::extract_property_multiple()
65 */
66 public abstract function get_result_entities($results, $relationship = NULL, $field = NULL);
67
68 /**
69 * Returns the according metadata wrappers for the given query results.
70 *
71 * This can be used if no entities for the results can be given, but entity
72 * metadata wrappers can be constructed for them.
73 *
74 * @param $results
75 * The results of the query, as returned by this query plugin.
76 * @param $relationship
77 * (optional) A relationship for which the wrappers should be returned.
78 * @param $field
79 * (optional) The field of which a wrapper should be returned.
80 *
81 * @return
82 * A numerically indexed array containing two items: the data type of
83 * the wrappers returned by this method; and the array of retrieved
84 * EntityMetadataWrapper objects, keyed by the same indexes as the results.
85 */
86 public abstract function get_result_wrappers($results, $relationship = NULL, $field = NULL);
87
88 }