<?php
    global $PCOFORM_Accion;
    
    global $TablasCore,$ListaCamposSinID_formulario_objeto,$_SeparadorCampos_,$ConexionPDO;
    global $MULTILANG_ErrFrmCampo1,$MULTILANG_ErrFrmCampo2;



########################################################################
########################################################################
/*
	Function: PCOFORM_EliminarEventoObjeto
	Elimina un evento de un objeto determinado por su ID unico

	Variables de entrada:

		evento - ID de registro que contiene el evento

	Salida:
		Registro eliminado
*/
	if ($PCOFORM_Accion=="PCOFORM_EliminarEventoObjeto")
		{
			//Obtiene algunos campos especificos de la creacion desde valores globales
			global $evento,$MULTILANG_Eliminar,$MULTILANG_Evento,$MULTILANG_Finalizado;

			PCO_EjecutarSQLUnaria("DELETE FROM ".$TablasCore."evento_objeto WHERE id=? ","$evento");
			PCO_Auditar("Elimina evento javascript $evento");
			echo '<script TYPE="text/javascript" LANGUAGE="JavaScript">
    			alert("'.$MULTILANG_Eliminar.' '.$MULTILANG_Evento.' '.$MULTILANG_Finalizado.'");
    			window.close();
			</script>';
		}


########################################################################
########################################################################
/*
	Function: PCOFORM_CrearEventoObjeto
	Crea un evento determinado para un objeto de formulario y redirecciona al editor PCoder

	Variables de entrada:

		id_objeto_evento
		evento_objeto

	Salida:
		Registro creado en base de datos de eventos y redireccion al editor
*/
	if ($PCOFORM_Accion=="PCOFORM_CrearEventoObjeto")
		{
			//Obtiene algunos campos especificos de la creacion desde valores globales
			global $LlaveDePaso,$tipo,$campo,$campo_manual,$origen_lista_opciones_manual,$origen_lista_valores_manual,$titulo,$idcampomodificado,$ListaCamposSinID_evento_objeto,$id_objeto_evento,$evento_objeto;

            //Define texto plantilla predeterminado para los eventos SIN TABULACIONES PARA QUE TAMPOCO LAS AGREGUE EN EL EDITOR
            $javascript_eventos='/*
Function: SUNOMBRE_onmousemove
	Ingrese aqui la descripcion de su funcion, procedimiento o proceso realizado por este evento

	Parametros:

		Parametro1 - Descripcion del primer parametro de entrada
		Parametro2 - Descripcion del segundo parametro de entrada

	Proceso simplificado:
		(start code)
			Instrucciones especificas importantes, Scripts u operaciones de BD, Etc
		(end)

	Salida:

		Describa la salida de esta funcion, procedimiento o proceso

	Vea tambien:

		<FuncionRelacionada1> | <FuncionRelacionada2> | <FuncionRelacionada3>
*/';

			PCO_EjecutarSQLUnaria("INSERT INTO ".$TablasCore."evento_objeto (".$ListaCamposSinID_evento_objeto.") VALUES (?,?,?)","$id_objeto_evento$_SeparadorCampos_$evento_objeto$_SeparadorCampos_$javascript_eventos");
			$IdUnicoEvento=PCO_ObtenerUltimoIDInsertado();
			PCO_Auditar("Agrega evento javascript para $id_objeto_evento");

			//Hace la redireccion interna hacia el PCoder para la edicion del evento
            $LlaveParcial_FirmaSistema=substr($LlaveDePaso,-3);
            $TituloPCoder_COMPLEMENTO="EVENTO: {$IdUnicoEvento} TIPO: {$evento_objeto}";
            $PCO_EnlaceScriptJS  ="parent.$('#PCO_Modal_Mensaje').modal('hide'); var LMQTPEvent{$IdUnicoEvento}=PCOJS_CargarArchivoPCoderBD('{$LlaveParcial_FirmaSistema}','','','','No','B','core_evento_objeto','javascript' ,'{$IdUnicoEvento}','js' ,'JavaScript','Iconos','1','<font color=white>Script_JS</font> Evento_{$evento_objeto}_{$IdUnicoEvento}_(JS){$TituloPCoder_COMPLEMENTO}');  ";
            
            $PCO_CodigoBotonCargueEvento='<center><button type="button" class="btn btn-success" data-dismiss="modal" onclick="'.$PCO_EnlaceScriptJS.'">{P} Editar el evento</button></center><br>';
            $PCO_MensajeDescripcion='Se ha finalizado la creacion del codigo base para su evento.  Si lo desea puede cerrar esta ventana o hacer clic en el boton para editar de inmediato el codigo correspondiente.<br><br>'.$PCO_CodigoBotonCargueEvento;
            echo "<br><br>";
            PCO_Mensaje("Se ha creado un nuevo evento", $PCO_MensajeDescripcion, '', 'fa fa-fw fa-2x fa-thumbs-up', 'alert alert-dismissible alert-success');
		}


########################################################################
########################################################################
/*
	Function: PCOFORM_ActualizarCampoFormulario
	Actualiza un campo de datos, etiqueta, marco externo o informe en un formulario

	Variables de entrada:

		multiples - Recibidas mediante formulario unico asociado al proceso de creacion/edicion del elemento.

	(start code)
		UPDATE ".$TablasCore."formulario_objeto SET ... Lista da campos
	(end)

	Salida:
		Registro de campo alterado y formulario actualizado en pantalla

	Ver tambien:
		<PCO_EliminarCampoFormulario> | <agregar_campo_formulario>
*/
	if ($PCOFORM_Accion=="PCOFORM_ActualizarCampoFormulario")
		{
			//Obtiene algunos campos especificos de la creacion desde valores globales
			global $tipo,$campo,$campo_manual,$origen_lista_opciones_manual,$origen_lista_valores_manual,$titulo,$idcampomodificado;

			$mensaje_error="";
			$tipo_objeto=$tipo;

			//Concatena el campo manual en caso de encontrar alguno
			$campo=$campo.$campo_manual;
			$origen_lista_opciones=$origen_lista_opciones_manual;
			$origen_lista_valores=$origen_lista_valores_manual;

			if ($titulo=="" && ($tipo_objeto!="etiqueta" && $tipo_objeto!="url_iframe" && $tipo_objeto!="informe" && $tipo_objeto!="frm" && $tipo_objeto!="form_consulta") ) $mensaje_error=$MULTILANG_ErrFrmCampo1;
			if ($campo==""  && ($tipo_objeto!="etiqueta" && $tipo_objeto!="url_iframe" && $tipo_objeto!="informe" && $tipo_objeto!="frm" && $tipo_objeto!="form_consulta" && $tipo_objeto!="boton_comando") ) $mensaje_error=$MULTILANG_ErrFrmCampo2;

			if ($mensaje_error=="")
				{
					//Genera la lista de campos a ser actualizados desde la definicion de tabla para no olvidar ninguno
					$ListaCampos=explode(",",$ListaCamposSinID_formulario_objeto);
					for ($i=0; $i<count($ListaCampos);$i++)
                        {
                            if ($ListaCampos[$i]!="origen_lista_opciones" && $ListaCampos[$i]!="origen_lista_valores")
							    global ${$ListaCampos[$i]};
                            $nuevo_valor_asignar=${$ListaCampos[$i]};
                            //Escapa algunos campos especiales
                            if ($ListaCampos[$i]=="accion_usuario")
                                {
                                    $nuevo_valor_asignar=addslashes($nuevo_valor_asignar);
                                }
                            @$ListaCamposyValores.=$ListaCampos[$i]."='".$nuevo_valor_asignar."',";
                        }
					$ListaCamposyValores.="id=id"; //Agregado para evitar coma final

					PCO_EjecutarSQLUnaria("UPDATE ".$TablasCore."formulario_objeto SET ".$ListaCamposyValores." WHERE id='$idcampomodificado'");
					
					PCO_Auditar("Modifica diseno campo $idcampomodificado para formulario $formulario");
                    PCO_Mensaje('Finalizado', 'El control ha sido actualizado sobre el formulario', '', 'fa-thumbs-up fa fa-fw fa-2x ', 'alert-success alert alert-dismissible ');
                    echo " <script language='JavaScript'> parent.PCOJS_LlamadoRemotoEditarFormulario(); </script>";
                    echo " <a class='btn btn-success' href='#' onclick='parent.PCOJS_LlamadoRemotoEditarFormulario();'>Regresar al dise&ntilde;o</a>";

				}
			else
				{
                    PCO_Mensaje($MULTILANG_ErrFrmDatos, $mensaje_error, '', 'fa-thumbs-down fa fa-fw fa-2x ', 'alert-danger alert alert-dismissible ');
				}
		}


########################################################################
########################################################################
/*
	Function: PCOFORM_GuardarCampoFormulario
	Agrega un campo de datos, etiqueta, marco externo o informe a un formulario

	Variables de entrada:

		multiples - Recibidas mediante formulario unico asociado al proceso de creacion del elemento.

	(start code)
		INSERT INTO ".$TablasCore."formulario_objeto VALUES (0,'$tipo_objeto','$titulo','$campo','$ayuda_titulo','$ayuda_texto','$formulario','$peso','$columna','$obligatorio','$visible','$valor_predeterminado','$validacion_datos','$etiqueta_busqueda','$ajax_busqueda','$valor_unico','$solo_lectura','$teclado_virtual','$ancho','$alto','$barra_herramientas','$fila_unica','$lista_opciones','$origen_lista_opciones','$origen_lista_valores','$valor_etiqueta','$url_iframe','$objeto_en_ventana','$informe_vinculado')
	(end)

	Salida:
		Registro agregado y formulario actualizado en pantalla

	Ver tambien:
		<PCO_EliminarCampoFormulario>
*/
	if ($PCOFORM_Accion=="PCOFORM_GuardarCampoFormulario")
		{
			//Obtiene algunos campos especificos de la creacion desde valores globales
			global $tipo,$campo,$campo_manual,$origen_lista_opciones_manual,$origen_lista_valores_manual,$titulo;
			
			$mensaje_error="";
			$tipo_objeto=$tipo;

			//Concatena el campo manual en caso de encontrar alguno
			$campo=$campo.$campo_manual;
			$origen_lista_opciones=$origen_lista_opciones_manual;
			$origen_lista_valores=$origen_lista_valores_manual;

			if (@$titulo=="" && ($tipo_objeto!="etiqueta" && $tipo_objeto!="url_iframe" && $tipo_objeto!="informe" && $tipo_objeto!="frm" && $tipo_objeto!="form_consulta") ) $mensaje_error=$MULTILANG_ErrFrmCampo1;
			if (@$campo==""  && ($tipo_objeto!="etiqueta" && $tipo_objeto!="url_iframe" && $tipo_objeto!="informe" && $tipo_objeto!="frm" && $tipo_objeto!="form_consulta" && $tipo_objeto!="boton_comando" ) ) $mensaje_error=$MULTILANG_ErrFrmCampo2;

			if ($mensaje_error=="")
				{
					//Genera la lista de campos a ser insertados desde la definicion de tabla para no olvidar ninguno
					$ListaCampos=explode(",",$ListaCamposSinID_formulario_objeto);
					$ListaInterrogantes="";
					for ($i=0; $i<count($ListaCampos);$i++)
						{
							$ListaInterrogantes.="?,";
							$NombreVariableGarbage=$ListaCampos[$i];
							global ${$NombreVariableGarbage};
							@$ListaCamposyValores.=${$NombreVariableGarbage}.$_SeparadorCampos_;
						}
					//Elimina partes finales innecesarias (coma y separador de campos)
					$ListaInterrogantes = substr ($ListaInterrogantes, 0, - 1);
					$ListaCamposyValores = substr ($ListaCamposyValores, 0, strlen($_SeparadorCampos_)*(-1));
					// Define la consulta de insercion del nuevo campo
					$consulta_insercion="INSERT INTO ".$TablasCore."formulario_objeto (".$ListaCamposSinID_formulario_objeto.") VALUES (".$ListaInterrogantes.")";
					PCO_EjecutarSQLUnaria($consulta_insercion,"$ListaCamposyValores");
					$id=PCO_ObtenerUltimoIDInsertado($ConexionPDO);
					PCO_Auditar("Crea campo $id para formulario $formulario");
                    PCO_Mensaje('Finalizado', 'El control ha sido agregado al formulario', '', 'fa-thumbs-up fa fa-fw fa-2x ', 'alert-success alert alert-dismissible ');
                    echo " <script language='JavaScript'> parent.PCOJS_LlamadoRemotoEditarFormulario(); </script>";
                    echo " <a class='btn btn-success' href='#' onclick='parent.PCOJS_LlamadoRemotoEditarFormulario();'>Regresar al dise&ntilde;o</a>";				}
			else
				{
                    PCO_Mensaje($MULTILANG_ErrFrmDatos, $mensaje_error, '', 'fa-thumbs-down fa fa-fw fa-2x ', 'alert-danger alert alert-dismissible ');
				}
		}