0xV3NOMx
Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64



Your IP : 3.144.252.243


Current Path : /proc/thread-self/root/var/www/html/univadmin_bkp/univadmin/Reports/
Upload File :
Current File : //proc/thread-self/root/var/www/html/univadmin_bkp/univadmin/Reports/qpWiseSubjectList.php

<?php
$main_src = substr($_SERVER['SCRIPT_FILENAME'], 0, strlen($_SERVER['SCRIPT_FILENAME']) - 7);
$pdf_writer_class = $main_src . "/tcpdf/tcpdf.php";
require_once $pdf_writer_class;
// ini_set('memory_limit','900M');
// ini_set('max_execution_time',0);

class MYPDF extends TCPDF
{
    public $aobj_context;
    public $degreegrp;

    public function setDeggrp($degreegrp){
        $this->degreegrp = $degreegrp;
    }

    public function setData($aobj_context)
    {
        $this->aobj_context = $aobj_context;
    }

    public function Header()
    {

        $this->deggrp = $this->aobj_context->mobj_data["deggrp"];
        $this->boardfrm = $this->aobj_context->mobj_data["boardfrm"];
        $this->boardto = $this->aobj_context->mobj_data["boardto"];
        $this->qpfrm = $this->aobj_context->mobj_data["qpfrm"];
        $this->qpto = $this->aobj_context->mobj_data["qpto"];

        $fdeggrp = $this->degreegrp["fdeggrp"]; 
        $fdescpn = $this->degreegrp["fdescpn"];
        $fexamdate = $this->degreegrp["fexamdate"];

        // get the current page break margin
        $bMargin = $this->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $this->AutoPageBreak;
        // disable auto-page-break
        $this->SetAutoPageBreak(false, 0);
        // set bacground image
        $this->SetFillColor(248, 248, 255);
        $img_path = $this->aobj_context->main_src . "/img/logo.jpg";

        if (file_exists($img_path)) {
            $this->Image($img_path, 6, 6, 20, 20);
        }

        $this->SetFont('Times', 'B', 13);
        $this->SetY(5);
        $this->Cell(0, 4, $this->aobj_context->FUNIVNAME, 0, 1, 'C');
        //state
        $this->SetFont('Times', '', 11);
        $this->Cell(0, 4, $this->aobj_context->s_state, 0, 1, 'C');

        $this->SetFont('Times', 'BU', 12);
        $this->Ln(1);

        $cur_year = date("Y");
        $this->Cell(0, 5, ' QP Wise Subject List', '0', 1, 'C');

        $this->SetFont('Times', 'B', 12);
        // $this->Cell(0, 5, $fdeggrp . ' - ' . $fdescpn . ' ' . $fexamdate , '0', 1, 'C');
        $this->Cell(0, 6, " Degree Group Range: " . $this->aobj_context->mobj_data["deggrpfrm"] . ' - ' . $this->aobj_context->mobj_data["deggrpto"], "0", 1, "C");
        $this->Cell(0, 5, ' Board Range:' . ' ' . $this->boardfrm . ' - ' . $this->boardto . '  and ' . ' QP Range:' . ' ' . $this->qpfrm . ' - ' . $this->qpto, '0', 1, 'C');

        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
        // set the starting point for the page content
    }

    public function Footer()
    {
        $this->SetY(-15);
        $this->SetFont('helvetica', 'I', 8);
        if($this->CurOrientation == 'P')
        {
            $this->Cell(60, 10, 'IP : ' . $_SERVER["REMOTE_ADDR"], 0, 0, 'L');
            $this->Cell(60, 10, 'Date : ' . date("d-m-Y h:i:s A"), 0, 0, 'C');
            $this->Cell(60, 10, 'Page ' . $this->getPageNumGroupAlias() . '/' . $this->getPageGroupAlias(), 0, 1, 'R');
        }
        else {
            $this->Cell(90, 10, 'IP : ' . $_SERVER["REMOTE_ADDR"], 0, 0, 'L');
            $this->Cell(90, 10, 'Date : ' . date("d-m-Y h:i:s A"), 0, 0, 'C');
            $this->Cell(90, 10, 'Page ' . $this->getPageNumGroupAlias() . '/' . $this->getPageGroupAlias(), 0, 1, 'R');
        }
    }
}

class ReprtObject
{

    public function DefaultConstructor($aobj_context)
    {
        $this->aobj_context = $aobj_context;

        $deggrp = $aobj_context->mobj_data["deggrp"];
        $fdeggrpfrm = $aobj_context->mobj_data["deggrpfrm"];
        $fdeggrpto = $aobj_context->mobj_data["deggrpto"];

        $aobj_context->mobj_db->SetFetchMode(ADODB_FETCH_ASSOC);

        $this->ip = $_SERVER["REMOTE_ADDR"];
        $get_date = "select DATE_FORMAT(now(), '%d/%m/%Y') as now_date";
        $obj = $this->aobj_context->mobj_db->GetRow($get_date);
        $this->reportType = $aobj_context->mobj_data["rtype"];

        $get_coll_name = "select FUNIVNAME as 'FUNIVNAME',FUNIVCODE,
		FUNIVADD1 as 'state', pdf_logo_path,
		ifnull(FEXAMAPPREQ,'F') as FEXAMAPPREQ From control";
        $lobj_get_coll_name = $this->aobj_context->pobj_db->GetRow($get_coll_name);
// var_dump($get_coll_name);
        $aobj_context->FUNIVNAME = $lobj_get_coll_name['FUNIVNAME'];
        $aobj_context->s_state = $lobj_get_coll_name['state'];
        $aobj_context->pdf_logo_path = $lobj_get_coll_name['pdf_logo_path'];
        $aobj_context->FUNIVCODE = $lobj_get_coll_name['FUNIVCODE'];

        $this->current_date = $obj['now_date'];

        $this->pdf = new MYPDF('L');
        $this->pdf->setData($aobj_context);

        $query1 = "select distinct fdeggrp, fdescpn, fexamdate from deggrp
        where ifnull(fdeggrp,'') BETWEEN '{$fdeggrpfrm}' AND '{$fdeggrpto}'";
        $result1 = $aobj_context->pobj_db->GetAll($query1);

        $this->pdf->setDeggrp($result1);
    }

    public function Header($pdf)
    {
        $pdf->SetFont('Times', 'B', 10);
        $pdf->Cell(8, 6, "Sl.", "LRT", 0, "C");
        $pdf->Cell(13, 6, "QP", "LRT", 0, "C");
        $pdf->Cell(90, 6, "Subject Name", "LRT", 0, "C");
        $pdf->Cell(15, 6, "Max.", "LRT", 0, "C");
        $pdf->Cell(40, 6, "Board", "LRT", 0, "C");
        $pdf->Cell(100, 6, "Degree Range", "LRT", 1, "C");

        $pdf->Cell(8, 6, "No", "LRB", 0, "C");
        $pdf->Cell(13, 6, "Code", "LRB", 0, "C"); //w h txt brd pos align
        $pdf->Cell(90, 6, "", "LBR", 0, "C");
        $pdf->Cell(15, 6, "Marks", "LBR", 0, "C");
        $pdf->Cell(40, 6, "", "LRB", 0, "C");
        $pdf->Cell(100, 6, "", "LBR", 1, "C");
        $pdf->SetFont('Times', '', 10);
    }

    public function Report($data)
    {
        $pdf = $this->pdf;

        $pdf->SetMargins(15, 30);
        $pdf->startPageGroup();
        $pdf->AddPage("L");
        $pdf->SetMargins(15, 30);
        $pdf->SetFont('Times', '', 10);

        $oldCode =  $data[0]['fexamno'];
        // var_dump()
        $newCode = "";
        $sl_no = 1;
        $first = true;
        // var_dump($exattendancelist);
        $pdf->SetFont('Times', 'B', 12);
        $pdf->cell(0, 12, $data[0]['fexamname'], 0, 1, "C");
        $this->Header($pdf);

        foreach ($data as $key => $value) {

            $newCode = $value['fexamno'];

            if ($pdf->getY() > 170) {
                $pdf->cell(0, 1, '', 'T', 1, "C");
                $pdf->AddPage("L");
                $pdf->SetFont('Times', 'B', 12);
                $pdf->cell(0, 12, $value['fexamname'], 0, 1, "C");
                $this->Header($pdf);
                $pdf->SetFont('Times', '', 10);
            }

            if ($newCode != $oldCode) {
                $sl_no = 1;
                $pdf->cell(0, 1, '', 'T', 1, "C");
                $pdf->AddPage("L");
                
                $pdf->SetFont('Times', 'B', 12);
                $pdf->cell(0, 12, $value['fexamname'], 0, 1, "C");
                $this->Header($pdf);
                $pdf->SetFont('Times', '', 10);
            }
            $x = $pdf->GetX();
            $y = $pdf->GetY();

            $pdf->SetXY($x, $y);
            $pdf->SetX($x + 21);
            $pdf->MultiCell(90, 6, $value['fsubname'], "LRT", "L");
            $y1 = $pdf->GetY();
            $h1 = $y1 - $y;

            $pdf->SetXY($x, $y);
            $pdf->SetX($x + 166);
            $pdf->MultiCell(100, 6, $value['fdegree'], "LRT", "L");
            $y2 = $pdf->GetY();
            $h2 = $y2 - $y;

            
            $h = $h1 >= $h2 ? $h1 : $h2;
            
            $pdf->SetXY($x, $y);
            $pdf->Cell(8, $h, $sl_no, "1", 0, "C");
            $pdf->cell(13, $h, $value['fqpcode'], "1", 0, "C");
            $pdf->SetXY($x + 111, $y);
            $pdf->cell(15, $h, $value['fsmaxmarks'], "1", 0, "C");
            $pdf->cell(40, $h, $value['fbaordname'], "1", 1, "C");        

            $oldCode = $newCode;
            $sl_no++;
        }
        $pdf->cell(0, 1, '', 'T', 1, "C");
    }

    public function SendOutput()
    {
        // ob_end_clean();
        $this->pdf->Output("Qp Subject List.pdf", "I");
    }
}

function qpWiseSubjectList($aobj_context)
{
    $univcode = $aobj_context->mobj_data["univcode"];  

    $deggrp = $aobj_context->mobj_data["deggrp"];

    $boardfrm = $aobj_context->mobj_data["boardfrm"];
    $boardto = $aobj_context->mobj_data["boardto"];
    $qpfrm = $aobj_context->mobj_data["qpfrm"];
    $qpto = $aobj_context->mobj_data["qpto"];
    $fdeggrpfrm = $aobj_context->mobj_data["deggrpfrm"];
    $fdeggrpto = $aobj_context->mobj_data["deggrpto"];

    $query = "select d.fexamno, d.fexamname, fqpcode, ifnull(b.fboardname,'') as fbaordname, fsubname, 
    fsmaxmarks,group_concat(s.fdegree separator ' | ') as fdegree 
    from subject s inner join degree d on s.fdegree = d.fdegree 
    and s.fexamno = d.fexamno left join masboard b on s.fboard = b.fboardcode
    where fdeggrp BETWEEN '{$fdeggrpfrm}' AND '{$fdeggrpto}' and ifnull(fqpcode,'') <> '' and 
    fqpcode BETWEEN '{$qpfrm}' AND '{$qpto}' 
    and ifnull(s.fboard, '0') BETWEEN '{$boardfrm}' AND '{$boardto}'
    group by s.fqpcode
    order by fexamno, s.fboard, s.fqpcode";
    $result = $aobj_context->pobj_db->GetAll($query);

    // var_dump($query);
    // var_dump($result);

    $class_obj = new ReprtObject();
    $class_obj->univcode = $univcode;
    $class_obj->DefaultConstructor($aobj_context);

    // If No data found Generate Blank Report
    if (count($result) > 0) {
        $class_obj->Report($result);
    }

    $class_obj->SendOutput();

}