HtmlTemplateFramework
[
class tree: HtmlTemplateFramework
] [
index: HtmlTemplateFramework
] [
all elements
]
Packages:
HtmlTemplateFramework
Source for file htf_frm_getcss.phl
Documentation is available at
htf_frm_getcss.phl
<?php
/**
* htf_frm_getcssクラス
*
* ユーザエージェントから該当CSSファイル名を判別するクラス
*
*
@package
HtmlTemplateFramework
*
@subpackage
frame
*
@access
public
*
@author
Yamauchi Shogo <htf@as-prj.com>
*
@version
$Id: htf_frm_getcss.phl ,v 1.0 $
***/
require_once
(
"htf_com_initialize.inc"
)
;
//共通初期処理
/**
* ユーザエージェントから該当CSSファイル名を判別するクラス。
*
* CSS定義xmlファイルを参照し、htfで読み込むCSSファイルを判別します。
*
*
@access
public
*
@author
Yamauchi Shogo <htf@as-prj.com>
***/
class
htf_frm_getcss
{
/**
* CSS定義xmlパス。コンストラクタの引数値が設定されます。
*
*
@access
private
*
@var
string
*/
var
$xmlpath
;
//css定義xmlパス
/**
* 判別したhtfで使用するCSSファイル名。コンストラクタによって設定されます。
*
*
@access
public
*
@var
string
*/
var
$cssname
;
//使用するcssファイル名
/**
* 判別したOS名。コンストラクタによって設定されます。
*
*
@access
public
*
@var
string
*/
var
$os
;
//判明したOS名
/**
* 判別したブラウザ名。コンストラクタによって設定されます。
*
*
@access
public
*
@var
string
*/
var
$browser
;
//判明したブラウザ名
/**
* 判別したMozillaバージョン。コンストラクタによって設定されます。
*
*
@access
public
*
@var
string
*/
var
$mozillaver
;
//Mozillaバージョン
/**
* 引数の内容から、htf_frm_getcssクラスを生成し、htfで読み込むCSSファイルを判別します。
*
* 指定されたCSS定義xmlを読み込み、指定ユーザエージェント内容から
* 使用するCSSファイル名を$cssnameに設定します。
* $distinctos引数に'on'が指定されていない場合や、CSS定義ファイル指定外のパターン
* になった場合には、CSS定義ファイルのOS/ブラウザとも'Others'が指定されている
* CSSファイル名を選択します。<br>
* また、判別するOS/ブラウザは以下です。<br>
* OS:Macintosh,Windows<br>
* ブラウザ:MSIE/Netscape/FireFox<br>
*
*
@param
string
$xmlfname
CSS定義xmlファイル(フルパス指定)
*
@param
string
$useragent
httpリクエストに設定されているユーザーエージェント
*
@param
string
$distinctos
OS/ブラウザ判別をする場合:'on' しない場合'off'
*
@access
public
*
@return
void
***/
function
htf_frm_getcss
(
$xmlfname
,
$useragent
,
$distinctos
)
{
//プロパティ初期化
$this
->
xmlpath
=
$xmlfname
;
$this
->
cssname
=
""
;
$this
->
os
=
""
;
$this
->
browser
=
""
;
$this
->
mozillaver
=
""
;
//OSとブラウザを特定
if
(
htf_comp_property
(
$distinctos
,
HTF_CONF_ON
))
{
$blret
=
$this
->
spec_os_browser
(
$useragent
)
;
}
else
{
$this
->
os
=
HTF_OS_OTHERS
;
$this
->
browser
=
HTF_BROWSER_OTHERS
;
}
//DOMオブジェクト定義
$objdom
=
domxml_open_file
(
$this
->
xmlpath
)
;
$objroot
=
$objdom
->
document_element
(
)
;
$arrobjcss
=
$objroot
->
child_nodes
(
)
;
//各ノードを走査
foreach
(
$arrobjcss
as
$objcss
)
{
if
(
$objcss
->
has_attributes
(
))
{
if
(
htf_comp_property
(
$objcss
->
get_attribute
(
"os"
)
,
$this
->
os
)
&&
htf_comp_property
(
$objcss
->
get_attribute
(
"browser"
)
,
$this
->
browser
))
{
$this
->
cssname
=
htf_replace_definetag
(
$objcss
->
get_attribute
(
"fname"
))
;
break
;
}
//print($objcss->get_attribute("os").'<br>');
}
}
return
;
}
/**
* ユーザエージェントの内容から、ブラウザとOSの判別を行います。
*
*
@param
string
$useragent
httpリクエストに設定されているユーザーエージェント
*
@access
private
*
@return
void
***/
function
spec_os_browser
(
$useragent
)
{
//ブラウザの判別
$explorer
=
ereg
(
HTF_BROWSER_MSIE
,
$useragent
)
;
$firefox
=
ereg
(
HTF_BROWSER_FF
,
$useragent
)
;
$netscape
=
ereg
(
HTF_BROWSER_NN
,
$useragent
)
;
//Mozillaバージョン取得
if
(
ereg
(
'Mozilla'
,
$useragent
))
{
$verpos
=
strpos
(
'Mozilla'
,
$useragent
)
+
strlen
(
'Mozilla/'
)
;
$this
->
mozillaver
=
substr
(
$useragent
,
$verpos
,
3
)
;
}
if
(
$explorer
)
{
$this
->
browser
=
HTF_BROWSER_MSIE
;
}
else
if
(
$firefox
)
{
$this
->
browser
=
HTF_BROWSER_FF
;
}
else
if
(
$netscape
)
{
$this
->
browser
=
HTF_BROWSER_NN
;
}
else
{
$this
->
browser
=
HTF_BROWSER_OTHERS
;
}
//OSの判別
if
(
ereg
(
HTF_OS_WIN
,
$useragent
))
{
$this
->
os
=
HTF_OS_WIN
;
}
else
if
(
ereg
(
HTF_OS_MAC
,
$useragent
)
||
ereg
(
'Mac_'
,
$useragent
))
{
$this
->
os
=
HTF_OS_MAC
;
}
else
{
$this
->
os
=
HTF_OS_OTHERS
;
}
//どちらかがわからなかったら両方その他
if
(
$this
->
browser
==
HTF_BROWSER_OTHERS
||
$this
->
os
==
HTF_OS_OTHERS
)
{
$this
->
browser
=
HTF_BROWSER_OTHERS
;
$this
->
os
=
HTF_OS_OTHERS
;
}
return
;
}
}
?>
Documentation generated on Tue, 19 Sep 2006 06:20:53 +0900 by
phpDocumentor 1.3.0