function checkMilestone($class, $action) { if (!$class) { $action(); return; } $milestones = fetchAll("SELECT points FROM milestone ORDER BY points ASC"); $startPoints = array_pop(calculatePoints($class)["points"]); $action(); $endPoints = array_pop(calculatePoints($class)["points"]); $achieved = []; foreach ($milestones as $stone) { if ($stone->points > $endPoints) { break; } if ($stone->points > $startPoints) { array_push($achieved, $stone->points); } } if (empty($achieved)) { return; } $classInfo = fetch("SELECT c.name, u.email FROM class AS c JOIN user AS u ON c.teacher = u.id"); $n = ""; if (count($achieved) > 1) { $n = "n"; } foreach (fetchAll("SELECT email FROM user WHERE role = :admin", ["admin" => ADMIN]) as $admin) { own_mail($admin->email, "Etappe{$n} erreicht", "Guten Tag,\r\nDie Klasse \"{$classInfo->name}\" hat die Etappe{$n} " . implode(", ", $achieved) . " erreicht!\r\nDie Lehrkraft ist: {$classInfo->email} \r\n\r\nNachhaltige Grüße\r\nIhre Weltfairsteher-Website"); } own_mail($classInfo->email, "Etappe{$n} erreicht", "Herzlichen Glückwunsch, Ihre Klasse \"{$classInfo->name}\" hat bei WeltFAIRsteher die Etappe{$n} " . implode(", ", $achieved) . " erreicht!\r\nSie erhalten demnächst eine Überraschung per Post\r\n\r\nNachhaltige Grüße\r\nIhr WeltFAIRsteher-Team"); }
function updatePontuacao($tabela, $id, $col) { if ($col == 'quantidade_producao' || $col == 'fk_classificacao' || $col == 'recalculate' || $tabela == "tb_producaodecorrente") { //echo $tabela.' '.$id.' '.$col."\n"; $infoPontos = array(); $updatedProducao = array(); if ($tabela != "tb_producaodecorrente") { $updatedProducao = $this->mproducao->get($id); if ($col == "recalculate") { $producoesAssociadas = $this->mproducaodecorrente->getDecorrentes($id); } } else { if ($col != "recalculate") { $decorrencia = $this->mproducaodecorrente->get($id); if (count($decorrencia) > 0) { $updatedProducao = $this->mproducao->get($decorrencia[0]['fk_producao_principal']); $producoesAssociadas = $this->mproducaodecorrente->getDecorrentes($updatedProducao['id_producao']); } else { echo "Erro inesperado."; } } else { $updatedProducao = $this->mproducao->get($id); $producoesAssociadas = $this->mproducaodecorrente->getDecorrentes($id); } } $regra = $this->mregra->get($updatedProducao['id_item']); $formula = $regra['formula_regra']; //echo $updatedProducao['id_producao'].' '.$regra['id_item'].' '.$formula; if (isset($updatedProducao['quantidade_producao'])) { $infoPontos['valor_informado'] = $updatedProducao['quantidade_producao']; } if (isset($updatedProducao['id_classificacao'])) { $valorClassif = $this->mregraclassificacao->getValor($updatedProducao['id_item'], $updatedProducao['id_classificacao']); var_dump($updatedProducao); $infoPontos['classif_informado'] = $valorClassif['valor']; } if ($regra['quantidade_decorrente'] > 0) { //echo "oi"; //var_dump($producoesAssociadas); for ($i = 0; $i < count($producoesAssociadas); $i++) { $infoPontos['decorrente_informado'][$i] = $producoesAssociadas[$i]['pontuacao_producao']; } } $pontuacao = calculatePoints($formula, $infoPontos); $this->mproducao->updatefield($updatedProducao['id_producao'], 'pontuacao_producao', $pontuacao); $producoesInfluenciadas = $this->mproducaodecorrente->getPrincipais($updatedProducao['id_producao']); foreach ($producoesInfluenciadas as $producaoInfluenciada) { //var_dump($producaoInfluenciada); $this->updatePontuacao($tabela, $producaoInfluenciada['fk_producao_principal'], "recalculate"); //echo "Influencia terminada\n"; } } }
<?php $sqlClasses = fetchAll("SELECT id, name FROM class"); $classPoints = calculatePoints(array_map(function ($class) { return $class->id; }, $sqlClasses)); $classes = []; foreach ($sqlClasses as $class) { $classPoints[$class->id]["name"] = $class->name; array_push($classes, $classPoints[$class->id]); } $milestones = fetchAll("SELECT points FROM milestone ORDER BY points ASC"); ?> <script type="text/javascript"> var classes = <?php echo json_encode($classes); ?> ; var milestones = <?php echo json_encode($milestones); ?> ; </script> <script src="https://code.highcharts.com/highcharts.js"></script> <script src="js/chart.js"></script>
function diskGraph($queryInfo, $uid = 0, $label) { global $db, $MyData, $query, $info, $myCache; calculatePoints($query, $queryInfo, 'diskused', "Disk Used", "%"); $MyData->loadPalette("pchart/palettes/openstatus.color", TRUE); $MyData->setSerieDescription("Labels","Time"); $MyData->setAbscissa("Labels"); $MyData->setXAxisDisplay(AXIS_FORMAT_TIME, $queryInfo[3]); $MyData->setAxisName(0, ""); $myPicture = new pImage(700,230,$MyData); $ChartHash = $myCache->getHash($MyData); if ($myCache->isInCache($ChartHash)) { $myCache->strokeFromCache($ChartHash); } else { $myPicture->Antialias = TRUE; $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0)); $myPicture->setFontProperties(array("FontName"=>"pchart/fonts/calibri.ttf","FontSize"=>11)); $myPicture->drawText(350,35, $label." - ".$queryInfo[1],array("FontSize"=>14,"Align"=>TEXT_ALIGN_MIDDLEMIDDLE)); $myPicture->drawText(350,15,"Server: ".$info['hostname'], array("FontSize"=>14, "Align"=>TEXT_ALIGN_MIDDLEMIDDLE)); $myPicture->setFontProperties(array("FontName"=>"pchart/fonts/calibri.ttf","FontSize"=>8)); $myPicture->setGraphArea(60,40,650,200); $AxisBoundaries = array(0=>array("Min"=>0,"Max"=>100)); $scaleSettings = array( "XMargin"=>10, "YMargin"=>10, "Floating"=>TRUE, "CycleBackground"=>FALSE, "LabelSkip"=>$queryInfo[2], "Mode"=>SCALE_MODE_MANUAL, "ManualScale"=>$AxisBoundaries, "DrawSubTicks"=>TRUE, "SkippedTickAlpha"=>0, "SubTickR"=>0, "SubTickG"=>0, "SubTickB"=>0 ); $myPicture->drawScale($scaleSettings); $myPicture->drawFilledSplineChart(); $myCache->writeToCache($ChartHash,$myPicture); } $myPicture->autoOutput("cache/".$info['uid']."/diskused-".$queryInfo[4].".png"); }