class queries extends db
{
//for the kana to roma class elements.
//source : see here: http://d.hatena.ne.jp/indiana/20090217/p1
var $charset='utf-8';
var $mode_Krows = 'k'; //か・く・こ(k or c)
var $mode_XArows = 'l'; //小文字ぁ行と「っ」( L or X)
var $mode_TYrows = 'ch'; //ち行+小文字や行(ty or ch or cy)
var $mode_SYrows = 'sh'; //し行+小文字や行(sy or sh)
var $mode_JYrows = 'j'; //じ行+小文字や行(j or zy or jy)
var $mode_Sstr = 'sh'; //し(s or sh or c)
var $mode_Jstr = 'j'; //じ(j or z)
var $mode_TUstr = 'ts'; //つ(t or ts)
var $mode_DUstr = 'z'; //づ(d or z)
var $mode_FUstr = 'f'; //ふ(h or f)
var $mode_TIstr = 'ch'; //ち(t or ch)
var $mode_Nstr = 'n'; //ん(n or nn)
var $strout = true; //配列でなく文字で返すかどうか
var $chop = false; //ローマ字文字列をアルファベット1文字ごとに分解するかどうか
var $vowel = array("a","i","u","e","o");
var $child = array("a","k","s","t","n","h","m","y","r","w","g","z","d","b","p","x","y","t");
var $symbol = array("!","?","-","'",",");
var $number = array("0","1","2","3","4","5","6","7","8","9");
var $cols_H = array(
"A"=>array("あ","か","さ","た","な","は","ま","や","ら","わ","が","ざ","だ","ば","ぱ","ぁ","ゃ"),
"I"=>array("い","き","し","ち","に","ひ","み","@","り","@","ぎ","じ","ぢ","び","ぴ","ぃ"),
"U"=>array("う","く","す","つ","ぬ","ふ","む","ゆ","る","ん","ぐ","ず","づ","ぶ","ぷ","ぅ","ゅ","っ"),
"E"=>array("え","け","せ","て","ね","へ","め","@","れ","@","げ","ぜ","で","べ","ぺ","ぇ"),
"O"=>array("お","こ","そ","と","の","ほ","も","よ","ろ","を","ご","ぞ","ど","ぼ","ぽ","ぉ","ょ")
);
var $const=NULL;
function get_orders($startdate,$enddate,$whatfor="html",$referrer="") {
$this->sql_db();
$totalvalue = $allorders = $allemptyorders = $beforevat = $feesthisday = $valuethisdaysubtotalBEFOREtax = 0;
$valuethisdaysubtotalBEFOREtaxWITHfees = $beforeTaxBeforeFeesTotal = $beforeTaxAfterFeesTotal = 0;
$startdate = explode(" ",$startdate);
$startdatetokeep = $startdate[0];
$startdate = explode("-",$startdate[0]);
$enddate = explode(" ",$enddate);
$enddatetokeep = $enddate[0];
$enddate = explode("-",$enddate[0]);
$unixstarttime = mktime('00','00','01',$startdate[1],$startdate[2],$startdate[0]);
$unixendtime = mktime('23','59','59',$enddate[1],$enddate[2],$enddate[0]);
$startdatesql = $startdate[0].'000000';
$enddatesql = $enddate[0].'235959';
$codeOrdersTotal = 0;
$sql = "SELECT isbn FROM books WHERE codeonly = 'Yes' AND isbn <>'3910001DL'";
$coderesult = $this->sql_fetchrowset($this->sql_query($sql));
$codeisbns = array();
foreach($coderesult as $res) {
$codeisbns[] = $res['isbn'];
}
while($unixstarttime < $unixendtime) {
$i = 0;
$newtime = date('Ymd',$unixstarttime);
$startdatesql = $newtime.'000000';
$enddatesql = $newtime.'235959';
if(!$referrer) {
$sql = "SELECT id, ordermail,date,total,subtotal, payment_method
FROM orders
WHERE date>='".$startdatesql."' AND date<='".$enddatesql."'
AND email NOT IN ('".implode("','",explode(",",EMAILS_TO_IGNORE))."')";
$result = $this->sql_fetchrowset($this->sql_query($sql));
} else {
if($referrer=='all') {
$sql = "SELECT o.ordermail, o.date,o.total,o.subtotal
FROM orders o, referrer r
WHERE o.date>='".$startdatesql."' and o.date<='".$enddatesql."'
AND r.id>0
AND o.email NOT IN ('".implode("','",explode(",",EMAILS_TO_IGNORE))."')
AND r.emailid = o.sessid";
$result = $this->sql_fetchrowset($this->sql_query($sql));
} else {
$sql = "SELECT o.ordermail, o.date,o.total,o.subtotal
FROM orders o, referrer r
WHERE o.date>='".$startdatesql."' and o.date<='".$enddatesql."'
AND r.id>0
AND o.email NOT IN ('".implode("','",explode(",",EMAILS_TO_IGNORE))."')
AND r.emailid = o.sessid
AND r.referrer = '".$referrer."' ";
$result = $this->sql_fetchrowset($this->sql_query($sql));
}
}
$codeOrders = 0;
foreach($result as $val) {
extract($val);
$items = $this->splitorder($ordermail);
$thisordertotal = $donated = 0;
foreach($items as $ivals) {
if(strpos($ivals['title'],'donated item')===false && strpos($ivals['title'],'寄贈された本')===false) {
$thisordertotal = $thisordertotal+$ivals['itotal'];
} else {
$donated = $donated+$ivals['itotal'];
}
$codeOrders = in_array($ivals['isbn'],$codeisbns) ? $codeOrders+1 : $codeOrders;
}
if(date('Ymd',$unixstarttime)<20140401) $vat = 1.05;
if(date('Ymd',$unixstarttime)>=20140401) $vat = 1.08;
$subvaluethisdaytotal = $total-$donated;
$subvaluethisdaysubtotal = $thisordertotal;
$valuethisdaytotal = $valuethisdaytotal + $subvaluethisdaytotal;
$valuethisdaysubtotal += $subvaluethisdaysubtotal;
if(!$total) $emptyorder = $emptyorder+1;
$allordersthisday = $allordersthisday ? $allordersthisday+1 : 1;
/*
$totaldiff = $total-$thisordertotal;
$total = $thisordertotal;
$subtotal = $subtotal-$totaldiff;
$allordersthisday = $allordersthisday ? $allordersthisday+1 : 1;
if(!$total) {
$emptyorder = $emptyorder+1;
} else {
$valuethisdaytotal = $valuethisdaytotal + $total;
echo '|'.$total.' - ';
$valuethisdaysubtotal = $valuethisdaysubtotal + $subtotal;
echo ' {'.$subtotal.'} ';
}
*/
//correct : $subtotal = $total;
//vat:
}
$feesthisday = $valuethisdaytotal-$valuethisdaysubtotal;
$valuethisdaysubtotalBEFOREtax = round($valuethisdaysubtotal/$vat);
$valuethisdaysubtotalBEFOREtaxWITHfees = $valuethisdaysubtotalBEFOREtax + $feesthisday;
//$valuethisdaysubtotalbeforevat = round($valuethisdaysubtotal/$vat);
$datetoshow = date('Y-m-d',$unixstarttime);
$allorders = $allorders + $allordersthisday;
$allemptyorders = $allemptyorders + $emptyorder;
$allordersthisday = $allordersthisday ? $allordersthisday : 0;
$emptyorder = $emptyorder ? $emptyorder : 0;
$showlist .= '
| '.$datetoshow.' |
'.$allordersthisday.' |
'.$codeOrders.' |
¥'.number_format($valuethisdaytotal).' |
¥'.number_format($valuethisdaysubtotalBEFOREtaxWITHfees).' |
¥'.number_format($valuethisdaysubtotal).' |
¥'.number_format($valuethisdaysubtotalBEFOREtax).' |
See details |
';
$dataByDate[$datetoshow] = $valuethisdaysubtotal;
$unixstarttime = $unixstarttime + 86400;
$totalvalue = $totalvalue + $valuethisdaytotal;
$subtotalvalue = $subtotalvalue + $valuethisdaysubtotal;
$subtotalvaluebeforevat = $subtotalvaluebeforevat >0 ? $subtotalvaluebeforevat+$valuethisdaysubtotalbeforevat : $valuethisdaysubtotalbeforevat;
$valuethisdaytotal = $valuethisdaysubtotal = $allordersthisday = $emptyorder = 0;
$beforeTaxBeforeFeesTotal = $beforeTaxBeforeFeesTotal+$valuethisdaysubtotalBEFOREtax;
$beforeTaxAfterFeesTotal = $beforeTaxAfterFeesTotal+$valuethisdaysubtotalBEFOREtaxWITHfees;
$codeOrdersTotal = $codeOrdersTotal + $codeOrders;
}
$showlist .= '
| Total: |
'.$allorders.' |
'.$codeOrdersTotal.' |
¥'.number_format($totalvalue).' |
¥'.number_format($beforeTaxAfterFeesTotal).' |
¥'.number_format($subtotalvalue).' |
¥'.number_format($beforeTaxBeforeFeesTotal).' |
|
';
if($whatfor=='html') return $showlist;
if($whatfor=='graph') return $dataByDate;
}
function most_searched_items() {
$this->sql_db();
$sql = "SELECT * FROM search ORDER BY times DESC LIMIT 51";
$result = $this->sql_fetchrowset($this->sql_query($sql));
$searchtermlist = '';
foreach($result as $val) {
extract($val);
if(strpos(stripslashes(urldecode($term)),"著者名などを入力してください。")===false) {
$searchtermlist .= '- '.stripslashes(urldecode($term)).' ('.$times.' times)
';
}
}
$searchtermlist .= '
';
return $searchtermlist;
}
function add_new_invoice($postedData) {
$this->sql_db();
extract($postedData);
$sql = "INSERT INTO invoices (invoice_id,invoice_date,invoice_amount,customer,status,mailaddress)
VALUES
('".$invoice_id."','".preg_replace("/[^0-9-]/", '', $invoice_date)."','".preg_replace("/[^0-9]/", '', $invoice_amount)."','".str_replace("'","''",stripslashes($customer))."','unpaid','".trim($email)."')";
$this->sql_query($sql);
$id = $this->sql_nextid();
return $id;
}
function update_invoice($postedData) {
$this->sql_db();
extract($postedData);
$sql = "UPDATE invoices SET
invoice_id='".preg_replace("/[^0-9-]/", '', $invoice_id)."',
invoice_date='".preg_replace("/[^0-9-]/", '', $invoice_date)."',
invoice_amount='".preg_replace("/[^0-9]/", '', $invoice_amount)."',
customer='".str_replace("'","''",stripslashes($customer))."',
mailaddress='".trim($email)."'
WHERE invoice_id='".$oldiid."' LIMIT 1";
if($this->sql_query($sql)) return $invoice_id;
return 0;
}
function get_invoices($offset,$onepage,$where) {
$this->sql_db();
$sql = "SELECT * FROM invoices $where ORDER BY invoice_date DESC LIMIT $offset,$onepage";
return $this->sql_fetchrowset($this->sql_query($sql));
}
function delete_invoice($id) {
$this->sql_db();
$sql = "DELETE FROM invoices WHERE invoice_id='".$id."' LIMIT 1";
return $this->sql_query($sql);
}
function count_invoices($where="") {
$this->sql_db();
$sql = "SELECT COUNT(*) FROM invoices $where";
$counter = $this->sql_fetchrow($this->sql_query($sql));
return $counter['COUNT(*)'];
}
function batch_change_items($data) {
$this->sql_db();
while (list($key, $value) = each($data["changeditem"])) {
if($data["changeditem"][$key]["delete"]=="on") {
$sql = "DELETE FROM books WHERE id='".$key."' LIMIT 1";
} else {
$sql = "UPDATE books SET status='".$data["changeditem"][$key]["status"]."',
position='".$data["changeditem"][$key]["position"]."'
WHERE id='".$key."' LIMIT 1";
}
if (!($result = $this->sql_query($sql))) { $msg .= "Something went wrong - Could not store data!
"; }
}
return $msg;
}
function delete_most_searched_items() {
$this->sql_db();
$sql = "DELETE FROM search";
$this->sql_query($sql);
$sql = "OPTIMIZE TABLE search";
$this->sql_query($sql);
}
function getpaymentmethod($ordermail) {
$language = $this->getlanguagefrommail($ordermail);
$paymenttag = $language=='en' ? "Preferred Payment Method" : "お支払い方法";
preg_match('#'.$paymenttag.'.+#i',$ordermail,$sourceval);
$payment = trim(str_replace($paymenttag, '', $sourceval[0]));
return $payment;
}
function getcomment($ordermail) {
$language = $this->getlanguagefrommail($ordermail);
$commenttag = $language=='en' ? "Comment:" : "コメント:";
$addresskey = "";
$ordermailsplit = explode(PHP_EOL,$ordermail);
foreach($ordermailsplit as $key=>$val) {
if(strpos($val,$commenttag)!==false) {
$addresskey = $key;
}
}
if($addresskey>0) {
for($i=$addresskey;$i<($addresskey+1000);$i++) {
if(strpos($ordermailsplit[$i],"=====")!==false) {
$endkey[] = $i;
}
}
for($i=$addresskey;$i<$endkey[0];$i++) {
$mycomment .= $ordermailsplit[$i].' ';
}
$mycomment = str_replace($commenttag,"",str_replace("\t","",str_replace(" ","",$mycomment)));
return trim($mycomment);
} else {
return;
}
}
function getlanguagefrommail($ordermail) {
// $language = strpos($ordermail,"ご利用")===false ? "en" : "ja";
$language = strpos($ordermail,"合計")===false ? "en" : "ja";
return $language;
}
function getcustomerdatafromemail($ordermail){
$addresskey = "";
$language = $this->getlanguagefrommail($ordermail);
if(strpos($ordermail,"会社名・学校名:")!==false || strpos($ordermail,"Institution Name:")!==false) {
$fnametag = $language=='en' ? "Given Name: " : "めい: ";
$lnametag = $language=='en' ? "Family Name: " : "せい: ";
$phonetag = $language=='en' ? "Telephone: " : "電話番号: ";
$ziptag = $language=='en' ? "Address: " : "ご住所: ";
$gendertag = $language=='en' ? "Gender: " : "性別: ";
$nationalitytag = $language=='en' ? "Nationality: " : "国籍: ";
$institutiontag = $language=='en' ? "Institution Name: " : "会社名・学校名: ";
$sourcetag = $language=='en' ? "How did you hear about us?" : "このサイトを知ったきっかけ:";
$paymenttag = $language=='en' ? "Preferred Payment Method" : "お支払い方法";
$faxtag = $language=='en' ? "Fax:" : "ファックス: ";
$ordermailsplit = explode(PHP_EOL,$ordermail);
foreach($ordermailsplit as $key=>$val) {
if(strpos($val,"Address:")!==false || strpos($val,"ご住所: ")!==false) {
$addresskey = $key;
}
}
preg_match('#'.$fnametag.'.+#i',$ordermail,$fnameval);
$udata['fname'] = str_replace($fnametag,"",$fnameval[0]);
preg_match('#'.$lnametag.'.+#i',$ordermail,$lnameval);
$udata['lname'] = str_replace($lnametag,"",$lnameval[0]);
if($language=='ja') {
//special treatment for japanese since we have two name versions
$fnamekanjitag = "名前: ";
$lnamekanjitag = "名字: ";
preg_match('#'.$fnamekanjitag.'.+#i',$ordermail,$fnameval);
$fnamekanji = str_replace($fnamekanjitag,"",$fnameval[0]);
preg_match('#'.$lnamekanjitag.'.+#i',$ordermail,$lnameval);
$lnamekanji = str_replace($lnamekanjitag,"",$lnameval[0]);
$udata['japname'] = trim($lnamekanji).' '.trim($fnamekanji);
$udata['fname'] = ucfirst($this->conv($udata['fname']));
$udata['lname'] = ucfirst($this->conv($udata['lname']));
}
preg_match('#'.$phonetag.'.+#i',$ordermail,$phoneval);
$udata['phone'] = preg_replace("/[^0-9-]/", '', $phoneval[0]);
preg_match('#'.$faxtag.'.+#i',$ordermail,$faxval);
$udata['fax'] = preg_replace("/[^0-9-]/", '', $faxval[0]);
preg_match('#'.$ziptag.'.+#i',$ordermail,$zipval);
$udata['zip'] = preg_replace("/[^0-9-]/", '', $zipval[0]);
preg_match('#'.$gendertag.'.+#i',$ordermail,$otherval);
$udata['gender'] = trim(str_replace($gendertag, '', $otherval[0]));
preg_match('#'.$nationalitytag.'.+#i',$ordermail,$otherval);
$udata['nationality'] = trim(str_replace($nationalitytag, '', $otherval[0]));
preg_match('#'.$institutiontag.'.+#i',$ordermail,$otherval);
$udata['institution'] = trim(str_replace($institutiontag, '', $otherval[0]));
preg_match('#'.$sourcetag.'.+#i',$ordermail,$sourceval);
$udata['source'] = trim(str_replace($sourcetag, '', $sourceval[0]));
preg_match('#'.$paymenttag.'.+#i',$ordermail,$sourceval);
$udata['payment'] = trim(str_replace($paymenttag, '', $sourceval[0]));
$udata['address'] = trim(str_replace(" ","",$ordermailsplit[$addresskey+1].$ordermailsplit[$addresskey+2].$ordermailsplit[$addresskey+3]));
$udata['prefecture'] = trim(str_replace(" ","",$ordermailsplit[$addresskey+1]));
$udata['address1'] = trim(str_replace(" ","",$ordermailsplit[$addresskey+2]));
$udata['address2'] = trim(str_replace(" ","",$ordermailsplit[$addresskey+3]));
return $udata;
}
}
function getotheritems($ordermail) {
$language = $this->getlanguagefrommail($ordermail);
$orderstart = $language=='en' ? "PROVISIONAL ORDER DETAILS" : "ご注文の内容";
$ordermailE = explode($orderstart,$ordermail);
$ordermail = $ordermailE[1];
$delimiter = $language=='en' ? "____________________________________________" : "----------------------------------------------------------------------------------";
if($language=='en' && strpos($ordermail,$delimiter)===false) $delimiter = "----------------------------------------------------------------------------------";
//might need to remove the fix below:
$delimiter = "----------------------------------------------------------------------------------";
$ordermailExpl = explode($delimiter,$ordermail);
$delitag = $language=='en' ? "Comment:" : "Comment:";
$copiestag = $language=='en' ? "Quantity:" : "数量:";
$titletag = $language=='en' ? "Title: " : "タイトル: ";
$isbntag = $language=='en' ? "ISBN: " : "ISBN:";
foreach($ordermailExpl as $key=>$omval)
{
if(strpos($omval,$delitag)!==false && strpos($omval,$copiestag)!==false && strpos($omval,$isbntag)===false) {
$title = "";
preg_match('#'.$titletag.'.+#i',$omval,$titleval);
$title = str_replace($titletag,"",$titleval[0]);
if(!$title && $language!='en') {
preg_match('#商品名: .+#i',$omval,$titleval);
$title = str_replace("商品名: ","",$titleval[0]);
}
preg_match('#'.$copiestag.'.+#i',$omval,$copiesval);
$copies = preg_replace("/[^0-9]/", '', $copiesval[0]);
preg_match('#'.$delitag.'.+#i',$omval,$commentval);
$comment = str_replace($delitag, '', $commentval[0]);
if(trim($comment) && $copies && $title) {
$extraorder .= "
----------------extra item----------
Title : ".$title."
Copies: ".$copies."
Other : ".trim($comment)."
";
}
$comment = $title = $copies = "";
}
}
return $extraorder;
}
function splitorder($ordermail) {
$language = $this->getlanguagefrommail($ordermail);
$delimiter = $language=='en' ? "____________________________________________" : "----------------------------------------------------------------------------------";
if($language=='en' && strpos($ordermail,$delimiter)===false) $delimiter = "----------------------------------------------------------------------------------";
$ordermailExpl = explode($delimiter,$ordermail);
$isbntag = $language=='en' ? "ISBN: " : "ISBN:";
$copiestag = $language=='en' ? "Quantity:" : "数量:";
$titletag = $language=='en' ? "Title: " : "タイトル: ";
$componenttag = $language=='en' ? "Component: " : "項目・レベル: ";
$authortag = $language=='en' ? "Author: " : "著者/編集者: ";
$publishertag = $language=='en' ? "Publisher: " : "出版社: ";
$pricetag = $language=='en' ? "Price: " : "価格: ";
$totaltag = $language=='en' ? "Total: " : "小計: ";
$conditiontag = $language=='en' ? "Product Condition: " : "Product Condition: ";
foreach($ordermailExpl as $key=>$omval)
{
if(strpos($omval,$isbntag)!==false && strpos($omval,$copiestag)!==false) {
preg_match('#'.$isbntag.'.+#i',$omval,$isbnval);
$items[$key]['isbn'] = str_replace(array($isbntag,"-"," "),"",$isbnval[0]);
preg_match('#'.$copiestag.'.+#i',$omval,$copiesval);
$items[$key]['copies'] = preg_replace("/[^0-9]/", '', $copiesval[0]);
preg_match('#'.$titletag.'.+#i',$omval,$titleval);
$items[$key]['title'] = str_replace($titletag,"",$titleval[0]);
if(!$items[$key]['title'] && $language!='en') {
preg_match('#商品名: .+#i',$omval,$titleval);
$items[$key]['title'] = str_replace("商品名: ","",$titleval[0]);
}
preg_match('#'.$componenttag.'.+#i',$omval,$componentval);
$items[$key]['component'] = str_replace($componenttag,"",$componentval[0]);
preg_match('#'.$authortag.'.+#i',$omval,$authorval);
$items[$key]['author'] = str_replace($authortag,"",$authorval[0]);
preg_match('#'.$publishertag.'.+#i',$omval,$publisherval);
$items[$key]['publisher'] = str_replace($publishertag,"",$publisherval[0]);
preg_match('#'.$pricetag.'.+#i',$omval,$priceval);
$items[$key]['price'] = preg_replace("/[^0-9]/", '', $priceval[0]);
preg_match('#'.$totaltag.'.+#i',$omval,$totalval);
$items[$key]['itotal'] = preg_replace("/[^0-9]/", '', $totalval[0]);
preg_match('#'.$conditiontag.'.+#i',$omval,$conditionval);
$items[$key]['product_condition'] = str_replace($conditiontag,"",$conditionval[0]);
}
}
return $items;
}
function __construct($txt=NULL){
if(!empty($txt)){
$this->const=$txt;
return $this->conv($txt);
}
}
//パブリックメソッド
//文字列分割→字数で分岐→ローマ字変換
function conv($txt=NULL){
if(empty($txt) && !empty($this->const)){
$txt=$this->const;
}
if(empty($txt) && empty($this->const)){
return NULL;
}
$txt=mb_convert_kana($txt,"c",$this->charset);
$stack = $this->_TextSlice($txt);
$out = array();
for ($i = 0; $i charset) == 1){
$str = $this->_baseOne($stack[$i]);
$out[]=$this->stringChopper($str);
}else{
$str2 = $this->_baseTwo($stack[$i]);
$out[]=$this->stringChopper($str2);
}
}
if ($this->strout) {
return implode('',$out);
}
return $this->flatten($out);
}
//ローマ字文字列分解
//$this->chop がtrueならアルファベット毎に分解
//@param {Object} str ローマ字(日本語1文字分)
function stringChopper($str){
$out = array();
if ($this->chop && !$this->strout) {
for ($n = 0; $n charset); $n++) {
$out[]=mb_substr($str,$n,1);
}
return $out;
}else{
return $str;
}
}
//文章を1文字単位に分割する
//@param {Object} str 文章
function _TextSlice($txt){
$max = mb_strlen($txt,$this->charset);
$n = 0;
$array = array();
for ($i = 0; $i <$max; $i++) {
++$n;//次
$str = mb_substr($txt,$i,1);//今の文字
$nxt = mb_substr($txt,$n,1);//次の文字
//隣接する1文字目が小文字や行なら
if(preg_match("(ゃ|ゅ|ょ)",$nxt)){
$array[]=$str.$nxt;
$i++;
$n++;
}else if($str=="っ" && array_search($nxt,$this->symbol)===false ){
if(array_search($nxt,$this->number)===false){
$array[]=$str.$nxt;
$i++;
$n++;
}else{
$array[]=$str;
}
}else{
$array[]=$str;
}
}
return $array;
}
//変換ベース(2文字)
//小文字とセットで2文字になってる文字を判別して処理を分配する
//@param {Object} str 変換する文字(小文字とセットで2文字)
function _baseTwo($str){
if (preg_match("っ",$str)) {
if(mb_strlen($str,$this->charset)==2){
$txt = $this->_baseOne(mb_substr($str,1,1));
return mb_substr($txt,0,1).$txt;
}else{
return $this->_baseOne($str);
}
}else{
switch($str){
case "ちゃ":
return $this->mode_TYrows.$this->vowel[0];
break;
case "ちゅ":
return $this->mode_TYrows.$this->vowel[2];
break;
case "ちょ":
return $this->mode_TYrows.$this->vowel[4];
break;
case "しゃ":
return $this->mode_SYrows.$this->vowel[0];
break;
case "しゅ":
return $this->mode_SYrows.$this->vowel[2];
break;
case "しょ":
return $this->mode_SYrows.$this->vowel[4];
break;
case "じゃ":
return $this->mode_JYrows.$this->vowel[0];
break;
case "じゅ":
return $this->mode_JYrows.$this->vowel[2];
break;
case "じょ":
return $this->mode_JYrows.$this->vowel[4];
break;
default:
$first = $this->_baseOne(mb_substr($str,0,1));
$second = $this->_baseOne(mb_substr($str,1,1));
return mb_substr($first,0,1).$second;
}
}
}
//変換ベース(1文字)
//あいうえお行の配列(cols_H,number,symbol)から文字が何かを判別して各関数へ処理を分配する
//@param {Object} str 変換する文字(1文字のみ)
function _baseOne($str){
if(array_search($str,$this->cols_H['A'])!==false){//あ行
return $this->_Change_A_Rows(array_search($str,$this->cols_H['A']));
}else if(array_search($str,$this->cols_H['I'])!==false){//い行
return $this->_Change_I_Rows(array_search($str,$this->cols_H['I']));
}else if(array_search($str,$this->cols_H['U'])!==false){//う行
return $this->_Change_U_Rows(array_search($str,$this->cols_H['U']));
}else if(array_search($str,$this->cols_H['E'])!==false){//え行
return $this->_Change_E_Rows(array_search($str,$this->cols_H['E']));
}else if(array_search($str,$this->cols_H['O'])!==false){//お行
return $this->_Change_O_Rows(array_search($str,$this->cols_H['O']));
}else if(array_search($str,$this->symbol) !== false){//記号
return $this->symbol[array_search($str,$this->symbol)];
}else if(array_search($str,$this->number) !== false){//数字
return $str;
}else{
return NULL;
}
}
//単音あ行文字をローマ字に
//@param {Object} key ひらがな配列のキー番号
function _Change_A_Rows($key){
if ($key == 1){//か行
return $this->mode_Krows.$this->vowel[0];
}else if($key == 15){//小文字ぁ行
return $this->mode_XArows.$this->vowel[0];
}else if($key == 0){
return $this->vowel[0];
}else{
return $this->child[$key].$this->vowel[0];
}
}
//単音い行文字をローマ字に
//@param {Object} key ひらがな配列のキー番号
function _Change_I_Rows($key){
if ($key == 0){//母音
return $this->vowel[1];
}else if($key == 15){//小文字ぁ行
return $this->mode_XArows.$this->vowel[1];
}else if($key == 2){//し
return $this->mode_Sstr.$this->vowel[1];
}else if($key == 11){//じ
return $this->mode_Jstr.$this->vowel[1];
}else if($key == 3){//ち
return $this->mode_TIstr.$this->vowel[1];
}else{
return $this->child[$key].$this->vowel[1];
}
}
//単音う行文字をローマ字に
//@param {Object} key ひらがな配列のキー番号
function _Change_U_Rows($key){
if ($key == 0){//母音
return $this->vowel[2];
}else if($key == 1){//く
return $this->mode_Krows.$this->vowel[2];
}else if($key == 15){//小文字ぁ行
return $this->mode_XArows.$this->vowel[2];
}else if($key == 3){//つ
return $this->mode_TUstr.$this->vowel[2];
}else if($key == 5){//ふ
return $this->mode_FUstr.$this->vowel[2];
}else if($key == 9){//ん
return $this->mode_Nstr;
}else if($key == 12){//づ
return $this->mode_DUstr.$this->vowel[2];
}else if($key == 17){//っ
return $this->mode_XArows.$this->mode_TUstr.$this->vowel[2];
}else{
return $this->child[$key].$this->vowel[2];
}
}
//単音え行文字をローマ字に
//@param {Object} key ひらがな配列のキー番号
function _Change_E_Rows($key){
if ($key == 0){//母音
return $this->vowel[3];
}else if($key == 15){//小文字ぁ行
return $this->mode_XArows.$this->vowel[3];
}else{
return $this->child[$key].$this->vowel[3];
}
}
//単音お行文字をローマ字に
//@param {Object} key ひらがな配列のキー番号
function _Change_O_Rows($key){
if ($key == 0){//母音
return $this->vowel[4];
}else if($key == 1){//こ
return $this->mode_Krows.$this->vowel[4];
}else if($key == 15){//小文字ぁ行
return $this->mode_XArows.$this->vowel[4];
}else{
return $this->child[$key].$this->vowel[4];
}
}
function flatten($array) {
$tmp = array();
while (($v = array_shift($array)) !== null) {
if (is_array($v)) {
$array = array_merge($v, $array);
} else {
$tmp[] = $v;
}
}
return $tmp;
}
}
?>
Fatal error: Uncaught Error: Class "queries" not found in /mnt/httpd/vhosts/eltbooks.com/httpdocs/be/conf/config.inc.php:148
Stack trace:
#0 /mnt/httpd/vhosts/eltbooks.com/httpdocs/be/api-redirect-link.php(15): require_once()
#1 {main}
thrown in /mnt/httpd/vhosts/eltbooks.com/httpdocs/be/conf/config.inc.php on line 148