Location: PHPKode > projects > Mocovie web framework > webs/common/controls/averagepriority.php
<?php
/**
 *  Copyright (C) 2010  Kai Dorschner
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @author Kai Dorschner <the-hide@address.com>
 * @copyright Copyright 2010, Kai Dorschner
 * @license http://www.gnu.org/licenses/gpl.html GPLv3
 * @package mocovi
 * @subpackage controls
 */

/**
 * Shows the average priority of all pages in the filesystem.
 *
 * Plus it gives recommendations to in-/decrease the amount of priorities.
 *
 * @package mocovi
 * @subpackage controls
 */
class averagepriority_control extends Control
{
	/**
	 * @override
	 */
	protected function program()
	{
		$xpath = new DomXpath($GLOBALS['filesystem']->getDOM());
		$nodes = 0;
		$sum = 0;
		foreach($xpath->query('/xmlfs//file/@priority[not(../@invisible)]') as $priority)
		{
			$sum += (int)$priority->nodeValue;
			$nodes++;
		}
		if($nodes > 0)
		{
			$average = $sum / $nodes;
			$this->node->setAttribute('value', $average);
			$this->node->setAttribute('nodes', $nodes);
			// Deviance = Abweichung vom optimalen Wert
			$this->node->setAttribute('deviance', (String) (0.5 - $average));
		}
	}
}
Return current item: Mocovie web framework