PHP Classes

PHP Filter Data Component: Filter data got from a database or other sources

Recommend this page to a friend!
     
  Info   Example   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 56 All time: 10,587 This week: 34Up
Version License PHP version Categories
filter-component 1.0.0Custom (specified...5HTML, PHP 5, Databases
Description 

Author

This package can filter data obtained from a database or other sources.

It provides classes that allow defining rules for filtering data obtained from different data sources according to given rules.

The package supports data sources like SQL databases, arrays, or data objects accessed using Doctrine ORM.

It also allows using Web page components to define the parameters of the filters that the package may apply to the data sources.

Picture of Matous Nemec
Name: Matous Nemec <contact>
Classes: 8 packages by
Country: Czech Republic Czech Republic
Innovation award
Innovation award
Nominee: 2x

 

Example

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
      integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

<link rel="stylesheet" href="../vendor/mesour/components/public/DateTimePicker/bootstrap-datetimepicker.min.css">

<link rel="stylesheet" href="../node_modules/mesour-filter/dist/css/mesour.filter.min.css">

<?php

define
('SRC_DIR', __DIR__ . '/../src/');

require_once
__DIR__ . '/../vendor/autoload.php';

@
mkdir(__DIR__ . '/log');
@
mkdir(__DIR__ . '/tmp');

\
Tracy\Debugger::enable(\Tracy\Debugger::DEVELOPMENT, __DIR__ . '/log');
\
Tracy\Debugger::$strictMode = true;

require_once
SRC_DIR . 'Mesour/Filter/IFilter.php';
require_once
SRC_DIR . 'Mesour/Filter/IFilterItem.php';
require_once
SRC_DIR . 'Mesour/UI/Filter.php';
require_once
SRC_DIR . 'Mesour/Filter/FilterItem.php';
require_once
SRC_DIR . 'Mesour/Filter/Text.php';
require_once
SRC_DIR . 'Mesour/Filter/Date.php';
require_once
SRC_DIR . 'Mesour/Filter/Number.php';
require_once
SRC_DIR . 'Mesour/Filter/Sources/IFilterSource.php';
require_once
SRC_DIR . 'Mesour/Filter/Sources/ArrayFilterSource.php';
require_once
SRC_DIR . 'Mesour/Filter/Sources/DoctrineFilterSource.php';
require_once
SRC_DIR . 'Mesour/Filter/Sources/NetteDbFilterSource.php';
require_once
SRC_DIR . 'Mesour/Filter/Sources/SQLHelper.php';
require_once
SRC_DIR . 'Mesour/Filter/Sources/DateFunction.php';

?>

<hr>

<div class="container">
    <h2>Basic functionality</h2>

    <hr>

    <?php

   
// CONNECTION & NDBT

   
$connection = new \Nette\Database\Connection(
       
'mysql:host=127.0.0.1;dbname=sources_test',
       
'root',
       
'root'
   
);

   
$cacheMemoryStorage = new \Nette\Caching\Storages\MemoryStorage();

   
$structure = new \Nette\Database\Structure($connection, $cacheMemoryStorage);
   
$conventions = new \Nette\Database\Conventions\DiscoveredConventions($structure);
   
$context = new \Nette\Database\Context($connection, $structure, $conventions, $cacheMemoryStorage);

   
// APPLICATION

   
$application = new Mesour\UI\Application;

   
$application->setRequest($_REQUEST);

   
$config = $application->getConfiguration();

   
$config->setTempDir(__DIR__ . '/tmp');

   
$application->run();

   
// SELECTION

   
$selection = $context->table('users');
   
$selection->select('users.*')
        ->
select('group.name group_name')
        ->
select('group.type group_type')
        ->
select('group.date group_date');

   
// SOURCE

   
$source = new \Mesour\Filter\Sources\NetteDbFilterSource('users', 'id', $selection, $context, [
       
'group_name' => 'group.name',
       
'group_type' => 'group.type',
       
'group_date' => 'group.date',
    ]);

   
// FILTER

   
$filter = new \Mesour\UI\Filter('test', $application);

   
$filter->setSource($source);

   
$filter->addTextFilter('action', 'Status', [
       
0 => 'Inactive',
       
1 => 'Active',
    ])->
setMainFilter(false);

   
$filter->setCustomReference('action', [
       
0 => 'Inactive',
       
1 => 'Active',
    ]);

   
$filter->addTextFilter('name', 'Name');

   
$filter->addNumberFilter('amount', 'Amount');

   
$filter->addDateFilter('last_login', 'Last login');

   
$filter->addTextFilter('group_name', 'Group name');

   
$filter->addTextFilter('has_pro', 'Bool value')
        ->
setMainFilter(false);

   
$filter->addDateFilter('timestamp', 'Timestamp');

   
$filter->onRender[] = function (Mesour\UI\Filter $_filter) use ($source) {
        foreach (
$_filter->getValues() as $name => $value) {
            if (isset(
$value['checkers'])) {
               
$source->applyCheckers($name, $value['checkers'], $value['type']);
            }
            if (isset(
$value['custom'])) {
               
$source->applyCustom($name, $value['custom'], $value['type']);
            }
        }
    };

    echo
$filter->render();

   
?>
</div>

<hr>

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<!-- Latest compiled and minified JavaScript -->
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
        integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
        crossorigin="anonymous"></script>

<script src="../vendor/mesour/components/public/DateTimePicker/moment.min.js"></script>
<script src="../vendor/mesour/components/public/DateTimePicker/bootstrap-datetimepicker.min.js"></script>

<script src="../node_modules/mesour-filter/dist/js/mesour.filter.js"></script>


Details

Mesour Filter

Install

  • With Composer

    composer require mesour/filter

  • Or download source from GitHub

Tests

Run command vendor/bin/tester tests/ -s -c tests/php.ini --colors

Code style

Run command vendor/bin/phpcs --standard=ruleset.xml --extensions=php,phpt --encoding=utf-8 --tab-width=4 -sp src tests


  Files folder image Files (41)  
File Role Description
Files folder imagedocs (1 file)
Files folder imageexamples (2 files)
Files folder imagesrc (1 directory)
Files folder imagetests (5 files, 1 directory)
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file license.md Lic. License text
Accessible without login Plain text file package.json Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file ruleset.xml Data Auxiliary data

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:56
This week:0
All time:10,587
This week:34Up