當前位置: 首頁>>代碼示例>>PHP>>正文


PHP map類代碼示例

本文整理匯總了PHP中map的典型用法代碼示例。如果您正苦於以下問題:PHP map類的具體用法?PHP map怎麽用?PHP map使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了map類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: __create

 public static function __create()
 {
     $trigger = new static();
     $trigger->sprite_url = 'not-found.png';
     $trigger->map_id = 1;
     $trigger->name = 'Trigger';
     $trigger->x = 50;
     $trigger->y = 50;
     $weaponDealer = clone $trigger;
     $weaponDealer->script = 'merchants/weapon_dealer';
     $weaponDealer->script_arguments = '{"min_level":0,"max_level":80}';
     $weaponDealer->name = 'Weapon Dealer';
     $weaponDealer->map_id = map::load_one('Trainee Village', 'name')->id;
     $weaponDealer->save();
     $weaponDealer->id = null;
     $weaponDealer->name = 'Weapon Dealer';
     $weaponDealer->map_id = map::load_one('Kinata', 'name')->id;
     $weaponDealer->save();
     $dungeonEntrance = clone $trigger;
     $dungeonEntrance->script = 'dungeon_entrance';
     $dungeonEntrance->script_arguments = '{"dungeon_script":"","modes":[0,1,2,3,4,5]}';
     $dungeonEntrance->name = 'Dungeon Entrance';
     $traineeCave = clone $dungeonEntrance;
     $traineeCave->script_arguments = '{"dungeon_script":"trainee_cave","modes":[0,1,2,3,4,5]}';
     $traineeCave->name = 'Trainee Cave';
     $traineeCave->map_id = map::load_one('Trainee Fields', 'name')->id;
     $traineeCave->save();
     $kinataUnderground = clone $dungeonEntrance;
     $kinataUnderground->script_arguments = '{"dungeon_script":"kinata_underground","modes":[0,1,2,3,4,5]}';
     $kinataUnderground->name = 'Kinata Underground';
     $kinataUnderground->x = 100;
     $kinataUnderground->y = 100;
     $kinataUnderground->map_id = map::load_one('Kinata', 'name')->id;
     $kinataUnderground->save();
 }
開發者ID:TorbenKoehn,項目名稱:lok,代碼行數:35,代碼來源:trigger.php

示例2: __construct

 public function __construct()
 {
     $this->BASE_FILE = ROOT_URL . "Carte.php";
     $this->map = map::getinstance();
     $this->lng = language::getinstance()->GetLngBlock('carte');
     parent::__construct();
 }
開發者ID:google-code-backups,項目名稱:eude,代碼行數:7,代碼來源:carte.tpl.php

示例3: layers_array

 /**
  * Generate the Map Array.
  * These are the maps that show up in the Layer Switcher
  * if $all is set to TRUE all maps are rendered
  * **caveat is that each mapping api js must be loaded **
  * 
  * @param   bool  $all
  * @return  string $js
  */
 public static function layers_array($all = FALSE)
 {
     // Javascript
     $js = "[";
     // Get All Layers
     $layers = map::base();
     // Next get the default base layer
     $default_map = Kohana::config('settings.default_map');
     if (!isset($layers[$default_map])) {
         // Map Layer Doesn't Exist - default to google
         $default_map = "google_normal";
     }
     // Get openlayers type
     $openlayers_type = $layers[$default_map]->openlayers;
     $js .= $default_map;
     foreach ($layers as $layer) {
         if ($layer->name != $default_map and $layer->active) {
             if ($all == TRUE) {
                 $js .= "," . $layer->name;
             } else {
                 if ($layer->openlayers == $openlayers_type) {
                     $js .= "," . $layer->name;
                 }
             }
         }
     }
     $js .= "]";
     return $js;
 }
開發者ID:jetherton,項目名稱:Ushahidi_Web,代碼行數:38,代碼來源:map.php

示例4: instance

 /**
  * 單例模式
  * @return map
  */
 public static function instance()
 {
     if (!self::$_instance instanceof self) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
開發者ID:licailing,項目名稱:licailing,代碼行數:11,代碼來源:map.php

示例5: calcdist

function calcdist($sys1, $sys2)
{
    //Pour avoir l'abscisse des coordonnées du système 1 [syst1 = 2456 ax = 2456%100]
    //Pour avoir l'ordonée des coordonnées du système 1 [syst1 = 2456 ay = (2456-2456%100)/100]
    list($syst1y, $syst1x) = map::ss2xy($sys1);
    list($syst2y, $syst2x) = map::ss2xy($sys2);
    return round(round(round(sqrt(carre($syst1x - $syst2x) + carre($syst1y - $syst2y)), 2), 1), 0);
}
開發者ID:google-code-backups,項目名稱:eude,代碼行數:8,代碼來源:fonction.php

示例6: geocode_location

 /**
  * Google Location GeoCoding
  *
  * Reuses map::geocode() rather than reimplementing.
  * Only really keeping this for backwards compat
  *
  * @param   string location / address
  * @return  array (longitude, latitude)
  */
 function geocode_location($address = NULL)
 {
     $result = map::geocode($address);
     if ($result) {
         return array($result['longitude'], $result['latitude'], $result['country_id']);
     } else {
         return false;
     }
 }
開發者ID:Dirichi,項目名稱:Ushahidi_Web,代碼行數:18,代碼來源:Geocoder.php

示例7: path

 public function path($CoordA, $CoordB)
 {
     list($sX, $sY) = map::ss2xy($CoordA);
     list($sX2, $sY2) = map::ss2xy($CoordB);
     $x1 = floor($this->tc * $sX - $this->tc / 2);
     $y1 = floor($this->tc * ($sY + 1) - $this->tc / 2);
     $x2 = floor($this->tc * $sX2 - $this->tc / 2);
     $y2 = floor($this->tc * ($sY2 + 1) - $this->tc / 2);
     imageline($this->im, $x1, $y1, $x2, $y2, $this->color);
 }
開發者ID:google-code-backups,項目名稱:eude,代碼行數:10,代碼來源:img.class.php

示例8: index_action

 public function index_action()
 {
     $char = character::current();
     $mapId = $char->map_id;
     $map = map::load_one($mapId);
     if (!$map) {
         page::redirect('/world/map-not-found');
     }
     $this->set('map', $map);
 }
開發者ID:TorbenKoehn,項目名稱:lok,代碼行數:10,代碼來源:world.php

示例9: prepare

 public function prepare()
 {
     global $SITE, $db;
     $this->template = "maps";
     $this->tab = 'map';
     $this->title = 'Popular maps';
     $f = $db->query_first("SELECT id, name, rank, score, plays, players FROM tf2_vars v INNER JOIN tf2_maps m on v.value = m.id");
     $fa = array('image' => map_functions::image('x600.y360', $f), 'label' => map_functions::label('', $f), 'link' => map_functions::link('', $f), 'type' => map_functions::type('', $f));
     $mlen = 18;
     $f['display_name'] = strlen($f['name']) > $mlen ? substr($f['name'], 0, $mlen - 3) . '...' : $f['name'];
     $this->params['feat'] = array_merge($f, $fa);
     ///////////////////////////////////////// New maps ////////////////////////////////////
     $this->params['new_maps'] = map::get_map_list(array('funcs' => array('count' => array('func' => 'count', 'param' => '%02d'), 'link' => array('func' => 'link'), 'label' => array('func' => 'label', 'param' => 25)), 'query' => 'SELECT * FROM tf2_maps ORDER BY first_seen DESC LIMIT 10;'));
     //////////////////////////////////////// popular maps ///////////////////////////////////
     $this->params['popular_maps'] = map::get_map_list(array('funcs' => array('link' => array('func' => 'link'), 'label' => array('func' => 'label'), 'image' => array('func' => 'image', 'param' => 'xy165')), 'query' => sprintf('SELECT id,name, official FROM tf2_maps ORDER BY score DESC LIMIT 10', $time)));
 }
開發者ID:mwilchez,項目名稱:master,代碼行數:16,代碼來源:maps.view.php

示例10: prepare

 public function prepare()
 {
     global $SITE, $db;
     $this->template = "map_list";
     $this->tab = 'map';
     $this->title = 'Map list';
     $page_size = 50;
     $page = mysql_real_escape_string((int) $this->request[1]);
     $method = $this->request[0];
     $query = '';
     switch ($method) {
         case 'rank':
         case 'score':
         default:
             $method = 'score';
             $query = sprintf('SELECT id, name, official, score, rank, players, servers, plays FROM tf2_maps ORDER BY score DESC LIMIT ' . $page * $page_size . ', ' . $page_size);
     }
     $this->params['maps'] = map::get_map_list(array('funcs' => array('link' => array('func' => 'link'), 'label' => array('func' => 'label'), 'type' => array('func' => 'type'), 'icon' => array('func' => 'icon'), 'image' => array('func' => 'image', 'param' => 'x128.y96')), 'query' => $query));
     $this->params['method'] = $method;
     $this->params['page'] = $page;
 }
開發者ID:mwilchez,項目名稱:master,代碼行數:21,代碼來源:map_list.view.php

示例11: prepare

 public function prepare()
 {
     global $db;
     $this->template = "map_search";
     require_once 'classes/map.php';
     $q = $this->request['search'];
     //$db->debug=true;
     $db->query("SELECT name FROM tf2_maps WHERE name LIKE %s", array(sprintf("%%%%%s%%%%", $q)));
     //echo mysql_error();
     if ($db->num_rows() == 1) {
         $row = $db->fetch_array();
         //die();
         header('Location: /map/' . $row['name']);
         exit;
     }
     if (!$db->num_rows()) {
         page::error("We searched and searched", "But we just couldn't find the map you were looking for.\r\n\t\t\t\tRest assured Heavy is on the job. He won't rest until he knows who's been tampering with his gun.\r\n\t\t\t\t<br/><br/>That's what you were searching for, right?", array('image' => "heavy_yell"));
     }
     //$db->debug=true;
     $this->params['list'] = map::get_map_list(array('funcs' => array('link' => array('func' => 'link'), 'label' => array('func' => 'label')), 'query' => sprintf('SELECT m.id, m.name, m.official, m.score, plays, servers, first_seen FROM tf2_maps m WHERE name LIKE \'%%%s%%\' ORDER BY score DESC LIMIT 50', $q)));
     $this->title = sprintf("Search: %s", htmlspecialchars($this->request[0]));
 }
開發者ID:mwilchez,項目名稱:master,代碼行數:22,代碼來源:map_search.view.php

示例12: prepare

 public function prepare()
 {
     $this->template = "map";
     $this->tab = 'map';
     global $SITE;
     $SITE['head'] .= '<script type="text/javascript" src="https://www.google.com/jsapi"></script>';
     require_once 'classes/map.php';
     $map = new map($this->request[0]);
     $i = $map->get_info();
     $s = $map->get_stats();
     $stats[] = array('key' => 'Players', 'now' => $i['players'], 'average' => $s['avg_players']);
     $stats[] = array('key' => 'Servers', 'now' => $i['servers'], 'average' => $s['avg_servers']);
     $stats[] = array('key' => 'Saturation', 'now' => $i['players'] > 0 ? $i['servers'] / $i['players'] : 0, 'average' => $s['saturation']);
     $this->title = htmlspecialchars($this->request[0]);
     $this->params['info'] = $i;
     $this->params['servers'] = $map->get_servers(25);
     $this->params['images'] = $map->get_images();
     $this->params['extra'] = $map->get_extra();
     $this->params['stats'] = $stats;
 }
開發者ID:mwilchez,項目名稱:master,代碼行數:20,代碼來源:map.view.php

示例13: date_default_timezone_set

Kohana::config_set('settings.email_host', $settings->email_host);
Kohana::config_set('settings.email_servertype', $settings->email_servertype);
Kohana::config_set('settings.email_ssl', $settings->email_ssl);
Kohana::config_set('settings.alerts_email', $settings->alerts_email);
Kohana::config_set('settings.db_version', $settings->db_version);
Kohana::config_set('settings.ushahidi_version', $settings->ushahidi_version);
Kohana::config_set('settings.private_deployment', $settings->private_deployment);
// Set Site Timezone
if (function_exists('date_default_timezone_set')) {
    $timezone = $settings->site_timezone;
    // Set default timezone, due to increased validation of date settings
    // which cause massive amounts of E_NOTICEs to be generated in PHP 5.2+
    date_default_timezone_set(empty($timezone) ? date_default_timezone_get() : $timezone);
    Kohana::config_set('settings.site_timezone', $timezone);
}
// Cache Settings
$cache_pages = $settings->cache_pages ? TRUE : FALSE;
Kohana::config_set('cache.cache_pages', $cache_pages);
Kohana::config_set('cache.default.lifetime', $settings->cache_pages_lifetime);
$default_map = $settings->default_map;
$map_layer = map::base($default_map);
if ($map_layer) {
    Kohana::config_set('settings.api_url', "<script type=\"text/javascript\" src=\"" . $map_layer->api_url . "\"></script>");
}
// And in case you want to display all maps on one page...
$api_google = $settings->api_google;
$api_yahoo = $settings->api_yahoo;
Kohana::config_set('settings.api_url_all', '<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6"></script><script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=' . $api_yahoo . '"></script><script src="http://maps.google.com/maps/api/js?v=3.2&amp;sensor=false" type="text/javascript"></script>' . html::script('http://www.openstreetmap.org/openlayers/OpenStreetMap.js'));
// Additional Mime Types (KMZ/KML)
Kohana::config_set('mimes.kml', array('text/xml'));
Kohana::config_set('mimes.kmz', array('text/xml'));
開發者ID:redspider,項目名稱:Ushahidi_Web,代碼行數:31,代碼來源:2_settings.php

示例14: article_list

function article_list($vars)
{
    if ($vars['loop'] === "rel" && empty($vars['id'])) {
        return false;
    }
    $resource = array();
    $map_where = array();
    $status = '1';
    isset($vars['status']) && ($status = (int) $vars['status']);
    $where_sql = "WHERE `status`='{$status}'";
    $vars['call'] == 'user' && ($where_sql .= " AND `postype`='0'");
    $vars['call'] == 'admin' && ($where_sql .= " AND `postype`='1'");
    $hidden = iCache::get('iCMS/category/hidden');
    $hidden && ($where_sql .= iPHP::where($hidden, 'cid', 'not'));
    $maxperpage = isset($vars['row']) ? (int) $vars['row'] : 10;
    $cache_time = isset($vars['time']) ? (int) $vars['time'] : -1;
    isset($vars['userid']) && ($where_sql .= " AND `userid`='{$vars['userid']}'");
    isset($vars['weight']) && ($where_sql .= " AND `weight`='" . _int($vars['weight']) . "'");
    if (isset($vars['ucid']) && $vars['ucid'] != '') {
        $where_sql .= " AND `ucid`='{$vars['ucid']}'";
    }
    if (isset($vars['cid!'])) {
        $ncids = explode(',', $vars['cid!']);
        $vars['sub'] && ($ncids += iCMS::get_category_ids($ncids, true));
        $where_sql .= iPHP::where($ncids, 'cid', 'not');
    }
    if ($vars['cid'] && !isset($vars['cids'])) {
        $cid = explode(',', $vars['cid']);
        $vars['sub'] && ($cid += iCMS::get_category_ids($cid, true));
        $where_sql .= iPHP::where($cid, 'cid');
    }
    if (isset($vars['cids']) && !$vars['cid']) {
        $cids = explode(',', $vars['cids']);
        $vars['sub'] && ($cids += iCMS::get_category_ids($vars['cids'], true));
        if ($cids) {
            iPHP::import(iPHP_APP_CORE . '/iMAP.class.php');
            map::init('category', iCMS_APP_ARTICLE);
            $map_where += map::where($cids);
        }
    }
    if (isset($vars['pid']) && !isset($vars['pids'])) {
        $where_sql .= iPHP::where($vars['pid'], 'pid');
    }
    if (isset($vars['pids']) && !isset($vars['pid'])) {
        iPHP::import(iPHP_APP_CORE . '/iMAP.class.php');
        map::init('prop', iCMS_APP_ARTICLE);
        $map_where += map::where($vars['pids']);
    }
    if (isset($vars['tids'])) {
        iPHP::import(iPHP_APP_CORE . '/iMAP.class.php');
        map::init('tags', iCMS_APP_ARTICLE);
        $map_where += map::where($vars['tids']);
    }
    if (isset($vars['keywords'])) {
        //最好使用 iCMS:article:search
        if (empty($vars['keywords'])) {
            return;
        }
        if (strpos($vars['keywords'], ',') === false) {
            $vars['keywords'] = str_replace(array('%', '_'), array('\\%', '\\_'), $vars['keywords']);
            $where_sql .= " AND CONCAT(title,keywords,description) like '%" . addslashes($vars['keywords']) . "%'";
        } else {
            $kws = explode(',', $vars['keywords']);
            foreach ($kws as $kwv) {
                $keywords .= addslashes($kwv) . "|";
            }
            $keywords = substr($keywords, 0, -1);
            $where_sql .= " AND CONCAT(title,keywords,description) REGEXP '{$keywords}' ";
        }
    }
    $vars['id'] && ($where_sql .= iPHP::where($vars['id'], 'id'));
    $vars['id!'] && ($where_sql .= iPHP::where($vars['id!'], 'id', 'not'));
    $by = $vars['by'] == "ASC" ? "ASC" : "DESC";
    isset($vars['pic']) && ($where_sql .= " AND `haspic`='1'");
    isset($vars['nopic']) && ($where_sql .= " AND `haspic`='0'");
    switch ($vars['orderby']) {
        case "id":
            $order_sql = " ORDER BY `id` {$by}";
            break;
        case "hot":
            $order_sql = " ORDER BY `hits` {$by}";
            break;
        case "week":
            $order_sql = " ORDER BY `hits_week` {$by}";
            break;
        case "month":
            $order_sql = " ORDER BY `hits_month` {$by}";
            break;
        case "comment":
            $order_sql = " ORDER BY `comments` {$by}";
            break;
        case "pubdate":
            $order_sql = " ORDER BY `pubdate` {$by}";
            break;
        case "disorder":
            $order_sql = " ORDER BY `ordernum` {$by}";
            break;
        case "rand":
            $order_sql = " ORDER BY rand() {$by}";
            break;
//.........這裏部分代碼省略.........
開發者ID:World3D,項目名稱:iCMS,代碼行數:101,代碼來源:article.func.php

示例15: do_save

 function do_save()
 {
     $appid = $this->appid;
     $cid = (int) $_POST['cid'];
     $rootid = (int) $_POST['rootid'];
     $status = (int) $_POST['status'];
     $isucshow = (int) $_POST['isucshow'];
     $issend = (int) $_POST['issend'];
     $isexamine = (int) $_POST['isexamine'];
     $ordernum = (int) $_POST['ordernum'];
     $mode = (int) $_POST['mode'];
     $pid = implode(',', (array) $_POST['pid']);
     $_pid = iS::escapeStr($_POST['_pid']);
     $_rootid_hash = iS::escapeStr($_POST['_rootid_hash']);
     $name = iS::escapeStr($_POST['name']);
     $subname = iS::escapeStr($_POST['subname']);
     $domain = iS::escapeStr($_POST['domain']);
     $htmlext = iS::escapeStr($_POST['htmlext']);
     $url = iS::escapeStr($_POST['url']);
     $password = iS::escapeStr($_POST['password']);
     $pic = iS::escapeStr($_POST['pic']);
     $mpic = iS::escapeStr($_POST['mpic']);
     $spic = iS::escapeStr($_POST['spic']);
     $dir = iS::escapeStr($_POST['dir']);
     $title = iS::escapeStr($_POST['title']);
     $keywords = iS::escapeStr($_POST['keywords']);
     $description = iS::escapeStr($_POST['description']);
     $categoryURI = iS::escapeStr($_POST['categoryURI']);
     $categoryRule = iS::escapeStr($_POST['categoryRule']);
     $contentRule = iS::escapeStr($_POST['contentRule']);
     $urlRule = iS::escapeStr($_POST['urlRule']);
     $indexTPL = iS::escapeStr($_POST['indexTPL']);
     $listTPL = iS::escapeStr($_POST['listTPL']);
     $contentTPL = iS::escapeStr($_POST['contentTPL']);
     $metadata = iS::escapeStr($_POST['metadata']);
     $contentprop = iS::escapeStr($_POST['contentprop']);
     $body = $_POST['body'];
     $hasbody = (int) $_POST['hasbody'];
     $hasbody or $hasbody = $body ? 1 : 0;
     if ($_rootid_hash) {
         $_rootid = authcode($_rootid_hash);
         if ($rootid != $_rootid) {
             iPHP::alert('非法數據提交!');
         } else {
             iACP::CP($_rootid, 'a', 'alert');
             exit;
         }
     }
     $cid && $cid == $rootid && iPHP::alert('不能以自身做為上級' . $this->category_name);
     empty($name) && iPHP::alert($this->category_name . '名稱不能為空!');
     if ($metadata) {
         $md = array();
         foreach ($metadata['key'] as $_mk => $_mval) {
             !preg_match("/[a-zA-Z0-9_\\-]/", $_mval) && iPHP::alert($this->category_name . '附加屬性名稱隻能由英文字母、數字或_-組成(不支持中文)');
             $md[$_mval] = $metadata['value'][$_mk];
         }
         $metadata = addslashes(serialize($md));
     }
     if ($contentprop) {
         $ca = array();
         foreach ($contentprop['key'] as $_cak => $_caval) {
             $_caval or $_caval = strtolower(pinyin($contentprop['name'][$_cak]));
             !preg_match("/[a-zA-Z0-9_\\-]/", $_caval) && iPHP::alert('內容附加屬性字段隻能由英文字母、數字或_-組成(不支持中文)');
             $ca[$_caval] = $contentprop['name'][$_cak];
         }
         $contentprop = addslashes(serialize($ca));
     }
     if ($mode == "2") {
         if (strpos($categoryRule, '{CDIR}') === FALSE && strpos($categoryRule, '{CID}') === FALSE && strpos($categoryRule, '{0xCID}') === FALSE) {
             iPHP::alert('偽靜態模式下版塊URL規則<hr />必需要有<br />{CDIR}版塊目錄<br />或者<br />{CID},{0xCID}版塊ID');
         }
         if (strpos($contentRule, '{ID}') === FALSE && strpos($contentRule, '{0xID}') === FALSE && strpos($contentRule, '{LINK}') === FALSE) {
             iPHP::alert('偽靜態模式下內容URL規則<hr />必需要有<br />{ID}' . $this->_app_name . 'ID <br />或者<br />{0xID}' . $this->_app_name . 'ID補零<br />或者<br />{LINK}' . $this->_app_name . '自定義鏈接');
         }
     }
     iPHP::import(iPHP_APP_CORE . '/iMAP.class.php');
     map::init('prop', iCMS_APP_CATEGORY);
     $fields = array('rootid', 'appid', 'ordernum', 'name', 'subname', 'password', 'title', 'keywords', 'description', 'dir', 'mode', 'domain', 'url', 'pic', 'mpic', 'spic', 'htmlext', 'categoryURI', 'categoryRule', 'contentRule', 'urlRule', 'indexTPL', 'listTPL', 'contentTPL', 'metadata', 'contentprop', 'hasbody', 'pid', 'isexamine', 'issend', 'isucshow', 'status');
     $data = compact($fields);
     if (empty($cid)) {
         iACP::CP($rootid, 'a', 'alert');
         $nameArray = explode("\n", $name);
         $_count = count($nameArray);
         foreach ($nameArray as $nkey => $_name) {
             $_name = trim($_name);
             if (empty($_name)) {
                 continue;
             }
             if ($_count == "1") {
                 if (empty($dir) && empty($url)) {
                     $dir = strtolower(pinyin($_name));
                 }
             } else {
                 empty($url) && ($dir = strtolower(pinyin($_name)));
             }
             $this->check_dir($dir, $appid, $url);
             $data['name'] = $_name;
             $data['dir'] = $dir;
             $data['userid'] = iMember::$userid;
             $data['creator'] = iMember::$nickname;
//.........這裏部分代碼省略.........
開發者ID:World3D,項目名稱:iCMS,代碼行數:101,代碼來源:category.app.php


注:本文中的map類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。