/**
  * View for <param  type="private" class="cbpaidParamsExt" method="data">...
  *
  * @param  string              $value                  Stored Data of Model Value associated with the element
  * @param  ParamsInterface     $pluginParams           Main settigns parameters of the plugin
  * @param  string              $name                   Name attribute
  * @param  CBSimpleXMLElement  $param                  This XML node
  * @param  string              $control_name           Name of the control
  * @param  string              $control_name_name      css id-encode of the names of the controls surrounding this node
  * @param  boolean             $view                   TRUE: view, FALSE: edit
  * @param  cbpaidTable         $modelOfData            Data of the Model corresponding to this View
  * @param  cbpaidTable[]       $modelOfDataRows        Displayed Rows if it is a table
  * @param  int                 $modelOfDataRowsNumber  Total Number of rows
  * @return null|string
  */
 public function data($value, &$pluginParams, $name, &$param, $control_name, $control_name_name, $view, &$modelOfData, &$modelOfDataRows, &$modelOfDataRowsNumber)
 {
     global $_CB_database;
     $data = $param->getElementByPath('data');
     if ($data) {
         $dataTable = $data->attributes('table');
         if (!$dataTable) {
             if (is_object($modelOfData) && $modelOfData instanceof TableInterface) {
                 $dataTable = $modelOfData->getTableName();
             } elseif (is_object($modelOfData) && isset($modelOfData->_tbl)) {
                 $dataTable = $modelOfData->_tbl;
             } else {
                 $dataTable = null;
             }
         }
         $xmlsql = new XmlQuery($_CB_database, $dataTable, $pluginParams);
         $xmlsql->setExternalDataTypeValues('modelofdata', $modelOfData);
         $xmlsql->process_orderby($data->getElementByPath('orderby'));
         // <data><orderby><field> fields
         $xmlsql->process_fields($param);
         // <data><rows><field> fields
         $xmlsql->process_where($data->getElementByPath('where'));
         // <data><where><column> fields
         $value = $xmlsql->queryloadResult();
         // get the value
         if ($view) {
             if ($value === null) {
                 $value = $param->attributes('default');
             }
             return htmlspecialchars($value);
         } else {
             return '<input name="' . $control_name_name . '" type="text" id="' . $control_name_name . '" value="' . htmlspecialchars($value) . '"' . $this->_title($param) . ' />';
         }
     }
     return null;
 }
	/**
	 * Parse the ticks to plot
	 * @access private
	 *
	 * @param  SimpleXMLElement  $el         <ticks type="function" name="nameofJSfunction" />
	 * @param  callback            $callBacks
	 * @return array
	 */
	function _plot_parseTickFormatter( &$el, &$callBacks ) {
		global $_CB_database;

		$names_values					=	array();

		if ( $el ) {
			$type						=	$el->attributes( 'type' );
			$data						=	$el->getElementByPath( 'field' );
			if ( ($type == 'append' ) && $data ) {

				$dataTable				=	$data->attributes( 'table' );
				if ( ! $dataTable ) {
					$dataTable			=	null;
				}

				$xmlsql					=	new XmlQuery( $_CB_database, $dataTable, $this->_pluginParams );
				$xmlsql->setExternalDataTypeValues( 'modelofdata', $this->_modelOfData[0] );
				$xmlsql->process_data( $data );
				$textToAppend			=	$xmlsql->queryloadResult( $data );		// get the records
				if ( $textToAppend ) {
					$names_values		=	new PlotJsonFormatter( 'function(val, axis) { return val.toFixed(axis.tickDecimals)+" ' . addslashes( CBTxt::T( $textToAppend ) ) . '"; }' );
				}
			} else {
				$callBacksNew			=	$callBacks;
				unset( $callBacksNew[$el->getName()] );
				$names_values			=	$this->xml2arr( $el, $callBacksNew );
			}
		}

		return $names_values;
	}