PHP code example of xinix-technology / bono-metronic-template

1. Go to this page and download the library: Download xinix-technology/bono-metronic-template library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

xinix-technology / bono-metronic-template example snippets



//some codes
'bono.providers' => array(
        'Norm\\Provider\\NormProvider' => array(
            'datasources' => array(
                'mysql' => array(
                    'driver'   => '\\Norm\\Connection\\PDOConnection',
                    'dialect'  => '\\Norm\\Dialect\\MySQLDialect',
                    'prefix'   => 'mysql',
                    'dbname'   => 'nama_database',
                    'host'     => 'localhost',
                    'username' => 'root',
                    'password' => 'password'
                )
            ),
// some codes



return array(
    'schema' => array(
        // input schema here
    ),
);



// some codes
'Bono\\Middleware\\ControllerMiddleware' => array(
            'default' => 'App\\Controller\\AppController',
            'mapping' => array(
                '/test' => null,
                '/user' => null,
                '/previleges' => null,
                '/role' => '\\App\Controller\\RoleController',
                '/sysparam' => null,
                '/collection' => null,    
            ),
        ),
//some codes



use App\Schema\Thumbnail;

return array(
    'schema' => array (
        'photo' => Thumbnail::create('photo','Gambar')->set('list-column', true)->set('bucket','storage'),
    )
)




use App\Schema\NormString;

return array(
    'schema' => array (
        'name'   => NormString::create('name')->set('list-column', true),
    )
)




use App\Schema\InputMask;

return array(
    'schema' => array (
        'ktp' => InputMask::create('ktp')->set('list-column', true)->set_mask('99-9999-99_99.999'),
    )
)




use App\Schema\FileUpload;

return array(
    'schema' => array (
        'file' => FileUpload::create('file')->set('list-column', true)->set('bucket','storage1'),
    )
)




use App\Schema\Reference;

return array(
    'schema' => array (
        'dropdown' => Reference::create('dropdown')->to(array('a' => 'testing1', 'b' => 'test2')),
    )
)




use App\Schema\SelectTwoReference;

return array(
    'schema' => array (
        'select' => SelectTwoReference::create('select')->to(array('a' => 'testing1', 'b' => 'test2')),
    )
)




use App\Schema\MultiReference;

return array(
    'schema' => array (
        'role' => MultiReference::create('role')->to('Role'),
    )
)




use App\Schema\SearchReference;

return array(
    'schema' => array (
        'user' => SearchReference::create('user')->to('User','first_name')->set('field',array('email','first_name')),
    )
)




use App\Schema\DatePicker;

return array(
    'schema' => array (
        'testdate' => DatePicker::create('testdate')->setformatdate('dd-mm-yyyy'),
    )
)




use App\Schema\DatePicker;

return array(
    'schema' => array (
        'sysparam' => SysparamReference::create('sysparam')->setGroups('gender'),
    )
)



// some codes
'Bono\\Middleware\\ControllerMiddleware' => array(
    'default' => 'App\\Controller\\AppController',
    'mapping' => array(
        '/test' => null,
        '/user' => null,
        '/previleges' => null,
        '/role' => '\\App\Controller\\RoleController',
        '/sysparam' => null,
        '/category' => '\\App\Controller\\CategoryController',    
    ),
),
//some codes

 $items = \Norm::factory('table_name')->find();

 $items = \Norm::factory('table_name')->find(id);

 $items = \Norm::factory('table_name')->find(array('field' => criteria));

$employees = \Norm::factory('employee')->find(array('company_id' => 3));

 $items = \Norm::factory('table_name')->findOne(array('field' => criteria));

$employees = \Norm::factory('employee')->findOne(array('company_id' => 3));

 
namespace App\Provider;

class AppProvider extends \Bono\Provider\Provider
{
    public function initialize()
    {
        $app = $this->app;
    }
}


    // inside initialize function
    $app->get('/product_api', function () use ($app) {
      $data = Norm::factory('product')->find();
      $app->response->data('product', $data);
  });

 
// some code
'Bono\\Provider\\LanguageProvider' => null,
'App\\Provider\\AppProvider'=> null,
'App\\Provider\\ProductProvider'=> null, // register new provider




namespace App\Provider;

use Norm\Norm;

class ProductProvider extends AppProvider {
    public function initialize()
    {
        $app = $this->app;

        $app->get('/product_api', function () use ($app) {
            $data = Norm::factory('product')->find(); // mengambil seluruh data product
            $app->response->data('product', $data); // kembalikan response JSON dengan nama product dan kirimkan $data
        });
    }
}


return array(
    'observers' => array(
        'App\\Observer\\ProductObserver' => null, // declare observer here
    ),
    'schema' => array(
        // some schema
    ),
);



namespace App\Middleware;

use \Norm\Norm;

class AuditTrailMiddleware extends \Slim\Middleware {

    public function call(){
        $request = $this->app->request;
        $user = array();
        if(!empty($_SESSION['user'])){
            $user = $_SESSION['user'];
        }
        
        
        $data = $this->app->request->getBody();

        $this->next->call();
        
        if (!empty($_REQUEST['password'])) {
            unset($data['password']);
        }

        $trail = array(
            'user' => !empty($user['$id']) ? $user['$id']:'',
            'uri' => $request->getPath(),
            'method' => $request->getMethod(),
            'data' => (!empty($data)) ? json_encode($data) : '',
            'ip_address' => $request->getIp(),
            'user_agent' => $request->getUserAgent(),
        );

        $model = Norm::factory('AuditTrail')->newInstance();
        $model->set($trail);
        $model->save();
        
    }

class MetronicNotificationMiddleware extends NotificationMiddleware
{
    public function show($options = null)
    {

        unset($_SESSION['notification']);

        if (is_null($options)) {
            return $this->show(array('level' => 'error')) . "\n" . $this->show(array('level' => 'info'));
        }

        $messages = $this->query($options);

        if (!empty($messages)) {
            $result = '<div class="alert '.$options['level'].'" role="alert">';

            foreach ($messages as $message) {
                $result .= '<span>'.$message['message'].'</span> ';
            }

            $result .= '</div>';

            return $result;
        }

    }
  
}



namespace App\Middleware;

class TestMiddleware extends \Slim\Middleware {

    public function call() {
        // code here
    }

}

'App\\Middleware\\MetronicNotificationMiddleware' => null,
'App\\Middleware\\AuditTrailMiddleware' => null,
'App\\Middleware\\TestMiddleware' => null, // register new middleware

'username' => NormString::create('username')->filter('trim|



namespace App\Provider;

use \Norm\Filter\Filter;
use Norm\Filter\FilterException;

class AppProvider extends \Bono\Provider\Provider
{
    public function initialize()
    {
        $app = $this->app;

        Filter::register('custom_filter', function ($key, $value, $model) {
            $search = array('name' => $model['name'], 'slug' => $model['slug']);

            $check = \Norm::factory($model->getClass())->findOne($search);

            if ($check) {
                throw new FilterException("data'" . $key . "'sudah ada");
            }
            return $value;
        });
    }

'username' => NormString::create('username')->filter('trim|
config.php
localhost/bono-metronic/www
Product.php
config.php
www/storage
www/storage1
localhost/bono-metronic/www/index.php/sysparam