Ejemplo n.º 1
0
 /**
  *  add action entry point
  *
  *  @access public
  */
 function perform()
 {
     $r = $this->_getopt(array('basedir=', 'skelfile=', 'gateway='));
     if (Ethna::isError($r)) {
         return $r;
     }
     list($opt_list, $arg_list) = $r;
     // action_name
     $action_name = array_shift($arg_list);
     if ($action_name == null) {
         return Ethna::raiseError('action name isn\'t set.', 'usage');
     }
     $r = Ethna_Controller::checkActionName($action_name);
     if (Ethna::isError($r)) {
         return $r;
     }
     // add entry point
     $ret = $this->_perform('EntryPoint', $action_name, $opt_list);
     if (Ethna::isError($ret) || $ret === false) {
         return $ret;
     }
     // add action (no effects if already exists.)
     $ret = $this->_perform('Action', $action_name, $opt_list);
     if (Ethna::isError($ret) || $ret === false) {
         return $ret;
     }
     return true;
 }
 /**
  *  add action
  *
  *  @access public
  */
 function perform()
 {
     //
     //  '-w[with-unittest]' and '-u[unittestskel]' option
     //  are not intuisive, but I dare to define them because
     //  -t and -s option are reserved by add-[action|view] handle
     //  and Ethna_Getopt cannot interpret two-character option.
     //
     $r = $this->_getopt(array('basedir=', 'skelfile=', 'gateway=', 'with-unittest', 'unittestskel='));
     if (Ethna::isError($r)) {
         return $r;
     }
     list($opt_list, $arg_list) = $r;
     // action_name
     $action_name = array_shift($arg_list);
     if ($action_name == null) {
         return Ethna::raiseError('action name isn\'t set.', 'usage');
     }
     $r =& Ethna_Controller::checkActionName($action_name);
     if (Ethna::isError($r)) {
         return $r;
     }
     $ret =& $this->_perform('Action', $action_name, $opt_list);
     return $ret;
 }
 /**
  *  add action
  *
  *  @access public
  */
 function perform()
 {
     $r =& $this->_getopt(array('basedir=', 'skelfile=', 'gateway='));
     if (Ethna::isError($r)) {
         return $r;
     }
     list($opt_list, $arg_list) = $r;
     // action_name
     $action_name = array_shift($arg_list);
     if ($action_name == null) {
         return Ethna::raiseError('action name isn\'t set.', 'usage');
     }
     $r =& Ethna_Controller::checkActionName($action_name);
     if (Ethna::isError($r)) {
         return $r;
     }
     $ret =& $this->_perform('Action', $action_name, $opt_list);
     return $ret;
 }
 /**
  * コマンドの実装
  * 
  * @access public
  * @return mixed 成否結果(true=>成功, Ethna_Error=>失敗)
  */
 function &perform()
 {
     // 引数取得
     $r = $this->_getopt(array("basedir=", "overwrite=", "skelton-namespace="));
     if (Ethna::isError($r)) {
         return $r;
     }
     list($optlist, $arglist) = $r;
     $r =& Ethna_Controller::checkActionName($arglist[0]);
     if (Ethna::isError($r)) {
         return $r;
     }
     // 引数処理
     $app_dir = isset($optlist['basedir']) ? $optlist['basedir'] : getcwd();
     $baseAction = $arglist[0];
     $model = $arglist[1];
     // アプリケーションController取得
     $c =& Ethna_Handle::getAppController($app_dir);
     if (Ethna::isError($c)) {
         echo 'Not found Project Directory!';
         return $c;
     }
     // Backend取得
     $backend =& $c->getBackend();
     $generator =& new Ethna_Generator();
     // Template AppObject生成
     $r =& $generator->generate('ScaffoldTemplateAppObject', $app_dir);
     if (Ethna::isError($r)) {
         return $r;
     }
     // AppObject生成
     $r =& $generator->generate('ScaffoldAppObject', $app_dir, $model);
     if (Ethna::isError($r)) {
         return $r;
     }
     // AppObject取得
     $appObj =& $backend->getObject($model);
     $modelDefine = $appObj->prop_def;
     $idDefine = $appObj->getIdDef();
     // ActionForm定義
     $formDefine = $this->_getActionFormDefine($model, $modelDefine);
     // カラム名定義
     $r =& $generator->generate('ScaffoldColumnName', $app_dir, $model, $modelDefine);
     if (Ethna::isError($r)) {
         return $r;
     }
     // BaseActionForm Generator
     $r =& $generator->generate('ScaffoldActionForm', $app_dir, $model, $modelDefine, $formDefine);
     if (Ethna::isError($r)) {
         return $r;
     }
     // Actions Generator
     $r =& $generator->generate('ScaffoldActions', $app_dir, $baseAction, $model, $modelDefine, $idDefine, $formDefine);
     if (Ethna::isError($r)) {
         return $r;
     }
     // Views Generator
     $r =& $generator->generate('ScaffoldViews', $app_dir, $baseAction, $model, $modelDefine, $idDefine, $formDefine);
     if (Ethna::isError($r)) {
         return $r;
     }
     // Templates Generator
     $r =& $generator->generate('ScaffoldTemplates', $app_dir, $baseAction, $model, $modelDefine, $idDefine, $formDefine);
     if (Ethna::isError($r)) {
         return $r;
     }
     // Smarty Plugin
     $r =& $generator->generate('ScaffoldSmartyPlugin', $app_dir);
     if (Ethna::isError($r)) {
         return $r;
     }
     // UnitTestCase Generator
     // UnitTestCase GeneratorはEthcaffoldの標準に含まれているものではないため無い場合がある
     $r =& $generator->generate('UnitTestCase', $app_dir, $model);
     if (Ethna::isError($r)) {
         if ($r->getCode() !== E_PLUGIN_NOTFOUND) {
             return $r;
         }
     }
     $true = true;
     return $true;
 }