<?php
/**
 * 広告コード暗号化・複合化クラス。
 * $Id: CcodeCryptor.inc,v 1.1 2015/10/08 11:18:56 wanggb Exp $
 * @author iimuro
 * @access  public
 * @package jp.aimslib.util
 */


class CcodeCryptor {
	
	/**
	 * ユーザIDとバナーIDをくっつけて複合化します。
	 * @return String 暗号化した文字列
	 */
	public static function encode($user_id, $banner_id) {
		
		$mid_len = strlen("" . $user_id);
		$dec = $mid_len . "" . $user_id . "" . $banner_id;
		
		
		//$hex = dechex($dec);
		$hex = base_convert($dec, 10, 16);
		return $hex;
	}
	
	/**
	 * 暗号化された値をuser_idとbanner_idに複合化します。
	 * @param String $c_code 暗号化された文字列
	 * @retrun array (user_id, banner_id)からなる配列
	 */
	public static function decode($c_code) {
		
		$id_array = array();
		//$dec = hexdec($c_code);
		$dec = base_convert($c_code, 16, 10);
		$mid_len = substr($dec, 0, 1);
		$dec = substr($dec, 1);
		$user_id = substr($dec, 0, $mid_len);
		$banner_id = substr($dec, $mid_len);

		return array($user_id, $banner_id);
	}
	
	/**
	 * ユーザIDとバナーIDとメールIDをくっつけて複合化します。
	 * @return String 暗号化した文字列
	 */
	public static function encode3($user_id, $banner_id, $mail_id) {
		
		$c_code = CcodeCryptor::encode($user_id, $banner_id);
		$mid_len = base_convert(strlen($c_code), 10, 16);
		$mail_hex = base_convert($mail_id, 10, 16);
		$d_code = $mid_len . $c_code . $mail_hex;
		
		return $d_code;
	}
	
	/**
	 * 暗号化された値をuser_idとbanner_idとmail_idに複合化します。
	 * @param String $d_code 暗号化された文字列
	 * @retrun array (user_id, banner_id, mail_id, c_code)からなる配列
	 */
	public static function decode3($d_code) {
		
		$mid_len = base_convert(substr($d_code, 0, 1), 16, 10);
		$d_code = substr($d_code, 1);
		
		$c_code = substr($d_code, 0, $mid_len);
		$mail_hex = substr($d_code, $mid_len);
		
		$return_arr = CcodeCryptor::decode($c_code);
		$mail_id = base_convert($mail_hex, 16, 10);
		array_push($return_arr, $mail_id);
		array_push($return_arr, $c_code);
		
		return $return_arr;
		
	}
	
}

?>