<?php
/*******************************************************************************
 * Copyright (c) 2018, 2021 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *******************************************************************************/

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");
require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/database.inc");
require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/common.php");

$App = new App();
$Nav = new Nav();
$Menu = new Menu();
include($App->getProjectCommon());

$pageTitle 		= "Eclipse Foundation Trademarks";
$pageKeywords	= "";
$pageAuthor		= "Wayne Beaton";

ob_start();

function displayTrademarks($sql) {
    echo "<ul>";
    query('dashboard', $sql, array(), function($row) {
        $mark = $row['type'] == 'R' ? '&reg' : '&trade;';
        echo "<li>{$row['name']}{$mark}</li>";
    });
    echo "</ul>";
}

?>
<div id="maincontent">
<div id="midcolumn">
<h1><?= $pageTitle ?></h1>

<p>This document captures a list of trademarks claimed by the Eclipse Foundation. Please read
our <a href="/legal/logo_guidelines.php">Eclipse Foundation Trademark Usage Guidelines</a>.

<h2 id="disclaimers">Trademark Disclaimers</h2>

<p>The following are the trademarks of others and we disclaim any claim to trademark rights in their usage.</p>

<ul>
	<li>Java and all Java-based trademarks are trademarks of Oracle
		Corporation in the United States, other countries, or both.</li>
	<li>Microsoft, Windows, Windows NT, and the Windows logo are
		trademarks of Microsoft Corporation in the United States, other
		countries, or both.</li>
	<li>UNIX is a registered trademark of The Open Group in the United
		States and other countries.</li>
	<li>Linux is the registered trademark of Linus Torvalds in the U.S.
		and other countries.</li>
	<li>Android is a trademark of Google Inc.</li>
	<li>Other company, product, and service names may be trademarks or
		service marks of others.</li>
</ul>

<h2 id="registered">Registered Trademarks</h2>

<?php 
$sql = "select distinct name, type from Trademark where type='R' order by name";
displayTrademarks($sql);
?>

<h3 id="other">Other Trademarks</h3>

<?php 
$sql = "select distinct name, type from Trademark where category in ('other' ,'simrel') order by name";
displayTrademarks($sql);
?>

<h2 id="wg">Eclipse Foundation Working Groups</h2>

<?php 
$sql = "select distinct name, type from Trademark where category='wg' order by name";
displayTrademarks($sql);
?>

<h2 id="specifications">Eclipse Foundation Specifications</h2>

<?php 
$sql = "select name, type from Trademark where category='specification' order by name";
displayTrademarks($sql);
?>

<h2 id="projects">Eclipse Foundation Projects</h2>

<?php 
$sql = "select name, type from Trademark where category='project' order by name";
displayTrademarks($sql);
?>

<h2 id="supplemental">Supplemental Guidelines</h2>

<ul>
<li><a href="https://jakarta.ee/legal/trademark_guidelines/">Jakarta EE Trademark Guidelines</a></li>
</ul>

</div>
</div>

<?php
$html = ob_get_contents();
ob_end_clean();
$App->generatePage(null, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>