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}")]); }
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}")]); }
<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ä");
$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
// === 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 = " [" . 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']}");
/** * 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}'"); } }
/** * @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)); }
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>";