[581] | 1 | <?php |
---|
[2363] | 2 | |
---|
| 3 | /*************************************************************************** |
---|
| 4 | * Expresso Livre * |
---|
| 5 | * http://www.expressolivre.org * |
---|
| 6 | * -------------------------------------------- * |
---|
| 7 | * This program is free software; you can redistribute it and/or modify it * |
---|
| 8 | * under the terms of the GNU General Public License as published by the * |
---|
| 9 | * Free Software Foundation; either version 2 of the License, or (at your * |
---|
| 10 | * option) any later version. * |
---|
| 11 | \**************************************************************************/ |
---|
[581] | 12 | $phpgw_flags = Array( |
---|
| 13 | 'currentapp' => 'calendar', |
---|
| 14 | 'noappheader' => True, |
---|
| 15 | 'noappfooter' => True, |
---|
| 16 | 'nofooter' => True |
---|
| 17 | ); |
---|
| 18 | $GLOBALS['phpgw_info']['flags'] = $phpgw_flags; |
---|
| 19 | |
---|
| 20 | include('../../header.inc.php'); |
---|
| 21 | $_SESSION['calendar']['user'] = $GLOBALS['phpgw_info']['user']; |
---|
| 22 | $_SESSION['calendar']['server'] = $GLOBALS['phpgw_info']['server']; |
---|
| 23 | define('PHPGW_API_INC','../../phpgwapi/inc'); |
---|
| 24 | include_once(PHPGW_API_INC.'/class.db.inc.php'); |
---|
| 25 | $page_content = <<<PAGE |
---|
| 26 | <HTML><HEAD></HEAD><BODY> |
---|
| 27 | <SCRIPT type="text/javascript"> |
---|
| 28 | var Total = 0; |
---|
| 29 | function show_table(){ |
---|
| 30 | var MainDiv = document.getElementById('MainDiv'); |
---|
| 31 | var showTable = document.createElement('TABLE'); |
---|
[626] | 32 | showTable.style.color = "#000066" |
---|
| 33 | showTable.style.background = "#F7F7F7"; |
---|
| 34 | showTable.style.border = "1px solid #CCCCCC"; |
---|
| 35 | showTable.width = "75%"; |
---|
| 36 | showTable.align = "center"; |
---|
[581] | 37 | var trLine = document.createElement('TR'); |
---|
| 38 | var tdVal = document.createElement('TD'); |
---|
| 39 | tdVal.innerHTML = "Titulo"; |
---|
| 40 | trLine.appendChild(tdVal); |
---|
| 41 | tdVal = document.createElement('TD'); |
---|
| 42 | tdVal.innerHTML = "Descricao"; |
---|
| 43 | trLine.appendChild(tdVal); |
---|
[626] | 44 | tdVal = document.createElement('TD'); |
---|
| 45 | tdVal.innerHTML = "Data"; |
---|
| 46 | trLine.appendChild(tdVal); |
---|
[581] | 47 | tdVal = document.createElement('TD'); |
---|
| 48 | tdVal.innerHTML = "Horas"; |
---|
| 49 | trLine.appendChild(tdVal); |
---|
| 50 | trLine.style.background = "#DDD"; |
---|
| 51 | showTable.appendChild(trLine); |
---|
| 52 | |
---|
| 53 | var Eelement = MainDiv.firstChild; |
---|
| 54 | while (Eelement){ |
---|
| 55 | trLine = document.createElement('TR'); |
---|
| 56 | tdVal = document.createElement('TD'); |
---|
[626] | 57 | var cal_id = Eelement.childNodes[4].innerHTML; |
---|
| 58 | tdVal.innerHTML = "<a href='../../index.php?menuaction=calendar.uicalendar.view&cal_id="+cal_id+"'>"+Eelement.childNodes[0].innerHTML+"</a>"; |
---|
[581] | 59 | trLine.appendChild(tdVal); |
---|
| 60 | tdVal = document.createElement('TD'); |
---|
| 61 | tdVal.innerHTML = Eelement.childNodes[1].innerHTML; |
---|
| 62 | trLine.appendChild(tdVal); |
---|
| 63 | tdVal = document.createElement('TD'); |
---|
[626] | 64 | var today = new Date(); |
---|
| 65 | today.setTime(parseInt(Eelement.childNodes[2].innerHTML)*1000); |
---|
| 66 | tdVal.innerHTML = (today.getDate()+"/"+(today.getMonth()+1)+"/"+(today.getYear()+1900)); |
---|
| 67 | trLine.appendChild(tdVal); |
---|
| 68 | tdVal = document.createElement('TD'); |
---|
[581] | 69 | Total += (Eelement.childNodes[3].innerHTML-Eelement.childNodes[2].innerHTML)/3600; |
---|
| 70 | tdVal.innerHTML = ((Eelement.childNodes[3].innerHTML-Eelement.childNodes[2].innerHTML)/3600).toFixed(1); |
---|
| 71 | trLine.appendChild(tdVal); |
---|
| 72 | var tbody = document.createElement('tbody'); |
---|
| 73 | tbody.appendChild(trLine); |
---|
| 74 | showTable.appendChild(tbody); |
---|
| 75 | Eelement = Eelement.nextSibling; |
---|
| 76 | |
---|
| 77 | } |
---|
| 78 | trLine = document.createElement('TR'); |
---|
| 79 | tdVal = document.createElement('TD'); |
---|
| 80 | tdDes = document.createElement('TD'); |
---|
| 81 | tdDes.innerHTML = "Total"; |
---|
| 82 | tdDes.align = "left"; |
---|
| 83 | tdVal.innerHTML = Total.toFixed(1); |
---|
| 84 | trLine.style.background = "#FFF"; |
---|
| 85 | trLine.appendChild(tdDes); |
---|
| 86 | trLine.appendChild(document.createElement('TD')); |
---|
[626] | 87 | trLine.appendChild(document.createElement('TD')); |
---|
[581] | 88 | trLine.appendChild(tdVal); |
---|
| 89 | var tbody = document.createElement('tbody'); |
---|
| 90 | tbody.appendChild(trLine); |
---|
| 91 | showTable.appendChild(tbody); |
---|
| 92 | MainDiv.parentNode.appendChild(showTable); |
---|
| 93 | } |
---|
| 94 | </SCRIPT> |
---|
| 95 | PAGE; |
---|
| 96 | echo $page_content; |
---|
| 97 | $db = new db(); |
---|
| 98 | $db->Halt_On_Error = 'no'; |
---|
| 99 | $db->connect( |
---|
| 100 | $_SESSION['calendar']['server']['db_name'], |
---|
| 101 | $_SESSION['calendar']['server']['db_host'], |
---|
| 102 | $_SESSION['calendar']['server']['db_port'], |
---|
| 103 | $_SESSION['calendar']['server']['db_user'], |
---|
| 104 | $_SESSION['calendar']['server']['db_pass'], |
---|
| 105 | $_SESSION['calendar']['server']['db_type'] |
---|
| 106 | ); |
---|
| 107 | if (IsSet($_POST['CAT'])){ |
---|
| 108 | if (!preg_match("/[a-zA-Z0-9]+/i",$_POST['CAT'][0])){ |
---|
| 109 | echo "Invalid entry:".$_POST['CAT'][0]; |
---|
| 110 | return false; |
---|
| 111 | } |
---|
| 112 | if (strlen($_POST['DAT']) > 0 && !preg_match("/[0123][0-9].[01][0-9].[12][90][0-9][0-9]$/i",$_POST['DAT'])){ |
---|
| 113 | echo "Invalid entry:".$_POST['DAT']; |
---|
| 114 | return false; |
---|
| 115 | } |
---|
| 116 | |
---|
| 117 | if (IsSet($_POST['DAT'])) |
---|
| 118 | $initDate = mktime(null,null,null,substr($_POST['DAT'],3,2),substr($_POST['DAT'],0,2),substr($_POST['DAT'],6,4)); |
---|
| 119 | if ($_POST['CAL'][0] != 'run') |
---|
| 120 | $user_id = $_POST['CAL'][0]; |
---|
[602] | 121 | |
---|
| 122 | foreach ($_POST['CAL'] as $cal_uid){ |
---|
| 123 | $found = false; |
---|
| 124 | foreach($_SESSION['calendar']['cals'] as $grant) |
---|
| 125 | if ($cal_uid == $grant['value']) |
---|
| 126 | $found = true; |
---|
| 127 | if (!$found){ |
---|
| 128 | echo "Permission denied, cal. id:".$cal_uid."<br>"; |
---|
| 129 | return; |
---|
| 130 | } |
---|
| 131 | } |
---|
| 132 | |
---|
| 133 | |
---|
[626] | 134 | foreach($_POST['CAT'] as $catid){ |
---|
| 135 | $query = "select cal_id,title,description,datetime,edatetime from phpgw_cal where ".(!$_POST['NORM']?"cal_type = 'H' and":" is_public = 1 and ")." owner = ".$user_id." and (category like '%,".$catid.",%' or category like '%,".$catid."' or category like '".$catid.",%' or category = '".$catid."')".(IsSet($initDate)?" and datetime > ".$initDate:""); |
---|
| 136 | if(!$db->query($query)){ |
---|
[602] | 137 | print("<br>Query failed at host:<br>".$_SESSION['calendar']['server']['db_user']."@".$_SESSION['calendar']['server']['db_host'].":".$_SESSION['calendar']['server']['db_port']."<br>"); |
---|
[581] | 138 | return; |
---|
| 139 | } |
---|
[602] | 140 | else{ |
---|
| 141 | while($db->next_record()){ |
---|
| 142 | $entry = $db->row(); |
---|
| 143 | $repeated = false; |
---|
[626] | 144 | if (!empty($result_)) |
---|
[602] | 145 | foreach($result_ as $value){ |
---|
| 146 | if ($value['cal_id'] == $entry['cal_id']) |
---|
| 147 | $repeated = true; |
---|
| 148 | } |
---|
| 149 | if(!$repeated) |
---|
| 150 | $result_[] = $entry; |
---|
| 151 | } |
---|
| 152 | } |
---|
[626] | 153 | } |
---|
[581] | 154 | echo "<div id='MainDiv' style='display: none;'>"; |
---|
[626] | 155 | if (!empty($result_)) |
---|
[581] | 156 | foreach($result_ as $ind => $entry){ |
---|
[626] | 157 | echo "<div id=\"entry_".$ind."\"><div id=\"title_".$ind."\">".htmlspecialchars($entry['title'])."</div><div id=\"description_".$ind."\">".htmlspecialchars($entry['description'])."</div><div id=\"datetime_".$ind."\">".$entry['datetime']."</div><div id=\"edatetime_".$ind."\">".$entry['edatetime']."</div><div>".$entry['cal_id']."</div></div>"; |
---|
[581] | 158 | } |
---|
| 159 | echo "</div><script type=\"text/javascript\"> show_table();</script>"; |
---|
| 160 | return; |
---|
| 161 | } |
---|
| 162 | |
---|
| 163 | $self = $_SERVER['PHP_SELF']; |
---|
| 164 | print("<table><tbody><tr><td>"); |
---|
| 165 | print("<form id=\"form1\" method=\"post\" action=\"$self\">"); |
---|
| 166 | print("Categoria(s):<br></td><td>"); |
---|
| 167 | print("<select name=\"CAT[]\" multiple>"); |
---|
[602] | 168 | print($_SESSION['calendar']['categories']); |
---|
[581] | 169 | print("</select></td></tr><tr><td>"); |
---|
| 170 | print("Incluir ocorrências do tipo normal:</td><td><input name=\"NORM\" type=\"checkbox\"></input><br></td></tr>"); |
---|
| 171 | print("<tr><td>Usuario:</td><td><select name=\"CAL[]\" multiple>"); |
---|
[602] | 172 | foreach($_SESSION['calendar']['cals'] as $grant) |
---|
| 173 | print(!strstr($grant['value'],'g_')?'<option value="'.$grant['value'].'">'.$grant['name'].'</option>':""); |
---|
[581] | 174 | print("</td></tr><tr><td>Apartir da data: dd/mm/aaaa<br>(caso todas deixar em branco):</td><td><input name=\"DAT\" type=\"text\"></input></td></tr>"); |
---|
| 175 | print("</td></tr></tbody></table><br><input value=\"Fazer consulta\" type=\"submit\"><br></form>"); |
---|
| 176 | print("</BODY></HTML>"); |
---|
| 177 | ?> |
---|