source: branches/dev/data/class/GC_MobileUserAgent.php @ 11460

Revision 11460, 3.4 KB checked in by inoue, 17 years ago (diff)

モバイル版EC-CUBE

  • Property svn:eol-style set to native
Line 
1<?php
2require_once(dirname(__FILE__) . '/../module/Net/UserAgent/Mobile.php');
3
4/**
5 * ·ÈÂÓüËö¤Î¾ðÊó¤ò°·¤¦¥¯¥é¥¹
6 *
7 * ÂоݤȤ¹¤ë·ÈÂÓüËö¤Ï $_SERVER ¤«¤é·èÄꤹ¤ë¡£
8 * ¤¹¤Ù¤Æ¤Î¥á¥½¥Ã¥É¤Ï¥¯¥é¥¹¥á¥½¥Ã¥É¡£
9 */
10class GC_MobileUserAgent {
11    /**
12     * ·ÈÂÓüËö¤Î¥­¥ã¥ê¥¢¤òɽ¤¹Ê¸»úÎó¤ò¼èÆÀ¤¹¤ë¡£
13     *
14     * ʸ»úÎó¤Ï docomo, ezweb, softbank ¤Î¤¤¤º¤ì¤«¡£
15     *
16     * @return string|false ·ÈÂÓüËö¤Î¥­¥ã¥ê¥¢¤òɽ¤¹Ê¸»úÎó¤òÊÖ¤¹¡£
17     *                      ·ÈÂÓüËö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
18     */
19    function getCarrier() {
20        $objAgent =& Net_UserAgent_Mobile::singleton();
21        if (Net_UserAgent_Mobile::isError($objAgent)) {
22            return false;
23        }
24
25        switch ($objAgent->getCarrierShortName()) {
26        case 'I':
27            return 'docomo';
28        case 'E':
29            return 'ezweb';
30        case 'V':
31            return 'softbank';
32        default:
33            return false;
34        }
35    }
36
37    /**
38     * ¾¡¼ê¥µ¥¤¥È¤ÇÍøÍѲÄǽ¤Ê·ÈÂÓüËö/ÍøÍѼԤÎID¤ò¼èÆÀ¤¹¤ë¡£
39     *
40     * ³Æ¥­¥ã¥ê¥¢¤Ç»ÈÍѤ¹¤ëID¤Î¼ïÎà:
41     * + docomo   ... UTN
42     * + ezweb    ... EZÈÖ¹æ
43     * + softbank ... üËö¥·¥ê¥¢¥ëÈÖ¹æ
44     *
45     * @return string|false ¼èÆÀ¤·¤¿ID¤òÊÖ¤¹¡£¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
46     */
47    function getId() {
48        $objAgent =& Net_UserAgent_Mobile::singleton();
49        if (Net_UserAgent_Mobile::isError($objAgent)) {
50            return false;
51        } elseif ($objAgent->isDoCoMo() || $objAgent->isVodafone()) {
52            $id = $objAgent->getSerialNumber();
53        } elseif ($objAgent->isEZweb()) {
54            $id = @$_SERVER['HTTP_X_UP_SUBNO'];
55        }
56        return isset($id) ? $id : false;
57    }
58
59    /**
60     * ·ÈÂÓüËö¤Îµ¡¼ï¤òɽ¤¹Ê¸»úÎó¤ò¼èÆÀ¤¹¤ë¡£
61     * ·ÈÂÓüËö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¥æ¡¼¥¶¡¼¥¨¡¼¥¸¥§¥ó¥È¤Î̾Á°¤ò¼èÆÀ¤¹¤ë¡£(Îã: "Mozilla")
62     *
63     * @return string ·ÈÂÓüËö¤Î¥â¥Ç¥ë¤òɽ¤¹Ê¸»úÎó¤òÊÖ¤¹¡£
64     */
65    function getModel() {
66        $objAgent =& Net_UserAgent_Mobile::singleton();
67        if (Net_UserAgent_Mobile::isError($objAgent)) {
68            return 'Unknown';
69        } elseif ($objAgent->isNonMobile()) {
70            return $objAgent->getName();
71        } else {
72            return $objAgent->getModel();
73        }
74    }
75
76    /**
77     * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓ¥­¥ã¥ê¥¢¤«¤É¤¦¤«¤òȽÊ̤¹¤ë¡£
78     *
79     * @return boolean ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
80     */
81    function isMobile() {
82        $objAgent =& Net_UserAgent_Mobile::singleton();
83        if (Net_UserAgent_Mobile::isError($objAgent)) {
84            return false;
85        } else {
86            return $objAgent->isDoCoMo() || $objAgent->isEZweb() || $objAgent->isVodafone();
87        }
88    }
89
90    /**
91     * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓ¥­¥ã¥ê¥¢¤«¤É¤¦¤«¤òȽÊ̤¹¤ë¡£
92     *
93     * @return boolean ·ÈÂÓüËö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
94     */
95    function isNonMobile() {
96        return !GC_MobileUserAgent::isMobile();
97    }
98
99    /**
100     * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓüËö¤«¤É¤¦¤«¤òȽÊ̤¹¤ë¡£
101     *
102     * @return boolean ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¾ì¹ç¤Ï true¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
103     */
104    function isSupported() {
105        $objAgent =& Net_UserAgent_Mobile::singleton();
106
107        // ·ÈÂÓüËö¤À¤Èǧ¼±¤µ¤ì¤¿¤¬¡¢User-Agent ¤Î·Á¼°¤¬Ì¤ÃΤξì¹ç
108        if (Net_UserAgent_Mobile::isError($objAgent)) {
109            gfPrintLog($objAgent->toString());
110            return false;
111        }
112
113        if ($objAgent->isDoCoMo()) {
114            $arrUnsupportedSeries = array('501i', '502i', '209i', '210i');
115            $arrUnsupportedModels = array('SH821i', 'N821i', 'P821i ', 'P651ps', 'R691i', 'F671i', 'SH251i', 'SH251iS');
116            return !in_array($objAgent->getSeries(), $arrUnsupportedSeries) && !in_array($objAgent->getModel(), $arrUnsupportedModels);
117        } elseif ($objAgent->isEZweb()) {
118            return $objAgent->isWAP2();
119        } elseif ($objAgent->isVodafone()) {
120            return $objAgent->isPacketCompliant();
121        } else {
122            // ·ÈÂÓüËö¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤Ë¤¹¤ë¡£
123            return true;
124        }
125    }
126}
127?>
Note: See TracBrowser for help on using the repository browser.