View   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 8
c 1
b 0
f 1
lcom 1
cbo 4
dl 0
loc 67
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
C play() 0 50 8
1
<?php
2
/**
3
 * View
4
 *
5
 * 静的ページ表示機能を実現するためのクラス
6
 *
7
 * @package           risoluto
8
 * @author            Risoluto Developers
9
 * @license           http://opensource.org/licenses/bsd-license.php new BSD license
10
 * @copyright     (C) 2008-2015 Risoluto Developers / All Rights Reserved.
11
 */
12
13
//------------------------------------------------------//
14
// 名前空間の定義
15
//------------------------------------------------------//
16
namespace RisolutoApps\Pages;
17
18
//------------------------------------------------------//
19
// クラス定義
20
//------------------------------------------------------//
21
class View extends \Risoluto\RisolutoControllerBase implements \Risoluto\RisolutoControllerInterface
22
{
23
    // View関連の処理を使用する
24
    use \Risoluto\RisolutoViewTrait;
25
26
    /**
27
     * play()
28
     *
29
     * 主処理を行う
30
     *
31
     * @access    public
32
     *
33
     * @param     void
34
     *
35
     * @return    void    なし
36
     */
37
    public function play()
38
    {
39
        // パラメタを取得し、空だった時はデフォルトの画面を取得する
40
        $params = $this->getParam();
41
        if (empty( $params ) or !preg_match( '/^[[:alnum:]_-].*$/', $params[ 0 ] )) {
42
            $tmpl = 'Top';
43
        } else {
44
            // パラメタ中のディレクトリセパレタを編集してセット
45
            $tmpl = str_replace( '_', DS, $params[ 0 ] );
46
        }
47
48
        // デフォルトヘッダ情報の取得
49
        $header = $this->getDefaultHeader();
50
51
        // ファイルの実在を確認し、優先順に沿って処理を実施
52
        $basepath = RISOLUTO_APPS . 'RisolutoApps/Pages/shelf/' . str_replace( '../', '', $tmpl );
53
        clearstatcache( true );
54
        if (file_exists( $basepath . '.tpl' )) {
55
            //--- .tplファイルが存在するときはテンプレートエンジンで処理した結果を出力する
56
            $tmpl .= '.tpl';
57
58
            // テンプレートエンジン関連の処理
59
            $assign_value = [ 'header' => $header, 'pagename' => $params[ 0 ], 'options' => $params ];
60
            echo trim( $this->risolutoView( $assign_value, 'fetch', 'Pages/shelf/', $tmpl ) );
61
        } elseif (file_exists( $basepath . '.md' )) {
62
            //--- .mdファイルが存在するときはパースしてから処理する
63
            // タイトルだけ置き換えてヘッダとフッタを取得
64
            $header[ 'title' ] = ( isset( $params[ 0 ] ) and !empty( $params[ 0 ] ) ) ? $params[ 0 ] : 'Top';
65
            $assign_value = [ 'header' => $header, 'pagename' => $params[ 0 ], 'options' => $params ];
66
            $parts_header = $this->risolutoView( $assign_value, 'fetch', 'Pages/', 'dummy_header.tpl' );
67
            $parts_footer = $this->risolutoView( $assign_value, 'fetch', 'Pages/', 'dummy_footer.tpl' );
68
69
            // 本体をパースして取得
70
            /** @noinspection PhpUndefinedNamespaceInspection */
71
            $parts_body = \Michelf\MarkdownExtra::defaultTransform( file_get_contents( $basepath . '.md' ) );
72
73
            // 画面に出力
74
            echo trim( $parts_header . $parts_body . $parts_footer );
75
        } elseif (file_exists( $basepath . '.raw' )) {
76
            //--- .rawファイルが存在するときは取得した内容をそのまま出力
77
            echo trim( file_get_contents( $basepath . '.raw' ) );
78
        } else {
79
            //--- いずれも存在しないときはエラー
80
            $conf = new \Risoluto\Conf;
81
            $conf->parse( RISOLUTO_CONF . 'risoluto.ini' );
82
83
            $error = $conf->getIni( 'SEQ', 'error' );
84
            \Risoluto\Url::redirectTo( $error );
85
        }
86
    }
87
}