Documentation is available at function.inc.php
1 <?
2 /**
3 * Often used Functions
4 *
5 * @package phpTimeSheet
6 * @author Sebastian Mendel <info@sebastianmendel.de>
7 * @version $Id: function.inc.php,v 1.11 2003/09/17 10:42:18 cybot_tm Exp $
8 */
9
10 /**
11 *
12 */
13 require_once 'config.inc.php';
14 require_once 'workday.class.php';
15
16 require_once 'time.class.php';
17 require_once 'date.class.php';
18
19
20 /**
21 * @return string color
22 * @desc retunr changing colors f.e. for tablerows
23 */
24 function GetLineColor()
25 {
26 if ( ! isset($_ENV['linecolor']) || $_ENV['linecolor'] == 0 )
27 {
28 $_ENV['linecolor'] = 1;
29 return '#ffffff';
30 }
31 else
32 {
33 $_ENV['linecolor'] = 0;
34 return '#eeeeee';
35 }
36 }
37
38
39 /* Projektminuten - Arbeitszeit-Differenz für Ang. $wid*/
40 function get_work_time ( $wid,$date,$pause )
41 {
42 global $golink
43
44 // if (!$golink || $date!=date("Y-m-d")){
45 $workday = new Workday($date);
46 $workday->load($wid);
47
48 $projekte = db_to_min($workday->get_day_total());
49
50 //Spezial: am Freitag keine Pausenzeit anrechnen
51 if (date("w",strtotime($date)) == 5) $pause=0;
52
53 $arbeit = $workday->worktime["Min"]-$pause;
54 $diff = $projekte - $arbeit;
55 // }
56 return $diff;
57 }
58
59 /* Projektminuten - Arbeitszeit-Differenz für Ang. $wid*/
60 function time_test($wid,$date,$pause){
61 global $golink
62
63 if (!$golink || $date!=date("Y-m-d")){
64 $workday = new Workday($date);
65 $workday->load($wid);
66
67 $projekte = db_to_min($workday->get_day_total());
68
69 //Spezial: am Freitag keine Pausenzeit anrechnen
70 if (date("w",strtotime($date)) == 5) $pause=0;
71
72 $arbeit = $workday->worktime["Min"]-$pause;
73 $diff = $projekte - $arbeit;
74
75 if ($diff > 0)
76 $message = "<br>Achtung! Bei Projekten sind am ".db_to_date($date)." ".min_to_hours($diff)." zuviel eingegeben!<br>\n"
77 ."Bitte überprüfen Sie Ihre Angaben!";
78 elseif ($diff < 0)
79 $message = "<br>Achtung! Bei Projekten fehlen am ".db_to_date($date)." ".min_to_hours(0-$diff)."!<br>\n"
80 ."Bitte ergänzen Sie Ihre Angaben!";
81 else
82 $message = "";
83 }
84 else
85 $message = "";
86
87 return $message;
88 }
89
90
91 /*Function to create a list of weeks*/
92 function get_workerid_by_name($wname){
93
94 $sql = sprintf("SELECT windex FROM %s WHERE wname = '%s'",
95 PTS_TBL_WORKER, $wname);
96 $result = mysql_query("$sql")or die(" <pre>get_workerid_by_name(): BadSelect:\n$sql\n".mysql_error());
97
98 if(mysql_num_rows($result) != 1)
99 return FALSE;
100
101 return mysql_result($result,0,0);
102 }/*function get_workerid_by_name($wname) */
103
104 function get_parent_for_subpid($subpid) {
105 $sql = 'select pparent from pids where pindex = ' . $subpid;
106 $result = mysql_query($sql) or die(" get_parent_for_subpid(): BadSelect: $sql".mysql_error());
107 if ( mysql_result($result,0,0) == 0 )
108 return $subpid;
109 else
110 return mysql_result($result,0,0);
111 }
112
113 function list_subpids_for_pid($pid,$status=-1){
114
115 $where = " WHERE`ptyp` = 'C' AND`pparent` = $pid";
116
117 $sql = sprintf("SELECT tname FROM `pid_teilleistung` ORDER BY `tname` ASC ");
118 $result = mysql_query("$sql")or die(" list_subpids_for_pid(): BadSelect: $sql".mysql_error());
119 while ( $row = mysql_fetch_assoc($result) )
120 $teilleistung[$row['tname']] = $row['tname'];
121
122 $pids = array();
123 $sql = sprintf("SELECT * FROM `%s` %s ORDER BY `pname` ASC ", PTS_TBL_PROJECT, $where);
124 $result = mysql_query("$sql")or die(" list_subpids_for_pid(): BadSelect: $sql".mysql_error());
125 while($row = mysql_fetch_array($result)) {
126 if ( $row['pstatus'] == 2 )
127 unset($teilleistung[$row['pname']]);
128 else
129 $pids[$row['pname']] = $row['pindex'];
130 }
131
132 // $pids = array_merge($teilleistung,$pids);
133 $pids = array_flip($pids);
134
135 return($pids);
136 }/*function list_subpids()*/
137
138 function list_subpids($status=-1){
139
140 if ($status != -1) {
141 if ($status == 1)
142 $where = sprintf("WHERE `pstatus` IN (1,3,4) AND `ptyp` = 'C'");
143 else
144 $where = sprintf("WHERE `pstatus` = %d AND `ptyp` = 'C'",$status);
145 }
146 else $where = "WHERE `ptyp` = 'C'";
147
148 $sql = sprintf("SELECT * FROM `%s` %s ORDER BY `pname` ASC ", PTS_TBL_PROJECT, $where);
149 $result = mysql_query("$sql")or die(" list_subpids(): BadSelect: $sql".mysql_error());
150 while($row = mysql_fetch_array($result))
151 $pids[$row['pindex']] = $row['pname'];
152
153 return($pids);
154 }/*function list_subpids()*/
155
156 /* deprecated */
157 function list_teilleistungen(){
158
159 $sql = sprintf("SELECT * FROM pid_teilleistung ORDER BY `tname` ASC ");
160 $result = mysql_query("$sql")or die(" list_teilleistungen(): BadSelect: $sql".mysql_error());
161 while($row = mysql_fetch_array($result))
162 $teilleistungen[$row['tid']] = $row['tname'];
163
164 return($teilleistungen);
165 }/*function list_teilleistungen()*/
166
167
168 //Tabelle für den workertype auf der edit_worker-Seite
169 function sollzeittabelle($typeid=0,$editable=false){
170
171 $daten = mysql_query(" SELECT * FROMcontracted_hoursWHEREid = $typeid");
172
173 if ($result = mysql_fetch_array($daten)) {
174 $ausgabe = "<table noshade border=1 cellspacing=0 cellpadding=2>\n<tr><td><b>Mo</b></td>\n"
175 ."<td><b>Di</b></td>\n<td><b>Mi</b></td>\n"
176 ."<td><b>Do</b></td>\n<td><b>Fr</b></td>\n</tr>\n"
177 ."<tr><td>".$result['1']."</td>\n<td>".$result['2']."</td>\n"
178 ."<td>".$result['3']."</td>\n<td>".$result['4']."</td>\n"
179 ."<td>".$result['5']."</td>\n</tr></table>";
180 }
181 else
182 $ausgabe = "keine Daten";
183
184 return $ausgabe;
185 }
186
187
188
189 /* *Frei*tage eintragen */
190 function timetable_eintrag($werid, $wername, $wann, $was, $type, $zeitflag, $company=1){
191 //muss Zeit mitgespeichert werden?
192 if ( $zeitflag ) {
193 //Zeit für entsprechendes Datum und worker aus sollzeittabelle holen
194 $zeitsql = "
195 SELECT `" . TBL_SOLL_ZEIT . "`.`typeid`,
196 `" . TBL_SOLL_ZEIT . "`.`Mo`,
197 `" . TBL_SOLL_ZEIT . "`.`Di`,
198 `" . TBL_SOLL_ZEIT . "`.`Mi`,
199 `" . TBL_SOLL_ZEIT . "`.`Do`,
200 `" . TBL_SOLL_ZEIT . "`.`Fr`
201 FROM `" . PTS_TBL_WORKER . "`
202 LEFT JOIN `" . TBL_SOLL_ZEIT . "`
203 ON `" . PTS_TBL_WORKER . "`.`workertype` = `" . TBL_SOLL_ZEIT . "`.`typeid`
204 WHERE `" . PTS_TBL_WORKER . "`.`windex` = '$werid'";
205
206 $result = mysql_query($zeitsql) or die (" <pre>extras::timetable_eintragBadSQL\n$zeitsql\n" . mysql_error());
207 $zeiten = mysql_fetch_row($result);
208 if ( ! ($zeit = $zeiten[date("w",strtotime($wann))]) )
209 $zeit = 0;
210
211 if ( $was == URLAUB_HALB )
212 // nur halbe arbeitszeit eintrage
213 $zeit = $zeit/2;
214 }
215 else
216 $zeit = 0;
217
218 $sql = "
219 SELECT *
220 FROM `" . PTS_TBL_PROJECT_TIME . "`
221 WHERE`day` = '$wann'
222 AND`pid` = '0'
223 AND`worker` = '$werid'
224 AND`worktype` = '$was'";
225 $res = mysql_query($sql) or die (" <pre>extras::timetable_eintragBadSQL\n$sql\n".mysql_error());
226 if (mysql_num_rows($res)) $type="NIX"; //falls dies schon drinsteht
227
228 if ( $type == "INSERT" ) {
229 $sql = "
230 INSERT INTO `" . PTS_TBL_PROJECT_TIME . "`
231 (`day`,`worker`,`pid`,`worktype`,`hours`,`company`)
232 VALUES ('$wann', $werid, 0, $was, $zeit, $company)";
233 }
234 elseif ( $type == "UPDATE" ){
235 $sql = "
236 UPDATE `" . PTS_TBL_PROJECT_TIME . "`
237 SET`worktype` = '$was',
238 `hours` = '$zeit'
239 WHERE`day` = '$wann'
240 AND`worker` = '$werid'";
241 }
242 else unset ($sql);
243
244 if (isset($sql)){
245 $result = mysql_query($sql) or die (" <pre>extras::timetable_eintragBadSQL\n$sql\n".mysql_error());
246 }
247 if ( $was == URLAUB_GENEHMIGT ) { //Urlaubstage, beim Resturlaub abziehen
248 $sql2 = "UPDATE `" . PTS_TBL_WORKER . " `SET`resturlaub` = `resturlaub` - 1WHERE`windex` = '$werid'";
249 }
250 elseif ( $was == URLAUB_HALB ) {
251 $sql2 = "UPDATE `" . PTS_TBL_WORKER . " `SET`resturlaub` = `resturlaub` - 0.5WHERE`windex` = '$werid'";
252 }
253 if (isset($sql2) && $result) mysql_query($sql2) or die (" <pre>extras::timetable_eintragBadSQL\n$sql2\n".mysql_error());
254
255 $ret = " Eintragfür$wernameam".db_to_date($wann).", ".dbhm($zeit)." Stunden ";
256 if ( $result )
257 $ret .= "erfolgreich";
258 else
259 $ret .= "nicht erfolgreich";
260
261 if ($type == "NIX")
262 $ret .= ", da genau dieser Eintrag schon vorhanden ist.";
263
264 return $ret;
265 }
266 ?>
Documentation generated on Fri, 26 Sep 2003 15:39:44 +0200 by phpDocumentor 1.2.2