annotate sites/all/modules/views/handlers/views_handler_argument_formula.inc @ 0:ff03f76ab3fe

initial version
author danieleb <danielebarchiesi@me.com>
date Wed, 21 Aug 2013 18:51:11 +0100
parents
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Definition of views_handler_argument_formula.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Abstract argument handler for simple formulae.
danielebarchiesi@0 10 *
danielebarchiesi@0 11 * Child classes of this object should implement summary_argument, at least.
danielebarchiesi@0 12 *
danielebarchiesi@0 13 * Definition terms:
danielebarchiesi@0 14 * - formula: The formula to use for this handler.
danielebarchiesi@0 15 *
danielebarchiesi@0 16 * @ingroup views_argument_handlers
danielebarchiesi@0 17 */
danielebarchiesi@0 18 class views_handler_argument_formula extends views_handler_argument {
danielebarchiesi@0 19 var $formula = NULL;
danielebarchiesi@0 20 /**
danielebarchiesi@0 21 * Constructor
danielebarchiesi@0 22 */
danielebarchiesi@0 23 function construct() {
danielebarchiesi@0 24 parent::construct();
danielebarchiesi@0 25
danielebarchiesi@0 26 if (!empty($this->definition['formula'])) {
danielebarchiesi@0 27 $this->formula = $this->definition['formula'];
danielebarchiesi@0 28 }
danielebarchiesi@0 29 }
danielebarchiesi@0 30
danielebarchiesi@0 31 function get_formula() {
danielebarchiesi@0 32 return str_replace('***table***', $this->table_alias, $this->formula);
danielebarchiesi@0 33 }
danielebarchiesi@0 34
danielebarchiesi@0 35 /**
danielebarchiesi@0 36 * Build the summary query based on a formula
danielebarchiesi@0 37 */
danielebarchiesi@0 38 function summary_query() {
danielebarchiesi@0 39 $this->ensure_my_table();
danielebarchiesi@0 40 // Now that our table is secure, get our formula.
danielebarchiesi@0 41 $formula = $this->get_formula();
danielebarchiesi@0 42
danielebarchiesi@0 43 // Add the field.
danielebarchiesi@0 44 $this->base_alias = $this->name_alias = $this->query->add_field(NULL, $formula, $this->field);
danielebarchiesi@0 45 $this->query->set_count_field(NULL, $formula, $this->field);
danielebarchiesi@0 46
danielebarchiesi@0 47 return $this->summary_basics(FALSE);
danielebarchiesi@0 48 }
danielebarchiesi@0 49
danielebarchiesi@0 50 /**
danielebarchiesi@0 51 * Build the query based upon the formula
danielebarchiesi@0 52 */
danielebarchiesi@0 53 function query($group_by = FALSE) {
danielebarchiesi@0 54 $this->ensure_my_table();
danielebarchiesi@0 55 // Now that our table is secure, get our formula.
danielebarchiesi@0 56 $placeholder = $this->placeholder();
danielebarchiesi@0 57 $formula = $this->get_formula() .' = ' . $placeholder;
danielebarchiesi@0 58 $placeholders = array(
danielebarchiesi@0 59 $placeholder => $this->argument,
danielebarchiesi@0 60 );
danielebarchiesi@0 61 $this->query->add_where(0, $formula, $placeholders, 'formula');
danielebarchiesi@0 62 }
danielebarchiesi@0 63 }