forked from rebillar/site-accueil-insa
149 lines
No EOL
3.8 KiB
PHP
149 lines
No EOL
3.8 KiB
PHP
<?php
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*
|
|
*/
|
|
namespace Piwik\Plugins\Tour\Engagement;
|
|
|
|
use Piwik\API\Request;
|
|
use Piwik\Piwik;
|
|
|
|
class Levels
|
|
{
|
|
/**
|
|
* @var array
|
|
*/
|
|
private $challenges = array();
|
|
|
|
private function getChallenges()
|
|
{
|
|
if (empty($this->challenges)) {
|
|
$this->challenges = Request::processRequest('Tour.getChallenges', [], []);
|
|
}
|
|
|
|
return $this->challenges;
|
|
}
|
|
|
|
public function getNumChallengesCompleted()
|
|
{
|
|
$challenges = $this->getChallenges();
|
|
|
|
$completed = 0;
|
|
foreach ($challenges as $challenge) {
|
|
if ($challenge['isSkipped'] || $challenge['isCompleted']) {
|
|
$completed++;
|
|
}
|
|
}
|
|
return $completed;
|
|
}
|
|
|
|
public function getCurrentLevel()
|
|
{
|
|
$completed = $this->getNumChallengesCompleted();
|
|
|
|
$current = 0;
|
|
foreach ($this->getLevels() as $threshold => $level) {
|
|
if ($completed >= $threshold) {
|
|
$current++;
|
|
}
|
|
}
|
|
return $current;
|
|
}
|
|
|
|
public function getCurrentLevelName()
|
|
{
|
|
$completed = $this->getNumChallengesCompleted();
|
|
|
|
$current = '';
|
|
foreach ($this->getLevels() as $threshold => $level) {
|
|
if ($completed >= $threshold) {
|
|
$current = $level;
|
|
}
|
|
}
|
|
return $current;
|
|
}
|
|
|
|
public function getNextLevelName()
|
|
{
|
|
$completed = $this->getNumChallengesCompleted();
|
|
|
|
foreach ($this->getLevels() as $threshold => $level) {
|
|
if ($completed < $threshold) {
|
|
return $level;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getNumLevels()
|
|
{
|
|
$levels = $this->getLevels();
|
|
return count($levels);
|
|
}
|
|
|
|
public function getNumChallengesNeededToNextLevel()
|
|
{
|
|
$completed = $this->getNumChallengesCompleted();
|
|
|
|
foreach ($this->getLevels() as $threshold => $level) {
|
|
if ($completed < $threshold) {
|
|
return $threshold - $completed;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getCurrentDescription()
|
|
{
|
|
$login = Piwik::getCurrentUserLogin();
|
|
$numChallengesCompleted = $this->getNumChallengesCompleted();
|
|
$numChallengesTotal = $this->getNumChallengesTotal();
|
|
|
|
if ($numChallengesCompleted <= ($numChallengesTotal / 4)) {
|
|
return Piwik::translate('Tour_Part1Title', $login);
|
|
}
|
|
|
|
if ($numChallengesCompleted <= ($numChallengesTotal / 2)) {
|
|
return Piwik::translate('Tour_Part2Title', $login);
|
|
}
|
|
|
|
if ($numChallengesCompleted <= ($numChallengesTotal / 1.333)) {
|
|
return Piwik::translate('Tour_Part3Title', $login);
|
|
}
|
|
|
|
return Piwik::translate('Tour_Part4Title', $login);
|
|
}
|
|
|
|
private function getNumChallengesTotal()
|
|
{
|
|
$challenges = $this->getChallenges();
|
|
return count($challenges);
|
|
}
|
|
|
|
public function getLevels()
|
|
{
|
|
$numChallengesTotal = $this->getNumChallengesTotal();
|
|
|
|
$levels = array(
|
|
0 => Piwik::translate('Tour_MatomoBeginner'),
|
|
5 => Piwik::translate('Tour_MatomoIntermediate'),
|
|
);
|
|
|
|
if ($numChallengesTotal > 10) {
|
|
// the number of challenges varies from Matomo to Matomo depending on activated plugins and activated
|
|
// features. Therefore we may remove some levels if there aren't too many challenges available.
|
|
$levels[10] = Piwik::translate('Tour_MatomoTalent');
|
|
}
|
|
|
|
if ($numChallengesTotal > 15) {
|
|
$levels[15] = Piwik::translate('Tour_MatomoProfessional');
|
|
}
|
|
|
|
$levels[$numChallengesTotal] = Piwik::translate('Tour_MatomoExpert');
|
|
|
|
return $levels;
|
|
}
|
|
|
|
|
|
} |