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']);
     }
 }
Example #2
0
 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']);
 }
Example #3
0
 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);
 }
Example #6
0
 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);
 }
Example #10
0
 /**
  * Recupera el path del patron $patron
  * @return string
  */
 public static function getUrl($patron)
 {
     $file = dirname(__FILE__) . '/pattern/' . UtilPsdf::fromCamelCase($patron);
     return $file;
 }