Your IP : 216.73.216.79


Current Path : /var/www/html/jkdm/common/components/
Upload File :
Current File : /var/www/html/jkdm/common/components/PortalModule.php

<?php 

namespace common\components;

use yii\BaseYii as Yii;
use common\components\LanguageSwitcher;
use yii\db\Expression;
use backend\models\frontendmenu\FrontendRoleMapping;
use common\widgets\inspinia\InspiniaAsset;
use yii\helpers\Url;
use common\components\Helpers;
use yii\helpers\Html;

class PortalModule {

    /***
    *REGISTER TAG MODULE NEEDED FOR EVERY MODULE
    * noted that hierarchy of modules depend on it's position from top most to bottom
    */
    public $tag = [
        'get',
        'php',
        'menu',
        'render',
        'flash',
        'baseurl',
        'url',
        'translate',
        'langswitch',
        'slider',
        'fgmodal',
        'cpmodal',
        // 'langswitchstub',
    ];


    /*** MODULE FUNCTION. NOTE: ALL FUNCTION MUST BE REGISTER USING TAG ***/

    /***
    * EQUIVALENT TO YII TRANSLATE
    */
    public function translate($arg)
    {
        return Yii::t("portal", $arg);
    }

    /***
    * PHP BLOCK CODE. STILL NEED OPENTAG AND CLOSE TAG <?php ?>
    * param String JSON path / param
    */
    public function php($arg)
    {   
        $tmpfname = @tempnam(sys_get_temp_dir(), "tmp");
        $handle = fopen($tmpfname, "w+");
        fwrite($handle, $arg);
        fclose($handle);
        include($tmpfname);
        $output = ob_get_contents(); // This contains the output of yourtemplate.php
        ob_end_clean();
        unlink($tmpfname);
        return $output;
    }

    public function menu(){
    	$assetBundle = InspiniaAsset::register(Yii::$app->view);
    	echo '<link rel="stylesheet" href="'.$assetBundle->baseUrl.'/css/bootstrap.css">';

        $menu = FrontendRoleMapping::find()->where(['role_code'=>'PUBLIC','parent_id'=>0])->orderBy('sort ASC')->all();
        /*first level*/
        $html  = '<nav class="slide-menu" id="main-nav" >';
            $html .= '<div class="welcome-message"><h4><strong>MYDLV</strong></h5>'.
                     '<span class="user-name">(SISTEM LEVI PELEPASAN)</span>'.
                     '</div>';
       		$html .= '<ul>';

		        foreach ($menu as $mval) {
		        	$html .= '<li class="'.$mval->menu->menu_class.'"><a href="'.$mval->menu->menu_link.'">'.$mval->menu->menu_name.'</a>';
			        $this->menuchild($mval->id,$html);
			        $html .= '</li>';
		        }

        	$html .= '</ul>';
        $html .= '</nav>';

        return $html;
    }

    /***
    * EQUIVALENT TO YII RENDER
    * param String JSON path / param
    */
    public function render($arg){
        $arg = json_decode($arg);
        $param = [];
        foreach ($arg->param as $pkey => $pvalue) {
            if($pkey=='model')
                $param[$pkey] = new $pvalue();
            else
                $param[$pkey] = $pvalue;
        }
        
        return yii::$app->view->render($arg->file, $param);
    }

    /***
    * EQUIVALENT TO YII URL HELPER
    * param String JSON path / param
    */
    public function url(string $arg){

    	/*convert json*/
    	$arg = $this->json($arg);

        if( !empty($arg) && is_object($arg) ){
        	/*path*/
        	$param[] = $arg->path; 

        	if( !empty($arg->param) )
		        foreach ($arg->param as $pkey => $pvalue) {
		            if(!empty($pvalue))
		                $param[$pkey] = $pvalue;
		        }

	        return Url::to($param);
        }
    }

    /***
    * FLASH MESSAGE
    * param String name of alert
    */
    public function flash($arg){
        if(Yii::$app->session->hasFlash($arg)){
            $html = '<div class="alert alert-'.$arg.' alert-dismissible" role="alert">'.
                        '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'
                        . Yii::$app->session->getFlash($arg) .
                    '</div>';
            return $html;
        }
    }

    /***
    * GET REQUEST EQUIVALENT
    * param String
    */
    public function get($arg){
        return isset($_GET[$arg]) ? $_GET[$arg] : null;
    }


    /*** INTERNAL FUNCTION / IS NOT MODULE ****/
    public function json($arg){
    	
    	/*convert to json*/
    	$json = json_decode($arg);

        if(!empty(json_last_error()))
        	throw new \Exception('<span style="color:red">ERROR --> '.Helpers::jsonerrcode(json_last_error()).'</span><br> JSON STRING --> '.$arg, 1);
        else
        	return $json;
    }

    public function menuchild($id, &$html=null){

        $menu = FrontendRoleMapping::find()->where(['parent_id' => $id])->orderBy('sort ASC')->all();

        if(!empty($menu)){
    		/* parent */
	    		$html .= '<ul>';
	    			/*recursion*/
		            foreach($menu as $mval){
		                $html .= '<li class="'.$mval->menu->menu_class.'"><a tabindex="-1" href="'.$mval->menu->menu_link.'">'.$mval->menu->menu_name.'</a>';
		                $this->menuchild($mval->id, $html);
		                $html .= '</li>';
		            }
	        	$html .= '</ul>';
        }
    }

    public function baseurl(){
        return Url::base(true);
    }

    public function langswitch(){
        $assetBundle = (InspiniaAsset::register(Yii::$app->view));
        
        return languageSwitcher::Widget(["bundleBase"=>$assetBundle->baseUrl]);
    }

    public function fgmodal(){

    echo ' <div class="modal fade details-modal" id="forgetpass" tabindex="-1" role="dialog" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="fa fa-times fa-2"></span></button>
                            <h4 class="modal-title">Lupa Kata Laluan / Forget Password</h4>
                        </div>
                        <div class="modal-body">
                        '.Html::beginForm(['forgetpass'],'post',['id'=>'forgetpassform']).'

                        <div class="alert alert-info">
                            <span style="color:#696E74">Sila Masukan E-mel, Kod Pendaftaran untuk Mendapatkan kata laluan sementara.</span>
                            <span style="color:#696E74;font-style:italic;">Please Enter Email, Registrant ID to Obtain a temporary password.</span>
                        </div>

                        <div class="form-group">
                            <label>E-mel / Email</label>
                        '.Html::textInput('email',null,['class'=>'form-control','required' => true]).'
                        </div>

                        <div class="form-group">
                            <label>Kod Pendaftaran / Registrant ID</label>
                        '.Html::textInput('registrant_id',null,['class'=>'form-control','required' => true]).'
                        </div>

                        <button><i class="fa fa-save"></i> Hantar</button>

                        '.Html::endForm().'
                        </div>
                    </div>
                </div>
            </div>';
    
    }


    public function cpmodal(){

    echo ' <div class="modal fade details-modal" id="changepass" tabindex="-1" role="dialog" aria-hidden="true">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="fa fa-times fa-2"></span></button>
                            <h4 class="modal-title">Tukar Kata Laluan | Change Password</h4>
                        </div>
                        <div class="modal-body">
                        '.Html::beginForm(['changepass'],'post',['id'=>'changepassform']).'

                        <div class="alert alert-info">
                            <span style="color:#696E74">Sila Masukan Maklumat yang diperlukan.</span><br>
                            <span style="color:#696E74;font-style:italic;">Please fill in required information.</span>
                        </div>

                        <div class="form-group">
                            <label>Kata laluan lama / Old Password</label>
                            '.Html::passwordInput('oldpassword',null,['class'=>'form-control','required' => true]).'
                        </div>

                        <div class="form-group">
                            <label>Kata laluan baru / New Password</label>
                            '.Html::passwordInput('password',null,['class'=>'form-control','required' => true]).'
                        </div>

                        <!--registrant id -->
                        '.Html::hiddenInput('userid', Yii::$app->user->identity->id, ['class'=>'form-control']).'

                        <button><i class="fa fa-save"></i> Hantar | Submit</button>

                        '.Html::endForm().'
                        </div>
                    </div>
                </div>
            </div>';
    
    }

    // public function langswitchstub(){
    //     $assetBundle = (InspiniaAsset::register(Yii::$app->view));
        
    //     return languageSwitcher::Widget(["bundleBase"=>$assetBundle->baseUrl]);
    // }
}