Overview

Namespaces

  • None
  • WPGMZA
    • Integration
    • Selector

Classes

  • WPGMZA\AdminMarkerDataTable
  • WPGMZA\AjaxTable
  • WPGMZA\AutoLoader
  • WPGMZA\Crud
  • WPGMZA\Database
  • WPGMZA\DataTable
  • WPGMZA\Distance
  • WPGMZA\DOMDocument
  • WPGMZA\DOMElement
  • WPGMZA\Factory
  • WPGMZA\GDPRCompliance
  • WPGMZA\GlobalSettings
  • WPGMZA\GoogleGeocoder
  • WPGMZA\GoogleMap
  • WPGMZA\GoogleMapsAPILoader
  • WPGMZA\GoogleMapsLoader
  • WPGMZA\Integration\Gutenberg
  • WPGMZA\Integration\WPMigrateDB
  • WPGMZA\LatLng
  • WPGMZA\Map
  • WPGMZA\MapsEngineDialog
  • WPGMZA\Marker
  • WPGMZA\MarkerDataTable
  • WPGMZA\MarkerFilter
  • WPGMZA\ModalDialog
  • WPGMZA\NominatimGeocodeCache
  • WPGMZA\OLLoader
  • WPGMZA\Plugin
  • WPGMZA\Query
  • WPGMZA\QueryFragment
  • WPGMZA\RestAPI
  • WPGMZA\ScriptLoader
  • WPGMZA\Selector\AttributeSelector
  • WPGMZA\Selector\Parser
  • WPGMZA\Selector\PseudoSelector
  • WPGMZA\Selector\Selector
  • WPGMZA\Selector\Token
  • WPGMZA\Selector\Tokenizer
  • WPGMZA\Selector\TokenStream
  • WPGMZA\Selector\XPathConverter
  • WPGMZA\Strings
  • WPGMZA\Table

Exceptions

  • WPGMZA\Selector\ConvertException
  • WPGMZA\Selector\ParseException

Functions

  • WPGMZA\create_marker_instance_delegate
  • WPGMZA\query_nominatim_cache
  • WPGMZA\Selector\trace
  • WPGMZA\store_nominatim_cache
  • wpgmza_backwards_compat_get_all_circle_data
  • wpgmza_backwards_compat_get_all_rectangle_data
  • wpgmza_check_admin_head_backwards_compat_v6
  • wpgmza_check_map_editor_backwards_compat_v6
  • wpgmza_check_pro_compat_required_v6
  • wpgmza_check_user_backwards_compat_v6
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 
<?php

namespace WPGMZA;

class DataTable extends AjaxTable
{
    public function __construct($table_name, $ajax_parameters=null, $datatable_options=null)
    {
        AjaxTable::__construct($table_name, '/datatables/', $ajax_parameters);
        
        $this->element->setAttribute('data-wpgmza-datatable', 'true');
        
        if($datatable_options)
            $this->setDataTableOptions($datatable_options);
        
        $this->initTableDOM();
    }
    
    protected function getColumns()
    {
        throw new \Exception('Abstract function called');
    }
    
    protected function getOrderBy($input_params, $column_keys)
    {
        $orderBy = $column_keys[ (int)$input_params['order'][0]['column'] ];
        
        if(!empty($orderBy))
            return $orderBy;
        
        return "{$this->table_name}.id";
    }
    
    protected function getOrderDirection($input_params)
    {
        $orderDirection = $input_params['order'][0]['dir'] != 'asc' ? 'desc' : 'asc';
        
        if(!empty($orderDirection))
            return $orderDirection;
        
        return 'ASC';
    }
    
    public function getDataTableOptions()
    {
        return $this->getAttributeParams('data-wpgmza-datatable-options');
    }
    
    public function setDataTableOptions($options)
    {
        $this->setAttributeParams('data-wpgmza-datatable-options', $options);
    }
    
    public function data($input_params)
    {
        $result = AjaxTable::data($input_params);
        
        $result->draw = $input_params['draw'];
        
        return $result;
    }
    
    protected function initTableDOM()
    {
        $columns = $this->getColumns();
        
        $this->element->import('
            <table class="display">
                <thead>
                </thead>
                <tfoot>
                </tfoot>
            </table>
        ');
        
        $thead = $this->element->querySelector('thead');
        $tfoot = $this->element->querySelector('tfoot');
        
        foreach($columns as $name => $caption)
        {
            $th = $this->document->createElement('th');
            $th->setAttribute('data-wpgmza-column-name', $name);
            $th->appendText($caption);
            
            $thead->appendChild($th);
            $tfoot->appendChild($th->cloneNode(true));
        }
    }
    
    public function getRecords($input_params)
    {
        $result = AjaxTable::getRecords($input_params);
        
        $indexed_rows = array();
        $indexed_meta = array();
        
        foreach($result->data as $key => $obj)
        {
            $indexed_rows[$key] = array_values(
                get_object_vars($obj)
            );
        }
        
        $result->data = $indexed_rows;
        
        return $result;
    }
}
API documentation generated by ApiGen