Subversion Repositories LCARS

Rev

Rev 173 | Rev 193 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 173 Rev 186
1
<?php
1
<?php
2
2
3
require_once 'Controller.php';
-
 
4
-
 
5
require_once 'application/views/IndexView.php';
3
require_once 'application/views/IndexView.php';
-
 
4
// require_once 'application/models/mappers/SeriesMapper.php';
6
5
7
class IndexController extends Controller
6
class IndexController extends \PointedEars\PHPX\Controller
8
{
7
{
9
  /**
8
  /**
10
   * Creates a new controller for the index view
9
   * Creates a new controller for the index view
11
   *
10
   *
12
   * @see Controller::__construct()
11
   * @see Controller::__construct()
13
   */
12
   */
14
  public function __construct ()
13
  public function __construct ()
15
  {
14
  {
16
    parent::__construct('IndexView');
15
    parent::__construct('IndexView');
17
  }
16
  }
18
17
19
  public function indexAction ()
18
  public function indexAction ()
20
  {
19
  {
21
    require_once 'data.inc';
20
    require_once 'data.inc';
22
21
23
    $min_percentage = 100;
22
    $min_percentage = 100;
24
    $min_series = null;
23
    $min_series = null;
25
24
26
    $data = array(
25
    $data = array(
27
      'urns' => array(
26
      'urns' => array(
28
        'wiki' => 'http://de.wikipedia.org/wiki/'
27
        'wiki' => 'http://de.wikipedia.org/wiki/'
29
      ),
28
      ),
30
      'list' => &$serien
29
      'list' => &$serien
31
    );
30
    );
32
31
33
    foreach ($serien as $key => &$serie)
32
    foreach ($serien as $key => &$serie)
34
    {
33
    {
35
      $count = 0;
34
      $count = 0;
36
      $serie['coverage'] = array();
35
      $serie['coverage'] = array();
37
36
38
      if (isset($serie['seen']))
37
      if (isset($serie['seen']))
39
      {
38
      {
40
        $count = count($serie['seen']);
39
        $count = count($serie['seen']);
41
40
42
        foreach ($serie['seen'] as $episode)
41
        foreach ($serie['seen'] as $episode)
43
        {
42
        {
44
          if (is_array($episode))
43
          if (is_array($episode))
45
          {
44
          {
46
            $count += $episode[1] - $episode[0];
45
            $count += $episode[1] - $episode[0];
47
            $serie['coverage'][] = $episode[0] . '&ndash;' . $episode[1];
46
            $serie['coverage'][] = $episode[0] . '&ndash;' . $episode[1];
48
          }
47
          }
49
          else
48
          else
50
          {
49
          {
51
            $serie['coverage'][] = $episode;
50
            $serie['coverage'][] = $episode;
52
          }
51
          }
53
        }
52
        }
54
      }
53
      }
55
54
56
      $serie['count'] = $count;
55
      $serie['count'] = $count;
57
56
58
      $serie['total'] = 0;
57
      $serie['total'] = 0;
59
      if (isset($serie['seasons']) && is_array($serie['seasons']))
58
      if (isset($serie['seasons']) && is_array($serie['seasons']))
60
      {
59
      {
61
        $serie['total'] = array_sum($serie['seasons']);
60
        $serie['total'] = array_sum($serie['seasons']);
62
61
63
        $episode_count = 1;
62
        $episode_count = 1;
64
        $serie['season_ranges'] = array();
63
        $serie['season_ranges'] = array();
65
        foreach ($serie['seasons'] as $season_key => $season_length)
64
        foreach ($serie['seasons'] as $season_key => $season_length)
66
        {
65
        {
67
          if (is_int($season_key))
66
          if (is_int($season_key))
68
          {
67
          {
69
            $serie['season_ranges'][$season_key + 1] = array($episode_count, $episode_count + $season_length - 1);
68
            $serie['season_ranges'][$season_key + 1] = array($episode_count, $episode_count + $season_length - 1);
70
          }
69
          }
71
70
72
          $episode_count += $season_length;
71
          $episode_count += $season_length;
73
        }
72
        }
74
      }
73
      }
75
      else
74
      else
76
      {
75
      {
77
        $serie['total'] = max(array_keys($serie['episodes']));
76
        $serie['total'] = max(array_keys($serie['episodes']));
78
      }
77
      }
79
78
80
      $serie['percentage'] = 0;
79
      $serie['percentage'] = 0;
81
      if ($serie['total'] > 0)
80
      if ($serie['total'] > 0)
82
      {
81
      {
83
        $serie['percentage'] = $count / $serie['total'] * 100;
82
        $serie['percentage'] = $count / $serie['total'] * 100;
84
83
85
        if ((!isset($serie['ignore']) || !$serie['ignore'])
84
        if ((!isset($serie['ignore']) || !$serie['ignore'])
86
             && $serie['percentage'] < $min_percentage)
85
             && $serie['percentage'] < $min_percentage)
87
        {
86
        {
88
          $min_percentage = $serie['percentage'];
87
          $min_percentage = $serie['percentage'];
89
          $min_series = $key;
88
          $min_series = $key;
90
        }
89
        }
91
      }
90
      }
92
91
93
      if (isset($serie['episode_list']))
92
      if (isset($serie['episode_list']))
94
      {
93
      {
95
        $episode_list =& $serie['episode_list'];
94
        $episode_list =& $serie['episode_list'];
96
        foreach ($data['urns'] as $prefix => $urn)
95
        foreach ($data['urns'] as $prefix => $urn)
97
        {
96
        {
98
          if (preg_match("/^{$prefix}:/", $episode_list))
97
          if (preg_match("/^{$prefix}:/", $episode_list))
99
          {
98
          {
100
            $episode_list = preg_replace("/^{$prefix}:/", $urn,
99
            $episode_list = preg_replace("/^{$prefix}:/", $urn,
101
              str_replace(' ', '_', $episode_list));
100
              str_replace(' ', '_', $episode_list));
102
          }
101
          }
103
        }
102
        }
104
      }
103
      }
105
    }
104
    }
106
105
107
    // var_dump($serien['<span class="alf">ALF</span>']);
106
    // var_dump($serien['<span class="alf">ALF</span>']);
108
107
109
    $this->assign('serien', $serien);
108
    $this->assign('serien', $serien);
110
    $this->assign('min_series', $min_series);
109
    $this->assign('min_series', $min_series);
111
    $this->render();
110
    $this->render();
112
  }
111
  }
-
 
112
-
 
113
//   public function importAction ()
-
 
114
//   {
-
 
115
//      require_once 'data.inc';
-
 
116
//      header('Content-Type: text/html; charset=UTF-8');
-
 
117
//      SeriesMapper::getInstance()->importAll($serien);
-
 
118
//   }
113
}
119
}
114
120