<?php
//  ---------------------------------------------------------------------------------
//    _____   _             _                   _   _____
//   |  __ \ | |           | |    /\           (_) |  __ \
//   | |__) || |__    __ _ | |   /  \    _ __   _  | |__) |_ __  ___
//   |  ___/ | '_ \  / _` || |  / /\ \  | '_ \ | | |  ___/| '__|/ _ \
//   | |     | | | || (_| || | / ____ \ | |_) || | | |    | |  | (_) |
//   |_|     |_| |_| \__,_||_|/_/    \_\| .__/ |_| |_|    |_|   \___/
//                                      | |
//                                      |_|
//   PhalApi Pro 专业版
//   广州果创网络科技有限公司
//
//  ---------------------------------------------------------------------------------
//
//   一、协议的许可和权利
//    1. 您可以在完全遵守本协议的基础上，将本软件应用于商业用途；
//    2. 您可以在协议规定的约束和限制范围内修改本产品源代码或界面风格以适应您的要求；
//    3. 您拥有使用本产品中的全部内容资料、商品信息及其他信息的所有权，并独立承担与其内容相关的
//       法律义务；
//    4. 获得商业授权之后，您可以将本软件应用于商业用途，自授权时刻起，在技术支持期限内拥有通过
//       指定的方式获得指定范围内的技术支持服务；
//
//   二、协议的约束和限制
//    1. 未获商业授权之前，禁止将本软件用于商业用途（包括但不限于企业法人经营的产品、经营性产品
//       以及以盈利为目的或实现盈利产品）；
//    2. 未获商业授权之前，禁止在本产品的整体或在任何部分基础上发展任何派生版本、修改版本或第三
//       方版本用于重新开发；
//    3. 如果您未能遵守本协议的条款，您的授权将被终止，所被许可的权利将被收回并承担相应法律责任；
//
//   三、有限担保和免责声明
//    1. 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的；
//    2. 用户出于自愿而使用本软件，您必须了解使用本软件的风险，在尚未获得商业授权之前，我们不承
//       诺提供任何形式的技术支持、使用担保，也不承担任何因使用本软件而产生问题的相关责任；
//    3. 广州果创网络科技有限公司不对使用本产品构建的商城中的内容信息承担责任，但在不侵犯用户隐
//       私信息的前提下，保留以任何方式获取用户信息及商品信息的权利；
//
//   有关本产品最终用户授权协议、商业授权与技术服务的详细内容，均由广州果创网络科技有限公司独家
//   提供。广州果创网络科技有限公司拥有在不事先通知的情况下，修改授权协议的权力，修改后的协议对
//   改变之日起的新授权用户生效。电子文本形式的授权协议如同双方书面签署的协议一样，具有完全的和
//   等同的法律效力。您一旦开始修改、安装或使用本产品，即被视为完全理解并接受本协议的各项条款，
//   在享有上述条款授予的权力的同时，受到相关的约束和限制。协议许可范围以外的行为，将直接违反本
//   授权协议并构成侵权，我们有权随时终止授权，责令停止损害，并保留追究相关责任的权力。
//
//  ---------------------------------------------------------------------------------

$table_color_arr = explode(" ", "red orange yellow olive teal blue violet purple pink grey black");

$semanticHost = '/semantic'; // 本地
if (substr(PHP_SAPI, 0, 3) == 'cli') {
    $semanticHost = 'https://cdn.bootcss.com/semantic-ui/2.2.2'; // CDN
}

// 流量套餐
$mpDomain = new \Mall\Domain\Product();
$products = $mpDomain->getBuyProductsSnapshot();
$productsMap = array();
foreach ($products as $it) {
    $productsMap[$it['product_key_lower']] = $it['id'];
}
?>
<!DOCTYPE html>
<html lang="en">
<!-- 

  _____   _             _                   _   _____             
 |  __ \ | |           | |    /\           (_) |  __ \            
 | |__) || |__    __ _ | |   /  \    _ __   _  | |__) |_ __  ___  
 |  ___/ | '_ \  / _` || |  / /\ \  | '_ \ | | |  ___/| '__|/ _ \ 
 | |     | | | || (_| || | / ____ \ | |_) || | | |    | |  | (_) |
 |_|     |_| |_| \__,_||_|/_/    \_\| .__/ |_| |_|    |_|   \___/ 
                                    | |                           
                                    |_|                           
 -->
<head>
    <meta charset="utf-8">
    <title><?php echo $projectName; ?> - <?php echo \PhalApi\T('Online API Docs'); ?></title>

    <link rel="stylesheet" href="<?php echo $semanticHost; ?>/semantic.min.css">
    <link rel="icon" href="<?php echo \PhalApi\DI()->config->get('app.project.ico'); ?>" type="image/x-icon" />

    <script src="/static/jquery.min.js"></script>
    <script src="/static/jquery.cookie.min.js"></script>
    <script src="<?php echo $semanticHost; ?>/semantic.min.js"></script>
    <meta name="robots" content="none"/>
    <style>
      .ui.vertical.menu{
        background-color: #23232A;
      }
      .newTitle{
        font-size:15px;
        font-family:PingFangSC-Semibold,PingFang SC;
        font-weight:600;
        color:rgba(255,255,255,1);
      }
      .ui.menu .active.item:hover, .ui.vertical.menu .active.item:hover{
        background: #4F4F54;
        color: #fff;
      }
      .ui.menu a.item:hover{
        color: #e4e4e4;
      }
      .ui.vertical.menu .item{
        color: #e4e4e4;

      }
      .ui.vertical.menu .active.item{
        background: #4F4F54;
        color: #fff;

      }
      .ui.vertical.menu .item>.label{
        background:rgba(238,239,247,0.35)!important;
        /* opacity:; */
      }
      .ui.grid>[class*="four wide"].column{
        width: 18%!important;
        background:rgba(35,35,42,1);
        box-shadow:0px 0px 40px 0px rgba(0,0,0,0.05);
        border-radius:10px;
        padding:0;
      }
      .ui.grid>[class*="twelve wide"].column{
        width: 80%!important;
        padding-top: 0px;
        
      }
      .ui.form{
        padding: 10px;
      }
      .ui.vertical.menu{
        width:auto;
      }
      /* biao */
      .ui.red.table{
        border-top: 1px solid rgba(34,36,38,.15);
      }
      .itemIndex{
        text-align: center;
      }
      .ui.table tr td{
        font-size: 14px;
        font-family: PingFangSC-Regular,PingFang SC;
        font-weight: 400;
        color:rgba(51,51,51,1);
      }
      .ui.table tr td a{
        font-size:15px;
        font-family:PingFangSC-Medium,PingFang SC;
        font-weight:500;
        color:rgba(40,92,253,1);
      }
      .ui.celled.table tr td:first-child{
        text-align: center;
      }
      
      .ui.celled.table tr td:first-child span{
        width: 22px;
        height: 22px;
        display: inline-block;
        text-align: center;
        color: #fff;
        font-size:13px;
        font-family:PingFangSC-Regular,PingFang SC;
        border-radius: 50%;
        background:rgba(49,70,89,1);
      }
      /* .newOpen div{
        width:226px;
        height:49px;
        background:linear-gradient(170deg,rgba(250,195,83,1) 0%,rgba(249,169,67,1) 100%);
        box-shadow:0px 0px 30px 0px rgba(0,0,0,0.1);
        border-radius:5px;
        display: flex;
        justify-content: center;
        align-items: center;
      } */
      .newOpen div a{
        color: rgba(40,92,253,1);
        font-size:16px;
        font-family:PingFangSC-Medium,PingFang SC;
        font-weight:500;
        color:rgba(35,35,42,1);
      }
      @media only screen and (min-width: 1200px){
        .ui.container{
          margin-left: 0!important;
        }
      }
      .ui.floating.message{
        box-shadow: none!important;
        padding-top: 90px;
        background-color: #F0F2F5;
      }
      .ui.grid>.column:not(.row), .ui.grid>.row>.column{
        padding-right: 0!important;
      }
    </style>
</head>
<body>

<?php include dirname(__FILE__) . '/api_menu.php';?>


<div class="ui text container apiList" style="max-width: none !important;width: 100%;" id="menu_top">
    <div class="ui floating message">
        <?php
        if (!empty($errorMessage)) {
        echo  '<div class="ui error message">
            <strong>' . $errorMessage . '</strong> 
            </div>';
        }
        
        global $globalExcludeNamespaces;
        ?>

        <div class="ui grid container" style="max-width: none !important;">
            <?php
            if ($theme == 'fold') {
            ?>
            <div class="four wide column">
            <div class="item">
             <div class="ui form">
             <form action="/docs.php?search=k" method="get" target="_blank">
                 <input type="text" name="keyword" placeholder="<?php echo \PhalApi\T('Search API'); ?>" value="<?php echo isset($_GET['keyword']) ? $_GET['keyword'] : ''; ?>">
             </form>
             </div>
         </div>
                <div class="ui vertical accordion menu newMenu">
                <?php
                    // 总接口数量
                    $methodTotal = 0;
                    foreach ($allApiS as $namespace => $subAllApiS) {
                        $namespaceLite = rtrim($namespace, '\\');
                        // 命名空间的过滤
                        if (in_array($namespaceLite, $globalExcludeNamespaces)) {
                            continue;
                        }
                        foreach ($subAllApiS as $item) {
                            $methodTotal += count($item['methods']);
                        }
                    }
                ?>
                    <div class="item"><h4 class="newTitle"><i class="globe icon"></i> <?php echo \PhalApi\T('API List'); ?>（<?php echo $methodTotal; ?>）</h4></div>

                <?php
                    $num = 0;
                    foreach ($allApiS as $namespace => $subAllApiS) {
                        $namespaceLite = rtrim($namespace, '\\');
                        // 命名空间的过滤
                        if (in_array($namespaceLite, $globalExcludeNamespaces)) {
                            continue;
                        }
                        
                        echo '<div class="item">';
                        $subMethodTotal = 0;
                        foreach ($subAllApiS as $item) {
                            $subMethodTotal += count($item['methods']);
                        }
                        $namespaceStr = $namespace;
                        $namespaceStr = \PhalApi\T($namespaceStr);
                            
                        echo sprintf('<h4 class="title active" style="font-size:16px;margin:0px;color: #fff;"><i class="dropdown icon"></i>%s (%d)</h4>', $namespaceStr, $subMethodTotal);
                        echo sprintf('<div class="content %s" style="margin-left:-16px;margin-right:-16px;margin-bottom:-13px;">', $num == 0 ? 'active' : '');
                        // 每个命名空间下的接口类
                        foreach ($subAllApiS as $key => $item) {
                            echo sprintf('<a class="item %s newA" data-tab="%s"> %s <span class="ui blue small circular label">%d</span></a>', $num == 0 ? 'active' : '', str_replace('\\', '_', $namespace) . $key, $item['title'], count($item['methods']));
                            $num++;
                        }
                        echo '</div></div><!-- END OF NAMESPACE -->';
                    } // 每个命名空间下的接口

                    ?>
                    <div class="item">
                        <div class="content" style="margin:-13px -16px;">
                        <a class="item" href="#menu_top"><small><?php echo \PhalApi\T('login management system to see all APIs'); ?></small></a>
                        </div>
                    </div>
                </div>
            </div>
            <?php } ?> <!-- 折叠时的菜单 -->

            <!-- 折叠时与展开时的布局差异 -->
            <?php if ($theme == 'fold') { ?>
            <div class="twelve wide stretched column">
            <?php } else { ?>
            <div class="wide stretched column">
            <?php
                    // 展开时，将全部的接口服务，转到第一组
                    $mergeAllApiS = array('all' => array('methods' => array()));
                    foreach ($allApiS as $namespace => $subAllApiS) {
                        $namespaceLite = rtrim($namespace, '\\');
                        // 命名空间的过滤
                        if (in_array($namespaceLite, $globalExcludeNamespaces)) {
                            continue;
                        }
                        
                        foreach ($subAllApiS as $key => $item) {
                            if (!isset($item['methods']) || !is_array($item['methods'])) {
                                continue;
                            }
                            foreach ($item['methods'] as $mKey => $mItem) {

                                // 根据搜索关键字，匹配接口名称、功能说明、具体描述 - START
                                if (!empty($_GET['keyword'])) {
                                    $keyword = $_GET['keyword'];
                                    $isMatchByKeyword = false;
                                    if (stripos($mItem['service'], $keyword) !== false) {
                                        $isMatchByKeyword = true;
                                    } else if (stripos($mItem['title'], $keyword) !== false) {
                                        $isMatchByKeyword = true;
                                    } else if (stripos($mItem['desc'], $keyword) !== false) {
                                        $isMatchByKeyword = true;
                                    }
                                    // 未匹配，则跳过
                                    if (!$isMatchByKeyword) {
                                        continue;
                                    }
                                }
                                // 根据搜索关键字，匹配接口名称、功能说明、具体描述 - END

                                $mergeAllApiS['all']['methods'][$mKey] = $mItem;
                            }
                        }
                    }
                    $allApiS = array('ALL' => $mergeAllApiS);
            }
            ?>
                <?php
                $num2 = 0;
                foreach ($allApiS as $namespace => $subAllApiS) {
                    $namespaceLite = rtrim($namespace, '\\');
                    // 命名空间的过滤
                    if (in_array($namespaceLite, $globalExcludeNamespaces)) {
                        continue;
                    }

                foreach ($subAllApiS as $key => $item) {
                    ?>
                    <div class="ui  tab <?php if ($num2 == 0) { ?>active<?php } ?>" data-tab="<?php echo str_replace('\\', '_', $namespace) . $key; ?>">
                        <table
                            class="ui red celled striped table <?php echo $table_color_arr[$num2 % count($table_color_arr)]; ?> celled striped table">
                            <thead>
                            <tr style="background:rgba(244,244,244,1);height:60px;">
                                <th style="width:70px;border-right:none;">序号</th>
                                <th style="border-left: none;"><?php echo \PhalApi\T('API Service'); ?></th>
                                <th style="width:150px;border-left: none;border-right: none;"><?php echo \PhalApi\T('API Title'); ?></th>
                                <th style="border-left: none;"><?php echo \PhalApi\T('API Description'); ?></th>
                            </tr>
                            </thead>
                            <tbody>

                            <?php
                            $num = 1;
                            foreach ($item['methods'] as $mKey => $mItem) {
                                $link = $this->makeApiServiceLink($mItem['service'],$theme);
                                $NO   = $num++;
                                $titleSuffix = isset($productsMap[strtolower($mItem['service'])]) ? '<span class="ui label red small">'.\PhalApi\T('Fee').'</span>' : '';
                                echo "<tr><td> <span>{$NO}</span> </td><td><a href=\"$link\" target='_blank'>{$mItem['service']}</a></td>
                                    <td>{$mItem['title']} {$titleSuffix}
                                    </td>
                                <td>{$mItem['desc']}</td></tr>";
                            }
                            ?>
                            </tbody>
                        </table>

                    <!-- 主题切换，仅当在线时才支持 -->
                    <div class="newOpen">
                      <?php
                      $this->makeThemeButton($theme);
                      // <span></span>
                      ?>
                    </div>
                        
                    </div>
                    <?php
                    $num2++;
                } // 单个命名空间的循环
                } // 遍历全部命名空间
                ?>


            </div>
        </div>
<!--
        <div class="ui blue message">
            <strong>温馨提示：</strong> 此接口文档根据接口代码和注释实时自动生成，可在接口类的文件注释的第一行修改左侧菜单标题。
        </div>
-->
    </div>
</div>

<?php include dirname(__FILE__) . '/api_footer.php';?>

<script type="text/javascript">

$(function(){
    $('.accordion.menu a.item').tab({'deactivate':'all'});
    $('.ui.sticky').sticky();
    //当点击跳转链接后，回到页面顶部位置
    $(".accordion.menu a.item").click(function() {
        $('body,html').animate({
                scrollTop: 0
            },
            500);
        return false;
    });
    
    $('.ui.accordion').accordion({'exclusive':false});
    
    checkLastestVersion();
});
</script>
