10.26 php saved
po-LK
Tags add more
BakeTask, Component and bake2  
Note
Example BakeTask component for 1.2 branch
  1. <?php
  2.  
  3. require('cake'.DS.'scripts'.DS.'tasks'.DS.'bake_task.php');
  4.  
  5. // called tasks must return strings instead of print
  6.  
  7. class BakeTaskComponent extends BakeTask {
  8.  
  9. // rewrited parent method so it calls execute() on given task
  10.     function execute($taskName, $params = array()) {
  11.         $class = $this->getTaskClass($taskName);
  12.  
  13.         if ($class !== null) {
  14.             $return = $class->execute($params);
  15.             if (!is_string($return)) {
  16.                 $return = '';
  17.             }
  18.             return $return;
  19.         } else {
  20.             return 'Task not found: ' . $taskName;
  21.         }
  22.     }
  23.  
  24. // calls method help() on task
  25.     function help($taskName = '') {
  26.         if (empty($taskName)) {
  27.             return 'You have to specify which task are You asking for help';
  28.         }
  29.  
  30.         $class = $this->getTaskClass($taskName);
  31.  
  32.         if ($class !== null) {
  33.             return $class->help();
  34.         } else {
  35.             return 'Task not found: ' . $taskName;
  36.         }
  37.     }
  38.  
  39. // Uses inflector so tasknames and filenames could be underscored
  40.     function getTaskClass($taskName) {
  41.         $scriptDir = CAKE_CORE_INCLUDE_PATH.DS.'cake'.DS.'scripts';
  42.         $taskPath = 'tasks'.DS.$taskName.'_task.php';
  43.  
  44.         $taskName = Inflector::camelize($taskName).'Task';
  45.  
  46.         $fileExists = true;
  47.  
  48.         if (!class_exists($taskName)) {
  49.             if (file_exists(VENDORS.$taskPath)) {
  50.                 require(VENDORS.$taskPath);
  51.             } elseif (file_exists($scriptDir.DS.$taskPath)) {
  52.                 require($scriptDir.DS.$taskPath);   
  53.             } else {
  54.                 $fileExists = false;
  55.             }
  56.         }
  57.  
  58.         if ($fileExists) {
  59.             return new $taskName;
  60.         }
  61.        
  62.         return null;
  63.     }
  64. }
  65.  
  66. ?>
Parsed in 0.088 seconds, using GeSHi 1.0.7.14

Modify this Paste