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('crudNew', 'crudEdit', 'crudDelete');
$bWithPagination = _root::getParam('withPagination');
$this->genModelMain($sModuleToCreate, $oModel->getTable(), $sClass, $tColumn, $tCrud, $bWithPagination, $tId);
$this->genModelTpl($sModuleToCreate, $sClass, $tColumn, $oModel->getTable(), $tCrud, $tLabel, $tId);
$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('crudEdit', $tCrud)) {
$detail.='
' . trR('CreationDuFichierVAR', array('#FICHIER#' => 'module/' . $sModule . '/view/edit.php'));
}
if (in_array('crudNew', $tCrud)) {
$detail.='
' . trR('CreationDuFichierVAR', array('#FICHIER#' => 'module/' . $sModule . '/view/new.php'));
}
if (in_array('crudShow', $tCrud)) {
$detail.='
' . trR('CreationDuFichierVAR', array('#FICHIER#' => 'module/' . $sModule . '/view/show.php'));
}
if (in_array('crudDelete', $tCrud)) {
$detail.='
' . trR('CreationDuFichierVAR', array('#FICHIER#' => 'module/' . $sModule . '/view/delete.php'));
}
$detail.='
' . tr('accessibleVia') . ' index.php?:nav=' . $sModule . '::index';
}
$oTpl->msg = $msg;
$oTpl->detail = $detail;
$oTpl->tFile = $tFile;
return $oTpl;
}
private function genModelMain($sModule, $sTableName, $sClass, $tColumn, $tCrud, $bWithPagination, $tId) {
$sIdTable = implode('::', $tId);
//$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;
$sMethodEditList = $oSourceMain->getSnippet('methodEditList', $tReplace);
if ($bWithPagination == 1) {
$sMethodList = $oSourceMain->getSnippet('methodPaginationList', $tReplace);
} else {
$sMethodList = $oSourceMain->getSnippet('methodList', $tReplace);
}
if (in_array('crudNew', $tCrud)) {
$sMethodNew = $oSourceMain->getSnippet('methodNew', $tReplace);
}
if (in_array('crudEdit', $tCrud)) {
$sMethodEdit = $oSourceMain->getSnippet('methodEdit', $tReplace);
}
if (in_array('crudShow', $tCrud)) {
$sMethodShow = $oSourceMain->getSnippet('methodShow', $tReplace);
}
if (in_array('crudDelete', $tCrud)) {
$sMethodDelete = $oSourceMain->getSnippet('methodDelete', $tReplace);
$sMethodProcessDelete = $oSourceMain->getSnippet('methodProcessDelete', $tReplace);
}
/* SOURCE */$oSourceMain->setPattern('#iciMethodList#', $sMethodList);
/* SOURCE */$oSourceMain->setPattern('#iciMethodEditList#', $sMethodEditList);
/* 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->setPattern('#examplerow_id#', $sIdTable);
/* SOURCE */$oSourceMain->save();
}
private function genModelTpl($sModule, $sClass, $tColumn, $sTableName, $tCrud, $tLabel, $tId) {
$sIdTable = implode('::', $tId);
//$tColumn=_root::getParam('tColumn');
$tType = _root::getParam('tType');
$tCrud[] = 'list';
$tCrud[] = 'editList';
$tTpl = array('list', 'new', 'delete', 'editList');
$tTplCrud = array(
'new' => 'crudNew',
'delete' => 'crudDelete',
'list' => 'list',
'editList' => 'editList',
);
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);
$tReplace = array(
'#oExamplemodel#' => 'o' . ucfirst($sTableName),
'#examplemodule#' => $sModule
);
$sLinks = $oSourceView->getSnippet('linkDelete', $tReplace);
$sLinkNew = $oSourceView->getSnippet('linkNew', $tReplace);
$sLinkEditList = $oSourceView->getSnippet('linkEditList', $tReplace);
$sLinkList = $oSourceView->getSnippet('linkList', $tReplace);
$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,
'#linkEditList#' => $sLinkEditList,
'#linkList#' => $sLinkList,
'#links#' => $sLinks,
'#oExamplemodel#' => 'o' . ucfirst($sTableName),
'#tExamplemodel#' => 't' . ucfirst($sTableName),
'#examplemodule#' => $sModule,
'#enctype#' => $sEnctype,
'#ici#' => $sTable,
'#icith#' => $sTableTh,
'#colspan#' => (count($tColumn) + 1),
'#pkey#' => $sIdTable,
);
foreach ($tReplace as $key => $val) {
$oSourceView->setPattern($key, $val);
}
$oSourceView->save();
}
}
}