| <?php |
| |
| /* AUTHOR: Bjorn Freeman-Benson |
| * HISTORY: 2009-03-03 Karl Matthias |
| * Updated to use new DB system instead of projects.txt. |
| * Removed all the date math functions in favor of strtotime-based calculations that work on DB date strings. |
| */ |
| |
| global $App; |
| |
| class ReviewInfo { |
| var $_attributes; |
| /* |
| * J1 - IP log review requested |
| * J2 - review scheduled date & time |
| * J3 - review slides & bug posted |
| * J4 - review slides & bug & IP posted |
| * JP - review pending, waiting for legal or the Board |
| * J5 - review successful |
| * J6 - review not complete, further work to occur |
| * J7 - review withdrawn |
| */ |
| var $_status; |
| var $_lastdate; |
| var $_reviewdate; |
| |
| function load($row) { |
| global $App; |
| |
| $this->_attributes = $row; |
| |
| $result = $App->foundation_sql(" |
| SELECT * FROM ProjectReviewStatus |
| WHERE ID = '" . $this->_attributes['ID'] . "' |
| "); |
| |
| while($row = mysql_fetch_object($result)) { |
| $this->_attributes[$row->Status] = $row->Value; |
| } |
| |
| if( $this->get("Legal Review Requested") != "" ) { |
| $this->_status = "J1"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Review Scheduled") != "" ) { |
| $this->_status = "J2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Slides Posted") != "" ) { |
| $this->_status = "J3"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("IP Log Posted") != "" ) { |
| $this->_status = "J4"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Review Pending") != "" ) { |
| $this->_status = "JP"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| if( $this->get("Review Successful") != "" ) { |
| $this->_status = "J5"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| if( $this->get("Review Unsuccessful") != "" ) { |
| $this->_status = "J6"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| if( $this->get("Review Withdrawn") != "" ) { |
| $this->_status = "J7"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| } |
| |
| function lastdate() { |
| $date = strtotime($this->_lastdate); |
| return date('r', $date); |
| } |
| |
| function get($key) { |
| if( !array_key_exists($key, $this->_attributes) ) { |
| $this->_lastget = ""; |
| return ""; |
| } |
| $value = $this->_attributes[$key]; |
| if( $value == null ) return ""; |
| $value = trim($value); |
| $this->_lastget = $value; |
| return $value; |
| } |
| |
| function status() { |
| return $this->_status; |
| } |
| |
| function name() { |
| return $this->get("ProjectName"); |
| } |
| |
| function is_more_than_one_quarter_old() { |
| $today = time(); |
| $then = strtotime($this->_lastdate); |
| return ($then + (110 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| |
| function review_is_more_than_one_month_old() { |
| $today = time(); |
| $then = strtotime($this->_reviewdate); |
| return ($then + (31 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| } |
| |
| class ProposalInfo { |
| var $_attributes; |
| /* |
| * P1 - proposal posted |
| * P2 - proposal updated |
| * P3 - review scheduled date & time |
| * P4 - review slides & bug posted |
| * PP - review completed, waiting for PMC or Board |
| * P5 - review successful, awaiting provisioning |
| * PW - review successful, awaiting webmaster to provision |
| * P6 - review not complete, further work required |
| * P7 - project completed |
| * P8 - proposal withdrawn |
| * P9 - proposal archived |
| */ |
| var $_status; |
| var $_lastdate; |
| var $_lastget; |
| var $_reviewdate; |
| |
| function load($row) { |
| global $App; |
| $this->_attributes = $row; |
| |
| $result = $App->foundation_sql(" |
| SELECT * FROM ProjectReviewStatus |
| WHERE ID = '" . $this->_attributes['ID'] . "' |
| "); |
| |
| while($row = mysql_fetch_object($result)) { |
| $this->_attributes[$row->Status] = $row->Value; |
| } |
| |
| if( $this->get("Proposal Posted") != "" ) { |
| $this->_status = "P1"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 1") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 2") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 3") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 4") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 5") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 6") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 7") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 8") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Updated 9") != "" ) { |
| $this->_status = "P2"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Review Scheduled") != "" ) { |
| $this->_status = "P3"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Slides Posted") != "" ) { |
| $this->_status = "P4"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Review Pending") != "" ) { |
| $this->_status = "PP"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| if( $this->get("Review Unsuccessful") != "" ) { |
| $this->_status = "P6"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| if( $this->get("Review Successful") != "" ) { |
| $this->_status = "P5"; |
| $this->_lastdate = $this->_lastget; |
| if( $this->_reviewdate == "" ) $this->_reviewdate = $this->_lastget; |
| } |
| if( $this->get("Waiting Provisioning") != "" ) { |
| $this->_status = "PW"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Provisioning Complete") != "" ) { |
| $this->_status = "P7"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Proposal Withdrawn") != "" ) { |
| $this->_status = "P8"; |
| $this->_lastdate = $this->_lastget; |
| } |
| if( $this->get("Project Archived") != "" ) { |
| $this->_status = "P9"; |
| $this->_lastdate = $this->_lastget; |
| } |
| } |
| |
| function lastdate() { |
| $date = strtotime($this->_lastdate); |
| return date('r-', $date); |
| } |
| |
| function get($key) { |
| if( !array_key_exists($key, $this->_attributes) ) { |
| $this->_lastget = ""; |
| return ""; |
| } |
| $value = $this->_attributes[$key]; |
| if( $value == null ) return ""; |
| $value = trim($value); |
| $this->_lastget = $value; |
| return $value; |
| } |
| |
| function status() { |
| return $this->_status; |
| } |
| |
| function name() { |
| return $this->get("ProposalName"); |
| } |
| |
| function is_more_than_one_quarter_old() { |
| $today = time(); |
| $then = strtotime($this->_lastdate); |
| return ($then + (110 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| |
| function is_more_than_one_month_old() { |
| $today = time(); |
| $then = strtotime($this->_lastdate); |
| return ($then + (31 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| |
| function is_more_than_two_months_old() { |
| $today = time(); |
| $then = strtotime($this->_lastdate); |
| return ($then + (60 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| |
| function is_more_than_two_weeks_old() { |
| $today = time(); |
| $then = strtotime($this->_lastdate); |
| return ($then + (15 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| |
| function review_is_more_than_one_month_old() { |
| if( $this->_reviewdate == "" ) return false; |
| $today = time(); |
| $then = strtotime($this->_reviewdate); |
| return ($then + (31 /* days */ * 24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ )) < $today; |
| } |
| |
| function proposal_age() { |
| date_default_timezone_set('UTC'); |
| $tm_then = strtotime($this->get("Proposal Posted")); |
| $tm_now = time(); |
| $seconds = $tm_now - $tm_then; |
| $minutes = round($seconds/60); if ($minutes < 2) return "$seconds seconds"; |
| $hours = round($minutes/60.5); if ($hours < 2) return "$minutes minutes"; |
| $days = round($hours/24); if ($days < 2) return "$hours hours"; |
| $weeks = round($days/7); if ($weeks < 2) return "$days days"; |
| $months = round($days/30.5); if ($months < 2) return "$weeks weeks"; |
| $years = round($days/365.5); if ($years < 2) return "$months months"; |
| $decades = round($years/10); if ($decades < 2) return "$years years"; |
| return "$decades decades"; |
| } |
| } |
| |
| class AllInfo { |
| var $_reviews; |
| var $_proposals; |
| |
| function load($sort="") { |
| global $App; |
| |
| switch ($sort) { |
| case "Date": |
| $sort = "ReviewDate DESC"; |
| break; |
| default: |
| $sort = "ProposalName, ProjectName"; |
| break; |
| } |
| |
| |
| $this->_reviews = Array(); |
| $this->_proposals = Array(); |
| |
| $path = $_SERVER['DOCUMENT_ROOT']; |
| if( $path == "" ) { |
| $path = "../projects.txt"; |
| } else { |
| $path = getcwd() . "/projects.txt"; |
| } |
| |
| $result = $App->foundation_sql("SELECT * FROM ProjectReviews ORDER BY $sort"); |
| |
| while($row = mysql_fetch_assoc($result)) { |
| |
| if($row["ProposalName"] != '') { |
| $temp = new ProposalInfo(); |
| $i = $temp->load($row); |
| if($temp->status() != "bogus") { |
| array_push( $this->_proposals, $temp); |
| } |
| } |
| |
| if($row["ProjectName"] != '') { |
| $temp = new ReviewInfo(); |
| $i = $temp->load($row); |
| if($temp->status() != "bogus") { |
| array_push( $this->_reviews, $temp); |
| } |
| } |
| } |
| } |
| |
| } |
| |
| function time_and_date_url($wdate) { |
| $wdate = strtotime($wdate); |
| $date = date("D, j M Y", $wdate); |
| $hour = date('H', $wdate); |
| $min = date('i', $wdate); |
| list($day, $smonth, $year) = sscanf(date('j M Y', $wdate), "%d %s %d"); |
| $months = array( "Jan" => 1, "Feb" => 2, "Mar" => 3, |
| "Apr" => 4, "May" => 5, "Jun" => 6, |
| "Jul" => 7, "Aug" => 8, "Sep" => 9, |
| "Oct" => 10, "Nov" => 11, "Dec" => 12 ); |
| $month = $months[$smonth]; |
| return "http://www.timeanddate.com/worldclock/fixedtime.html?month=" . $month . "&day=" . $day . "&year=" . $year . "&hour=" . $hour . "&min=" . $min . "&sec=0&p1=0"; |
| } |
| ?> |