| <?php | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); $App = new App(); $Nav = new Nav(); $Menu = new Menu(); include($App->getProjectCommon()); # All on the same line to unclutter the user's desktop' | |
| require_once("/home/data/httpd/eclipse-php8-classes/system/dbconnection_foundation_ro.class.php"); | |
| #***************************************************************************** | |
| # | |
| # council.php | |
| # | |
| # Author: Denis Roy | |
| # Date: 2005-11-07 | |
| # | |
| # Description: Show the members of the requirements, planning, and | |
| # architecture councils | |
| # | |
| # History: Karl Matthias | |
| # 2007-04-30 | |
| # Lists now generated from the Foundation DB records | |
| # | |
| # | |
| #**************************************************************************** | |
| # | |
| # Begin: page-specific settings. Change these. | |
| $pageTitle = "Eclipse Foundation Councils"; | |
| $pageKeywords = "foundation, legal, councils, emo"; | |
| $pageAuthor = "Mike Milinkovich, Nov. 22, 2005"; | |
| # Add page-specific Nav bars here | |
| # Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3) | |
| # $Nav->addNavSeparator("My Page Links", "downloads.php"); | |
| # $Nav->addCustomNav("My Link", "mypage.php", "_self", 1); | |
| # $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1); | |
| # End: page-specific settings | |
| # | |
| # DATABASE HOST | |
| # Global Functions | |
| $chairs = array('PZ', 'AZ', 'RZ'); | |
| $requirements_relations = array( 'ER', 'RC', 'RZ' ); | |
| $planning_relations = array( 'EP', 'PC', 'RP', 'PZ' ); | |
| $architecture_relations = array( 'AC', 'RA', 'EA', 'AZ' ); | |
| $all_relations = array_merge($chairs, $requirements_relations, $planning_relations, $architecture_relations); | |
| class Councillor { | |
| var $id; | |
| var $firstName; | |
| var $lastName; | |
| var $organization; | |
| var $relations = array(); | |
| var $year; | |
| function is_chair() { | |
| global $chairs; | |
| return count(array_intersect($chairs, $this->relationships)) > 0; | |
| } | |
| function on_planning() { | |
| global $planning_relations; | |
| return count(array_intersect($planning_relations, $this->relationships)) > 0; | |
| } | |
| function on_requirements() { | |
| global $requirements_relations; | |
| return count(array_intersect($requirements_relations, $this->relationships)) > 0; | |
| } | |
| function on_architecture() { | |
| global $architecture_relations; | |
| return count(array_intersect($architecture_relations, $this->relationships)) > 0; | |
| } | |
| } | |
| abstract class Relation { | |
| var $code; | |
| } | |
| class PeopleRelation extends Relation { | |
| var $year; | |
| function __toString() { | |
| return "People($this->code)"; | |
| } | |
| function isPersonRelation() { | |
| return true; | |
| } | |
| function isOrganizationRelation() { | |
| return false; | |
| } | |
| function isProjectRelation() { | |
| return false; | |
| } | |
| } | |
| class ProjectRelation extends Relation { | |
| var $project; | |
| function __toString() { | |
| return "$this->project($this->code)"; | |
| } | |
| function isPersonRelation() { | |
| return false; | |
| } | |
| function isOrganizationRelation() { | |
| return false; | |
| } | |
| function isProjectRelation() { | |
| return true; | |
| } | |
| } | |
| class OrganizationRelation extends Relation { | |
| function __toString() { | |
| return "Org($this->code)"; | |
| } | |
| function isPersonRelation() { | |
| return false; | |
| } | |
| function isOrganizationRelation() { | |
| return true; | |
| } | |
| function isProjectRelation() { | |
| return true; | |
| } | |
| } | |
| $councillors = array(); | |
| $relations = "'" . implode( "','", $all_relations ) . "'"; | |
| $sql = "SELECT | |
| distinct(People.PersonID) as id, | |
| People.FName as firstName, | |
| People.LName as lastName, | |
| Organizations.Name1 as organization, | |
| PeopleRelations.Relation as peopleRelation, | |
| year(PeopleRelations.EntryDate) as year, | |
| PeopleProjects.Relation as projectRelation, | |
| PeopleProjects.ProjectID as project, | |
| OrganizationContacts.Relation as organizationRelation | |
| FROM People | |
| left join PeopleRelations on (People.PersonID = PeopleRelations.PersonID) | |
| left join OrganizationContacts on (OrganizationContacts.PersonID = People.PersonID) | |
| left join Organizations on (Organizations.OrganizationID = OrganizationContacts.OrganizationID) | |
| left join PeopleProjects on (People.PersonId = PeopleProjects.PersonID and PeopleProjects.InactiveDate IS NULL) | |
| WHERE | |
| PeopleRelations.Relation in ($relations) | |
| OR PeopleProjects.Relation in ($relations) | |
| OR OrganizationContacts.Relation in ($relations)"; | |
| function is_council_relation($relation) { | |
| global $all_relations; | |
| if (!$relation) return false; | |
| return in_array($relation, $all_relations); | |
| } | |
| $result = $App->foundation_sql($sql); | |
| while( $row = mysqli_fetch_assoc($result) ) { | |
| $id = $row['id']; | |
| $councillor = $councillors[$id]; | |
| if (!$councillor) { | |
| $councillor = new Councillor(); | |
| $councillor->id = $id; | |
| $councillor->firstName = $row['firstName']; | |
| $councillor->lastName = $row['lastName']; | |
| $councillor->organization = $row['organization']; | |
| $councillors[$id] = $councillor; | |
| } | |
| $code = $row['peopleRelation']; | |
| if (is_council_relation($code)) { | |
| $key = "people-$code"; | |
| $relation = new PeopleRelation(); | |
| $relation->code = $code; | |
| $relation->year = $row['year']; | |
| $councillor->relations[$key] = $relation; | |
| } | |
| $code = $row['projectRelation']; | |
| if (is_council_relation($code)) { | |
| $project = $row['project']; | |
| $key = "$project-$code"; | |
| $relation = new ProjectRelation(); | |
| $relation->code = $code; | |
| $relation->project = $project; | |
| $councillor->relations[$key] = $relation; | |
| } | |
| $code = $row['organizationRelation']; | |
| if (is_council_relation($code)) { | |
| $key = "org-$code"; | |
| $relation = new OrganizationRelation(); | |
| $relation->code = $code; | |
| $councillor->relations[$key] = $relation; | |
| }; | |
| } | |
| function render_councillors(&$councillors) { | |
| echo "<table width=\"95%\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\" align=\"center\">"; | |
| foreach($councillors as $councillor) { | |
| $relations = 'y'; | |
| foreach($councillor->relations as $relation) { | |
| $x = $relation->__toString(); | |
| $relations .= "$x "; | |
| } | |
| echo "<tr>"; | |
| echo "<td>$councillor->firstName $councillor->lastName</td>"; | |
| echo "<td>$councillor->organization</td>"; | |
| echo "<td>$councillor->year</td>"; | |
| echo "<td>$relations</td>"; | |
| echo "</tr>\n"; | |
| } | |
| echo "</table>"; | |
| } | |
| ob_start(); | |
| ?> | |
| <?php render_councillors($councillors); ?> | |
| <?php | |
| $html = ob_get_contents(); | |
| ob_end_clean(); | |
| # Generate the web page | |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); | |
| ?> |