rootAddConf('conf/connexion.ini.php'); $msg=''; $detail=''; $oDir=new _dir(_root::getConfigVar('path.generation')._root::getParam('id').'/model/'); $tFile=array(); $tRowMethodes=array(); foreach($oDir->getListFile() as $oFile){ if(preg_match('/.sample.php/',$oFile->getName()) or !preg_match('/.php$/',$oFile->getName())) continue; $tFile[]=$oFile->getName(); require_once( $oFile->getAdresse() ); $sClassFoo=substr($oFile->getName(),0,-4); $oModelFoo=new $sClassFoo; if( method_exists( $oModelFoo, 'getSelect')){ $tRowMethodes[substr($oFile->getName(),0,-4)]=substr($oFile->getName(),0,-4).'::getSelect()'; } } $oTpl= $this->getView('index'); if(_root::getParam('class') !='' ){ $sClass=substr(_root::getParam('class'),0,-4); require_once(_root::getConfigVar('path.generation')._root::getParam('id').'/model/'.$sClass.'.php'); $tColumn=module_builder::getTools()->getListColumnFromClass($sClass); $oTpl->sClass=$sClass; $tId=module_builder::getTools()->getIdTabFromClass($sClass); foreach($tColumn as $i => $sColumn){ if(in_array($sColumn, $tId) ){ unset($tColumn[$i]); } } $oTpl->tColumn=$tColumn; $oTpl->tRowMethodes=$tRowMethodes; $oModel=new $sClass; $oTpl->sModuleToCreate=$oModel->getTable(); $oTpl->sgbd= _root::getConfigVar('db.'.$oModel->getConfig().'.sgbd'); } if($this->isPost()){ $sModuleToCreate=_root::getParam('moduleToCreate'); $sClass=_root::getParam('sClass'); $tColumn=_root::getParam('tColumn'); $tLabel=_root::getParam('tLabel'); $tType=_root::getParam('tType'); $tEnable=_root::getParam('tEnable'); foreach($tColumn as $i => $sColumn){ if(!in_array($sColumn, $tEnable) ){ unset($tColumn[$i]); } } require_once(_root::getConfigVar('path.generation')._root::getParam('id').'/model/'.$sClass.'.php'); $oModel=new $sClass; $sModule=$sModuleToCreate; $this->projectMkdir('module/'.$sModule ); $this->projectMkdir('module/'.$sModule.'/view'); $tCrud= array('crudShow'); $bWithPagination=_root::getParam('withPagination'); $this->genModelMain($sModuleToCreate,$oModel->getTable(),$sClass,$tColumn,$tCrud,$bWithPagination); $this->genModelTpl($sModuleToCreate,$sClass,$tColumn,$oModel->getTable(),$tCrud,$tLabel); $msg=trR('moduleGenereAvecSucces',array('#MODULE#'=>$sModule)); $detail=trR('creationRepertoire',array('#REPERTOIRE#'=>'module/'.$sModule)); $detail.='
'.trR('creationRepertoire',array('#REPERTOIRE#'=>'module/'.$sModule.'/view')); $detail.='
'.trR('CreationDuFichierVAR',array('#FICHIER#'=>'module/'.$sModule.'/main.php')); $detail.='
'.trR('CreationDuFichierVAR',array('#FICHIER#'=>'module/'.$sModule.'/view/list.php')); if(in_array('crudShow',$tCrud)){ $detail.='
'.trR('CreationDuFichierVAR',array('#FICHIER#'=>'module/'.$sModule.'/view/show.php')); } $sCode='setRootLink(\'module::action\',array(\'parametre\'=>_root::getParam(\'parametre\')));'."\n\n"; $sCode.='//recupere la vue du module'."\n"; $sCode.='$oView=$oModule'.ucfirst(strtolower($sModule)).'->_index();'."\n"; $sCode.="\n"; $sCode.='//assigner la vue retournee a votre layout'."\n"; $sCode.='$this->oLayout->add(\'main\',$oView);'."\n"; $detail.='

Pour l\'utiliser, indiquez:
'.highlight_string($sCode,1); } $oTpl->msg=$msg; $oTpl->detail=$detail; $oTpl->tFile=$tFile; return $oTpl; } private function genModelMain($sModule,$sTableName,$sClass,$tColumn,$tCrud,$bWithPagination){ //$tColumn=_root::getParam('tColumn'); $tType=_root::getParam('tType'); /*SOURCE*/$oSourceMain=$this->getObjectSource('example/main.php'); /*SOURCE*/$oSourceMain->setPattern('#MODULE#',$sModule); $tReplace=array( '#oExamplemodel#' => 'o'.ucfirst($sTableName), '#tExamplemodel#' => 't'.ucfirst($sTableName), '#examplemodule#' => $sModule, '#examplemodel#' => $sTableName, ); foreach($tReplace as $sKey=>$sValue){ /*SOURCE*/$oSourceMain->setPattern($sKey,$sValue); } $uploadsave=null; $sMethodList=null; $sMethodNew=null; $sMethodEdit=null; $sMethodShow=null; $sMethodDelete=null; $sMethodProcessDelete=null; $tab="\t\t\t"; $ret="\n"; $sPaginationList=''; if($bWithPagination==1){ $sPaginationList=$oSourceMain->getSnippet('oModulePagination',array( '#sModule#'=>$sModule, '#tTablename#'=>'t'.ucfirst($sTableName) )); } $sTable=''; $tArrayColumn=array(); $tArrayColumnUpload=array(); foreach($tColumn as $i => $sColumn){ $sType=$tType[$i]; if(substr($sType,0,7)=='select;'){ $sInput=$oSourceMain->getSnippet('codetJoin',array('#examplemodel#'=>substr($sType,7))); $sTable.=$sInput; }elseif($sType=='upload'){ $tArrayColumnUpload[]="'$sColumn'"; continue; } $tArrayColumn[]="'$sColumn'"; } $stColumn='array('.implode(',',$tArrayColumn).');'; $stColumnUpload='array('.implode(',',$tArrayColumnUpload).');'; if($tArrayColumnUpload){ $uploadsave=$oSourceMain->getSnippet('uploadsave',array( '#tColumnUpload#'=>$stColumnUpload, '#oExamplemodel#'=>'o'.ucfirst($sTableName), )); } $tReplace['#CODE#']=$sTable; if($bWithPagination==1){ $sMethodList=$oSourceMain->getSnippet('methodPaginationList',$tReplace); }else{ $sMethodList=$oSourceMain->getSnippet('methodList',$tReplace); } if(in_array('crudShow',$tCrud)){ $sMethodShow=$oSourceMain->getSnippet('methodShow',$tReplace); } /*SOURCE*/$oSourceMain->setPattern('#iciMethodList#',$sMethodList); /*SOURCE*/$oSourceMain->setPattern('#iciMethodNew#',$sMethodNew); /*SOURCE*/$oSourceMain->setPattern('#iciMethodEdit#',$sMethodEdit); /*SOURCE*/$oSourceMain->setPattern('#iciMethodShow#',$sMethodShow); /*SOURCE*/$oSourceMain->setPattern('#iciMethodDelete#',$sMethodDelete); /*SOURCE*/$oSourceMain->setPattern('#iciMethodProcessDelete#',$sMethodProcessDelete); /*SOURCE*/$oSourceMain->setPattern('#iciUpload#',$uploadsave); /*SOURCE*/$oSourceMain->setPattern('#icitColumn#',$stColumn); /*SOURCE*/$oSourceMain->save(); } private function genModelTpl($sModule,$sClass,$tColumn,$sTableName,$tCrud,$tLabel){ //$tColumn=_root::getParam('tColumn'); $tType=_root::getParam('tType'); $tCrud[]='list'; $tTpl=array('list','show'); $tTplCrud=array( 'show' => 'crudShow', 'list' => 'list', ); foreach($tTpl as $sTpl){ //print $sTpl; if(!in_array( $tTplCrud[$sTpl],$tCrud)){ //print "skip $sTpl "; continue; } /*SOURCE*/$oSourceView=$this->getObjectSource('example/view/'.$sTpl.'.php'); /*SOURCE*/$oSourceView->setPattern('#examplemodule#',$sModule); $sLinks=''; $sLinkNew=''; if($sTpl=='list'){ $tReplace=array( '#oExamplemodel#' => 'o'.ucfirst($sTableName), '#examplemodule#' => $sModule ); //liens $tLink['crudShow']=$oSourceView->getSnippet('linkShow',$tReplace); $iMaxCrud=count($tCrud); $iMaxCrud-=2; foreach($tCrud as $i => $sAction){ if(in_array($sAction,array('crudNew','list'))){ continue; } if(!isset($tLink[$sAction])){ continue; } $sLinks.=$tLink[$sAction]; if($i < $iMaxCrud){ $sLinks .= '| '; } } } $sTable=''; $sTableTh=''; $sEnctype=''; foreach($tColumn as $i => $sColumn){ $sLabel=$tLabel[$i]; $sType=$tType[$i]; if($sType=='text' or $sType=='date'){ $sInput=$oSourceView->getSnippet('input',array( '#examplecolumn#'=>$sColumn, '#oExamplemodel#'=>'o'.ucfirst($sTableName), )); }elseif($sType=='textarea'){ $sInput=$oSourceView->getSnippet('textarea',array( '#examplecolumn#'=>$sColumn, '#oExamplemodel#'=>'o'.ucfirst($sTableName), )); }elseif(substr($sType,0,7)=='select;'){ $sInput=$oSourceView->getSnippet('select',array( '#examplecolumn#'=>$sColumn, '#oExamplemodel#'=>'o'.ucfirst($sTableName), '#examplemodel#'=>substr($sType,7), )); }elseif($sType=='upload'){ $sInput=$oSourceView->getSnippet('upload',array( '#examplecolumn#'=>$sColumn, '#oExamplemodel#'=>'o'.ucfirst($sTableName), '#examplemodel#'=>substr($sType,7), )); $sEnctype=' enctype="multipart/form-data"';//changement du enctype du formulaire } $sTable.=$oSourceView->getSnippet('lignetd',array( '#examplecolumn#'=>$sLabel, '#exampletd#'=>$sInput, )); $sTableTh.=$oSourceView->getSnippet('ligneth',array( '#exampleth#'=>$sLabel, '#examplecolumn#'=>$sLabel, )); } $tReplace=array( '#MODULE#'=>$sModule, '#linknew#' => $sLinkNew, '#links#' => $sLinks, '#oExamplemodel#' => 'o'.ucfirst($sTableName), '#tExamplemodel#' => 't'.ucfirst($sTableName), '#examplemodule#' => $sModule, '#enctype#' => $sEnctype, '#ici#' => $sTable, '#icith#' => $sTableTh, '#colspan#' => (count($tColumn)+1) ); foreach($tReplace as $key => $val){ $oSourceView->setPattern($key,$val); } $oSourceView->save(); } } }