/core/bb3countdown.php
PHP | 192 lines | 164 code | 12 blank | 16 comment | 17 complexity | e2a7d86e8aeb5b184396d9b862ded05b MD5 | raw file
- <?php
- /**
- *
- * @package BB3CountDown
- * @copyright (c) 2014 PPK
- * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
- *
- *
- */
- namespace ppk\bb3countdown\core;
- /**
- * @ignore
- */
- if (!defined('IN_PHPBB'))
- {
- exit;
- }
- class bb3countdown
- {
- /** @var \phpbb\config\config */
- protected $config;
- /** @var \phpbb\template\template */
- protected $template;
- /**
- * @var scalar string
- */
- protected $phpbb_root_path;
- public function __construct(\phpbb\config\config $config, \phpbb\template\template $template, $phpbb_root_path)
- {
- $this->config = $config;
- $this->template = $template;
- $this->root_path = $phpbb_root_path;
- }
- public function display_bb3countdown()
- {
- $dt=time();
- $bb3countdown_passed=$bb3countdown_prefix=$bb3countdown_suffix=$bb3countdown_start=$bb3countdown_end='';
- $bb3countdown_precision=in_array($this->config['bb3countdown_precision'], array('s', 'm', 'h', 'd')) ? $this->config['bb3countdown_precision'] : 'd';
- if($this->config['bb3countdown_start'])
- {
- $bb3countdown_start_dt=$this->my_split_config($this->config['bb3countdown_start'], 2, 'strval', ' ');
- $bb3countdown_start_date=$this->my_split_config($bb3countdown_start_dt[0], 3, 'my_int_val', '-');
- $bb3countdown_start_time=$this->my_split_config($bb3countdown_start_dt[1], 3, 'my_int_val', ':');
- $bb3countdown_precisionspeed=$this->my_split_config($this->config['bb3countdown_precisionspeed'], 3, 'my_int_val');
- if(checkdate($bb3countdown_start_date[1], $bb3countdown_start_date[2], $bb3countdown_start_date[0]) && $this->my_checktime($bb3countdown_start_time[0], $bb3countdown_start_time[1], $bb3countdown_start_time[2]))
- {
- $countdown_start=mktime(intval($bb3countdown_start_time[0]), intval($bb3countdown_start_time[1]), intval($bb3countdown_start_time[2]), intval($bb3countdown_start_date[1]), intval($bb3countdown_start_date[2]), intval($bb3countdown_start_date[0]));
- if($countdown_start < $dt)
- {
- $bb3countdown_passed=htmlspecialchars_decode($this->config['bb3countdown_passed']);
- }
- else
- {
- $bb3countdown_prefix=htmlspecialchars_decode($this->config['bb3countdown_prefix']);
- $bb3countdown_suffix=htmlspecialchars_decode($this->config['bb3countdown_suffix']);
- $bb3countdown_start="{$bb3countdown_start_date[0]}, ".($bb3countdown_start_date[1]-1).", {$bb3countdown_start_date[2]}, {$bb3countdown_start_time[0]}, {$bb3countdown_start_time[1]}, {$bb3countdown_start_time[2]}";
- }
- if($this->config['bb3countdown_end'])
- {
- $bb3countdown_end_dt=$this->my_split_config($this->config['bb3countdown_end'], 2, 'strval', ' ');
- $bb3countdown_end_date=$this->my_split_config($bb3countdown_end_dt[0], 3, 'my_int_val', '-');
- $bb3countdown_end_time=$this->my_split_config($bb3countdown_end_dt[1], 3, 'my_int_val', ':');
- if(checkdate($bb3countdown_end_date[1], $bb3countdown_end_date[2], $bb3countdown_end_date[0]) && $this->my_checktime($bb3countdown_end_time[0], $bb3countdown_end_time[1], $bb3countdown_end_time[2]))
- {
- if(mktime(intval($bb3countdown_end_time[0]), intval($bb3countdown_end_time[1]), intval($bb3countdown_end_time[2]), intval($bb3countdown_end_date[1]), intval($bb3countdown_end_date[2]), intval($bb3countdown_end_date[0])) < $dt)
- {
- $bb3countdown_passed=$bb3countdown_start='';
- }
- else
- {
- $bb3countdown_passed=htmlspecialchars_decode($this->config['bb3countdown_passed']);
- $bb3countdown_start="{$bb3countdown_start_date[0]}, ".($bb3countdown_start_date[1]-1).", {$bb3countdown_start_date[2]}, {$bb3countdown_start_time[0]}, {$bb3countdown_start_time[1]}, {$bb3countdown_start_time[2]}";
- }
- }
- }
- else
- {
- $bb3countdown_passed=htmlspecialchars_decode($this->config['bb3countdown_passed']);
- $bb3countdown_start="{$bb3countdown_start_date[0]}, ".($bb3countdown_start_date[1]-1).", {$bb3countdown_start_date[2]}, {$bb3countdown_start_time[0]}, {$bb3countdown_start_time[1]}, {$bb3countdown_start_time[2]}";
- }
- foreach($bb3countdown_precisionspeed as $pk=>$pv)
- {
- if($pk==0 && $countdown_start-$dt < $pv*86400)
- {
- $bb3countdown_precision='h';
- }
- else if($pk==1 && $countdown_start-$dt < $pv*3600)
- {
- $bb3countdown_precision='m';
- }
- else if($pk==2 && $countdown_start-$dt < $pv*60)
- {
- $bb3countdown_precision='s';
- }
- }
- $this->template->assign_vars(array(
- 'S_COUNTDOWN_PASSED' => str_replace("'", '"', $bb3countdown_passed),
- 'S_COUNTDOWN_PREFIX' => str_replace("'", '"', $bb3countdown_prefix),
- 'S_COUNTDOWN_SUFFIX' => str_replace("'", '"', $bb3countdown_suffix),
- 'S_COUNTDOWN_PRECISION' => $bb3countdown_precision,
- 'S_COUNTDOWN_START' => $bb3countdown_start,
- 'S_COUNTDOWN_END' => $bb3countdown_end,
- 'BB3CD_BOARD_URL' => $this->root_path,
- )
- );
- }
- }
- }
- public function my_split_config($config, $count=0, $type=false, $split='')
- {
- $count=intval($count);
- $s_config=$count > 0 ? @explode($split ? $split : ' ', $config, $count) : @explode($split ? $split : ' ', $config);
- $count=$count > 0 ? $count : count($s_config);
- if($count)
- {
- for($i=0;$i<$count;$i++)
- {
- $s_config[$i]=isset($s_config[$i]) ? $s_config[$i] : '';
- if($type)
- {
- $use_function=false;
- if(is_array($type) && isset($type[$i]) && !empty($type[$i]))
- {
- $use_function=$type[$i];
- }
- else if(is_string($type) && !empty($type))
- {
- $use_function=$type;
- }
- if($use_function)
- {
- $s_config[$i]=@function_exists($use_function) ? call_user_func($use_function, $s_config[$i]) : call_user_func(array($this, $use_function), $s_config[$i]);
- }
- }
- }
- }
- return $s_config;
- }
- public function my_int_val($v=0, $max=0, $drop=false, $negative=false)
- {
- if(!$v || ($v < 0 && !$negative))
- {
- return 0;
- }
- else if($drop && $v>$max)
- {
- return 0;
- }
- else if($max && $v>$max)
- {
- return $max;
- }
- return @number_format($v+0, 0, '', '');
- }
- public function my_checktime($h, $m, $s)
- {
- if(!is_numeric($h) || !is_numeric($m) || !is_numeric($s))
- {
- return false;
- }
- if($h > -1 && $h < 24 && $m > -1 && $m < 60 && $s > -1 && $s < 60)
- {
- return true;
- }
- return false;
- }
- }
- ?>