| | <?php |
---|
| | /* |
---|
| | ini_set('display_errors', 1); |
---|
| | ini_set('display_startup_errors', 1); |
---|
| | error_reporting(E_ALL); |
---|
| | */ |
---|
| | session_start(); |
---|
| | include('config.php'); |
---|
| | $error = ""; |
---|
| | |
---|
| | if(isset($_REQUEST['password']) && md5($_REQUEST['password']) == $password){ |
---|
| | $_SESSION['loggedin'] = true; |
---|
| | } |
---|
| | |
---|
| | if(!isset($_SESSION['loggedin']) || isset($_GET['logout'])){ |
---|
| | if(isset($_SESSION['loggedin'])) |
---|
| | unset($_SESSION['loggedin']); |
---|
| | include('login.html'); |
---|
| | die(); |
---|
| | } |
---|
| | |
---|
| | /*** |
---|
| | * actions here for API / AJAX |
---|
| | */ |
---|
| | if(isset($_GET['action'])){ |
---|
| | switch ($_GET['action']) { |
---|
| | case 'main_cal': // get unfiltered main cal averages - output JSON |
---|
| | header('Content-Type: application/json'); |
---|
| | $result = main_cal(); |
---|
| | echo "{".$result."}"; |
---|
| | break; |
---|
| | case 'filtered_cal': // get filtered main cal averages (filter=+test-test@test-test...) - output JSON |
---|
| | header('Content-Type: application/json'); |
---|
| | if(isset($_GET['filter'])){ |
---|
| | $result = filtered_cal($_GET['filter']); |
---|
| | echo "{".$result."}"; |
---|
| | }else{ |
---|
| | echo "0"; |
---|
| | } |
---|
| | break; |
---|
| | case 'date': // get specific date's log - output HTML |
---|
| | if(isset($_GET['date'])){ |
---|
| | $result = today($_GET['date']); |
---|
| | echo $result; |
---|
| | }else{ |
---|
| | echo "0"; |
---|
| | } |
---|
| | break; |
---|
| | case 'date_average': // get specific date's average - output no. |
---|
| | if(isset($_GET['date'])){ |
---|
| | $result = day_avg($_GET['date']); |
---|
| | echo $result; |
---|
| | }else{ |
---|
| | echo "0"; |
---|
| | } |
---|
| | break; |
---|
| | case 'latest': // get latest 5 tags - output JSON |
---|
| | if(isset($_GET['tag'])){ |
---|
| | $result = latest($_GET['tag']); |
---|
| | echo $result; |
---|
| | }else{ |
---|
| | echo "0"; |
---|
| | } |
---|
| | break; |
---|
| | case 'top': // get top 5 tags - output JSON |
---|
| | if(isset($_GET['tag'])){ |
---|
| | $result = toptag($_GET['tag']); |
---|
| | echo $result; |
---|
| | }else{ |
---|
| | echo "0"; |
---|
| | } |
---|
| | break; |
---|
| | case 'alltag': // get all tags in popularity order - output JSON |
---|
| | $result = alltag(); |
---|
| | echo $result; |
---|
| | break; |
---|
| | case 'save': |
---|
| | if(isset($_GET['log'])){ // save a new moodlog |
---|
| | $result = new_log($_GET['log']); |
---|
| | echo $result; |
---|
| | }else{ |
---|
| | echo "0"; |
---|
| | } |
---|
| | break; |
---|
| | default: |
---|
| | # code... |
---|
| | break; |
---|
| | } |
---|
| | die(); |
---|
| | } |
---|
| | |
---|
| | //$result = today("2018-09-13"); |
---|
| | //echo $result; |
---|
| | |
---|
| | function today($ymd){ |
---|
| | global $moodlog; |
---|
| | $ymd = strtotime($ymd); |
---|
| | $dateTime = new \DateTime(null, new DateTimeZone('Europe/London')); |
---|
| | $dateTime->setTimestamp($ymd); |
---|
| | $date = $dateTime->format('Y-m-d'); |
---|
| | $ymd2 = date("Y-m-d", strtotime("$date")); |
---|
| | //echo $ymd2; |
---|
| | |
---|
| | $returnstring = "<div class=\"sub-header\">$justdate</div>\n"; |
---|
| | $count = 0; |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | if ($moodfile) { |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | /*** |
---|
| | * if date < cutoff stop adding |
---|
| | */ |
---|
| | $cutoff = $date = strtotime(date("Y-m-d", strtotime("$ymd2 -0 day"))); |
---|
| | |
---|
| | $newpos = array(); |
---|
| | $newneg = array(); |
---|
| | $newcon = array(); |
---|
| | $newstr = ""; |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | $words = explode(" ", $split2[1]); |
---|
| | foreach($words as $word){ |
---|
| | if($word <> ""){ |
---|
| | switch (mb_substr($word[0], 0, 1)) { |
---|
| | case '+': |
---|
| | $newpos[] = $word; |
---|
| | break; |
---|
| | case '-': |
---|
| | $newneg[] = $word; |
---|
| | break; |
---|
| | case '@': |
---|
| | $newcon[] = $word; |
---|
| | break; |
---|
| | default: |
---|
| | $newstr .= " $word"; |
---|
| | break; |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | $datetime = $split1[0]; |
---|
| | if(strtotime($datetime) < $cutoff) |
---|
| | break; |
---|
| | $justdate = date("Y-m-d", strtotime($datetime)); |
---|
| | if(strtotime($ymd2) == strtotime($justdate)){ |
---|
| | $count++; |
---|
| | $mood = $split2[0]; |
---|
| | $fulldate = date("Y-m-d H:i", strtotime($datetime)); |
---|
| | $returnstring .= "<span class=\"datehist\">$fulldate</span>\n<span class=\"hpyhist\">[$mood]</span><span class=\"pretexthist\">$newstr</span>\n"; |
---|
| | |
---|
| | foreach($newpos as $pos) |
---|
| | $returnstring .= "<span class=\"preposhist\" onclick=\"addFilterPos($(this).text());\">$pos</span>\n"; |
---|
| | foreach($newneg as $neg) |
---|
| | $returnstring .= "<span class=\"preneghist\" onclick=\"addFilterNeg($(this).text());\">$neg</span>\n"; |
---|
| | foreach($newcon as $con) |
---|
| | $returnstring .= "<span class=\"preconhist\" onclick=\"addFilterCon($(this).text());\">$con</span>\n"; |
---|
| | $returnstring .= "<br />"; |
---|
| | } |
---|
| | |
---|
| | } |
---|
| | fclose($moodfile); |
---|
| | return ($count > 0)? $returnstring : "0"; |
---|
| | } else { |
---|
| | return "!ERROR! File: ".$moodfile." doesn't exist. !ERROR!<br />"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function main_cal(){ |
---|
| | global $moodlog; |
---|
| | $toreturn = ""; |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | if ($moodfile) { |
---|
| | $newtimes = array(); |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | /*** |
---|
| | * if date < cutoff stop adding |
---|
| | */ |
---|
| | $cutoff = $date = strtotime(date("Y-m-d", strtotime("-10 month"))); |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | |
---|
| | $datetime = $split1[0]; |
---|
| | if(strtotime($datetime) < $cutoff) |
---|
| | break; |
---|
| | |
---|
| | $mood = $split2[0]; |
---|
| | //$justdate = date("Y-m-d", strtotime($datetime)); |
---|
| | //$dt2 = explode("-", $datetime); |
---|
| | //$dtd = explode(" ", $dt2[2]); |
---|
| | //$dateTime = new \DateTime(null, new DateTimeZone('Europe/London')); |
---|
| | //$dateTime->setDate($dt2[0], $dt2[1], $dtd[0]); |
---|
| | //$justdate = $dateTime->format('Y-m-d'); |
---|
| | $dtd = explode(" ", $datetime); |
---|
| | $justdate = $dtd[0]; |
---|
| | |
---|
| | $newtimes[$justdate][] = $mood; |
---|
| | } |
---|
| | fclose($moodfile); |
---|
| | foreach($newtimes as $date=>$md){ |
---|
| | $average = round(array_sum($md) / count($md)); |
---|
| | |
---|
| | //$datetime = strtotime($date); |
---|
| | $dt22 = explode("-", $date); |
---|
| | $dtd2 = explode(" ", $dt22[2]); |
---|
| | $dateTime = new \DateTime(null, new DateTimeZone('Europe/London')); |
---|
| | $dateTime->setDate($dt22[0], $dt22[1], $dtd2[0]); |
---|
| | $justdate2 = $dateTime->getTimestamp(); |
---|
| | |
---|
| | $toreturn .= "\"$justdate2\":$average,"; |
---|
| | } |
---|
| | |
---|
| | return substr($toreturn, 0, -1); |
---|
| | } else { |
---|
| | return "!ERROR! File: ".$moodfile." doesn't exist. !ERROR!<br />"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function filtered_cal($filter){ |
---|
| | global $moodlog; |
---|
| | $toreturn = ""; |
---|
| | |
---|
| | $pattern = '/(?=[+-@][a-zA-Z0-9])/'; |
---|
| | $limit = -1; |
---|
| | $flags = PREG_SPLIT_NO_EMPTY; |
---|
| | $tags = preg_split ($pattern, $filter, $limit, $flags); |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | if ($moodfile) { |
---|
| | $newtimes = array(); |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | /*** |
---|
| | * if date < cutoff stop adding |
---|
| | */ |
---|
| | $cutoff = $date = strtotime(date("Y-m-d", strtotime("-10 month"))); |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | |
---|
| | $datetime = $split1[0]; |
---|
| | if(strtotime($datetime) < $cutoff) |
---|
| | break; |
---|
| | |
---|
| | $mood = $split2[0]; |
---|
| | $justdate = date("Y-m-d", strtotime($datetime)); |
---|
| | |
---|
| | $words = explode(" ", $split2[1]); |
---|
| | |
---|
| | foreach($words as $word){ |
---|
| | $word = trim($word); |
---|
| | if (in_array($word, $tags, true)) |
---|
| | $newtimes[$justdate][] = $mood; |
---|
| | } |
---|
| | |
---|
| | } |
---|
| | fclose($moodfile); |
---|
| | foreach($newtimes as $date=>$md){ |
---|
| | $average = round(array_sum($md) / count($md)); |
---|
| | $datetime = strtotime("$date"); |
---|
| | $toreturn .= "\"$datetime\":$average,"; |
---|
| | } |
---|
| | |
---|
| | return substr($toreturn, 0, -1); |
---|
| | } else { |
---|
| | return "!ERROR! File: ".$moodfile." doesn't exist. !ERROR!<br />"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function day_avg($ymd){ |
---|
| | global $moodlog; |
---|
| | $mood = array(); |
---|
| | $average = 0; |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | //$date = date("Y-m-d", $ymd); |
---|
| | //$date = date("Y-m-d", strtotime("$date +1 day")); |
---|
| | |
---|
| | $dateTime = new \DateTime(null, new DateTimeZone('Europe/London')); |
---|
| | $dateTime->setTimestamp($ymd); |
---|
| | $date = $dateTime->format('Y-m-d'); |
---|
| | $date = date("Y-m-d", strtotime("$date")); |
---|
| | |
---|
| | //$currentTime = new DateTime(); |
---|
| | //$currentTime = DateTime::createFromFormat( 'U', $ymd ); |
---|
| | //$date = $currentTime->format( 'c' ); |
---|
| | |
---|
| | $cutoff = strtotime("$date -0 day"); |
---|
| | |
---|
| | //echo $date." cutoff: ".$cutoff; |
---|
| | //$date = new DateTime(); |
---|
| | //$date->setTimestamp($ymd); |
---|
| | //echo $date->format('U = Y-m-d H:i:s') . "\n"; |
---|
| | |
---|
| | if ($moodfile) { |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | |
---|
| | $datetime = $split1[0]; |
---|
| | if(strtotime($datetime) < $cutoff) |
---|
| | break; |
---|
| | |
---|
| | if(strncmp($date, $datetime, 10) == 0 ) |
---|
| | $mood[] = $split2[0]; |
---|
| | } |
---|
| | // echo "$ymd "; |
---|
| | // echo $date; |
---|
| | // print_r($mood); |
---|
| | if($mood) |
---|
| | $average = round(array_sum($mood) / count($mood)); |
---|
| | return $average; |
---|
| | } else { |
---|
| | return "0"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function latest($tag){ |
---|
| | global $moodlog; |
---|
| | $count = 0; |
---|
| | |
---|
| | |
---|
| | $newpos = array(); |
---|
| | $newneg = array(); |
---|
| | $newcon = array(); |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | if ($moodfile) { |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | |
---|
| | $newstr = ""; |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | $words = explode(" ", $split2[1]); |
---|
| | foreach($words as $word){ |
---|
| | if($word <> ""){ |
---|
| | switch (mb_substr($word[0], 0, 1)) { |
---|
| | case '+': |
---|
| | $newpos[] = trim($word); |
---|
| | break; |
---|
| | case '-': |
---|
| | $newneg[] = trim($word); |
---|
| | break; |
---|
| | case '@': |
---|
| | $newcon[] = trim($word); |
---|
| | break; |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | |
---|
| | |
---|
| | } |
---|
| | fclose($moodfile); |
---|
| | switch ($tag) { |
---|
| | case 'pos': |
---|
| | $newpos = array_unique($newpos); |
---|
| | $newArray = array_slice($newpos, 0, 5, false); |
---|
| | break; |
---|
| | case 'neg': |
---|
| | $newneg = array_unique($newneg); |
---|
| | $newArray = array_slice($newneg, 0, 5, false); |
---|
| | break; |
---|
| | case 'con': |
---|
| | $newcon = array_unique($newcon); |
---|
| | $newArray = array_slice($newcon, 0, 5, false); |
---|
| | break; |
---|
| | default: |
---|
| | return 0; |
---|
| | break; |
---|
| | } |
---|
| | return json_encode($newArray); |
---|
| | |
---|
| | } else { |
---|
| | return "!ERROR! File: ".$moodfile." doesn't exist. !ERROR!<br />"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function toptag($tag){ |
---|
| | global $moodlog; |
---|
| | $count = 0; |
---|
| | |
---|
| | |
---|
| | $newpos = array(); |
---|
| | $newneg = array(); |
---|
| | $newcon = array(); |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | if ($moodfile) { |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | |
---|
| | $newstr = ""; |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | $words = explode(" ", $split2[1]); |
---|
| | foreach($words as $word){ |
---|
| | if($word <> ""){ |
---|
| | switch (mb_substr($word[0], 0, 1)) { |
---|
| | case '+': |
---|
| | $newpos[] = trim($word); |
---|
| | break; |
---|
| | case '-': |
---|
| | $newneg[] = trim($word); |
---|
| | break; |
---|
| | case '@': |
---|
| | $newcon[] = trim($word); |
---|
| | break; |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | |
---|
| | |
---|
| | } |
---|
| | fclose($moodfile); |
---|
| | switch ($tag) { |
---|
| | case 'pos': |
---|
| | $acv=array_count_values($newpos); |
---|
| | arsort($acv); |
---|
| | $result=array_keys($acv); |
---|
| | $newArray = array_slice($result, 0, 5, false); |
---|
| | break; |
---|
| | case 'neg': |
---|
| | $acv=array_count_values($newneg); |
---|
| | arsort($acv); |
---|
| | $result=array_keys($acv); |
---|
| | $newArray = array_slice($result, 0, 5, false); |
---|
| | break; |
---|
| | case 'con': |
---|
| | $acv=array_count_values($newcon); |
---|
| | arsort($acv); |
---|
| | $result=array_keys($acv); |
---|
| | $newArray = array_slice($result, 0, 5, false); |
---|
| | break; |
---|
| | default: |
---|
| | return 0; |
---|
| | break; |
---|
| | } |
---|
| | return json_encode($newArray); |
---|
| | |
---|
| | } else { |
---|
| | return "!ERROR! File: ".$moodfile." doesn't exist. !ERROR!<br />"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function alltag(){ |
---|
| | global $moodlog; |
---|
| | $count = 0; |
---|
| | |
---|
| | |
---|
| | $newtag= array(); |
---|
| | |
---|
| | $moodfile = @fopen($moodlog, "r"); |
---|
| | if ($moodfile) { |
---|
| | while (($line = fgets($moodfile)) !== false) { |
---|
| | |
---|
| | $newstr = ""; |
---|
| | |
---|
| | $split1 = explode("[", $line); |
---|
| | $split2 = explode("]", $split1[1]); |
---|
| | $words = explode(" ", $split2[1]); |
---|
| | foreach($words as $word){ |
---|
| | if($word <> ""){ |
---|
| | switch (mb_substr($word[0], 0, 1)) { |
---|
| | case '+': |
---|
| | $newtag[] = trim($word); |
---|
| | break; |
---|
| | case '-': |
---|
| | $newtag[] = trim($word); |
---|
| | break; |
---|
| | case '@': |
---|
| | $newtag[] = trim($word); |
---|
| | break; |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | } |
---|
| | fclose($moodfile); |
---|
| | |
---|
| | $acv=array_count_values($newtag); |
---|
| | arsort($acv); |
---|
| | $result=array_keys($acv); |
---|
| | |
---|
| | return json_encode($result); |
---|
| | |
---|
| | } else { |
---|
| | return "!ERROR! File: ".$moodfile." doesn't exist. !ERROR!<br />"; |
---|
| | } |
---|
| | } |
---|
| | |
---|
| | function new_log($log){ |
---|
| | global $moodlog; |
---|
| | $pattern = '/(?=[+-@|][a-zA-Z0-9])/'; |
---|
| | $limit = -1; |
---|
| | $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE; |
---|
| | $result = preg_split ($pattern, $log, $limit, $flags); |
---|
| | //print_r($result); |
---|
| | |
---|
| | $timestamp = date("Y-m-d H:i"); |
---|
| | $no = rtrim($result[0], "|"); |
---|
| | $msg = ""; |
---|
| | $pos = ""; |
---|
| | $neg = ""; |
---|
| | $con = ""; |
---|
| | |
---|
| | foreach($result as $item){ |
---|
| | switch ($item[0]) { |
---|
| | case '|': |
---|
| | $msg .= substr($item, 1)." "; |
---|
| | break; |
---|
| | case '+': |
---|
| | $pos .= "$item "; |
---|
| | break; |
---|
| | case '-': |
---|
| | $neg .= "$item "; |
---|
| | break; |
---|
| | case '@': |
---|
| | $con .= "$item "; |
---|
| | break; |
---|
| | } |
---|
| | } |
---|
| | $toadd = "$timestamp [$no] ".$msg.$pos.$neg.$con."\n"; |
---|
| | $toadd .= file_get_contents($moodlog); |
---|
| | file_put_contents($moodlog, $toadd); |
---|
| | echo "1"; |
---|
| | } |
---|
| | |
---|
| | ?> |
---|
| | |
---|
| | <html> |
---|
| | <head> |
---|
| | |
---|
| | <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous"> |
---|
| | <script type="text/javascript" src="https://d3js.org/d3.v3.min.js"></script> |
---|
| | <script type="text/javascript" src="https://cdn.jsdelivr.net/cal-heatmap/3.3.10/cal-heatmap.min.js"></script> |
---|
| | <link rel="stylesheet" href="https://cdn.jsdelivr.net/cal-heatmap/3.3.10/cal-heatmap.css" /> |
---|
| | <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400,700" rel="stylesheet"> |
---|
| | <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> |
---|
| | <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous"> |
---|
| | <script src="https://code.jquery.com/jquery-1.12.4.js"></script> |
---|
| | <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> |
---|
| | <link rel="stylesheet" href="style.css" > |
---|
| | </head> |
---|
| | <body> |
---|
| | |
---|
| | <center> |
---|
| | <?php if($error <> ""){echo $error; } ?> |
---|
| | |
---|
| | <div class="banner"> |
---|
| | <div class="header"><a href="/?logout"><i class="fas fa-heartbeat" ></i></a> moodlog.txt</div> |
---|
| | |
---|
| | <div class="new-log"> |
---|
| | |
---|
| | <input type="range" id="happyval" value="5" min="1" max="10"/> |
---|
| | <input class="input" id="tags" placeholder="(+,-,@) description"/> |
---|
| | <input type="button" value="+" onClick="updatePretext();"/> |
---|
| | <input type="button" value="add" class="add" onClick="submitMood();"/> |
---|
| | |
---|
| | </div> |
---|
| | <div class="preview"> |
---|
| | <span class="date">2018-09-11 20:27</span><span class="hpyno">[5]</span><span class="pretext" onClick="updatePretext();"></span></div> |
---|
| | |
---|
| | <div class="filter" style="display:none"> |
---|
| | <span class="filtitle">Filters:</span> |
---|
| | <span class="fas fa-search" style="float:right;font-size:15px;" onclick="applyFilters();"></span> |
---|
| | </div> |
---|
| | </div> |
---|
| | |
---|
| | <div id="cal-heatmap"></div> |
---|
| | |
---|
| | <div class="top10s"> |
---|
| | <div class="toppos"> |
---|
| | <div class="sub-header">Top 5 positive</div> |
---|
| | </div> |
---|
| | <div class="topneg"> |
---|
| | <div class="sub-header">Top 5 negative</div> |
---|
| | </div> |
---|
| | <div class="topcon"> |
---|
| | <div class="sub-header">Top 5 context</div> |
---|
| | </div> |
---|
| | <div class="latpos"> |
---|
| | <div class="sub-header">Latest 5 positive</div> |
---|
| | </div> |
---|
| | <div class="latneg"> |
---|
| | <div class="sub-header">Latest 5 negative</div> |
---|
| | </div> |
---|
| | <div class="latcon"> |
---|
| | <div class="sub-header">Latest 5 context</div> |
---|
| | </div> |
---|
| | </div> |
---|
| | |
---|
| | <div class="fullday"> |
---|
| | <div class="previewhist"> |
---|
| | |
---|
| | <?php |
---|
| | $result = today(date("Y-m-d")); |
---|
| | if($result != "0") |
---|
| | echo $result; |
---|
| | ?> |
---|
| | |
---|
| | </div> |
---|
| | </div> |
---|
| | </center> |
---|
| | |
---|
| | <script src="script.js"></script> |
---|
| | |
---|
| | </body> |
---|
| | </html> |
---|
| | |
---|
| | |