Sample-CorePHP-Repository/app/classes/class.recordline.php
kris@sentientgeeks.com 01ed2f0b15 initial Commit
2021-02-09 10:26:46 +05:30

243 lines
7.0 KiB
PHP

<?php
class RecordLine
{
private $debug = false;
private $hash = '';
private $originalContent = array();
private $lineCount = 0;
private $composedContent = "";
private $composedData = array();
private $type = '';
private $sub_type = '';
private $reportMatrix = null;
function __construct($type)
{
$this->type = $type;
//$this->hash = bin2hex(mcrypt_create_iv(22, MCRYPT_DEV_URANDOM));
}
function setOriginalContent($line,$refresh=false)
{
if($refresh)
{
$this->originalContent = array();
}
$this->originalContent[] = trim($line);
$this->lineCount = count($this->originalContent);
$this->composedContent = implode(" ",$this->originalContent);
}
function setComposedData($key,$value)
{
$this->composedData[$key] = $value;
}
function getType()
{
return $this->type;
}
function getComposedData()
{
return $this->composedData;
}
function getReportMatrix()
{
return $this->reportMatrix;
}
function process()
{
switch($this->type)
{
case 'license-header':
if($this->debug) echo "<br><b style='color:blue;'> Top Label(lh) - </b> Parsing -> ".$this->composedContent;
$this->__processLicenseHeader();
break;
case 'school-report-head':
if($this->debug) echo "<br><b style='color:blue;'> Top Label(rh) - </b> Parsing -> ".$this->composedContent;
$this->__processSchoolReportHead();
break;
case 'school-name-head':
if($this->debug) echo "<br><b style='color:blue;'> Top Label(sh) - </b> Parsing -> ".$this->composedContent;
$this->__processSchoolNameHead();
break;
case 'result-label':
if($this->debug) echo "<br><b style='color:blue;'> Top Label(rl) - </b> Parsing -> ".$this->composedContent;
$this->__processResultLabel();
break;
case 'line-break':
if($this->debug) echo "<br><b style='color:blue;'> Content - </b> Parsing -> Blank Line";
$this->__processLineBreak();
break;
case 'report-data':
$this->__processReportData();
break;
}
}
function __processLicenseHeader()
{
$info_divider = "-";
$words = ParserUtility::getWords($this->composedContent);
$licenseToPart = array();
$subLicencePart = array();
$subLicenceToPart = array();
$subLicenceDatePart = array();
$foundDivider = false;
foreach($words as $word)
{
if( !$foundDivider && trim($word)===$info_divider)
{
$foundDivider = true;
continue;
}
if(!$foundDivider)
{
$licenseToPart[] = trim($word);
}
else
{
$subLicencePart[] = trim($word);
}
}
$foundDivider = false;
foreach($subLicencePart as $word)
{
if(preg_match("/^(((0)[0-9])|((1)[0-2]))(\/)([0-2][0-9]|(3)[0-1])(\/)\d{4}$/i", $word)
|| preg_match("/^\d{1,2}(\/)\d{1,2}(\/)\d{4}$/i", $word) ) {
$foundDivider = true;
}
if(!$foundDivider)
{
$subLicenceToPart[] = trim($word);
}
else
{
$subLicenceDatePart[] = trim($word);
}
}
$this->composedData["LICENCE TO"] = implode(" ",$licenseToPart);
$this->composedData["SUB-LICENSE"] = implode(" ",$subLicenceToPart);
$this->composedData["LICENSE DATE"] = implode(" ",$subLicenceDatePart);
}
function __processSchoolReportHead()
{
$info_divider = "-";
$words = ParserUtility::getWords($this->composedContent);
$eventNamePart = array();
$datePart = array();
$foundDivider = false;
foreach($words as $word)
{
if( !$foundDivider && trim($word)===$info_divider)
{
$foundDivider = true;
continue;
}
if(!$foundDivider)
{
$eventNamePart[] = trim($word);
}
else
{
$datePart[] = trim($word);
}
}
$this->composedData["EVENT NAME"] = implode(" ",$eventNamePart);
$this->composedData["EVENT DATE"] = implode(" ",$datePart);
}
function __processSchoolNameHead()
{
$words = ParserUtility::getWords($this->composedContent);
$schoolNamePart = array();
foreach($words as $word)
{
$schoolNamePart[] = trim($word);
}
$this->composedData["SCHOOL NAME"] = implode(" ",$schoolNamePart);
}
function __processResultLabel()
{
$words = ParserUtility::getWords($this->composedContent);
$resultLabelPart = array();
foreach($words as $word)
{
$resultLabelPart[] = trim($word);
}
$this->composedData["LABEL"] = implode(" ",$resultLabelPart);
}
function __processLineBreak()
{
$this->composedData["LINE-COUNT"] = count($this->originalContent);
}
function __processReportData()
{
$this->__processReportHeaderLabel();
$this->reportMatrix = new ReportMatrix(@$this->composedData["SPORT-GROUP"], @$this->composedData["SPORT"]);
$this->reportMatrix->setSportsLevel(@$this->composedData["SPORT-ROUND"]);
}
function __processReportHeaderLabel()
{
if($this->debug) echo "<br><b>LINE - </b> Parsing -> ".$this->composedContent;
$words = ParserUtility::getWords($this->composedContent);
$labelPart = array();
foreach($words as $word)
{
$labelPart[] = trim($word);
}
$this->composedData["HEADER"] = implode(" ",$labelPart);
$hAnalysis = new Lexicon($this->composedData["HEADER"]);
$hAnalysis->analyse();
$this->composedData["HEADER-ANALYSIS"] = $hAnalysis;
$this->composedData["GENDER"] = $hAnalysis->getGender();
$this->composedData["SPORT-GROUP"] = $hAnalysis->getSportsType();
$this->composedData["SPORT"] = $hAnalysis->getSports();
$this->composedData["SPORT-ROUND"] = $hAnalysis->getSportsRound();
if($this->debug) { echo '<br><b>LINE - </b> Parsed -> <div style="max-height:100px; overflow:auto; border:thin solid #00ff00; margin-left:60px; margin-right:60px;">';print_r($this->composedData); echo '</div>'; }
}
}
?>