<?php
Doo::loadCore ( 'db/DooModel' );
/**
 * 发票审批相关信息及其操作业务逻辑
 * @author CP.
 * @version 1.0
 * @namespace invoice
 * @package invoiceModel
 */
class invoiceReceivables extends DooModel {
	private $INVOICEKEY = "APPROVAL";
	public $irid;
	public $bindStatus;
	public $untreadStatus;
	public $untreadStaff;
	public $iid;
	public $iidExtend;
	public $bindPrice;
	public $receivablesPrice;
	public $OriginalPrice;
	public $receivablesSerial;
	public $receivablesMessage;
	public $receivablesBank;
	public $receivablesDate;
	public $receivablesCategory;
	public $receivablesStaff;
	public $recepitTitleMark;
	public $inputStaff;
	public $inputType;
	public $source;
	public $date;
	public $confirmTime;
	public $bindDate;
	public $unbundlingTime;
	public $accountClerk;
	public $sourcePrice;
	public $bankBatchNumber;
	public $refundType;
	public $refundCompany;
	public $refundNumber;
	public $refundPrice;
	public $refundRemarks;
	public $refundLog;
	public $relationIrid;
	public $relationLog;
	public $_table = 'CLD_invoiceReceivables';
	public $_primarykey = 'irid';
	public $_fields = array (
			'irid',
			'bindStatus',
			'untreadStatus',
			'untreadStaff',
			'iid',
			'iidExtend',
			'bindPrice',
			'receivablesPrice',
			'OriginalPrice',
			'receivablesSerial',
			'receivablesMessage',
			'receivablesBank',
			'receivablesDate',
			'receivablesCategory',
			'receivablesStaff',
			'recepitTitleMark',
			'inputStaff',
			'inputType',
			'source',
			'date',
			'confirmTime',
			'bindDate',
			'unbundlingTime',
			'accountClerk',
			'sourcePrice',
			'bankBatchNumber',
			'refundType',
			'refundCompany',
			'refundNumber',
			'refundPrice',
			'refundRemarks',
			'refundLog',
			'relationIrid',
			'relationLog' 
	);
	public function getSumOfReceivablesPrice($iridString = "") {
		if (empty ( $iridString ))
			return 0;
		
		$list = $this->getOne ( array (
				'select' => ' sum(receivablesPrice) as receivablesPrice ',
				'where' => " irid IN ( " . $iridString . " )",
				'groupby' => 'iid',
				'asArray' => TRUE 
		) );
		if (empty ( $list ))
			return 0;
		return $list ['receivablesPrice'];
	}
	
	/**
	 * 获取最新几条收款包括最新的一条操作日志
	 * @param number $limit
	 * @return unknown
	 */
	public function getInvoiceReceivablesByNew($limit = 4, $con = "") {
		if (empty ( $con ))
			return array ();
		$list = $this->find ( array (
				'where' => $con,
				'desc' => 'irid',
				'limit' => $limit,
				'asArray' => TRUE 
		) );
		Doo::loadModel ( 'invoiceROLog' );
		$invoiceROLog = new invoiceROLog ();
		Doo::loadModel ( 'invoice' );
		$invoice = new invoice ();
		foreach ( $list as $key => $value ) {
			$list [$key] ['invoiceROLog'] = $invoiceROLog->getInvoiceROLogByIrid ( $value ['irid'], 'desc' );
			$list [$key] ['invoiceDetail'] = $invoice->getInvoiceByIid ( $value ['iid'] );
		}
		return $list;
	}
	public function getInvoiceReceivablesByBBN($bankBatchNumber = "") {
		if (empty ( $bankBatchNumber ))
			return array ();
		$list = $this->find ( array (
				'where' => "bankBatchNumber= '" . $bankBatchNumber . "'",
				'asArray' => TRUE 
		) );
		return $list;
	}
	
	/**
	 * 获得最近录入发票，不包含已经绑定的
	 */
	public function getInvoiceReceivablesByInput() {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$list = $this->find ( array (
				'where' => "bindStatus=0 and iid=0",
				'desc' => 'irid',
				'asArray' => TRUE 
		) );
		
		foreach ( $list as $key => $value ) {
			if ($value ['receivablesCategory'] != 'PUBLIC')
				$list [$key] ['receivablesCategory'] = explode ( ':', $value ['receivablesCategory'] );
			
			$list [$key] ['iridKeyXD'] = $XDeode->encode ( $value ['irid'] );
			
			if ($value ['receivablesStaff'] != 'PUBLIC')
				$list [$key] ['receivablesStaff'] = explode ( '-', $value ['receivablesStaff'] );
			
			$list [$key] ['iridKey'] = $this->authcode ( $value ['irid'], '' );
		}
		
		return $list;
	}
	
	/**
	 * 获得部分入账的收款
	 */
	function getInvoiceReceivablesByHalf() {
		$sql = 'select group_concat(b.invoiceSerial) as invoiceSerial ,group_concat(b.iid) as invoiceId ,a.*
				from ' . $this->_table . ' as a left join CLD_invoice as b on
				find_in_set(b.iid,a.iidExtend) or a.iid=b.iid 
				where a.bindStatus=0 and a.iid!=0 GROUP BY a.irid
				';
		$query = Doo::db ()->query ( $sql );
		$list = $query->fetchAll ();
		
		if (empty ( $list ))
			return array ();
		if ($list [0] ['irid'] == NULL) {
			return array ();
		}
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		foreach ( $list as $key => $value ) {
			$list [$key] ['uPrice'] = $value ['receivablesPrice'] - $value ['bindPrice'];
			$invoiceSerial = explode ( ',', $value ['invoiceSerial'] );
			$invoiceId = explode ( ",", $value ['invoiceId'] );
			foreach ( $invoiceId as $k => $v ) {
				$invoiceId [$k] = $XDeode->encode ( $v );
			}
			$list [$key] ['invoiceList'] = array_combine ( $invoiceId, $invoiceSerial );
			
			$list [$key] ['iridAuthKey'] = $this->authcode ( $value ['irid'], '' );
		}
		return $list;
	}
	public function getInvoiceReceivablesByClaim($cid = 0, $sid = 0) {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		if (! empty ( $cid )) {
			$list ['csClaim'] = $this->find ( array (
					'where' => "receivablesCategory='public' and receivablesStaff='public'  and bindStatus=0 and bankBatchNumber=''",
					'desc' => 'irid',
					'asArray' => TRUE 
			) );
			foreach ( $list ['csClaim'] as $key => $value ) {
				$list ['csClaim'] [$key] ['iidKey'] = $this->authcode ( $value ['irid'], '' );
				// $list ['csClaim'] [$key] ['iidKeyUrl'] = $XDeode->encode ( $value ['iid'] );
			}
			
			$list ['sClaim'] = $this->find ( array (
					'where' => "receivablesCategory!='public' and receivablesStaff='public' and receivablesCategory like '" . $cid . ":%' and bindStatus=0",
					'desc' => 'irid',
					'asArray' => TRUE 
			) );
			foreach ( $list ['sClaim'] as $key => $value ) {
				$list ['sClaim'] [$key] ['iidKey'] = $this->authcode ( $value ['irid'], '' );
			}
		}
		
		if (! empty ( $cid ) && ! empty ( $sid )) {
			
			$list ['arClaim'] = $this->find ( array ( // and receivablesCategory like '" . $cid . ":%'
					'where' => "receivablesCategory!='public' and receivablesStaff!='public'  and receivablesStaff  like '" . $sid . "-%' and bindStatus=0",
					'desc' => 'irid',
					'asArray' => TRUE 
			) );
			foreach ( $list ['arClaim'] as $key => $value ) {
				$staff = explode ( "-", $value ['receivablesStaff'] );
				$list ['arClaim'] [$key] ['sid'] = $staff [0];
				$list ['arClaim'] [$key] ['username'] = $staff [1];
				$list ['arClaim'] [$key] ['iridKey'] = $XDeode->encode ( $value ['irid'] );
			}
			
			$list ['myClaim'] = $this->find ( array (
					'where' => " receivablesStaff like '" . $sid . "-%' and receivablesCategory like '" . $cid . ":%' and bindStatus=0",
					'desc' => 'irid',
					'asArray' => TRUE 
			) );
			foreach ( $list ['myClaim'] as $key => $value ) {
				$list ['myClaim'] [$key] ['iidKey'] = $this->authcode ( $value ['irid'], '' );
				$staff = explode ( "-", $value ['receivablesStaff'] );
				$list ['myClaim'] [$key] ['sid'] = $staff [0];
				$list ['myClaim'] [$key] ['username'] = $staff [1];
			}
			
			$list ['bindClaim'] = $this->find ( array (
					'where' => " bindStatus=1 and receivablesStaff  like '" . $sid . "-%' ",
					'desc' => 'irid',
					'limit' => 3,
					'asArray' => TRUE 
			) );
			Doo::loadModel ( 'invoice' );
			$invoice = new invoice ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			// print_r($list ['bindClaim']);
			foreach ( $list ['bindClaim'] as $key => $value ) {
				$id = $invoice->getInvoiceByIid ( $value ['iid'] );
				$id ['iidKeyUrl'] = $XDeode->encode ( $value ['iid'] );
				$list ['bindClaim'] [$key] ['invoice'] = $id;
				$list ['bindClaim'] [$key] ['iridKeyUrl'] = $XDeode->encode ( $value ['irid'] );
			}
		}
		return $list;
	}
	
	/**
	 * 根据发票ID和绑定状态获得收款数据，绑定状态为ALL获取所有状态数据
	 * @param string $iid 发票ID
	 * @param string $bindStatus
	 * @return mixed
	 */
	public function getInvoiceReceivablesByIid($iid = "", $bindStatus = "All") {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		$iid = $this->authcode ( $iid );
		$list = array ();
		if (! empty ( $iid ) && is_numeric ( $iid )) {
			
			$sql = '';
			if ($bindStatus == 1)
				$sql = " and bindStatus=1";
			elseif ($bindStatus === 0)
				$sql = " and bindStatus=0";
			$list = $this->find ( array (
					'where' => " iid=" . $iid . $sql,
					'asArray' => TRUE 
			) );
		}
		
		foreach ( $list as $key => $value ) {
			$list [$key] ['iidKey'] = $this->authcode ( $value ['irid'], '' );
			$staff = explode ( "-", $value ['receivablesStaff'] );
			$list [$key] ['sid'] = $staff [0];
			$list [$key] ['username'] = $staff [1];
			$list [$key] ['iridKey'] = $XDeode->encode ( $value ['irid'] );
		}
		return $list;
	}
	public function getInvoiceReceivablesInIridString($iridString = "") {
		$list = array ();
		if (! empty ( $iridString ))
			$list = $this->find ( array (
					'where' => " irid in ( " . $iridString . " )",
					'asArray' => TRUE 
			) );
		
		$price = 0;
		$serial = 0;
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		foreach ( $list as $key => $value ) {
			$price += $value ['receivablesPrice'];
			$list [$key] ['iridKeyK'] = $XDeode->encode ( $value ['irid'] );
		}
		if (! empty ( $list ))
			$list [0] ['sumPrice'] = $price;
		return $list;
	}
	/**
	 * 根据收款ID获取一条相关数据
	 * @param string $irid
	 * @param string $con 附加获取收款条件 可以为空
	 * @return unknown[]|mixed[]|string[]
	 */
	public function getInvoiceReceivablesByIrid($irid = "", $con = "") {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		if (! is_numeric ( $irid ))
			$irid = $this->authcode ( $irid );
		$detail = array ();
		if (! empty ( $irid ) && is_numeric ( $irid ))
			$detail = $this->getOne ( array (
					'where' => " irid=" . $irid . $con,
					'asArray' => TRUE 
			) );
		
		if (empty ( $detail ))
			return $detail;
		$detail ['cid'] = '';
		$detail ['title'] = '';
		if ($detail ['receivablesCategory'] != "PUBLIC") {
			$category = explode ( ":", $detail ['receivablesCategory'] );
			$detail ['cid'] = $category [0];
			$detail ['title'] = $category [1];
		}
		
		$detail ['sid'] = '';
		$detail ['username'] = '';
		if ($detail ['receivablesStaff'] != "PUBLIC") {
			$staff = explode ( "-", $detail ['receivablesStaff'] );
			$detail ['sid'] = $staff [0];
			$detail ['username'] = $staff [1];
		}
		
		$detail ['iridKey'] = $XDeode->encode ( $detail ['irid'] );
		$detail ['iridEn'] = $this->authcode ( $detail ['irid'], '' );
		return $detail;
	}
	
	/**
	 * 获得一组irid的收款
	 * @param string $iridList
	 * @param string $con
	 * @return unknown|string[]|unknown[]|mixed[]
	 */
	public function getInvoiceReceivablesByIridList($iridList = "", $con = "") {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$list = array ();
		if (! empty ( $iridList )) {
			$list = $this->find ( array (
					'where' => " irid in( " . $iridList." ) " . $con,
					'asArray' => TRUE 
			) );
		}
		
		if (empty ( $list )){
			return $list;
		}
		foreach ($list as $key=>$value){
			$list [$key] ['cid'] = '';
			$list [$key] ['title'] = '';
			if ($list [$key] ['receivablesCategory'] != "PUBLIC") {
				$category = explode ( ":", $list [$key] ['receivablesCategory'] );
				$list [$key] ['cid'] = $category [0];
				$list [$key] ['title'] = $category [1];
			}
			
			$list [$key] ['sid'] = '';
			$list [$key] ['username'] = '';
			if ($list [$key] ['receivablesStaff'] != "PUBLIC") {
				$staff = explode ( "-", $list [$key] ['receivablesStaff'] );
				$list [$key] ['sid'] = $staff [0];
				$list [$key] ['username'] = $staff [1];
			}
			
			$list [$key] ['iridKey'] = $XDeode->encode ( $list [$key] ['irid'] );
			$list [$key] ['iridEn'] = $this->authcode ( $list [$key] ['irid'], '' );
		}
		
		return $list;
	}
	
	/**
	 * 根据收款序列号获取一条相关数据
	 * @param string $irid
	 * @param string $con 附加获取收款条件 可以为空
	 * @return unknown[]|mixed[]|string[]
	 */
	public function getInvoiceReceivablesBySerial($receivablesSerial = "", $con = "") {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		if (! empty ( $receivablesSerial ))
			
			$detail = $this->getOne ( array (
					'where' => " receivablesSerial like '%" . $receivablesSerial . "%'" . $con,
					'limit' => 1,
					'asArray' => TRUE 
			) );
		
		if (empty ( $detail ))
			return $detail;
		$detail ['cid'] = '';
		$detail ['title'] = '';
		if ($detail ['receivablesCategory'] != "PUBLIC") {
			$category = explode ( ":", $detail ['receivablesCategory'] );
			$detail ['cid'] = $category [0];
			$detail ['title'] = $category [1];
		}
		
		$detail ['sid'] = '';
		$detail ['username'] = '';
		if ($detail ['receivablesStaff'] != "PUBLIC") {
			$staff = explode ( "-", $detail ['receivablesStaff'] );
			$detail ['sid'] = $staff [0];
			$detail ['username'] = $staff [1];
		}
		
		$detail ['iridKey'] = $XDeode->encode ( $detail ['irid'] );
		$detail ['iridEn'] = $this->authcode ( $detail ['irid'], '' );
		return $detail;
	}
	public function getInvoiceReceivablesByIrsid($irid = "", $sid = "") {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		$irid = $XDeode->decode ( $irid );
		$detail = array ();
		if (! empty ( $irid ) && is_numeric ( $irid )) {
			
			if (! empty ( $sid ))
				$detail = $this->getOne ( array (
						'where' => " irid=" . $irid . " and receivablesStaff like '" . $sid . "_%'",
						'asArray' => TRUE 
				) );
			else
				$detail = $this->getOne ( array (
						'where' => " irid=" . $irid,
						'asArray' => TRUE 
				) );
			
			$detail ['sid'] = '';
			$detail ['username'] = ''; //
			if (! empty ( $detail ['receivablesStaff'] ) && $detail ['receivablesStaff'] != 'PUBLIC') {
				$staff = explode ( "-", $detail ['receivablesStaff'] );
				$detail ['sid'] = $staff [0];
				
				$detail ['username'] = $staff [1];
			}
			$detail ['iridKey'] = $XDeode->encode ( $detail ['irid'] );
			$detail ['iridEn'] = $this->authcode ( $detail ['irid'], '' );
		}
		return $detail;
	}
	
	/**
	 * 添加一个收款
	 * @param array $item 收款相关数据
	 * @return number 返回收款ID
	 */
	public function addInvoiceReceivables($item = array()) {
		$lid = 0;
		if (is_array ( $item ) && ! empty ( $item )) {
			foreach ( $item as $key => $value ) {
				$this->$key = $value;
			}
			$lid = $this->insert ();
		}
		return $lid;
	}
	
	/**
	 * 根据参数字段更新相应字段（主键ID必须传）
	 * @param array $item 相关需要更新的字段信息
	 * @return number 返回发票ID
	 */
	public function setInvoiceReceivablesByCondition($item = array()) {
		$lid = 0;
		if (is_array ( $item ) && ! empty ( $item )) {
			foreach ( $item as $key => $value ) {
				$this->$key = $value;
			}
			$lid = $this->update ();
		}
		return $lid;
	}
	
	/**
	 * 根据irid 获取一组收款数据
	 * @param string $irid
	 * @return unknown
	 */
	public function getInvoiceReceivablesInIrid($irid = '') {
		if (empty ( $irid ))
			return array ();
		
		$list = $this->find ( array (
				'where' => " irid in(" . $irid . ")",
				'asArray' => TRUE 
		) );
		foreach ( $list as $key => $value ) {
		}
		return $list;
	}
	function getInvoiceReceivablesByConditionPage($limit = 0, $con = "", $desc = 'desc', $descField = 'irid') {
		if (empty ( $limit ))
			return array ();
		
		$sql = 'select group_concat(b.invoiceSerial) as invoiceSerial ,group_concat(b.iid) as invoiceId ,a.*,b.invoicePrice
				from ' . $this->_table . ' as a left join CLD_invoice as b on
				   find_in_set(b.iid,a.iidExtend) or a.iid=b.iid 
				where ' . $con . ' group by a.irid ORDER BY  ' . $descField . ' ' . $desc . ' limit ' . $limit . '
				';
		
		$query = Doo::db ()->query ( $sql );
		$list = $query->fetchAll ();
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'invoiceROLog' );
		$invoiceROLog = new invoiceROLog ();
		
		foreach ( $list as $key => $value ) {
			
			$invoiceSerial = explode ( ',', $value ['invoiceSerial'] );
			$invoiceId = explode ( ",", $value ['invoiceId'] );
			if (empty ( $invoiceSerial [0] ))
				$list [$key] ['invoiceList'] = array ();
			else {
				foreach ( $invoiceId as $k => $v ) {
					if (! empty ( $v ))
						$invoiceId [$k] = $XDeode->encode ( $v );
				}
				$list [$key] ['invoiceList'] = array_combine ( $invoiceId, $invoiceSerial );
			}
			
			$list [$key] ['iridKeyK'] = $XDeode->encode ( $value ['irid'] );
			$list [$key] ['iridKey'] = $this->authcode ( $value ['irid'], '' );
			
			$list [$key] ['irolg'] = $invoiceROLog->getInvoiceROLogByIrid ( $value ['irid'], 'desc' );
		}
		// print_r($list);
		
		return $list;
	}
	function getReceivablesByUntreadStatusPage($limit = 0, $con = "", $desc = 'desc', $descField = 'irid') {
		if (empty ( $limit ))
			return array ();
		
		$list = $this->find ( array (
				'where' => $con, // " bindStatus=1 and receivablesStaff like '" . $sid . "_%' ".$con,
				'limit' => $limit,
				$desc => $descField,
				'asArray' => TRUE 
		) );
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'invoice' );
		$invoice = new invoice ();
		Doo::loadModel ( 'invoiceROLog' );
		$invoiceROLog = new invoiceROLog ();
		
		foreach ( $list as $key => $value ) {
			$list [$key] ['iridKeyK'] = $XDeode->encode ( $value ['irid'] );
			$list [$key] ['iridKey'] = $this->authcode ( $value ['irid'], '' );
			if (isset ( $value ['iid'] ) && ! empty ( $value ['iid'] )) {
				
				$list [$key] ['iidKeyK'] = $XDeode->encode ( $value ['iid'] );
				$list [$key] ['irList'] = $invoice->getInvoiceByIid ( $value ['iid'] );
			} else {
				$list [$key] ['iidKeyK'] = '';
				$list [$key] ['irList'] = array (
						'invoiceSerial' => '' 
				);
			}
			$list [$key] ['irolg'] = $invoiceROLog->getInvoiceROLogByIrid ( $value ['irid'], 'desc' );
			// $list [$key] ['sumPrice'] = 0;
			// if (! empty ( $list [$key] ['irList'] ))
			// $list [$key] ['sumPrice'] = $list [$key] ['irList'] [0] ['sumPrice'];
			// $list [$key] ['operationLog'] = $invoiceOperationLog->getInvoiceOperationLogByIid ( $value ['iid'], 'desc' );
		}
		
		return $list;
	}
	function delInvoiceReceivablesByIrid($irid = 0) {
		if (! empty ( $irid ) && is_numeric ( $irid ))
			$this->delete ( array (
					'where' => 'irid=' . $irid 
			) );
	}
	
	/**
	 * 加密或解密指定字符串
	 *
	 * @param string $string 要加密或解密的字符串
	 * @param string $operation 当取值为'DECODE'时表示解密，否则为加密
	 * @param string $key 加解密的key
	 * @param $expiry 超时值
	 *
	 */
	function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
		$ckey_length = 4;
		if (! $key) {
			$key = $this->INVOICEKEY;
		}
		$key = md5 ( $key );
		$keya = md5 ( substr ( $key, 0, 16 ) );
		$keyb = md5 ( substr ( $key, 16, 16 ) );
		$keyc = $ckey_length ? ($operation == 'DECODE' ? substr ( $string, 0, $ckey_length ) : substr ( md5 ( microtime () ), - $ckey_length )) : '';
		
		$cryptkey = $keya . md5 ( $keya . $keyc );
		$key_length = strlen ( $cryptkey );
		
		$string = $operation == 'DECODE' ? base64_decode ( substr ( $string, $ckey_length ) ) : sprintf ( '%010d', $expiry ? $expiry + time () : 0 ) . substr ( md5 ( $string . $keyb ), 0, 16 ) . $string;
		$string_length = strlen ( $string );
		
		$result = '';
		$box = range ( 0, 255 );
		
		$rndkey = array ();
		for($i = 0; $i <= 255; $i ++) {
			$rndkey [$i] = ord ( $cryptkey [$i % $key_length] );
		}
		
		for($j = $i = 0; $i < 256; $i ++) {
			$j = ($j + $box [$i] + $rndkey [$i]) % 256;
			$tmp = $box [$i];
			$box [$i] = $box [$j];
			$box [$j] = $tmp;
		}
		
		for($a = $j = $i = 0; $i < $string_length; $i ++) {
			$a = ($a + 1) % 256;
			$j = ($j + $box [$a]) % 256;
			$tmp = $box [$a];
			$box [$a] = $box [$j];
			$box [$j] = $tmp;
			$result .= chr ( ord ( $string [$i] ) ^ ($box [($box [$a] + $box [$j]) % 256]) );
		}
		
		if ($operation == 'DECODE') {
			if ((substr ( $result, 0, 10 ) == 0 || substr ( $result, 0, 10 ) - time () > 0) && substr ( $result, 10, 16 ) == substr ( md5 ( substr ( $result, 26 ) . $keyb ), 0, 16 )) {
				return substr ( $result, 26 );
			} else {
				return '';
			}
		} else {
			return $keyc . str_replace ( '=', '', base64_encode ( $result ) );
		}
	}
}

?>