/** * 指定したファイルを mixi フォトアルバムにアップロードするためのリンクタグを生成します。 * ユーザがアンカーを押下した後、mixi から SAP 側 Web サーバにファイルの取得要求が送信されますが、この時 SAP 側では必ず署名の検証を行う必要があります。 * 署名の検証は {@link Mars_Mixi2LeggedOAuthProvider::isAuthorized() Mars_Mixi2LeggedOAuthProvider::isAuthorized(Mars_Mixi2LeggedOAuthProvider::SIGNATURE_RSA_PHOTO_UPLOAD)} メソッドを使用して下さい。 * * @param string $path 投稿対象のファイルパス。PNG、JPEG 形式が指定可能。 * 指定可能なパスの書式は {@link Mars_HTMLHelper::buildAssetPath()} メソッドを参照。 * @param string $label {@link Mars_HTMLHelper::link()} メソッドを参照。 * @param string $callback フォトアップロード後にコールバックするパス。 * 指定可能なパスの書式は {@link Mars_RewriteRouter::buildRequestPath()} メソッドを参照。 * @param mixed $attributes タグに追加する属性。{@link Mars_HTMLHelper::link()} メソッドを参照。 * @return string 生成したリンクタグを返します。 * @link http://developer.mixi.co.jp/appli/spec/mob/for_partners/photo_upload_api アプリからフォトアップロード機能について * @since 1.9.0-p1 * @author Naomichi Yamakita <*****@*****.**> */ public function upload($path, $label, $callback, $attributes = array()) { $queryData = array(); $queryData['img_url'] = Mars_HTMLHelper::buildAssetPath($path, 'image', array('absolute' => TRUE)); $path = Mars_MixiMobileApp::buildCallbackActionPath($callback, 'upload:photo', $queryData); $buffer = $this->baseLink($label, $path, $attributes, array()); return $buffer; }
/** * マイミクをアプリに招待するためのフォームを生成します。 * * @param string $callback 招待状送信後にコールバックするパス。 * 指定可能なパスの書式は {@link Mars_RewriteRouter::buildRequestPath()} メソッドを参照。 * @param mixed $extra オプション属性。'キー=値;' 形式の文字列、または連想配列での指定が可能。 * - recipients: 初期選択状態とするユーザ ID。カンマ区切りの文字列、または配列形式で指定可能。 * - message: メッセージ本文。 * - image: メッセージに含める画像。{@link communicationFeedForm()} メソッドの 'mediaItem1' 属性を参照。 * - filterType: 対象とするユーザの種別。'joined'、'nod_joinded'、'both' のいずれかを指定。既定値は 'joined'。 * - appendURI: TRUE が指定された場合、招待状にアプリ起動のための URI を追加します。既定値は FALSE。 * - query: {@link communicationFeedForm()} メソッドの 'query' 属性を参照。 * 未指定の場合はスタート画面が表示される。 * - mobileQuery: {@link communicationFeedForm()} メソッドの 'mobileQuery' 属性を参照。 * 未指定の場合はスタート画面が表示される。 * - targetUsers: 友人の選択画面で表示するユーザのリスト。カンマ区切りの文字列、または配列形式で指定可能。 * - description: 友人の選択画面で表示する説明文。 * - excludeUsers: 友人の選択画面で非表示にするユーザのリスト。カンマ区切りの文字列、または配列形式で指定可能。 * - buttonLabel: 送信ボタンのラベル。 * @return string 生成したタグを返します。 * @link http://developer.mixi.co.jp/appli/spec/mob/for_partners/request_api リクエスト API について */ public function inviteForm($callback = NULL, $extra = array()) { $attributes = array(); $attributes['action'] = Mars_MixiMobileApp::buildCallbackActionPath($callback, 'invite:friends'); $attributes['method'] = 'post'; $extra = parent::constructParameters($extra); $hiddenBuffer = NULL; $recipients = array_find($extra, 'recipients'); $message = array_find($extra, 'message'); $image = array_find($extra, 'image'); $filterType = array_find($extra, 'filterType', 'joined'); $appendURI = array_find($extra, 'appendURI', FALSE); $query = array_find($extra, 'query', array()); $mobileQuery = array_find($extra, 'mobileQuery', array()); $targetUsers = array_find($extra, 'targetUsers'); $description = array_find($extra, 'description'); $excludeUsers = array_find($extra, 'excludeUsers'); $buttonLabel = array_find($extra, 'buttonLabel', '送信'); if ($recipients !== NULL) { if (is_array($recipients)) { $recipients = implode(',', $recipients); } $hiddenBuffer .= $this->inputHidden('recipients', array('value' => $recipients)); } if ($message !== NULL) { $hiddenBuffer .= $this->inputHidden('message', array('value' => $message)); } if (is_array($image)) { $value = sprintf('%s,%s', Mars_HTMLHelper::buildAssetPath($image[0], 'image', array('absolute' => TRUE)), $image[1]); $hiddenBuffer .= $this->inputHidden('image', array('value' => $value)); } if ($appendURI) { $uri = $this->buildLaunchURI(Mars_MixiApp::AGENT_TYPE_PC, $query); $hiddenBuffer .= $this->inputHidden('url', array('value' => $uri)); $mobileURI = $this->buildLaunchURI(Mars_MixiApp::AGENT_TYPE_MOBILE, $mobileQuery); $hiddenBuffer .= $this->inputHidden('mobile_url', array('value' => $mobileURI)); } if ($targetUsers !== NULL) { if (is_array($targetUsers)) { $targetUsers = implode(',', $targetUsers); } $hiddenBuffer .= $this->inputHidden('target_users', array('value' => $targetUsers)); } if ($description !== NULL) { $hiddenBuffer .= $this->inputHidden('description', array('value' => $description)); } if ($excludeUsers !== NULL) { if (is_array($excludeUsers)) { $excludeUsers = implode(',', $excludeUsers); } $hiddenBuffer .= $this->inputHidden('exclude_users', array('value' => $excludeUsers)); } $buffer = sprintf("<form%s>\n%s%s%s%s", parent::buildTagAttribute($attributes, FALSE), $this->inputHidden('filter_type', array('value' => 'joined')), $hiddenBuffer, $this->inputSubmit($buttonLabel), $this->close()); return $buffer; }
/** * 画像や Flash データへのリダイレクトを行います。 * * @param string $path リダイレクト先のコンテンツファイル。'webroot' からの相対パスを指定します。 * @param bool $signed TRUE を指定した場合、リクエストの妥当性を検証するための OAuth Signature が追加されます。 * @author Naomichi Yamakita <*****@*****.**> * @link http://developer.mixi.co.jp/appli/spec/mob/for_partners/images_and_flash 画像や Flash 等の表示について */ public static function sendRedirectMedia($path, $signed = FALSE) { if (substr($path, 0, 1) !== '/') { $path = '/' . $path; } $queryData = array(); if ($signed) { $queryData['signed'] = 1; } $extra = array(); $extra['query'] = $queryData; $extra['absolute'] = TRUE; $path = Mars_HTMLHelper::buildAssetPath($path, 'image', $extra); $queryData = array(); $queryData['url'] = $path; $uri = self::getContentsURI() . self::buildQueryString($queryData); Mars_DIContainerFactory::getContainer()->getResponse()->sendRedirect($uri); }