CodeIgniter

Overview #

CodeIgniter is without doubt one of the most powerful PHP Framework. it is built with small foot print, simple with ability to create full-featured web applications.

Since we created KoolReport we received many questions like "How to use KoolReport in CodeIgniter?". The answer is KoolReport was designed to work with any PHP Frameworks and CodeIgniter is one of them. The setting to make them work together is simple but we want to make things simpler.

So we created this CodeIgniter package, an extension to let KooLReport work seamlessly inside CodeIgniter environment and providing powerful reporting capability for your CI application. This package will help us to

  1. Access CodeIgniter database in report created with Koolreport
  2. Automatically publish report resources to CodeIniter's assets folder

All with a simple line of code

use \koolreport\codeigniter\Friendship;

Requirements #

  1. KoolReport >= 2.75.0
  2. CodeIgniter >= 3.0.0

Installation #

By downloading .zip file #

  1. Download
  2. Unzip the zip file
  3. Copy the folder codeigniter into koolreport folder so that look like below
koolreport
├── core
├── codeigniter

By composer #

composer require koolreport/codeigniter

Details #

Friendship #

In order for a report to access CodeIgniter databases, we will claim the friendship with CodeIgniter in the report.

class MyReport extends \koolreport\KoolReport
{
    use \koolreport\codeigniter\Friendship;// All you need to do is to claim this friendship

    function setup()
    {
        //Now you can access database that you configured in codeigniter
        $this->src("sale_database")
        ->query("select * from orders")
        ->pipe($this->dataStore("orders"));
    }
}

As you may see from above code, our MyReport now can access all database resources of CodeIgniter through simple line of code. Moreover, the MyReport will configured itself to publish its necessary resources to public folder of CodeIgniter. Everything just work!

Adding another datasources #

In some cases, you have other sources of data that you would like to include into the report, you can just write normal settings() function as you normally do in KoolReport.

class MyReport extends \koolreport\KoolReport
{
    use \koolreport\codeigniter\Friendship;

    function settings()
    {
        return array(
            "dataSources"=>array(
                "csv_source"=>array(
                    "class"=>'\koolreport\datasources\CSVDataSource',
                    'filePath'=>dirname(__FILE__)."\mycsvdata.csv",
                )
            )
        );        
    }

    function setup()
    {
        //Now you can access database that you configured in codeigniter
        $this->src("sale_database")
        ->query("select * from orders")
        ->pipe($this->dataStore("orders"));

        $this->src("csv_source")
        ->pipe(...)
        ...
        ->pipe($this->dataStore("csv"));
    }
}

As you can see from above code, you have access both to sale_database from CodeIgniter as well as extra csv_source.

Customize assets location #

By default, the report which has friendship with CodeIgniter will automatically export all of its resources to default location which is {project_folder}/assets/koolreport_assets. But in any case, you do not like this settings or just want to organize folder differently you can manually set it up like below:

class MyReport extends \koolreport\KoolReport
{
    use \koolreport\codeigniter\Friendship;

    function settings()
    {
        return array(
            "assets"=>array(
                "url"=>"myassets",
                "path"=>"../myassets" // or "path"=>"/var/html/CIProject/myassets"
            )
        );        
    }

The path can be relative path from your report to assets folder or it can be absolute path.

The url is url to assets folder that can be accessed through browser.

Get started with KoolReport

KoolReport will help you to construct good php data report by gathering your data from multiple sources, transforming them into valuable insights, and finally visualizing them in stunning charts and graphs.