当前位置: 首页>>代码示例>>PHP>>正文


PHP currentPage函数代码示例

本文整理汇总了PHP中currentPage函数的典型用法代码示例。如果您正苦于以下问题:PHP currentPage函数的具体用法?PHP currentPage怎么用?PHP currentPage使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了currentPage函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: __construct

 public function __construct()
 {
     new Accesshandler("friends");
     if (loggedIn()) {
         new MenuItem(array("name" => "friends", "label" => translate("friends"), "page" => "friends", "menu" => "my_account", "weight" => 50));
         new MenuItem(array("name" => "friend_requests", "label" => translate("friend_requests"), "page" => "Friendrequests", "menu" => "my_account", "weight" => 100));
         new Usersetting(array("name" => "notify_when_friend_request_sent", "field_type" => "dropdown", "options" => array("email" => "Email", "site" => "Site", "both" => "Both", "none" => "None"), "tab" => "notifications", "default_value" => "both"));
         new Usersetting(array("name" => "notify_when_friend_request", "field_type" => "dropdown", "options" => array("email" => "Email", "site" => "Site", "both" => "Both", "none" => "None"), "tab" => "notifications", "default_value" => "both"));
         if (currentPage() == "profile" && pageArray(1)) {
             if (pageArray(1) != getLoggedInUserGuid()) {
                 if (!FriendsPlugin::requestSent(getLoggedInUserGuid(), pageArray(1))) {
                     if (!FriendsPlugin::friends(pageArray(1), getLoggedInUserGuid())) {
                         new MenuItem(array("name" => "add_friend", "label" => translate("add_friend"), "page" => addTokenToURL("action/addFriend/" . pageArray(1)), "menu" => "profile", "weight" => 10, "link_class" => "list-group-item list-group-item-info confirm"));
                     } else {
                         new MenuItem(array("name" => "remove_friend", "label" => translate("remove_friend"), "page" => addTokenToURL("action/removeFriend/" . pageArray(1)), "menu" => "profile", "weight" => 10, "link_class" => "list-group-item list-group-item-warning confirm"));
                     }
                 } else {
                     new MenuItem(array("name" => "friend_request_sent", "label" => translate("friendship_requested"), "page" => "friend", "menu" => "profile", "weight" => 20, "link_class" => "list-group-item confirm"));
                 }
             }
         }
     }
     new ViewExtension("profile/left", "friends/profile", "after");
     new ViewExtension('pages/home_stats', 'pages/friend_stats');
     new ViewExtension("user/buttons", "friends/friend_button");
 }
开发者ID:socialapparatus,项目名称:socialapparatus,代码行数:26,代码来源:FriendsPlugin.php

示例2: __construct

 protected final function __construct($glob)
 {
     //Get the main config because it will be used
     if (isset($GLOBALS['db']) && ($result = $GLOBALS['db']->select('CubeCart_config', array('array'), array('name' => 'config'), false, 1, false, false)) !== false) {
         $array_out = $this->_json_decode($result[0]['array']);
     }
     //Remove the db password for safety
     unset($glob['dbpassword']);
     //Remove cache setting due to variable clash
     if (isset($glob['cache'])) {
         unset($glob['cache']);
     }
     if (!empty($array_out)) {
         $this->_config['config'] = $this->_clean($array_out);
         //Merge the main global with the config
         if (is_array($this->_config['config'])) {
             $this->_config['config'] = array_merge($this->_config['config'], $glob);
         }
     } else {
         $this->_config['config'] = $glob;
     }
     // Don't allow cache if current domain is not the real one.
     if (!isset($this->_config['config']['cookie_domain']) || empty($this->_config['config']['cookie_domain'])) {
         $cache = false;
     } elseif (!strstr(currentPage(), trim($this->_config['config']['cookie_domain'], '.'))) {
         $cache = false;
     } else {
         $cache = (bool) $this->_config['config']['cache'];
     }
     $GLOBALS['cache']->enable($cache);
     if (!$cache || defined('CC_IN_ADMIN') && CC_IN_ADMIN) {
         $GLOBALS['cache']->clear();
     }
 }
开发者ID:Geotex,项目名称:v6,代码行数:34,代码来源:config.class.php

示例3: __construct

 protected final function __construct()
 {
     if (isset($GLOBALS['session'])) {
         //If the language is trying to be changed try to change it
         if ((isset($_POST['set_language']) && ($switch = $_POST['set_language']) || isset($_GET['set_language']) && ($switch = $_GET['set_language'])) && $this->_valid($switch)) {
             $GLOBALS['session']->set('language', $switch, 'client');
             httpredir(currentPage(array('set_language')));
         } else {
             //See if the language is set in the session
             if (!CC_IN_ADMIN && $GLOBALS['session']->has('language', 'client')) {
                 $this->_language = $GLOBALS['session']->get('language', 'client');
             } elseif (CC_IN_ADMIN) {
                 $admin_lang = $GLOBALS['session']->get('user_language', 'admin');
                 $this->_language = !empty($admin_lang) ? $admin_lang : $GLOBALS['config']->get('config', 'default_language');
             } else {
                 //Try the default config language
                 $cl = $GLOBALS['config']->get('config', 'default_language');
                 $this->_language = !empty($cl) && file_exists(CC_ROOT_DIR . '/language/' . $cl . '.xml') && $this->_valid($cl) ? $cl : 'en-GB';
                 if (file_exists(CC_ROOT_DIR . '/language/' . $this->_language . '.xml')) {
                     //Set the language to the session
                     $GLOBALS['session']->set('language', $this->_language, 'client');
                 } else {
                     trigger_error('No valid language found!', E_USER_ERROR);
                 }
             }
         }
     } else {
         $this->_language = 'en-GB';
     }
     $GLOBALS['smarty']->assign("CURRENT_LANGUAGE", $this->_language);
     $this->loadLang();
 }
开发者ID:briansandall,项目名称:v6,代码行数:32,代码来源:language.class.php

示例4: pageHeading

function pageHeading()
{
    include 'config/pages.config.inc.php';
    $currentPage = currentPage();
    // return $currentPage;
    return isset($pages->{$currentPage}->pageTitle) ? $pages->{$currentPage}->pageTitle : $pages->{$currentPage}->mainNavText;
}
开发者ID:simonhudson,项目名称:boilerplate,代码行数:7,代码来源:fn.pageHeading.php

示例5: __construct

 public function __construct($name, $weight = 500, $buttons = array())
 {
     if (currentPage() == "activity") {
         $activity_tabs = Cache::get("activity_tabs", "site");
         $activity_tabs[$name] = array("name" => $name, "weight" => $weight, "button" => $buttons);
         new Cache("activity_tabs", $activity_tabs, "site");
     }
 }
开发者ID:socialapparatus,项目名称:socialapparatus,代码行数:8,代码来源:ActivityTab.php

示例6: __construct

 public function __construct()
 {
     if (loggedIn()) {
         new MenuItem(array("name" => "profile", "label" => "My Profile", "page" => "profile/" . getLoggedInUserGuid(), "menu" => "my_account", "weight" => 0));
         if (currentPage() == "profile" && pageArray(1) == getLoggedInUserGuid()) {
             new MenuItem(array("name" => "edit_profile", "label" => "Edit Profile", "menu" => "profile", "page" => "editProfile", "list_class" => "active", "link_class" => "list-group-item list-group-item-danger"));
         } elseif (currentPage() == "home" && loggedIn()) {
             new MenuItem(array("name" => "view_my_profile", "label" => "View My Profile", "menu" => "profile", "page" => "profile/" . getLoggedInUserGuid(), "weight" => 10));
             new MenuItem(array("name" => "edit_profile", "label" => "Edit My Profile", "menu" => "profile", "page" => "editProfile", "link_class" => "list-group-item", "weight" => 20));
             if (isEnabledPlugin("members")) {
                 new MenuItem(array("name" => "members", "label" => "Browse Members", "menu" => "profile", "page" => "members", "weight" => 30));
             }
             if (isEnabledPlugin("inviteFriends")) {
                 new MenuItem(array("name" => "invite_friends", "label" => translate("invite_your_friends"), "menu" => "profile", "page" => "members", "weight" => 40));
             }
         }
         if (currentPage() == "profile" && adminLoggedIn()) {
             if (adminLoggedIn()) {
                 $guid = pageArray(1);
                 $user = getEntity($guid);
                 if (is_a($user, "SocialApparatus\\User")) {
                     if (!isAdmin($user)) {
                         new MenuItem(array("name" => "delete", "label" => "Delete User", "page" => "action/deleteUser/{$guid}", "menu" => "profile", "weight" => 100000, "list_class" => "active", "link_class" => "list-group-item list-group-item-danger confirm"));
                         new MenuItem(array("name" => "login_as", "label" => "Login As", "page" => "action/loginas/{$guid}", "menu" => "profile", "weight" => 90000, "list_class" => "active", "link_class" => "list-group-item list-group-item-danger confirm"));
                         if ($user->banned == "true") {
                             new MenuItem(array("name" => "unban", "label" => "Unban", "page" => "action/unbanUser/{$guid}", "menu" => "profile", "weight" => 80000, "list_class" => "active", "link_class" => "list-group-item list-group-item-danger confirm"));
                         } else {
                             new MenuItem(array("name" => "ban", "label" => "Ban", "page" => "action/banUser/{$guid}", "menu" => "profile", "weight" => 80000, "list_class" => "active", "link_class" => "list-group-item list-group-item-danger confirm"));
                         }
                     }
                 }
             }
         }
     }
     if (currentPage() == "profile") {
         new CSS("profile", getSitePath() . "core_plugins/profile/assets/css/profile.css");
         new FooterJS('profile', getSiteURL() . 'core_plugins/profile/assets/js/profile.js', 900, true);
     }
     if (currentPage() == "admin") {
         new ViewExtension("admin/tabs", "admin_tabs/profile_fields");
     }
     new ProfileField("first_name", "First Name", "text", false, false, "form-control", "default", 10);
     new ProfileField("last_name", "Last Name", "text", false, false, "form-control", "default", 20);
     new ProfileField("gender", "Gender", "dropdown", array("Male" => "Male", "Female" => "Female"));
     new ProfileField("birthday", "Birthday", "date");
     new ProfileField("about", "About Me", "textarea");
     new ProfileField("hobbies", "Hobbies", "tags");
     new StorageType("User", "about", "text");
     new ViewExtension("profile/right", "profile/activity");
 }
开发者ID:socialapparatus,项目名称:socialapparatus,代码行数:50,代码来源:ProfilePlugin.php

示例7: __construct

 function __construct()
 {
     new BlockedContentHandler("BlockedUserContentHandler");
     if (currentPage() == "profile") {
         $guid = pageArray(1);
         if ($guid != getLoggedInUserGuid()) {
             $user = getEntity($guid);
             if (!self::blocked($guid)) {
                 new MenuItem(array("name" => "block", "label" => "Block", "menu" => "profile", "page" => "action/blockUser/" . $guid, "link_class" => 'list-group-item list-group-item-danger'));
             } else {
                 new MenuItem(array("name" => "unblock", "label" => "Unblock", "menu" => "profile", "page" => "action/unBlockUser/" . $guid, "link_class" => "list-group-item list-group-item-success"));
             }
         }
     }
 }
开发者ID:socialapparatus,项目名称:socialapparatus,代码行数:15,代码来源:BlockUserPlugin.php

示例8: publishForPage

 public static function publishForPage()
 {
     Plugin_Hook::createTemp('content_load', function () {
         /* outprint the content data that has already been cached */
         currentPage()->publishContentHook();
     });
     /* if the script didn't require a new page we load the template for this one */
     Plugin_Hook::createTemp('script_load', function () {
         self::publishScripts();
     });
     Plugin_Hook::createTemp('meta_load', function () {
         currentPage()->publishMETA();
     });
     /* we need to load the template file for the site and inject our page content */
     self::requireTemplate();
 }
开发者ID:loonpwn,项目名称:Lunor-CMS,代码行数:16,代码来源:view.php

示例9: __construct

 function __construct()
 {
     if (loggedIn()) {
         if (currentPage() == "profile") {
             if (isEnabledPlugin("Friends")) {
                 $user_one = pageArray(1);
                 $user_two = getLoggedInUserGuid();
                 if (FriendsPlugin::friends($user_one, $user_two)) {
                     new MenuItem(array("name" => "chat", "menu" => "profile", "label" => "Chat", "page" => "action/CreateChat/" . $user_one, "link_class" => "list-group-item list-group-item-success"));
                 }
             }
         }
     }
     new ViewExtension("page_elements/foot", "chat/chat_boxes");
     new CSS("chat", getSitePath() . "core_plugins/chat/assets/css/chat.css", 400);
     new FooterJS("chat", getSiteURL() . "core_plugins/chat/assets/js/chat.js", 400, true);
     new Usersetting(array("name" => "notify_offline_chat", "field_type" => "dropdown", "options" => array("yes" => "Yes", "no" => "No"), "default_value" => "yes", "tab" => "notifications"));
 }
开发者ID:socialapparatus,项目名称:socialapparatus,代码行数:18,代码来源:ChatPlugin.php

示例10: __construct

 protected final function __construct()
 {
     $cache = Cache::getInstance();
     // Should we be showing prices?
     if (Config::getInstance()->get('config', 'catalogue_hide_prices') && !User::getInstance()->is() && !CC_IN_ADMIN && !$GLOBALS['session']->has('admin_id', 'admin_data')) {
         Session::getInstance()->set('hide_prices', true);
     } else {
         Session::getInstance()->delete('hide_prices');
     }
     // Switch Currency
     if (isset($_POST['set_currency']) && !empty($_POST['set_currency']) && ($switch = $_POST['set_currency']) || isset($_GET['set_currency']) && !empty($_GET['set_currency']) && ($switch = $_GET['set_currency'])) {
         if (preg_match('#^[A-Z]{3}$#i', $switch) && ($currency = $GLOBALS['db']->select('CubeCart_currency', array('updated'), array('code' => (string) $switch, 'active' => 1)))) {
             $GLOBALS['session']->set('currency', $switch, 'client');
         }
         httpredir(currentPage(array('set_currency')));
     }
     // Autoload tax tables
     $this->loadCurrencyVars();
 }
开发者ID:Dirty-Butter,项目名称:v6,代码行数:19,代码来源:tax.class.php

示例11: __construct

 public function __construct()
 {
     if ($GLOBALS['config']->get('config', 'ssl') && !ADMIN_CP && !CC_SSL && !in_array($_GET['_g'], $this->_ignored_pages)) {
         $current_url = currentPage();
         $current_url = preg_replace('#^http://#', 'https://', $current_url);
         $ssl_url = $GLOBALS['config']->get('config', 'ssl_url');
         if (preg_match('#^' . $ssl_url . '#', $current_url)) {
             // Make sure the domain for SSL is expected
             httpredir($current_url, '', false, 301);
         } else {
             // If not we try to make it based on what we have
             $url_parts = parse_url($current_url);
             $url_parts['path'] = str_replace($GLOBALS['config']->get('config', 'ssl_path'), '/', $url_parts['path']);
             $ssl_url .= !empty($url_parts['path']) ? $url_parts['path'] : '';
             $ssl_url .= !empty($url_parts['query']) ? '?' . $url_parts['query'] : '';
             $anchor = !empty($url_parts['fragment']) ? '#' . $url_parts['fragment'] : '';
             httpredir($ssl_url, $anchor, false, 301);
         }
     }
 }
开发者ID:Geotex,项目名称:v6,代码行数:20,代码来源:ssl.class.php

示例12: draw

 static function draw($scope = "internal")
 {
     $cssArray = Cache::get("css_array", "page");
     switch ($scope) {
         case "internal":
             return "<link href='" . getSiteURL() . "views/page_elements/css.php?page=" . currentPage() . "' rel='stylesheet' media='all'>";
             break;
         case "external":
             $return = NULL;
             if (is_array($cssArray)) {
                 foreach ($cssArray as $css) {
                     if (strpos($css['css'], "http") !== false) {
                         $return .= "<link href='" . $css['css'] . "' rel='stylesheet' media='all'>";
                     }
                 }
             }
             return $return;
             break;
     }
     return NULL;
 }
开发者ID:socialapparatus,项目名称:socialapparatus,代码行数:21,代码来源:CSS.php

示例13: process

 public function process()
 {
     $coinbase_order = $this->coinbase->call("orders/" . $_GET["order"]["uuid"])->data;
     $order = Order::getInstance();
     if ($coinbase_order->status == "mispaid") {
         $order->orderStatus(Order::ORDER_PENDING, $this->order_number);
         $order->paymentStatus(Order::PAYMENT_PENDING, $this->order_number);
         $transData['notes'] = "Bitcoin payment mispaid";
         $order->logTransaction($transData);
         $GLOBALS['gui']->setError("Your Bitcoin payment was the incorrect amount. Please contact support to resolve your order.");
     } elseif ($coinbase_order->status == "expired") {
         $order->orderStatus(Order::ORDER_PENDING, $this->order_number);
         $order->paymentStatus(Order::PAYMENT_PENDING, $this->order_number);
         $transData['notes'] = "Bitcoin payment expired";
         $order->logTransaction($transData);
         $GLOBALS['gui']->setError("Your Bitcoin payment has expired before you could make your payment. Please contact support to resolve your order.");
     } else {
         $order->orderStatus(Order::ORDER_PROCESS, $this->order_number);
         $order->paymentStatus(Order::PAYMENT_SUCCESS, $this->order_number);
         $transData['notes'] = "Bitcoin payment successful";
         $order->logTransaction($transData);
     }
     httpredir(currentPage(array('_g', 'type', 'cmd', 'module'), array('_a' => 'complete')));
 }
开发者ID:digitaldevelopers,项目名称:cubecart-coinbase,代码行数:24,代码来源:gateway.class.php

示例14: preg_match

     $module_type = preg_match("/[a-z]/i", $_GET['type']) ? $_GET['type'] : '';
     $GLOBALS['gui']->addBreadcrumb($lang['navigation']['nav_plugins'], '?_g=plugins');
     // Display Modules
     $GLOBALS['main']->wikiNamespace('Modules');
     if (!empty($_GET['module'])) {
         // Load Module
         $GLOBALS['main']->wikiPage($_GET['module']);
         // Load additional data from XML
         $config_xml = CC_ROOT_DIR . '/modules/' . $module_type . '/' . $_GET['module'] . '/config.xml';
         $xml = new SimpleXMLElement(file_get_contents($config_xml));
         $module_info = array('name' => (string) $xml->info->name);
         $module = array('type' => strtolower($module_type), 'module' => $module_type == 'installer' ? '' : $_GET['module']);
         $GLOBALS['gui']->addBreadcrumb(isset($_GET['variant']) ? $_GET['variant'] : $module_info['name'], $_GET);
         $module_admin = CC_ROOT_DIR . '/modules/' . $module['type'] . '/' . $module['module'] . '/admin/' . $node . '.inc.php';
         if (file_exists($module_admin)) {
             define('MODULE_FORM_ACTION', defined('VAL_SELF') ? constant('VAL_SELF') : currentPage());
             include $module_admin;
         } else {
             trigger_error(sprintf("File '%s' doesn't exist", $module_admin), E_USER_WARNING);
         }
     }
 } else {
     if (strtolower($_GET['_g']) == 'plugin' && isset($_GET['name'])) {
         // Include plugins
         $GLOBALS['main']->wikiNamespace('Plugins');
         foreach ($GLOBALS['hooks']->load('admin.' . strtolower($_GET['name'])) as $hook) {
             include $hook;
         }
     } else {
         if ($_GET['_g'] == '401') {
             $GLOBALS['gui']->setError($lang['navigation']['error_401']);
开发者ID:kblok,项目名称:v6,代码行数:31,代码来源:controller.admin.session.true.inc.php

示例15: placeOrder

 /**
  * Create order
  *
  * @param bool $force
  * @return bool
  */
 public function placeOrder($force_order = false)
 {
     foreach ($GLOBALS['hooks']->load('class.order.place_order') as $hook) {
         include $hook;
     }
     if ($_GET['retrieve'] && isset($_GET['cart_order_id']) && !empty($_GET['cart_order_id'])) {
         // Order retrieval
         if ($this->_retrieveOrder($_GET['cart_order_id'])) {
             httpredir(currentPage(array('cart_order_id', 'retrieve'), array('_a' => 'confirm')));
         }
     } else {
         if (!empty($this->_basket)) {
             // Order Creation/Updating
             $this->_saveAddresses();
             if (isset($this->_basket['cart_order_id']) && !empty($this->_basket['cart_order_id']) && ($check = $GLOBALS['db']->select('CubeCart_order_summary', array('cart_order_id'), array('cart_order_id' => $this->_basket['cart_order_id'], 'status' => 1), false, false, false, false))) {
                 // Order has already been placed and is still pending, so we only need to update
                 $this->_updateOrder();
                 $update = true;
             } else {
                 // Create a new order
                 $this->createOrderId();
                 // Take basket data from session, and insert into database
                 foreach ($this->_basket['contents'] as $key => $item) {
                     $product = $this->_orderAddProduct($item, $key);
                     $this->_basket['contents'][$key] = is_array($product) ? array_merge($product, $item) : $item;
                 }
                 $update = false;
             }
             // Shipping - calculate taxes (if any)
             if (isset($this->_basket['shipping']) && is_array($this->_basket['shipping'])) {
                 Tax::getInstance()->productTax($this->_basket['shipping']['value'], (int) $this->_basket['shipping']['tax_id'], false, 0, 'shipping');
             }
             // Insert Taxes
             $GLOBALS['db']->delete('CubeCart_order_tax', array('cart_order_id' => $this->_order_id));
             if (is_array($this->_basket['order_taxes'])) {
                 foreach ($this->_basket['order_taxes'] as $order_tax) {
                     $order_tax['cart_order_id'] = $this->_order_id;
                     $GLOBALS['db']->insert('CubeCart_order_tax', $order_tax);
                 }
             }
             if (isset($this->_basket['coupons']) && is_array($this->_basket['coupons'])) {
                 $codes_used = array();
                 foreach ($this->_basket['coupons'] as $key => $data) {
                     if ($data['gc']) {
                         // Update gift certificate balance
                         $GLOBALS['db']->update('CubeCart_coupons', array('discount_price' => $data['remainder']), array('code' => $data['voucher']));
                         $certificates_used[] = $data['voucher'];
                     } else {
                         $vouchers_used[] = $data['voucher'];
                         // Update usage count
                         $product_data = unserialize($data['product']);
                         if (is_array($product_data) && count($product_data) > 1) {
                             ## Per product coupons
                             foreach ($this->_basket['contents'] as $hash => $item) {
                                 if (!in_array($item['id'], $product_data)) {
                                     continue;
                                 }
                                 $GLOBALS['db']->update('CubeCart_coupons', array('count' => '+' . (int) $item['quantity']), array('code' => $data['voucher']));
                             }
                         } else {
                             $GLOBALS['db']->update('CubeCart_coupons', array('count' => '+1'), array('code' => $data['voucher']));
                         }
                     }
                 }
                 $note_content = '';
                 if (is_array($certificates_used)) {
                     $note_content .= "\r\n" . $GLOBALS['language']->orders['certificate_codes_used'] . "\r\n" . implode("\r\n", $certificates_used);
                 }
                 if (is_array($vouchers_used)) {
                     $note_content .= "\r\n" . $GLOBALS['language']->orders['discount_codes_used'] . "\r\n" . implode("\r\n", $vouchers_used);
                 }
                 $this->addNote($this->_order_id, $note_content);
             }
             // Set order as 'Pending'
             $this->_basket['order_status'] = constant('ORDER_PENDING');
             foreach ($GLOBALS['hooks']->load('class.order.place_order.basket') as $hook) {
                 include $hook;
             }
             // Insert/Update the order summary
             $this->_orderSummary($update, $force_order);
             $this->_manageStock(self::ORDER_PENDING, $this->_basket['cart_order_id']);
             $this->orderStatus(self::ORDER_PENDING, $this->_basket['cart_order_id'], true);
             if ($this->_basket['total'] == 0) {
                 $this->orderStatus(self::ORDER_PROCESS, $this->_basket['cart_order_id']);
                 httpredir(currentPage(null, array('_a' => 'complete')));
             }
             return true;
         }
     }
     // Go back to the basket page
     httpredir(currentPage(array('cart_order_id'), array('_a' => 'basket')));
     return false;
 }
开发者ID:briansandall,项目名称:v6,代码行数:99,代码来源:order.class.php


注:本文中的currentPage函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。