PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/library/Pandamp/Lib/Calendar.php

https://github.com/hukumonline/store
PHP | 277 lines | 167 code | 45 blank | 65 comment | 39 complexity | eb611bea822a5ac5b8d191e1f01dda4a MD5 | raw file
  1. <?php
  2. class Pandamp_Lib_Calendar
  3. {
  4. /**
  5. * select month
  6. * @param $month, $montharray
  7. * @return month
  8. */
  9. function monthPullDown($month, $montharray)
  10. {
  11. $monthSelect = "\n<select name=\"month\">\n";
  12. for($j=0; $j < 12; $j++) {
  13. if ($j != ($month - 1))
  14. $monthSelect .= " <option value=\"" . ($j+1) . "\">$montharray[$j]</option>\n";
  15. else
  16. $monthSelect .= " <option value=\"" . ($j+1) . "\" selected>$montharray[$j]</option>\n";
  17. }
  18. $monthSelect .= "</select>\n\n";
  19. return $monthSelect;
  20. }
  21. /**
  22. * select year
  23. * @param $year
  24. * @return $year
  25. */
  26. function yearPullDown($year) {
  27. $yearSelect = "<select name=\"year\" id=\"year\">\n";
  28. $z = 3;
  29. for($j=1; $j < 8; $j++) {
  30. if ($z==0)
  31. $yearSelect .= " <option value=\"" . ($year-$z) . "\" selected>" . ($year-$z) . "</option>\n";
  32. else
  33. $yearSelect .= " <option value=\"" . ($year-$z) . "\">" . ($year-$z) . "</option>\n";
  34. $z--;
  35. }
  36. $yearSelect .= "</select>\n\n";
  37. return $yearSelect;
  38. }
  39. /**
  40. * getFirstDayOfMonthPosition
  41. * @param $month, $year
  42. *
  43. */
  44. function getFirstDayOfMonthPosition($month, $year)
  45. {
  46. $weekpos = date("w",mktime(0,0,0,$month,1,$year));
  47. // adjust position if weekstart not Sunday
  48. if (WEEK_START != 0)
  49. if ($weekpos < WEEK_START)
  50. $weekpos = $weekpos + 7 - WEEK_START;
  51. else
  52. $weekpos = $weekpos - WEEK_START;
  53. return $weekpos;
  54. }
  55. /**
  56. * getDayNameHeader
  57. * @return $string
  58. */
  59. function getDayNameHeader($month, $year)
  60. {
  61. global $lang;
  62. // day container
  63. $lang['abrvdays'] = array("S", "M", "T", "W", "T", "F", "S");
  64. // adjust day name order if weekstart not Sunday
  65. if (WEEK_START != 0) {
  66. for($i=0; $i < WEEK_START; $i++) {
  67. $tempday = array_shift($lang['abrvdays']);
  68. array_push($lang['abrvdays'], $tempday);
  69. }
  70. }
  71. $nextyear = ($month!=12)? $year : $year + 1;
  72. $prevyear = ($month!=1)? $year : $year - 1;
  73. $prevmonth = ($month==1)? 12 : $month - 1;
  74. $nextmonth = ($month==12)? 1 : $month + 1;
  75. $pyear = $year - 1;
  76. $nyear = $year + 1;
  77. $month = date("M", mktime(0, 0, 0, $month));
  78. $s = "<table class=\"calendar\" cellpadding=\"1\" cellspacing=\"1\" border=\"0\">\n";
  79. $s .= "<tr><th class='header'>&nbsp;<a href=".ROOT_URL."/agenda/year/" . $pyear." onclick=\"$('#showDiv1').load($(this).attr('href'));return false;\" class='headerNav' title='Prev Year'><<</a></th><th class='header'>&nbsp;<a href=".ROOT_URL."/agenda/month/" . $prevmonth . "/year/" . $prevyear." onclick=\"$('#showDiv1').load($(this).attr('href'));return false;\" class='headerNav' title='Prev Month'><</a></th>";
  80. $s .= "<th colspan='3' class=\"header\">$month $year</th>";
  81. $s .= "<th class='header'><a href=".ROOT_URL."/agenda/month/" . $nextmonth . "/year/" . $nextyear." onclick=\"$('#showDiv1').load($(this).attr('href'));return false;\" class='headerNav' title='Next Month'>></a>&nbsp;</th><th class='header'>&nbsp;<a href=".ROOT_URL."/agenda/year/" . $nyear." onclick=\"$('#showDiv1').load($(this).attr('href'));return false;\" class='headerNav' title='Next Year'>>></a></th></tr><tr>\n";
  82. foreach($lang['abrvdays'] as $day) {
  83. $s .= "\t<td class=\"column_header\">&nbsp;$day</td>\n";
  84. }
  85. $s .= "</tr>\n\n";
  86. return $s;
  87. }
  88. /**
  89. * getEventDataArray
  90. * @param $month, $year
  91. */
  92. function getEventDataArray($month, $year) {
  93. $eventdata = array();
  94. $sql = App_Model_Show_Calendar::show()->EventDateCalendar($month, $year);
  95. foreach ($sql as $sqlDB) {
  96. $eventdata[$sqlDB->d]["id"][] = $sqlDB->id;
  97. if (strlen($sqlDB->title) > TITLE_CHAR_LIMIT) {
  98. $eventdata[$sqlDB->d]["title"][] = substr(stripslashes($sqlDB->title), 0, TITLE_CHAR_LIMIT) . "...";
  99. } else {
  100. $eventdata[$sqlDB->d]["title"][] = stripslashes($sqlDB->title);
  101. }
  102. if (!($sqlDB->start_time == "55:55:55" && $sqlDB->end_time == "55:55:55")) {
  103. if ($sqlDB->start_time == "55:55:55") {
  104. $starttime = "- -";
  105. } else {
  106. $starttime = $sqlDB->stime;
  107. }
  108. if ($sqlDB->end_time == "55:55:55") {
  109. $endtime = "- -";
  110. } else {
  111. $endtime = $sqlDB->etime;
  112. }
  113. $timestr = "<div align=\"right\" class=\"time_str\">($starttime - $endtime)&nbsp;</div>";
  114. } else {
  115. $timestr = "<br>";
  116. }
  117. $eventdata[$sqlDB->d]["timestr"][] = $timestr;
  118. }
  119. return $eventdata;
  120. }
  121. /**
  122. * writeCalendar
  123. * @param $month, $year
  124. * @return $string
  125. */
  126. function writeCalendar($month, $year)
  127. {
  128. $str = $this->getDayNameHeader($month, $year);
  129. $eventdata = $this->getEventDataArray($month, $year);
  130. // get week position of first day of month
  131. $weekpos = $this->getFirstDayOfMonthPosition($month, $year);
  132. // get number of days in month
  133. $days = 31-((($month-(($month<8)?1:0))%2)+(($month==2)?((!($year%((!($year%100))?400:4)))?1:2):0));
  134. // initialize day variable to zero, unless $weekpos is zero
  135. if ($weekpos == 0) $day = 1; else $day = 0;
  136. // initialize today's date variables for color change
  137. $timestamp = time() + CURR_TIME_OFFSET * 3600;
  138. $d = date("d", $timestamp); $m = date("n", $timestamp); $y = date("Y", $timestamp);
  139. // loop writes empty cells until it reaches position of 1st day of month ($wPos)
  140. // it writes the days, then fills the last row with empty cells after last day
  141. while($day <= $days) {
  142. $str .="<tr>\n";
  143. for($i=0;$i < 7; $i++) {
  144. if($day > 0 && $day <= $days) {
  145. $str .= " <td class=\"";
  146. if (($day == $d) && ($month == $m) && ($year == $y)) {
  147. $str .= "today";
  148. } elseif (array_key_exists($day,$eventdata)) {
  149. $str .= "dayval";
  150. } else {
  151. $str .= "day";
  152. }
  153. $str .= "_cell\" valign=\"middle\">";
  154. // if ($this->user->checkRight(ADMIN))
  155. // $str .= "<a href=\"javascript: openActionDialog('postMessage', '', $day, $month, $year)\">$day</a>";
  156. // else
  157. // $str .= "$day";
  158. //
  159. // $str .= "</span><br>";
  160. // enforce title limit
  161. if(array_key_exists($day,$eventdata)){
  162. $eventcount = count($eventdata[$day]['title']);
  163. if (MAX_TITLES_DISPLAYED < $eventcount) $eventcount = MAX_TITLES_DISPLAYED;
  164. // write title link if posting exists for day
  165. for($j=0;$j < $eventcount;$j++) {
  166. // $str .= "<span class=\"title_txt\">-";
  167. // $str .= "<a href=\"".ROOT_URL."/kalendaracara/" . $eventdata[$day]["id"][$j] . "\" onclick=\"return hs.htmlExpand(this, { contentId: 'highslide-html', objectType: 'iframe', objectWidth: 450, objectHeight: 350} )\" class=\"link\">";
  168. $str .= "<a href=\"".ROOT_URL."/kalendaracara/" . $eventdata[$day]["id"][$j] . "\">";
  169. // $str .= "<a href=\"".ROOT_URL."/app/dms/widgets_calendar/open-posting/pid/" . $eventdata[$day]["id"][$j] . "?height=300&width=400\" class=\"thickbox\">";
  170. // $str .= "<a href=\"javascript:openActionDialog('openPosting'," . $eventdata[$day]["id"][$j] . ")\" class=\"link\">";
  171. // $str .= "<a href=\"javascript:openPosting(" . $eventdata[$day]["id"][$j] . ")\" class=\"link\">";
  172. $str .= $day . "</a>";
  173. // $str .= $eventdata[$day]["title"][$j] . "</a></span>" . $eventdata[$day]["timestr"][$j];
  174. }
  175. }
  176. else
  177. {
  178. $str .= "<span class=\"day_number\">";
  179. $str .= "$day";
  180. $str .= "</span><br>";
  181. }
  182. $str .= "</td>\n";
  183. $day++;
  184. } elseif($day == 0) {
  185. $str .= " <td class=\"empty_day_cell\" valign=\"top\">&nbsp;</td>\n";
  186. $weekpos--;
  187. if ($weekpos == 0) $day++;
  188. } else {
  189. $str .= " <td class=\"empty_day_cell\" valign=\"top\">&nbsp;</td>\n";
  190. }
  191. }
  192. $str .= "</tr>";
  193. }
  194. $today = strftime("%d %B %Y",strtotime(date("Y-m-d")));
  195. $str .= "<tr><td colspan='8' class='footer'><a href='' class='footerNav'>Hari ini adalah $today</a></td></tr>\n\n";
  196. $str .= "</table>\n\n";
  197. return $str;
  198. }
  199. /**
  200. * get month and year with scrollArrows
  201. * @param $m, $y
  202. * @return month and year
  203. */
  204. function scrollArrows($m, $y)
  205. {
  206. // set variable for month scrolling
  207. $nextyear = ($m!=12)? $y : $y + 1;
  208. $prevyear = ($m!=1)? $y : $y - 1;
  209. $prevmonth = ($m==1)? 12 : $m - 1;
  210. $nextmonth = ($m==12)? 1 : $m + 1;
  211. $fobj = new Kutu_Lib_Ajax();
  212. $s = $fobj->add_get_link("<img src=\"../../../../library/resources/images/leftArrow.gif\" border=\"0\">",KUTU_ROOT_URL."/app/np/widget/calendarmanager/calendarshow/idParse/leftArrow/month/" . $prevmonth . "/year/" . $prevyear,'showDiv1',true);
  213. $s .= $fobj->add_get_link("<img src=\"../../../../library/resources/images/rightArrow.gif\" border=\"0\">",KUTU_ROOT_URL."/app/np/widget/calendarmanager/calendarshow/idParse/rightArrow/month/". $nextmonth . "/year/" . $nextyear,'showDiv1',true);
  214. // $s = "<a href='javascript:;' onclick='month=\"$prevmonth\";year=\"$prevyear\"; calendar(month,year);'>\n";
  215. // $s .= "<img src=\"./public/images/icons/leftArrow.gif\" border=\"0\"></a> ";
  216. return $s;
  217. }
  218. /**
  219. * get_month_name
  220. * get current local month name
  221. * @param int month from 1 to 12
  222. * @return string month name
  223. */
  224. function get_month_name($month,$format = null)
  225. {
  226. if ($format != null)
  227. return strftime($format,gmmktime(0,0,0,$month,1,2007));
  228. else
  229. return strftime("%B",gmmktime(0,0,0,$month,1,2007));
  230. }
  231. }