Example #1
0
 /**
  * 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)";
         }
     }
 }
Example #2
0
 /**
  * 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);
     }
 }