/** * Get the the name for an element. * When possible the full classnam (phing.tasks.system.PropertyTask) will * be returned. If not available (loaded in taskdefs or typedefs) then the * XML element name will be returned. * * @param Project $project * @param object $element The Task or type element. * @return string Fully qualified class name of element when possible. */ function getElementName(Project $project, $element) { $taskdefs = $project->getTaskDefinitions(); $typedefs = $project->getDataTypeDefinitions(); // check if class of element is registered with project (tasks & types) // most element types don't have a getTag() method $elClass = get_class($element); if (!in_array('getTag', get_class_methods($elClass))) { // loop through taskdefs and typesdefs and see if the class name // matches (case-insensitive) any of the classes in there foreach (array_merge($taskdefs, $typedefs) as $elName => $class) { if (0 === strcasecmp($elClass, StringHelper::unqualify($class))) { return $class; } } return "{$elClass} (unknown)"; } else { // ->getTag() method does exist, so use it $elName = $element->getTag(); if (isset($taskdefs[$elName])) { return $taskdefs[$elName]; } elseif (isset($typedefs[$elName])) { return $typedefs[$elName]; } else { return "{$elName} (unknown)"; } } }
/** * Create a report about all available task in phing. * * @param PrintStream $out the stream to print the tasks report to * <tt>null</tt> for a missing stream (ie mapping). */ private static function doReportTasksAvailability(PrintStream $out) { $project = new Project(); $project->init(); $tasks = $project->getTaskDefinitions(); ksort($tasks); foreach ($tasks as $shortName => $task) { $out->println($shortName); } }