HtmlTemplateFramework
[ class tree: HtmlTemplateFramework ] [ index: HtmlTemplateFramework ] [ all elements ]

Source for file htf_frm_getcss.phl

Documentation is available at htf_frm_getcss.phl

  1. <?php
  2. /**
  3.  * htf_frm_getcssクラス
  4.  *
  5.  * ユーザエージェントから該当CSSファイル名を判別するクラス
  6.  *
  7.  * @package HtmlTemplateFramework
  8.  * @subpackage frame
  9.  * @access  public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version $Id: htf_frm_getcss.phl ,v 1.0 $
  12.  ***/
  13. require_once("htf_com_initialize.inc");        //共通初期処理
  14.  
  15. /**
  16.  * ユーザエージェントから該当CSSファイル名を判別するクラス。
  17.  *
  18.  * CSS定義xmlファイルを参照し、htfで読み込むCSSファイルを判別します。
  19.  * 
  20.  * @access  public
  21.  * @author    Yamauchi Shogo <htf@as-prj.com>
  22.  ***/
  23. class htf_frm_getcss {
  24.    /**
  25.     * CSS定義xmlパス。コンストラクタの引数値が設定されます。
  26.     * 
  27.     * @access private
  28.     * @var string 
  29.     */
  30.     var $xmlpath;        //css定義xmlパス
  31.       /**
  32.     * 判別したhtfで使用するCSSファイル名。コンストラクタによって設定されます。
  33.     * 
  34.     * @access public
  35.     * @var string 
  36.     */
  37.     var $cssname;        //使用するcssファイル名
  38.       /**
  39.     * 判別したOS名。コンストラクタによって設定されます。
  40.     * 
  41.     * @access public
  42.     * @var string 
  43.     */
  44.     var $os;            //判明したOS名
  45.       /**
  46.     * 判別したブラウザ名。コンストラクタによって設定されます。
  47.     * 
  48.     * @access public
  49.     * @var string 
  50.     */
  51.     var $browser;        //判明したブラウザ名
  52.       /**
  53.     * 判別したMozillaバージョン。コンストラクタによって設定されます。
  54.     * 
  55.     * @access public
  56.     * @var string 
  57.     */
  58.     var $mozillaver;    //Mozillaバージョン
  59.     
  60.         
  61.     /**
  62.      * 引数の内容から、htf_frm_getcssクラスを生成し、htfで読み込むCSSファイルを判別します。
  63.      * 
  64.      * 指定されたCSS定義xmlを読み込み、指定ユーザエージェント内容から
  65.      * 使用するCSSファイル名を$cssnameに設定します。
  66.      * $distinctos引数に'on'が指定されていない場合や、CSS定義ファイル指定外のパターン
  67.      * になった場合には、CSS定義ファイルのOS/ブラウザとも'Others'が指定されている
  68.      * CSSファイル名を選択します。<br>
  69.      * また、判別するOS/ブラウザは以下です。<br>
  70.      * OS:Macintosh,Windows<br>
  71.      * ブラウザ:MSIE/Netscape/FireFox<br>
  72.      *
  73.      * @param     string    $xmlfname   CSS定義xmlファイル(フルパス指定)
  74.      * @param     string    $useragent  httpリクエストに設定されているユーザーエージェント
  75.      * @param     string    $distinctos OS/ブラウザ判別をする場合:'on' しない場合'off'
  76.      * @access     public
  77.      * @return    void 
  78.      ***/
  79.     function htf_frm_getcss($xmlfname$useragent,$distinctos{
  80.         //プロパティ初期化
  81.         $this->xmlpath $xmlfname;
  82.         $this->cssname = "";
  83.         $this->os = "";
  84.         $this->browser = "";
  85.         $this->mozillaver = "";
  86.         //OSとブラウザを特定
  87.         if (htf_comp_property($distinctosHTF_CONF_ON)) {
  88.             $blret $this->spec_os_browser($useragent);
  89.         else {
  90.             $this->os = HTF_OS_OTHERS;
  91.             $this->browser = HTF_BROWSER_OTHERS;
  92.         }
  93.         //DOMオブジェクト定義
  94.         $objdom domxml_open_file($this->xmlpath);
  95.         $objroot $objdom->document_element();
  96.         $arrobjcss $objroot->child_nodes();
  97.         //各ノードを走査
  98.         foreach($arrobjcss as $objcss{
  99.             if($objcss->has_attributes()) {
  100.                 if (htf_comp_property($objcss->get_attribute("os",$this->os&&
  101.                     htf_comp_property($objcss->get_attribute("browser"),$this->browser)) {
  102.                     $this->cssname = htf_replace_definetag($objcss->get_attribute("fname"));
  103.                     break;
  104.                 }
  105.                 //print($objcss->get_attribute("os").'<br>');
  106.             }
  107.         }
  108.         
  109.         return;
  110.     }
  111.     
  112.     /**
  113.      * ユーザエージェントの内容から、ブラウザとOSの判別を行います。
  114.      *
  115.      * @param     string    $useragent  httpリクエストに設定されているユーザーエージェント
  116.      * @access     private
  117.      * @return    void 
  118.      ***/
  119.     function spec_os_browser($useragent{
  120.         //ブラウザの判別
  121.         $explorer ereg(HTF_BROWSER_MSIE,$useragent);
  122.         $firefox ereg(HTF_BROWSER_FF,$useragent);
  123.         $netscape ereg(HTF_BROWSER_NN,$useragent);
  124.         //Mozillaバージョン取得
  125.         if (ereg('Mozilla',$useragent)) {
  126.             $verpos strpos('Mozilla',$useragent)+strlen('Mozilla/');
  127.             $this->mozillaver = substr($useragent,$verpos,3);
  128.         }
  129.         if ($explorer{
  130.             $this->browser = HTF_BROWSER_MSIE;
  131.         else if ($firefox{
  132.             $this->browser = HTF_BROWSER_FF;
  133.         else if ($netscape{
  134.             $this->browser = HTF_BROWSER_NN;
  135.         else {
  136.             $this->browser = HTF_BROWSER_OTHERS;
  137.         }
  138.         //OSの判別
  139.         if (ereg(HTF_OS_WIN,$useragent)) {
  140.             $this->os = HTF_OS_WIN;
  141.         else if (ereg(HTF_OS_MAC,$useragent|| ereg('Mac_',$useragent)) {
  142.             $this->os = HTF_OS_MAC;
  143.         else {
  144.             $this->os = HTF_OS_OTHERS;
  145.         }
  146.         //どちらかがわからなかったら両方その他
  147.         if ($this->browser == HTF_BROWSER_OTHERS || $this->os == HTF_OS_OTHERS{
  148.             $this->browser = HTF_BROWSER_OTHERS;
  149.             $this->os = HTF_OS_OTHERS;
  150.         }
  151.         
  152.         return;
  153.     }
  154. }
  155.  
  156. ?>

Documentation generated on Tue, 19 Sep 2006 06:20:53 +0900 by phpDocumentor 1.3.0