HEX
Server: Apache/2.2.15 (CentOS)
System: Linux ip-10-0-2-146.eu-west-1.compute.internal 2.6.32-754.35.1.el6.centos.plus.x86_64 #1 SMP Sat Nov 7 11:33:42 UTC 2020 x86_64
User: root (0)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /www/exchange0old/exchange/classes/Controller/CDebtor.php
<?php
 // error_reporting(E_ALL);
class Controller_CDebtor
{
	/**
	 * Controller CDebtor
	 */
	function Controller_CDebtor()
	{
		if(!isset($_SESSION['user']['userid']) )
			header("Location:?do=login");
			
		include('classes/Model/MHelpers.php');
		$application 				= Model_MHelpers::redirectToCreateApplication();
		
		include_once('classes/Model/MCreditRiskSetting.php');
	}
	
    /**
     * Create Debtor
     **/
    public function createDebtor() {
        // * Check Previledge of the Web User
        $this->_checkLogin(3, 4);

        require_once('classes/Model/MDebtor.php');
        require_once("classes/Lib/HandleErrors.php");
        require_once('classes/Model/MTrade.php');

        $config = new Bin_Configuration();

        /* if (isset($_SESSION['user']['from_salesforce'])
            && (int)$_SESSION['user']['from_salesforce'] == 1) {
            header('Location: '.$config->config['sfws_create_debtor_url']);
            exit;
        } */
        
        // * Get Necessary values for the selection option in Form
        $nace_group = Model_MDebtor::getNaceGroup();
        $nace = Model_MDebtor::getNace();
        $organisation = Model_MDebtor::getActiveOrganisations();
        
        // * GEt Help Links IN Form
        $help = Model_MTrade::getHelpLinks(7);
        
        // * Assigning for Smart variable
        $output = array();
        $output['countries'] = Model_MDebtor::getCountries();
        $output['nace'] = $nace;
        $output['nace_group'] = $nace_group;
        $output['organisation'] = $organisation;
        $output['usr'] = $_SESSION['user']['username'];
        $output['help'] = $help;
        $output['values']['same_billing_address'] = "1";

        // * Form Validation Error and Sucess is Thrown here
        if (!empty($Err->values)) {
            $output['messages'] = $Err->messages;
            foreach ($Err->values as $key => $vals) {
                $val[$key] = trim(stripslashes($vals));
            }
            $output['values'] = $val;
            $errval = $Err->values;
        }

        if (isset($_SESSION['result'])) {
            $output['result'] = $_SESSION['result'];
            unset($_SESSION['result']);
        }
        
        $_SESSION['debtor_return_note'] = '';

        if (!empty($_GET['trade']) && $_GET['trade'] == "1") {
            $_SESSION['debtor_return'] = "?do=opentrade";
        } elseif (!empty($_GET['trade']) && $_GET['trade'] == "2") {
            $_SESSION['debtor_return']="?do=revolvingtrade";
        }

        if (isset($_SESSION['country_id'])) {
            $country_id = $_SESSION['country_id'];
        } else {
            $country_id = empty($output['values']['country_id']) ? 0 : $output['values']['country_id'];
        }

        $output['currencies'] = Model_MDebtor::getCurrencies(null, null);
        
        // * dealing with Debtor Experience File undefined types
        if (!empty($_SESSION['csvFileUndefinedTypes'])) {
            $typesHTML = "<select name=\"typeMapping___typeMapping__\">".
                    "<option value=\"n/a\">N/A</option>".
                    "<option value=\"SI\">Sales Invoice</option>".
                    "<option value=\"SR\">Receipt</option>".
                    "<option value=\"SC\">Credit Note</option></select>";
            $typeMappingHTML = "<td colspan=\"3\" align=\"center\">".
                    "<span style=\"color:#FF0000\">Incorrect entry types detected in column \"A\".<br/>".
                    "Please choose the appropriate mapping from the following selection list:</span></td>".
                    "<input type=\"hidden\" name=\"customMapping\" value=\"1\">";

            $countCSVFileUndefinedTypes = count($_SESSION['csvFileUndefinedTypes']);
            for ($i = 0; $i < $countCSVFileUndefinedTypes; $i++) {
                $typeMappingHTML .= "<tr><td colspan=\"3\" align=\"center\">\"".
                    $_SESSION['csvFileUndefinedTypes'][$i]."\" "."represents: ";
                $typeMappingHTML .= str_replace("__typeMapping__", $i,$typesHTML)."</td></tr>";
                $typeMappingHTML .= "<input type=\"hidden\" name=\"typeMappingValue_".$i."\" value=\"".
                      urlencode($_SESSION['csvFileUndefinedTypes'][$i])."\">";
            }
            $output['typeMapping'] = $typeMappingHTML;
            unset($_SESSION['csvFileUndefinedTypes']);
        }

        // set test values
        if (isset($_REQUEST['testdata'])
            && !empty($_REQUEST['testdata'])) {
            $type = isset($_REQUEST['type']) ? $_REQUEST['type'] : "Debtor";
            $testDataArray = $this->getTestCredebtorData((int)$_REQUEST['testdata'], $type);
            $output['values'] = array_merge($output['values'], $testDataArray);
        }
        
        Bin_Template::createTemplate('debtors/create_debtor.html', $output);
        unset($_SESSION['country_id']);
    }

	/**
	 * Save Debtor's Info
	 */
    public function saveDebtor() {
        // Check Previledge of the Web User
        $this->_checkLogin(3, 4);
        
        require_once('classes/Model/MDebtor.php');
        require_once('classes/Model/Validation/CheckInputs.php');
        require_once('classes/Model/Validation/FormValidation.php');
        require_once("classes/Lib/Parser.php");
        
        // Validation
        new Model_Validation_CheckInputs('registerdebtor');
        
        // Assigning for Smarty varaible
        $output = array();
        $output['usr'] = $_SESSION['user']['username'];
        $output['list'] = Model_MDebtor::saveDebtor();
        $_SESSION['result'] = 'New Counterparty Created Successfully.';
        
        if (isset($_SESSION['debtor_return'])) {
            $return_url = $_SESSION['debtor_return'];
            $_SESSION['debtor_return_note'] = $return_url;

            // unset($_SESSION['debtor_return']);
            header('Location: ' . $return_url);
            exit();
        }
        header('Location: ?do=mydebtor');
        exit();
    }
    
    function replaceDebtorDoc()
    {
        require_once('classes/Model/MDebtor.php');
        require_once("classes/Lib/HandleErrors.php");
        
        $output=array();
        /*if(count($Err->messages)!=0)
        {
            $output["errmsg"]=$Err->messages;
            $output["values"]=$Err->values;
            $output["style"]=$Err->style;
        }*/
        
        // * Form Validation Error and Sucess is Thrown here
        if(!empty($Err->values))
        {
            $output['messages']=$Err->messages;
            foreach($Err->values as $key=>$vals)
            {
                $val[$key]=trim(stripslashes($vals));
            }
            
            $output['values']=$val;
            $errval=$Err->values;
        }
        
        // * dealing with Debtor Experience File undefined types
        if(!empty($_SESSION['csvFileUndefinedTypes']))
        {
            $typesHTML="<select name=\"typeMapping___typeMapping__\">".
                    "<option value=\"n/a\">N/A</option>".
                    "<option value=\"SI\">Sales Invoice</option>".
                    "<option value=\"SR\">Receipt</option>".
                    "<option value=\"SC\">Credit Note</option></select>";
            $typeMappingHTML="<td colspan=\"3\" align=\"center\">".
                    "<span style=\"color:#FF0000\">Incorrect entry types detected in column \"A\".<br/>".
                    "Please choose the appropriate mapping from the following selection list:</span></td>".
                    "<input type=\"hidden\" name=\"customMapping\" value=\"1\">";
            for($i=0;$i<count($_SESSION['csvFileUndefinedTypes']);$i++)
            {
                $typeMappingHTML.="<tr><td colspan=\"3\" align=\"center\">\"".$_SESSION['csvFileUndefinedTypes'][$i]."\" ".
                        "represents: ";
                $typeMappingHTML.=str_replace("__typeMapping__",$i,$typesHTML)."</td></tr>";
                $typeMappingHTML.="<input type=\"hidden\" name=\"typeMappingValue_".$i."\" value=\"".
                      urlencode($_SESSION['csvFileUndefinedTypes'][$i])."\">";
            }
            $output['typeMapping']=$typeMappingHTML;
            unset($_SESSION['csvFileUndefinedTypes']);
        }
        
        // * $replaceDocument=Model_MRetailInvestor::replaceRetailDoc();
        // * $output['replacedocument']=$replaceDocument;
        // * if($userDetails!='' && $output["values"]['password']==''){
        // *    $output["values"]["password"]=$userDetails;
        // * }
        $output['base']='https://www.credebtexchange.com/exchange/index.php';
        Bin_Template::CreateTemplate('replacedebtordoc.html',$output);
    }
    
    function saveDebtorDoc()
    {
        require_once('classes/Model/MDebtor.php');
        require_once('classes/Model/Validation/CheckInputs.php');
        require_once('classes/Model/Validation/FormValidation.php');
        require_once("classes/Lib/Parser.php");
        
        new Model_Validation_CheckInputs("chkreplacedebdoc");
        Model_MDebtor::saveDebtorDoc();
    }

	
	/**
	 * Download the Report History
	 */
	function downloadReportHistory()
	{
		include('classes/Model/MDebtor.php');
		Model_MDebtor::downloadReportHistory();
	}


	/**
	 * Download the Report Template
	 */
	function downloadReportTemplate()
	{
		header("Pragma: public");
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Cache-Control: private",false);
		header("Content-Type: application/octet-stream");
		header("Content-Disposition: attachment; filename=\"report_template.csv\";" );
		header("Content-Transfer-Encoding: binary"); 
		readfile("samples/report_template.csv");
	}


	/**
	 * Get MyDebtors List
	 */
	function myDebtor() {
        // * Check permission of the Web User
        $this->_checkLogin(3, 4);
		include_once('classes/Model/MDebtor.php');

        $userid=$_SESSION['user']['userid'];

		// * Gets Necessary values for the the Debtor
        $user=Model_MDebtor::getUser($userid);
        $debtor=Model_MDebtor::getMyDebtor();

        // * Assigning for Smarty varaible
        $output=array();
        $output['debtor']=$debtor;
        $output['usr']=$user[0];

        if($user[0]['partner_id']==1) {
            $output['debtorcount']=Model_MDebtor::getSMBDebtor($user[0]);
        }

        $output['published']=array("Waiting for Review","Approved","Rejected","Expired");

		Bin_Template::createTemplate('list_debtor.html',$output);
		unset($_SESSION['result']);
	}

	/**
	 * Import the Debtor from SMB
	 */
	function importDebtor()
	{
		//Check Previledge of the Web User	
		$this->_checkLogin(3,4);

		include('classes/Model/MDebtor.php');

		$userid 				= $_SESSION["user"]["userid"];

		//Gets Necessary values for the the Debtor
		$user 					= Model_MDebtor::getUser($userid);

		//Assigning for Smarty varaible
		$output 				= array();
		$output['usr'] 			= $user[0];
		$output['debtor'] 		= Model_MDebtor::getSMBDebtor($user[0],1);;
		Bin_Template::createTemplate('list_smb_debtor.html',$output);
	}


	/**
	 * To create the customer imported from SMB
	 */
	function createSMBDebtor()
	{
		//Check Previledge of the Web User	
		$this->_checkLogin(3,4);

		include('classes/Model/MDebtor.php');
		include("classes/Lib/HandleErrors.php");
		include('classes/Model/MTrade.php');
		
		//Get Necessary values for the selection option in Form
		$country 				= Model_MDebtor::getcountry();
		$nace_group 			= Model_MDebtor::getNaceGroup();
		$nace 					= Model_MDebtor::getNace();
		$organisation 			= Model_MDebtor::getActiveOrganisations();
		$userid 				= $_SESSION["user"]["userid"];

		//Gets Necessary values for the the Debtor
		$user 					= Model_MDebtor::getUser($userid);

		//GEt Help Links IN Form
		$help 					= Model_MTrade::getHelpLinks(7);

		//Assigning for Smarty varaible
		$output 								= array();
		$output['debtor'] 							= Model_MDebtor::getSMBDebtor($user[0],1);;
		$output['country'] 							= $country;
		$output['nace'] 							= $nace;
		$output['nace_group'] 						= $nace_group;
		$output['organisation'] 					= $organisation;
		$output['usr'] 								= $_SESSION["user"]["username"];
		$output['help'] 							= $help;
		$output['values']['same_billing_address'] 	= "1";


		//Form Validation Error and Sucess is Thrown here
		if(!empty($Err->values))
		{
 			$output['messages']	= $Err->messages;
			$output['values']	= $Err->values;
			$errval				= $Err->values;
		}
		if(isset($_SESSION['result']))
		{
			$output['result'] 	= $_SESSION['result'];
			unset($_SESSION['result']);
		}

		if($_GET['trade']=="1")
		{
			$_SESSION['debtor_return']	= "?do=opentrade";
		}

		$output['cat_group'] 	= Model_MTrade::naceCatGroup('nace_group_id',$output['values']['nace_group_id'],'category_group');

		Bin_Template::createTemplate('create_smb_debtor.html',$output);
	}


	/**
	 * Save SMB Debtor's Info
	 */
	function saveSMBDebtor()
	{
		//Check Previledge of the Web User	
		$this->_checkLogin(3,4);

		include('classes/Model/MDebtor.php');
		include('classes/Model/Validation/CheckInputs.php');
		include('classes/Model/Validation/FormValidation.php');
		include_once("classes/Lib/Parser.php");
		//Validation
		new Model_Validation_CheckInputs('registersmbdebtor');
		
		//Gets Necessary values
		$country 				= Model_MDebtor::getcountry();
		//$value = Model_MDebtor::saveDebtor();

		//Assigning for Smarty varaible
		$output 				= array();
		$output['country'] 		= $country;
		$output['usr'] 			= $_SESSION["user"]["username"];
		$output['list'] 		= Model_MDebtor::saveDebtor();

		if(isset($_SESSION['debtor_return']))
		{
			$return_url			= $_SESSION['debtor_return'];
			unset($_SESSION['debtor_return']);
			header('Location: '.$return_url);
			exit();
		}
		else
		{
			header('Location: ?do=mydebtor');
			exit();
		}
	}


	/**
	 * Upload History document
	 */
	function uploadDeptorHistory()
	{
		include('classes/Model/MDebtor.php');
		Model_MDebtor::uploadDeptorHistory();

		header('Location: ?do=viewdebtor_history&id='.$_GET['hid']);
		exit();
	}


	/**
	 * Debtor History Page
	 */
	function viewDebtorHistory()
	{
		//Check Previledge of the Web User	
		$this->_checkLogin(3,4);

		include('classes/Model/MDebtor.php');

		$userid 				= $_SESSION["user"]["userid"];

		//Gets Necessary values for the the Debtor
		$debtor_history 		= Model_MDebtor::viewDebtorHistory();
		$user 					= Model_MDebtor::getUser($userid);

		//Assigning for Smarty varaible
		$output 								= array();
		$output['debtor_history'] 				= $debtor_history['debtor_history'];
		$output['debtor_history_total_html'] 	= $debtor_history['debtor_history_total_html'];
		$output['usr'] 							= $user[0];
	
		if(isset($_SESSION['success_upload'])){
			$output['result'] 		= $_SESSION['success_upload'];
		}
		
		if(isset($_SESSION['fail_upload'])){
			$output['error'] 		= $_SESSION['fail_upload'];
		}

		Bin_Template::createTemplate('view_debtor_history.html',$output);
		unset($_SESSION['success_upload']);
		unset($_SESSION['fail_upload']);
	}


    /**
     * Debtor Profile Page
     **/
    function viewDebtor() {
        // * Check permissions of the Web User
        $this->_checkLogin(3,4);

        if($_REQUEST['id']=='') {
            header('Location: index.php?do=mydebtor');
            exit();
        }

        require_once('classes/Model/MDebtor.php');

        // * Gets Necessary values for the the Profile
        $country=Model_MDebtor::getcountry();
        $state=Model_MDebtor::getState();
        $debtor=Model_MDebtor::getDebtor($_REQUEST['id']);
        $address=Model_MDebtor::getDebtorAddress($debtor[0]['address_id']);
        $billing_address=Model_MDebtor::getDebtorAddress($debtor[0]['billing_address_id']);
        $contact_address=Model_MDebtor::getDebtorAddress($debtor[0]['contact_address_id']);
        $debtor[0]['organisation']=Model_MDebtor::getOrganisationById($debtor[0]['debtor_id']);
        
        // * Assigning for Smart varaible
        $output=array();
        $output['debtor']=$debtor[0];
        $output['address']=$address[0];
        $output['billing_address']=$billing_address[0];
        $output['contact_address']=$contact_address[0];
        $output['country']=$country;
        $output['state']=$state;
        $output['usr']=$_SESSION["user"]["username"];

        if( $output['debtor']['noid_link']) {
            require_once(ROOT_FOLDER.'/classes/Storage.php');
            $storage=Storage_Repository::get($output['debtor']['type']==TYPE_DEBTOR?
                Storage_Repository::D_DOCS:Storage_Repository::C_DOCS);
            $output['debtor']['noid_link']=$storage->url($output['debtor']['noid_link']);
        }

        if(isset($_SESSION['result'])) {
            $output['result']=$_SESSION['result'];
            unset($_SESSION['result']);
        }
        
        Bin_Template::createTemplate('debtors/view_debtor.html',$output);
    }

	/**
	 * Edit Debtor's info
	 */
	function editDebtor() {
        include_once("classes/Model/MDebtor.php");
        include_once("admin/classes/Model/MDebtorContact.php");
        include_once("classes/Lib/HandleErrors.php");

		$Step=new Model_MDebtor();
        $output=array();
        $output['organisation']=Model_MDebtor::getActiveOrganisations();
        $output['countries']=Model_MDebtor::getCountries();
        $output['debtor']=Model_MDebtor::showDebEditApplications1();
        $output['debtor_contacts']=Model_MDebtorContact::getContactsByDebtorId($output['debtor']['debtor_id']);
        $debtor['credit_limit']=number_format($output['debtor']['credit_limit']);
        $debtor['organisation']=Model_MDebtor::getOrganisationById($output['debtor']['debtor_id']);
        $output['addresses']=Model_MDebtor::getAddresses(array(
            'billing_address'=>$output['debtor']['billing_address_id'],
            'contact_address'=>$output['debtor']['contact_address_id'],
            'registered_address'=>$output['debtor']['address_id']
        ));

        $founded=explode('-',$output['debtor']['founded']);
        $output['day']=$founded[2];
        $output['month']=$founded[1];
        $output['year']=$founded[0];
        $debtor_history=Model_MDebtor::viewDebtorHistory();
        $output['debtor_history']=count($debtor_history['debtor_history']);

        if(!empty($Err->values)) {
            $output['messages']=$Err->messages;
            $output['values']=$Err->values;
            $errval=$Err->values;
		}

        if(!empty($output["values"]['siccat'])) {
            $output['cat_group']=$Step->naceCatGroup('siccat',$output["values"]['siccat'],
                'category_group');
        }
        else {
            $output['cat_group']=$Step->naceCatGroup('siccat',$output['debtor']['nace_group_id'],
                'category_group');
            $output['values']['siccat']=$output['debtor']['nace_group_id'];
            $output['values']['sicgp']=$output['debtor']['nace_id'];
        }

        if(empty($output['values']['currency_id']) && !empty($output['debtor']['currency_id'])) {
            $output['values']['currency_id']=$output['debtor']['currency_id'];
        }

        if(empty($output['values']['b_country'])
            && !empty($output['addresses']['billing_address']['address_country'])) {
            $output['values']['b_country']=$output['addresses']['billing_address']['address_country'];
        }

        if(empty($output['values']['country'])
            && !empty($output['addresses']['registered_address']['address_country'])) {
            $output['values']['country']=$output['addresses']['registered_address']['address_country'];
        }

        if((int)$output['debtor']['status'] === 8) {
            header('Location: index.php?do=viewdebtor&id='.$_REQUEST['id']);
            exit();
        }
        Bin_Template::createTemplate('debtors/edit_debtor.html',$output);
	}

	/**
	 * Update Debtor's info
	 */
	function updateDebtor() {
        include_once("classes/Model/MDebtor.php");
		include_once("classes/Model/Validation/CheckInputs.php");
        include_once('classes/Model/Validation/FormValidation.php');

        new Model_Validation_CheckInputs('editDebtorApplication');
        $output=array();
        $organisation=Model_MDebtor::getActiveOrganisations();
        $debtor=Model_MDebtor::showDebEditApplications1();
        $value=Model_MDebtor::updateDebtor($_POST,$debtor);

        if($value) {
            $_SESSION['result']='Debtor Details Update Successfully.';
        }
        else {
            $output['error'][]='Please Register Again';
		}
        header('Location: index.php?do=viewdebtor&id='.$_REQUEST['id']);
	}

	/**
	 * Edit Debtor History
	 */
	function editDebtorHistory()
	{
		//Check Previledge of the Web User	
		$this->_checkLogin(3,4);

		include('classes/Model/MDebtor.php');
		include("classes/Lib/HandleErrors.php");

		$userid = $_SESSION["user"]["userid"];

		//Gets Necessary values for the the Debtor
		$debtor_history 			= Model_MDebtor::showDebtorHistory();
		$user 						= Model_MDebtor::getUser($userid);

		//Assigning for Smarty varaible
		$output = array();
		$output['debtor_history'] 				= $debtor_history['debtor_history'];
		$output['debtor_history_total_html'] 	= $debtor_history['debtor_history_total_html'];
		$output['usr'] 							= $user[0];
		
		$rep=$output['debtor_history'];

		$output['debtor1']			= explode('-',$rep['report_date']);
		$output['day'] 				= $output['debtor1'][2];
		$output['month']			= $output['debtor1'][1];
		$output['year']				= $output['debtor1'][0];	

		if(!empty($Err->values)){
 			$output['messages']		= $Err->messages;
			$output['values']		= $Err->values;
			$errval				= $Err->values;
		}
		
		if(isset($_SESSION['result'])){
			$output['result'] 		= $_SESSION['result'];
			unset($_SESSION['result']);
		}

		Bin_Template::createTemplate('edit_debtor_history.html',$output);
	}


	/**
	 * Update Debtor History
	 */
	function updateDebtorHistory()
	{
		include("classes/Model/MDebtor.php");
		include("classes/Model/Validation/CheckInputs.php");
		include('classes/Model/Validation/FormValidation.php');

		new Model_Validation_CheckInputs('editDebtorHistory');
		
		$value 					= Model_MDebtor::updateDebtorHistory();

		header('Location: index.php?do=viewdebtor_history&id='.$_REQUEST['id']);

	}


	/**
	 * Ajax Function For the dynamic appearance of Category i.e, sub category 
	 */
	function getNace(){

		include('classes/Model/MDebtor.php');

		$nace = Model_MDebtor::getNace($_REQUEST['id']);
		if(count($nace) > 0){

			$select 			='';
			foreach($nace as $key){

				$select 		.='<option value="'.$key['nace_id'].'"';
				
				if($_REQUEST['label'] == $key['nace_id']) {
					$select 	.='selected="selected"';
				}
					
				$select 		.='>';
				
				if(strlen($key['nace_title']) >25) {
					$select 	.= substr($key['nace_title'],0,25)."..";
				}else{
					$select 	.= $key['nace_title'];	
				}
				$select 		.='</option>';
			}
			echo $select; 
		}
		
		
		exit;
	}


	/**
	 * Check Previledge of the Web User	
	 */

	function _checkLogin($type, $type1){
		
		if($_SESSION["user"]["userid"]=='' || ($_SESSION['user']['usertype'] != $type && $_SESSION['user']['usertype'] != $type1))
		{
			header('Location: index.php?do=login');
		}
		
	}

	function saveFileUpload(){

		include("classes/Model/MDebtor.php");
        $model = new Model_MDebtor();
        $debtor_id = $_REQUEST['id'];
		if($model->saveFileUpload($debtor_id))
        {
            $_SESSION['result'] = 'NoI has been added successfully';

            if($_REQUEST['flag']=='view')
            {
                header('Location: index.php?do=viewdebtor&id='.$debtor_id);
            }
            else
            {
                header('Location: index.php?do=mydebtor');
            }
            exit;
        }

	}

	function mb_stripos_all($haystack, $needle) {
 
	  $s = 0;
	  $i = 0;
	 
	  while(is_integer($i)) {
	 
	    $i = mb_stripos($haystack, $needle, $s);
	 
	    if(is_integer($i)) {
	      $aStrPos[] = $i;
	      $s = $i + mb_strlen($needle);
	    }
	  }
	 
	  if(isset($aStrPos)) {
	    return $aStrPos;
	  } else {
	    return false;
	  }
	}
 
	/**
	 * Apply highlight to row label
	 *
	 * @param string $a_json json data
	 * @param array $parts strings to search
	 * @return array
	 */
	function apply_highlight($a_json, $parts) {
	 
	  $p = count($parts);
	  $rows = count($a_json);
	 
	  for($row = 0; $row < $rows; $row++) {
	 
	    $label = $a_json[$row]["label"];

	    $a_label_match = array();
	 
	    for($i = 0; $i < $p; $i++) {
	 
	      $part_len = mb_strlen($parts[$i]);
	      $a_match_start = Controller_CDebtor::mb_stripos_all($label, $parts[$i]);
	 
	      foreach($a_match_start as $part_pos) {
	 
	        $overlap = false;
	        foreach($a_label_match as $pos => $len) {
	          if($part_pos - $pos >= 0 && $part_pos - $pos < $len) {
	            $overlap = true;
	            break;
	          }
	        }
	        if(!$overlap) {
	          $a_label_match[$part_pos] = $part_len;
	        }
	 
	      }
	 
	    }
	 
	    if(count($a_label_match) > 0) {
	      ksort($a_label_match);
	 
	      $label_highlight = '';
	      $start = 0;
	      $label_len = mb_strlen($label);
	 
	      foreach($a_label_match as $pos => $len) {
	        if($pos - $start > 0) {
	          $no_highlight = mb_substr($label, $start, $pos - $start);
	          $label_highlight .= $no_highlight;
	        }
	        $highlight = '<span class="hl_results">' . mb_substr($label, $pos, $len) . '</span>';
	        $label_highlight .= $highlight;
	        $start = $pos + $len;
	      }
	 
	      if($label_len - $start > 0) {
	        $no_highlight = mb_substr($label, $start);
	        $label_highlight .= $no_highlight;
	      }
	 
	      $a_json[$row]["label"] = $label_highlight;
	    }
	 
	  }
	 
	  return $a_json;

	}

    public function getTestCredebtorData($testCount = 1, $type = "Debtor") {
        $testCount = (int)$testCount;
        if ($type !== "Debtor" && $type !== "Creditor") {
            $type = "Debtor";
        }

        $testDataArray = array(
            "debtor_type" => ($type === "Debtor") ? "debtor" : "creditor",
            "country" => 104,
            "currency_id" => 1,
            "debtor_name" => "$type-Test-$testCount",
            "trade_name" => "$type-Test-$testCount",
            "debtor_crn" =>  "IE501210$testCount",
            "previous_name" => "",
            "bank_name" => "$type-Test-$testCount",
            "iban_number" => "IE64IRCE92050112345678",
            "swift_code" => "IE64IRC",
            "account_number" => "",
            "sort_code" => "",
            "address1" => "Street Line 1",
            "address2" => "Street Line 2",
            "city" => "Dublin",
            "state" => "Dublin",
            "postal" => "D02 NX49",
            "p_ph_code" => "+353 1 685-36$testCount",
            "f_ph_code" => "+353 1 410-42$testCount",
            "email" => "$type-test-$testCount@credebt.com",
            "d_name" => "$type First Name $testCount",
            "last_name" => "$type Last Name $testCount",
            "d_ph_code" => "+353 1 685-36$testCount",
            "d_email" => "$type-test-$testCount@credebt.com",
            "d_since" => "2001",
            "d_value" => "20000",
            "d_payment" => "30",
            "d_notes" => "",
            "d_invoice" => "12",
            "d_revenue" => "120000");
        return $testDataArray;
    }
}