ASong2U_Web/wp-content/plugins/sitepress-multilingual-cms/inc/upgrade-functions/2.0.0/stepper.php

105 lines
2.5 KiB
PHP

<?php
class Icl_Stepper
{
/**
* Added dummy element to match number of elements and to cover init action
* @var array
*/
protected $_steps = array(NULL);
/**
* Current step
* @var int
*/
protected $_step;
/**
* Next step can be forced with Icl_Stepper::setNextStep()
* @var <type>
*/
protected $_nextStep = NULL;
/**
* Provide current step here
* @param int $step
*/
function __construct($step = 0) {
if (empty($step)) {
$step = 0;
}
$this->_step = intval($step);
}
/**
* Register steps (function names)
*/
public function registerSteps() {
$args = func_get_args();
$this->_steps = array_merge($this->_steps, $args);
}
/**
* Returns current step
* @return int
*/
public function getStep() {
return $this->_step;
}
/**
* Returns next step
* @return int
*/
public function getNextStep() {
return !is_null($this->_nextStep)? $this->_nextStep : $this->_step += 1;
}
/**
* Sets current step
* @param int $num
*/
public function setStep($num) {
$this->_step = intval($num);
}
/**
* Forcing next step
* @param int $num
*/
public function setNextStep($num) {
$this->_nextStep = intval($num);
}
/**
* Calculates bar width
* @return int Should be used as percentage width (%)
*/
public function barWidth() {
return round(($this->_step*100)/count($this->_steps));
}
/**
* Calls current step's function
* @return mixed
*/
public function init() {
if ($this->_step !== 0 && isset($this->_steps[$this->_step])
&& is_callable($this->_steps[$this->_step])) {
return call_user_func_array($this->_steps[$this->_step], array($this->_step, $this));
}
}
/**
* Returns initial HTML formatted screen
* @param string $message Message to be displayed
* @return string
*/
public function render($message = '') {
$output = '<div class="progress-bar" style="width: 100%; height: 15px; background-color: #FFFFFFF; border: 1px solid #e6db55;">
<div class="progress" style="height: 100%; background-color: Yellow; width: ' . $this->barWidth() . '%;"></div>
</div>
<div class="message" style="clear:both;">' . $message . '</div>';
return $output;
}
}