Axis--StandardLibrary.php
Go to the documentation of this file.
00001 <?PHP 00002 00003 # 00004 # Axis--StandardLibrary.php 00005 # A Collection of Utility Routines 00006 # 00007 # Copyright 1999-2002 Axis Data 00008 # This code is free software that can be used or redistributed under the 00009 # terms of Version 2 of the GNU General Public License, as published by the 00010 # Free Software Foundation (http://www.fsf.org). 00011 # 00012 # Author: Edward Almasy (almasy@axisdata.com) 00013 # 00014 # Part of the AxisPHP library v1.2.4 00015 # For more information see http://www.axisdata.com/AxisPHP/ 00016 # 00017 00018 00019 # (accepts a date string in the form YYYY-MM-DD and adds or subtracts days) 00020 function CalcDate($DateString, $DaysToAdd) 00021 { 00022 # parse date string 00023 $Pieces = explode("-", $DateString); 00024 00025 # convert to value of date in seconds (a la Unix timestamp) 00026 $DateInSeconds = mktime(1, 1, 1, $Pieces[1], $Pieces[2], $Pieces[0]); 00027 00028 # perform date arithmetic 00029 $DateInSeconds = $DateInSeconds + ($DaysToAdd * (60 * 60 * 24)); 00030 00031 # return YYYY-MM-DD date string to caller 00032 return date("Y-m-d", $DateInSeconds); 00033 } 00034 00035 function GetHtmlEscapedString($String) 00036 { 00037 return htmlentities(stripslashes($String)); 00038 } 00039 00040 function GetUnHtmlEscapedString($String) 00041 { 00042 $TranslationTable = get_html_translation_table(HTML_ENTITIES); 00043 $TranslationTable = array_flip($TranslationTable); 00044 return strtr($String, $TranslationTable); 00045 } 00046 00047 function HtmlSafePrint($String) 00048 { 00049 print(GetHtmlEscapedString($String)); 00050 } 00051 00052 function PrintAutoRefreshPage($Title, $NewUrl) 00053 { 00054 </script> 00055 00056 <html> 00057 <head> 00058 <title><?php printf("%s", $Title); ?></title> 00059 <meta http-equiv="refresh" content="0; URL=<?php print($NewUrl); ?>"> 00060 </head> 00061 <body bgcolor="white"> 00062 </body> 00063 </html> 00064 00065 <script language="php"> 00066 } 00067 00068 function GetOrdinalSuffix($Number) 00069 { 00070 if (($Number > 10) && ($Number < 20)) 00071 { 00072 $Suffix = "th"; 00073 } 00074 else 00075 { 00076 $Digit = $Number % 10; 00077 if ($Digit == 1) 00078 { 00079 $Suffix = "st"; 00080 } 00081 elseif ($Digit == 2) 00082 { 00083 $Suffix = "nd"; 00084 } 00085 elseif ($Digit == 3) 00086 { 00087 $Suffix = "rd"; 00088 } 00089 else 00090 { 00091 $Suffix = "th"; 00092 } 00093 } 00094 00095 return $Suffix; 00096 } 00097 00098 function GetOrdinalNumber($Number) 00099 { 00100 return $Number.GetOrdinalSuffix($Number); 00101 } 00102 00103 function GetMonthName($MonthNumber) 00104 { 00105 $MonthNames = array( 00106 1 => "January", 00107 2 => "February", 00108 3 => "March", 00109 4 => "April", 00110 5 => "May", 00111 6 => "June", 00112 7 => "July", 00113 8 => "August", 00114 9 => "September", 00115 10 => "October", 00116 11 => "November", 00117 12 => "December"); 00118 00119 return $MonthNames[$MonthNumber]; 00120 } 00121 00122 function PrintOptionList($ResultVar, $Items, 00123 $SelectedValue = NULL, 00124 $SubmitOnChange = "", 00125 $Size = 1, 00126 $PrintEvenIfEmpty = 1, 00127 $MultipleAllowed = false, 00128 $OnChangeAction = NULL, 00129 $Width = NULL, 00130 $DisabledOptions = NULL) 00131 { 00132 if ((count($Items) > 0) || $PrintEvenIfEmpty) 00133 { 00134 # determine forced display width for option list (if needed) 00135 if ($Width) 00136 { 00137 # width given in px 00138 if (is_numeric($Width)) 00139 { 00140 $ForcedWidthAttrib = " style=\"width: ".$Width."px;\""; 00141 } 00142 00143 # width given with type specifier (%, px, etc) 00144 else 00145 { 00146 $ForcedWidthAttrib = " style=\"width: ".$Width.";\""; 00147 } 00148 } 00149 else 00150 { 00151 $Labels = $Items; 00152 sort($Labels); 00153 $MatchingCharThreshold = 11; 00154 $MaxMatchingChars = $MatchingCharThreshold; 00155 foreach ($Labels as $Label) 00156 { 00157 if (isset($PreviousLabel)) 00158 { 00159 $Len = ($MaxMatchingChars + 1); 00160 while (substr($Label, 0, $Len) == 00161 substr($PreviousLabel, 0, $Len) 00162 && ($Len < strlen($Label))) 00163 { 00164 $MaxMatchingChars = $Len; 00165 $Len++; 00166 } 00167 } 00168 $PreviousLabel = $Label; 00169 } 00170 if ($MaxMatchingChars > $MatchingCharThreshold) 00171 { 00172 $ExtraCharsToDisplayBeyondMatch = 6; 00173 $ForcedWidth = $MaxMatchingChars + $ExtraCharsToDisplayBeyondMatch;; 00174 $ForcedWidthAttrib = " style=\"width: ".$ForcedWidth."ex;\""; 00175 } 00176 else 00177 { 00178 $ForcedWidthAttrib = " style=\"width: auto;\""; 00179 } 00180 } 00181 00182 # print option list begin 00183 print("<select name=\"".$ResultVar."\"" 00184 ." size=\"".$Size."\"" 00185 ." id=\"".$ResultVar."\"" 00186 .($SubmitOnChange ? " onChange=\"submit()\"" : "") 00187 .($OnChangeAction ? " onChange=\"".$OnChangeAction."\"" : "") 00188 .($MultipleAllowed ? " multiple" : "") 00189 .$ForcedWidthAttrib 00190 .">\n"); 00191 00192 # for each element in list 00193 reset($Items); 00194 while (list($Value, $Label) = each($Items)) 00195 { 00196 # print option list item 00197 printf(" <option value=\"%s\"", htmlspecialchars($Value)); 00198 if ((is_array($SelectedValue) && in_array($Value, $SelectedValue)) 00199 || ($Value == $SelectedValue)) { printf(" selected"); } 00200 if ( !is_null($DisabledOptions) 00201 && isset($DisabledOptions[$Label])) 00202 { 00203 printf(" disabled"); 00204 } 00205 printf(">%s</option>\n", GetHtmlEscapedString($Label)); 00206 } 00207 00208 # print option list end 00209 printf("</select>\n"); 00210 } 00211 } 00212 00213 function PrintOptionListsOfDateComponents($FieldPrefix, $AllowNullDate = 0, $Year = -1, $Month = -1, $Day = -1, $SubmitOnChange = "") 00214 { 00215 # if no date passed in 00216 if (($Year == -1) && ($AllowNullDate)) 00217 { 00218 # if null date allowed 00219 if ($AllowNullDate) 00220 { 00221 # use null date 00222 $Year = 0; 00223 $Month = 0; 00224 $Day = 0; 00225 } 00226 else 00227 { 00228 # use current date 00229 $Year = date("Y"); 00230 $Month = date("n"); 00231 $Day = date("j"); 00232 } 00233 } 00234 00235 # if date string passed in 00236 if ((strlen($Year) > 4) && ($Month == -1)) 00237 { 00238 # split into component parts 00239 list($Year, $Month, $Day) = split("[-/]", $Year); 00240 } 00241 00242 # print option list for months if month value supplied 00243 if ($Month != -1) 00244 { 00245 $Index = 1; 00246 print("\n <select name=\"".$FieldPrefix."Month\"" 00247 ." id=\"".$FieldPrefix."Month\"" 00248 .($SubmitOnChange ? " onChange='submit()'" : "") 00249 .">\n"); 00250 if ($AllowNullDate) 00251 { 00252 print("<option value='0'>--</option>\n"); 00253 } 00254 while ($Index <= 12) 00255 { 00256 if ($Index == $Month) 00257 { 00258 printf(" <option value='%s' selected>%s</option>\n", $Index, GetMonthName($Index)); 00259 } 00260 else 00261 { 00262 printf(" <option value='%s'>%s</option>\n", $Index, GetMonthName($Index)); 00263 } 00264 $Index++; 00265 } 00266 printf(" </select>\n"); 00267 } 00268 00269 # print option list for days if day value supplied 00270 if ($Day != -1) 00271 { 00272 $Index = 1; 00273 print("\n <select name=\"".$FieldPrefix."Day\"" 00274 ." id=\"".$FieldPrefix."Day\"" 00275 .($SubmitOnChange ? " onChange='submit()'" : "") 00276 .">\n"); 00277 if ($AllowNullDate) 00278 { 00279 print("<option value='0'>--</option>\n"); 00280 } 00281 while ($Index <= 31) 00282 { 00283 if ($Index == $Day) 00284 { 00285 printf(" <option value='%s' selected>%s</option>\n", $Index, GetOrdinalNumber($Index)); 00286 } 00287 else 00288 { 00289 printf(" <option value='%s'>%s</option>\n", $Index, GetOrdinalNumber($Index)); 00290 } 00291 $Index++; 00292 } 00293 printf(" </select>\n"); 00294 } 00295 00296 # print option list for years 00297 $Index = date("Y") - 45; 00298 $EndIndex = $Index + 45; 00299 print("\n <select name=\"".$FieldPrefix."Year\"" 00300 ." id=\"".$FieldPrefix."Year\"" 00301 .($SubmitOnChange ? " onChange='submit()'" : "") 00302 .">\n"); 00303 if ($AllowNullDate) 00304 { 00305 print("<option value='0'>--</option>\n"); 00306 } 00307 while ($Index <= $EndIndex) 00308 { 00309 if ($Index == $Year) 00310 { 00311 printf(" <option value=\"%s\" selected>%s</option>\n", $Index, $Index); 00312 } 00313 else 00314 { 00315 printf(" <option value=\"%s\">%s</option>\n", $Index, $Index); 00316 } 00317 $Index++; 00318 } 00319 printf(" </select>\n"); 00320 } 00321 00322 function PrintOptionListsOfTimeComponents($FieldPrefix, $Hour = -1, $Minute = -1) 00323 { 00324 # use current date if no date passed in 00325 if ($Hour == -1) 00326 { 00327 $Hour = date("G"); 00328 $Minute = date("i"); 00329 } 00330 00331 # print option list for hours if hour value supplied 00332 $Index = 0; 00333 print("\n <select name=\"".$FieldPrefix."Hour\" id=\"".$FieldPrefix."Hour\">\n"); 00334 while ($Index < 24) 00335 { 00336 if ($Index == $Hour) 00337 { 00338 printf(" <option value='%s' selected>%d</option>\n", $Index, $Index); 00339 } 00340 else 00341 { 00342 printf(" <option value='%s'>%d</option>\n", $Index, $Index); 00343 } 00344 $Index++; 00345 } 00346 printf(" </select>\n"); 00347 00348 # print option list for minutes if minute value supplied 00349 if ($Minute != -1) 00350 { 00351 $Index = 0; 00352 print("\n <select name=\"".$FieldPrefix."Minute\" id=\"".$FieldPrefix."Minute\">\n"); 00353 while ($Index < 60) 00354 { 00355 if ($Index == $Minute) 00356 { 00357 printf(" <option value='%s' selected>%02d</option>\n", $Index, $Index); 00358 } 00359 else 00360 { 00361 printf(" <option value='%s'>%02d</option>\n", $Index, $Index); 00362 } 00363 $Index++; 00364 } 00365 printf(" </select>\n"); 00366 } 00367 } 00368 00369 function LongestStringLineLength($String) 00370 { 00371 # split string on newlines 00372 $Pieces = explode("\n", $String); 00373 00374 # for each line in string 00375 $MaxLen = 0; 00376 for ($Index = 0; $Index < count($Pieces); $Index++) 00377 { 00378 # save length if longer than current max 00379 if (strlen($Pieces[$Index]) > $MaxLen) 00380 { 00381 $MaxLen = strlen($Pieces[$Index]); 00382 } 00383 } 00384 00385 # return length of longest segment to caller 00386 return $MaxLen; 00387 } 00388 00389 function PrintOptionListFromDB($DB, $Table, $Condition, $SortBy, $ResultVar, $ValueQuery, $LabelQuery, $SelectedValue, $Size = 1, $SubmitOnChange = "", $PrintEvenIfEmpty = 0) 00390 { 00391 # set up condition and sorting parameters 00392 if ($Condition != "") { $Condition = "WHERE ".$Condition; } 00393 if ($SortBy != "") { $SortBy = "ORDER BY ".$SortBy; } 00394 00395 # grab records to be listed from database 00396 $QueryString = sprintf("SELECT * FROM %s %s %s", 00397 $Table, $Condition, $SortBy); 00398 $DB->Query($QueryString); 00399 00400 # if records were found 00401 if ($DB->NumRowsSelected() > 0) 00402 { 00403 # build array of items 00404 while ($Row = $DB->FetchRow()) 00405 { 00406 $Items[$Row[$ValueQuery]] = $Row[$LabelQuery]; 00407 } 00408 00409 # sort array if not already sorted 00410 if ($SortBy == "") { asort($Items); } 00411 } 00412 00413 # print option list 00414 PrintOptionList($ResultVar, $Items, $SelectedValue, $SubmitOnChange, $Size, $PrintEvenIfEmpty); 00415 } 00416 00417 00418 ?>