public function execute($arguments = array(), $options = array()) { $projectDir = UtilPsdf::fixPath($arguments['pjpath']); $packagesDir = $projectDir . DIRECTORY_SEPARATOR . $arguments['pkpath'] . DIRECTORY_SEPARATOR; if (is_dir($projectDir)) { throw new sfCommandException(sprintf('The project "%s" already exists.', $projectDir)); } $filesystem = new sfFilesystem(); // Create basic workspace structure $skeletonDir = dirname(__FILE__) . '/../../data/generator/skeleton/psdfProject'; $finder = sfFinder::type('any')->discard('.sf'); $filesystem->mirror($skeletonDir, $projectDir, $finder); // Actualizo tokens $constants = array('PROJECT_NAME' => $arguments['pjname']); $finder = sfFinder::type('file')->name('.project'); $filesystem->replaceTokens($finder->in($projectDir), '##', '##', $constants); // Create packages files (subdir por cada macro) $packages = $arguments['packages']; foreach ($packages as $pack) { if (!is_dir($packagesDir . $pack['macro'])) { $filesystem->mkdirs($packagesDir . $pack['macro']); } $file = $packagesDir . $pack['macro'] . DIRECTORY_SEPARATOR . $pack['name'] . '.xpdl'; $filesystem->touch($file); file_put_contents($file, $pack['xpdl']); } }
public function executeEjecutar($request) { // Se construye desde el paquete por eso primero instancio el proceso // para obtener relPaquete. $proc = Doctrine::getTable('Proceso')->find($request->getParameter('id')); $sf = $proc->getInfoSymfony(); UtilPsdf::redirectApp($sf['application'], $sf['module'], $sf['action']); }
public function setMenu() { if (!$this->isAuthenticated()) { // No hay usuario autenticado asumo el invitado $usr = Doctrine::getTable('sfGuardUser')->findByUsername('invitado'); $usr = $usr[0]; } else { $usr = $this->getGuardUser(); } //die('Usuario: '.$usr->getUsername() ); // Ojo! el usuario puede tener más de una organizacion // Esto debería ajustarse $usuorgs = Doctrine::getTable('Usuorg')->findByRelUsuario($usr->getId()); $menuYml = sfYaml::load($usuorgs[0]->getMenu()); $this->menu = UtilPsdf::convertMenu($menuYml); }
public function execute() { if (!$this->getParameter('in_filtro')) { $q = Doctrine_Query::create()->from($this->getParameter('in_clase')); } else { $q = Doctrine_Query::create()->from($this->getParameter('in_clase'))->where($this->getParameter('in_filtro')); } $objs = $q->execute(); $xml = '<list>'; foreach ($objs as $obj) { $xml .= UtilPsdf::objInstanceToXml($obj); } $xml .= '</list>'; $this->setParameter('out_lista', $xml); $this->setParameter('out_cantidad', count($objs)); }
public function execute() { $id = 0; // Convierto xml a objeto $xml = $this->getParameter('in_lista'); $objnew = UtilPsdf::objXmlToInstance($xml); // Recupero estado actual $obj = Doctrine::getTable(get_class($objnew))->find($objnew->getId()); foreach ($obj as $att => $val) { if (isset($obj->{$att})) { if (strtolower($att) != 'id' and $val != $objnew->{$att}) { $obj->{$set}($val); } } } if ($obj) { $obj->save(); $id = $obj->getId(); } $this->setTplParameter('out_id', $id); }
public function executeExportar(sfWebRequest $request) { $proyecto = Doctrine::getTable('Proyecto')->find($request->getParameter('id')); if ($proyecto) { // GENERO UN PROYECTO TIBCO, LO COMPRIMO Y DESCARGO PARA EL USUARIO // Defino directorios. Nombre del proyecto, Directorio temporal donde // trabajar, directorio del workspace y nombre del zip a crear $pj_name = $proyecto->getNombre(); $temp_dir = tempnam(sys_get_temp_dir(), 'pj') . 'd'; $pj_dir = $temp_dir . DIRECTORY_SEPARATOR . $pj_name; $zip_file = $temp_dir . '.zip'; // Creo directorio temporal de trabajo y genero alli el proyecto mkdir($temp_dir); $ret = $proyecto->generateProject($pj_dir); if (UtilPsdf::comprimir($temp_dir . DIRECTORY_SEPARATOR, $zip_file)) { UtilPsdf::descargar($zip_file, $pj_name . '.zip'); } else { throw new sfException(sprintf('No se pudo crear y comprimir el proyecto')); } } $this->redirect($this->getModuleName() . '/index'); }
/** * Implementa el macro como un aplicativo symfony */ public function implement() { UtilPsdf::runTask('psdfGenerateMacroTask', array($this->parseImplementationName())); }
/** * Implementa el paquete como un modulo symfony * * @return unknown_type */ public function implement() { UtilPsdf::runTask('psdfGeneratePackageTask', array($this->getMacro()->parseImplementationName(), $this->parseImplementationName())); }
public function resume($request) { // Vuelvo a instanciar lista del parametro $xml = $this->getParameter('in_lista'); $clase = $this->getParameter('in_clase'); // Opcional $obj = UtilPsdf::objXmlToInstance($xml); if ($obj) { // Edicion! Instancio la clase form con el objeto $formClassName = get_class($obj) . 'Form'; $form = new $formClassName($obj); } else { // Nuevo! Instancio la clase vacía, pero 1ro me valgo del parametro clase si lo tuviera if (!$clase) { $this->setError('No se pudo determinar la clase a utilizar en el patron'); return false; } $formClassName = $clase . 'Form'; $form = new $formClassName(); $obj = $form->getObject(); } $fields = $request->getParameter($form->getName()); // remove CSRF token //unset($fields[$form->getCSRFFieldName]); foreach ($fields as $key => $value) { if (isset($obj->{$key})) { if (ucfirst($key) != 'Id' and $obj->{$key} != $value) { $obj->{$key} = $value; } } } die(''); /* La forma en que trata symfony la grabacion desde el formulario: $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); if ($form->isValid()) { $obj = $form->save(); } */ // Vuelvo a convertir a xml $xml = '<list>'; $xml .= UtilPsdf::objInstanceToXml($obj); $xml .= '</list>'; // Seteo parametro de retorno $this->setParameter('out_lista', $xml); }
/** * Recupera el path del patron $patron * @return string */ public static function getUrl($patron) { $file = dirname(__FILE__) . '/pattern/' . UtilPsdf::fromCamelCase($patron); return $file; }