Example #1
0
 public function saveTime()
 {
     $attr = ['datetime' => gmdate(DATE_MYSQL, round_time(time(), self::TIME_INTERVAL, PHP_ROUND_DOWN)), 'action' => $this->action];
     if (!StatTime::model()->findByAttributes($attr)) {
         $stat = new StatTime();
         $stat->setAttributes($attr, false);
         $stat->save();
     }
     $time = (int) ((microtime(true) - $this->start_time) * 1000);
     StatTime::model()->updateByPk($attr, ['count' => new CDbExpression('count + 1'), 'time_min' => new CDbExpression("least(time_min, {$time})"), 'time_max' => new CDbExpression("greatest(time_max, {$time})"), 'time_last' => $time, 'time_total' => new CDbExpression("time_total + {$time}")]);
 }
Example #2
0
 function afterRequest()
 {
     $attr = ['datetime' => gmdate(DATE_MYSQL, round_time(time(), self::TIME_INTERVAL, PHP_ROUND_DOWN)), 'action' => Yii::app()->request->requestUri];
     if (!StatRequest::model()->findByAttributes($attr)) {
         $stat = new StatRequest();
         $stat->setAttributes($attr, false);
         $stat->save();
     }
     $time = (int) (Yii::getLogger()->getExecutionTime() * 1000);
     StatRequest::model()->updateByPk($attr, ['count' => new CDbExpression('count + 1'), 'time_min' => new CDbExpression("least(time_min, {$time})"), 'time_max' => new CDbExpression("greatest(time_max, {$time})"), 'time_last' => $time, 'time_total' => new CDbExpression("time_total + {$time}")]);
 }
Example #3
0
    <th><?php 
echo t("Aloitusaika");
?>
</th>
    <td colspan='3'><input type='text' name='pvmalku' value='<?php 
echo $valmistus->pvmalku;
?>
'></td>
  </tr>
  <tr>
    <th><?php 
echo t("Lopetusaika");
?>
</th>
    <td colspan='3'><input type='text' name='pvmloppu' value='<?php 
echo date('Y-m-d H:i:s', round_time(strtotime('now')));
?>
'></td>
  </tr>

  <tr>
    <th><?php 
echo t("Valmiste");
?>
</th>
    <th><?php 
echo t("Määrä");
?>
</th>
    <th><?php 
echo t("Valmistettava määrä");
Example #4
0
     $per_page_drop_down .= '<option value="?action=problems&per_page=' . $i . '" ' . ($perpage == $i ? ' selected' : '') . '>' . $i . ' items per page</option>';
     $i = $i + 10;
 }
 $per_page_drop_down .= '</select></form>';
 list($pagertop, $pagerbottom, $limit) = pager($perpage, $count, '?action=problems' . ($_GET['per_page'] && 0 + $_GET['per_page'] > 0 ? '&per_page=' . (0 + $_GET['per_page']) : '') . '&');
 echo '<p align=center>' . $pagertop . '</p><p align=center>' . $per_page_drop_down . '</p>';
 echo '<table align=center border=1 cellpadding=5 cellspacing=0><td class=colhead align=center>Added</td><td class=colhead align=center>Added by</td><td class=colhead align=center>Problem</td><td class=colhead align=center>Solved - by</td><td class=colhead align=center>Solved in*</td>' . (get_user_class() == UC_SYSOP ? '<td class=colhead align=center>Delete</td>' : '') . '</tr>' . '<form method=post name=helpdesk action=?staff_delete=1 onSubmit="return ValidateForm(this,\'delhd\')">';
 $res = sql_query("SELECT added, solved_date, added_by, id, title, solved, solved_by FROM helpdesk ORDER BY added DESC {$limit}") or sqlerr(__FILE__, __LINE__);
 while ($arr = mysql_fetch_array($res)) {
     $biatch_rez = sql_query("SELECT username FROM users WHERE id =" . $arr['added_by']) or sqlerr(__FILE__, __LINE__);
     $biatch_arr = mysql_fetch_assoc($biatch_rez);
     $solved_by_rez = sql_query("SELECT username FROM users WHERE id =" . $arr['solved_by']) or sqlerr(__FILE__, __LINE__);
     $solved_by_arr = mysql_fetch_assoc($solved_by_rez);
     // === if problem solved print info, if not hell, print that too :-O
     $solved_in_wtf = sql_timestamp_to_unix_timestamp($arr['solved_date']) - sql_timestamp_to_unix_timestamp($arr['added']);
     $solved_in = $arr['solved_date'] == '0000-00-00 00:00:00' ? ' [ N/A ]' : ' [ ' . round_time($solved_in_wtf) . ' ]';
     switch (true) {
         case $arr['solved_date'] == '0000-00-00 00:00:00':
             $solved_color = 'pink';
             break;
         case $solved_in_wtf > 2 * 3600:
             $solved_color = 'red';
             break;
         case $solved_in_wtf > 3600:
             $solved_color = 'orange';
             break;
         case $solved_in_wtf <= 1800:
             $solved_color = 'green';
             break;
     }
     // =======change colors
Example #5
0
 // === get the info
 $res_info = sql_query("SELECT reports.id, reports.reported_by, reports.reporting_what, reports.reporting_type, reports.reason, reports.who_delt_with_it, reports.delt_with, reports.added, reports.how_delt_with, reports.when_delt_with, reports.2nd_value, users.username FROM reports INNER JOIN users on reports.reported_by = users.id ORDER BY id DESC {$pager['limit']}");
 while ($arr_info = mysql_fetch_assoc($res_info)) {
     // =======change colors thanks Jaits
     $count2 = ++$count2 % 2;
     $class = $count2 == 0 ? 'one' : 'two';
     // =======end
     // === cute solved in thing taked from helpdesk mod by nuerher
     $added = $arr_info["added"];
     $solved_date = $arr_info["when_delt_with"];
     if ($solved_date == "0") {
         $solved_in = " [N/A]";
         $solved_color = "pink";
     } else {
         $solved_in_wtf = $arr_info["when_delt_with"] - $arr_info["added"];
         $solved_in = "&nbsp;[" . round_time($solved_in_wtf) . "]";
         if ($solved_in_wtf > 4 * 3600) {
             $solved_color = "red";
         } else {
             if ($solved_in_wtf > 2 * 3600) {
                 $solved_color = "yellow";
             } else {
                 if ($solved_in_wtf <= 3600) {
                     $solved_color = "green";
                 }
             }
         }
     }
     // === has it been delt with yet?
     if ($arr_info["delt_with"]) {
         $res_who = sql_query("SELECT username FROM users WHERE id={$arr_info['who_delt_with_it']}");
Example #6
0
 /**
  * Asettaa valmistuksen tilan
  *
  * @param String  $tila
  */
 function setTila($tila)
 {
     global $kukarow;
     /**
      * Sallitut tilat ja niiden mahdolliset vaihtoehdot
      */
     $states = array(Valmistus::ODOTTAA => array(Valmistus::VALMISTUKSESSA, Valmistus::ODOTTAA), Valmistus::VALMISTUKSESSA => array(Valmistus::KESKEYTETTY, Valmistus::VALMIS_TARKASTUKSEEN), Valmistus::KESKEYTETTY => array(Valmistus::VALMISTUKSESSA, Valmistus::ODOTTAA), Valmistus::VALMIS_TARKASTUKSEEN => array(Valmistus::TARKASTETTU));
     // Voidaanko uuteen tilaan vaihtaa,
     // eli löytyykö nykyisen tilan vaihtoehdoista haluttu tila
     if (in_array($tila, $states[$this->tila])) {
         // Mihin tilaan vaihdetaan
         switch ($tila) {
             // Odottaa valmistusta
             case Valmistus::ODOTTAA:
                 // Jos työ on keskeytetty ei sitä poisteta kalenterista!
                 if ($this->getTila() == 'OV') {
                     // Poistetaan kalenterista vain tilassa ODOTTAA olevia valmistuksia (poistaa valmistuksen kalenteri taulusta)
                     $query = "DELETE FROM kalenteri WHERE yhtio='{$kukarow['yhtio']}' AND otunnus={$this->tunnus}";
                     if (!pupe_query($query)) {
                         throw new Exception("Kalenteri merkintää ei poistettu");
                     }
                     $query = "UPDATE lasku\n                    SET\n                      toimaika   = '2099-01-01',\n                      kerayspvm  = '2099-01-01 00:00:00'\n                    WHERE yhtio  = '{$kukarow['yhtio']}'\n                      AND tunnus = {$this->tunnus}";
                     pupe_query($query);
                     $query = "UPDATE tilausrivi\n                    SET\n                      toimaika    = '2099-01-01',\n                      kerayspvm   = '2099-01-01'\n                    WHERE yhtio   = '{$kukarow['yhtio']}'\n                      AND otunnus = {$this->tunnus}";
                     pupe_query($query);
                 } elseif ($this->getTila() == 'TK') {
                     $query = "UPDATE kalenteri SET\n                    henkilo = 0\n                    WHERE yhtio='{$kukarow['yhtio']}'\n                    AND otunnus='{$this->tunnus}'";
                     if (!pupe_query($query)) {
                         throw new Exception("Tilan vaihtamisessa tapahtui virhe. (kalenteri)");
                     }
                     // Valmistuksen keskeytys nollaa myös laskun ja tilausrivin keräyspäivät,
                     // jolloin saldojen laskenta menee oikein.
                     $update_lasku_query = "UPDATE lasku\n                                 SET kerayspvm ='2099-01-01',\n                                 toimaika      ='2099-01-01'\n                                 WHERE yhtio   ='{$kukarow['yhtio']}'\n                                 AND tunnus    ='{$this->tunnus}'\n                                 AND tila = 'V'";
                     if (!pupe_query($update_lasku_query)) {
                         throw new Exception("Tilan vaihtamisessa tapahtui virhe. (valmistus)");
                     }
                     $update_tilausrivi_query = "UPDATE tilausrivi\n                                      SET kerayspvm ='2099-01-01',\n                                      toimaika      ='2099-01-01'\n                                      WHERE yhtio   ='{$kukarow['yhtio']}'\n                                      AND otunnus   ='{$this->tunnus}'";
                     if (!pupe_query($update_tilausrivi_query)) {
                         throw new Exception("Tilan vaihtamisessa tapahtui virhe. (valmisteet)");
                     }
                 }
                 break;
                 // Valmistukseen
             // Valmistukseen
             case Valmistus::VALMISTUKSESSA:
                 // Valmistuslinjalla voi olla vain yksi valmistus VALMISTUKSESSA tilassa kerrallaan
                 $query = "SELECT kalenteri.kuka, otunnus, valmistuksen_tila\n                  FROM kalenteri\n                  JOIN lasku on (kalenteri.yhtio=lasku.yhtio AND kalenteri.otunnus=lasku.tunnus)\n                  WHERE kalenteri.yhtio='{$kukarow['yhtio']}'\n                  AND kalenteri.henkilo='{$this->valmistuslinja}'\n                  AND valmistuksen_tila = 'VA'";
                 $result = pupe_query($query);
                 // Jos keskeneräinen valmistus löytyy
                 if (mysql_num_rows($result) > 0) {
                     throw new Exception("Valmistuslinjalla on keskeneräinen valmistus");
                 }
                 // Pyöristetään aloitusaika (aloitusaikana aikana nykyhetki)
                 $pvmalku = round_time(strtotime('now'));
                 $kesto = valmistuksen_kesto(array('tunnus' => $this->tunnus));
                 $pvmloppu = laske_loppuaika($pvmalku, $kesto * 60, $this->valmistuslinja);
                 // Päivämäärät oikeaan muotoon
                 $pvmalku = date('Y-m-d H:i:s', $pvmalku);
                 $pvmloppu = date('Y-m-d H:i:s', $pvmloppu);
                 // Päivitetään valmistuksen uudet ajat
                 $query = "UPDATE kalenteri\n                  SET pvmalku='{$pvmalku}', pvmloppu='{$pvmloppu}'\n                  WHERE yhtio='{$kukarow['yhtio']}'\n                  AND otunnus='{$this->tunnus}'";
                 // Päivitetään laskun ja tilausrivin keräyspäivät?
                 if (!pupe_query($query)) {
                     throw new Exception("Valmistuksen aikoja ei päivitetty");
                 }
                 break;
                 // Valmistus keskeytetty
             // Valmistus keskeytetty
             case Valmistus::KESKEYTETTY:
                 break;
                 // Valmis tarkastukseen
             // Valmis tarkastukseen
             case Valmistus::VALMIS_TARKASTUKSEEN:
                 //echo "valmistus valmis tarkastukseen";
                 break;
                 // Tarkastettu
             // Tarkastettu
             case Valmistus::TARKASTETTU:
                 //echo "valmistus merkattu tarkastetuksi!";
                 // poistetaan valmistus kalenterista
                 $delete_query = "DELETE FROM kalenteri\n                         WHERE yhtio='{$kukarow['yhtio']}'\n                         AND tyyppi='valmistus'\n                         AND otunnus='{$this->tunnus}'";
                 $result = pupe_query($delete_query);
                 break;
                 // Muut
             // Muut
             default:
                 throw new Exception("Valmistusta yritettiin muuttaa tuntemattomaan tilaan");
                 break;
         }
         // Jos kaikki on ok, päivitetään valmistuksen tila
         $query = "UPDATE lasku\n                SET valmistuksen_tila='{$tila}'\n                WHERE yhtio='{$kukarow['yhtio']}'\n                AND tunnus={$this->tunnus}";
         $result = pupe_query($query);
     } else {
         throw new Exception("Ei voida muuttaa tilasta '{$this->tila}' tilaan '{$tila}'");
     }
 }
Example #7
0
/**
* @see get_worker_stats
* @return an object array like this:
Array{
    [userid as index] => stdClassObject
        {
            [id] = TT user id
            [mdluserid] = moodle user id
            .
            .  (all other workerinfo fields
            .
            [totalhours] = 
            [monthhours] = 
            .
            . (all other from get_worker_stats())
            .
        }
    [next userid as index] => stdClassObject
        {
            etc
}
*/
function get_workers_stats($courseid)
{
    global $DB;
    $workers = $DB->get_records('block_timetracker_workerinfo', array('courseid' => $courseid), 'lastname ASC, firstname ASC');
    if (!$workers) {
        return null;
    }
    $round = get_rounding_config($courseid);
    $workerstats = array();
    foreach ($workers as $worker) {
        //XXX this is bad; multiple DB calls. Should do all in one call for efficiency
        $stats = get_worker_stats($worker->id, $courseid);
        foreach ($stats as $stat => $val) {
            $worker->{$stat} = $val;
        }
        $lastunit = $DB->get_records('block_timetracker_workunit', array('userid' => $worker->id, 'courseid' => $courseid), 'timeout DESC LIMIT 1');
        $lu = '';
        foreach ($lastunit as $u) {
            $hours = round_time($u->timeout - $u->timein, $round);
            $hours = round($hours / 3600, 3);
            $lu = userdate($u->timein, get_string('datetimeformat', 'block_timetracker')) . '<br />' . userdate($u->timeout, get_string('datetimeformat', 'block_timetracker')) . '<br />' . number_format($hours, 2) . ' hours';
        }
        $worker->lastunit = $lu;
        $workerstats[$worker->id] = $worker;
    }
    return $workerstats;
}
 private function create_date($datestring)
 {
     $datetime = date_create($datestring);
     return gmdate(DATE_MYSQL, round_time($datetime->getTimestamp(), 300));
 }
Example #9
0
 if (!isset($varmistus) and $tila == 'VT' and $valmistus->getTila() == 'VA') {
     // VALMISTA FORMI
     echo "<font class='head'>" . t("Valmista tarkastukseen") . "</font>";
     echo "<form method='POST'>";
     echo "<input type='hidden' name='tunnus' value='{$tunnus}'>";
     echo "<input type='hidden' name='tila' value='{$tila}'>";
     echo "<input type='hidden' name='tee' value='paivita'>";
     echo "<input type='hidden' name='varmistus' value='ok'>";
     // Valmistuksen valmisteet
     echo "<table>";
     echo "<tr><th>" . t("Valmistus") . "</th><td>{$valmistus->tunnus()}</td></tr>";
     // Mahdollisuus muuttaa valmistuksen päivämääriä
     echo "<tr><th>" . t("Aloitusaika") . "</th>";
     echo "<td><input type='text' name='pvmalku' value='{$valmistus->pvmalku}'></td></tr>";
     echo "<tr><th>" . t("Lopetusaika") . "</th>";
     echo "<td><input type='text' name='pvmloppu' value='" . date('Y-m-d H:i:s', round_time(strtotime('now'))) . "'>";
     echo "</td></tr>";
     // Haetaan valmisteet
     foreach ($valmistus->tuotteet() as $valmiste) {
         echo "<tr>\n        <th>" . t("Tuoteno") . "</th>\n        <td>{$valmiste['tuoteno']}\n        </tr>";
         echo "<tr>\n        <th>" . t("Valmistettava määrä") . "</th>\n        <td><input type='text' name='valmisteet[{$valmiste['tunnus']}][maara]' value='{$valmiste['varattu']}'></td>\n        </tr>";
     }
     echo "<tr>\n      <th>" . t("Ylityötunnit") . "</th>\n      <td><input type='text' name='ylityotunnit' value='{$valmistus->ylityotunnit}'></td>\n      </tr>";
     echo "<tr>\n      <th>" . t("Kommentit") . "</th>\n      <td><input type='text' name='kommentti' value='{$valmistus->kommentti}'></td>\n      </tr>";
     echo "</table>";
     echo "<br>";
     echo "<a href='tuotannonsuunnittelu.php'>Takaisin</a> ";
     echo "<input type='submit' value='Valmis'>";
     echo "</form>";
 } elseif (!isset($varmistus) and $tila == 'TK' and $valmistus->getTila() == 'VA') {
     echo "<font class='head'>" . t("Keskeytä työ") . "</font>";