/**
  * 絵文字番号を絵文字を表す Shift JIS の文字列に変換する。
  *
  * @param string $index 絵文字番号
  * @return string 絵文字を表す Shift JIS の文字列を返す。
  */
 function indexToCode($index)
 {
     $carrier = SC_MobileUserAgent_Ex::getCarrier();
     if ($carrier === false) {
         return MOBILE_EMOJI_SUBSTITUTE;
     }
     static $arrMap = array();
     if (empty($arrMap)) {
         $arrMap = @(include_once dirname(__FILE__) . "/../include/mobile_emoji_map_{$carrier}.inc");
     }
     return isset($arrMap[$index]) ? $arrMap[$index] : MOBILE_EMOJI_SUBSTITUTE;
 }
 /**
  * 携帯端末IDを使用して会員を検索し、パスワードの照合を行う。
  * パスワードが合っている場合は会員情報を取得する。
  *
  * @param string $pass パスワード
  * @return boolean 該当する会員が存在し、パスワードが合っている場合は true、
  *                 それ以外の場合は false を返す。
  */
 function getCustomerDataFromMobilePhoneIdPass($pass)
 {
     //docomo用にデータを取り出す。
     if (SC_MobileUserAgent_Ex::getCarrier() == 'docomo') {
         if ($_SESSION['mobile']['phone_id'] == '' && strlen($_SESSION['mobile']['phone_id']) == 0) {
             $_SESSION['mobile']['phone_id'] = SC_MobileUserAgent_Ex::getId();
         }
     }
     if (!isset($_SESSION['mobile']['phone_id']) || $_SESSION['mobile']['phone_id'] === false) {
         return false;
     }
     // 携帯端末IDが一致し、本登録された会員を検索する。
     $sql = 'SELECT * FROM dtb_customer WHERE mobile_phone_id = ? AND del_flg = 0 AND status = 2';
     $objQuery =& SC_Query_Ex::getSingletonInstance();
     @(list($data) = $objQuery->getAll($sql, array($_SESSION['mobile']['phone_id'])));
     // パスワードが合っている場合は、会員情報をcustomer_dataに格納してtrueを返す。
     if (SC_Utils_Ex::sfIsMatchHashPassword($pass, $data['password'], $data['salt'])) {
         $this->customer_data = $data;
         $this->startSession();
         return true;
     }
     return false;
 }
 /**
  * 画像を端末の解像度に合わせて変換する
  * output buffering 用コールバック関数
  *
  * @param string 入力
  * @return string 出力
  */
 public static function handler($buffer)
 {
     // 端末情報を取得する
     $carrier = SC_MobileUserAgent_Ex::getCarrier();
     $model = SC_MobileUserAgent_Ex::getModel();
     // 携帯電話の場合のみ処理を行う
     if ($carrier !== FALSE) {
         // HTML中のIMGタグを取得する
         $images = array();
         $pattern = '/<img\\s+[^<>]*src=[\'"]?([^>"\'\\s]+)[\'"]?[^>]*>/i';
         $result = preg_match_all($pattern, $buffer, $images);
         // 端末の情報を取得する
         $fp = fopen(MOBILE_IMAGE_INC_REALDIR . "mobile_image_map_{$carrier}.csv", 'r');
         // 取得できない場合は, 入力内容をそのまま返す
         if ($fp === false) {
             return $buffer;
         }
         while (($data = fgetcsv($fp, 1000, ',')) !== FALSE) {
             if ($data[1] == $model || $data[1] == '*') {
                 $cacheSize = $data[2];
                 $imageFileSize = $data[7];
                 $imageType = $data[6];
                 $imageWidth = $data[5];
                 $imageHeight = $data[4];
                 break;
             }
         }
         fclose($fp);
         // docomoとsoftbankの場合は画像ファイル一つに利用可能なサイズの上限を計算する
         // auはHTMLのbyte数上限に画像ファイルサイズが含まれないのでimageFileSizeのまま。
         if ($carrier == 'docomo' or $carrier == 'softbank') {
             if ($result != false && $result > 0) {
                 // 計算式:(利用端末で表示可能なcacheサイズ - HTMLのバイト数 - 変換後の画像名のバイト数(目安値)) / HTML中の画像数
                 $temp_imagefilesize = ($cacheSize - strlen($buffer) - 140 * $result) / $result;
             } else {
                 // 計算式:(利用端末で表示可能なcacheサイズ - HTMLのバイト数)
                 $temp_imagefilesize = $cacheSize - strlen($buffer);
             }
             // 計算結果が端末の表示可能ファイルサイズ上限より小さい場合は計算結果の値を有効にする
             if ($temp_imagefilesize < $imageFileSize) {
                 $imageFileSize = $temp_imagefilesize;
             }
         }
         // 画像変換の情報をセットする
         $imageConverter = new ImageConverter();
         $imageConverter->setOutputDir(MOBILE_IMAGE_REALDIR);
         $imageConverter->setImageType($imageType);
         $imageConverter->setImageWidth($imageWidth);
         $imageConverter->setImageHeight($imageHeight);
         $imageConverter->setFileSize($imageFileSize);
         // HTML中のIMGタグを変換後のファイルパスに置換する
         foreach ($images[1] as $key => $path) {
             // resize_image.phpは除外
             if (stripos($path, ROOT_URLPATH . 'resize_image.php') !== FALSE) {
                 continue;
             }
             $realpath = html_entity_decode($path, ENT_QUOTES);
             $realpath = substr_replace($realpath, HTML_REALDIR, 0, strlen(ROOT_URLPATH));
             $converted = $imageConverter->execute($realpath);
             if (isset($converted['outputImageName'])) {
                 $buffer = str_replace($path, MOBILE_IMAGE_URLPATH . $converted['outputImageName'], $buffer);
             } else {
                 $buffer = str_replace($images[0][$key], '<!--No image-->', $buffer);
             }
         }
     }
     return $buffer;
 }