sábado, 23 de febrero de 2013

Borrando los comentarios de forma masiva


Aquí les dejo en esta oportunidad, un script que me hes de mucha utilidad.

Como medida de seguridad y eficiencia, antes de subir mis páginas a los servidores de producción, borro todo lo que son comentarios y lineas en blanco de mi código fuente.
 

#!/bin/bash

#Busca el patron // en los archivos indicados y la sustituye por otra
# Para ejecutar ./comentario.sh *.s
#(trabaja con todos los archivos con extension s)
#Adicionalmente borra los enter y todas la lineas contenidas entre /* */

patron='//'

for i in $*
do
        linea=`grep -n $patron $i`

        if [ -z "$linea" ]
        then
                echo "No se encontró la cadena en el archivo $i"
        else
                #El primero borra las lineas //
                #El segundo los enter
                #Y el tercero lo contenido entre /* */
                sed '/^\/\//d' $i | sed '/^$/d' | sed '/\/\*/,/\*\//d' > $i.tmp
                mv $i $i.backup
                mv $i.tmp $i
        fi
done

echo "Finalizado"

Espero que les sea de utilidad.

lunes, 4 de febrero de 2013

Codeigniter: Enviando email

Despues de un tiempo desaparecido por trabajo y vacaciones, vuelvo con este post, enviando email desde un formulario hecho en Codeigniter.

Aqui les pongo el codigo del controlador:

public function formEmail($exito = ""){
        $datos['titulo'] = "Envio de mensaje"; // titulo de la pagina
        if($exito != "")
            $datos['exito'] = "Mensaje enviado satisfactoriamente";
        $this->load->view('email_view',$datos);
    }


public function sendEmail(){
        $this->load->library('email');
        $datos['titulo'] = "Envio de mensaje";
       
        $config = array(
                        array(
                        'field' => 'txtpara',
                        'label' => 'Para',
                        'rules' => 'required|trim|valid_emails'),
                        array(
                        'field' => 'txtasunto',
                        'label' => 'Asunto',
                        'rules' => 'required|trim|alpha'),
                        array(
                        'field' => 'txtmensaje',
                        'label' => 'Mensaje',
                        'rules' => 'required|trim')
                        );
        $this->form_validation->set_rules($config);
       
        if($this->form_validation->run() == FALSE){
            $this->load->view('email_view',$datos);
        }else{
            $config['protocol'] = 'sendmail';
            $config['mailpath'] = '/usr/sbin/sendmail';
            //esto en caso de que quieran enviar desde un servidor
            //$config['smtp_host'] = 'servidor';
            //$config['smtp_user'] = 'usuario';
            //$config['smtp_pass'] = 'clave';

            $config['charset'] = 'utf-8';
            $config['wordwrap'] = TRUE;

            $this->email->initialize($config);
            $this->email->from('usuario_envia@servidor','nombre_del_que_envia');
            $this->email->to($this->input->post('txtpara'));
            $this->email->subject($this->input->post('txtasunto'));
            $this->email->message($this->input->post('txtmensaje'));
           
            if(! $this->email->send()){
                $datos['error'] = "El mensaje no pudo ser enviado";
                $this->load->view('email_view',$datos);
            }else{
                $exito = "Mensaje enviado satisfactoriamente";
                $post = $this->input->post();
                foreach ($post as $k => $a){
                    $post[$k] = "";
                }
                $this->formEmail($exito);
            }
        }
    }



Y este es el codigo de la vista email_view.php

<html>
    <head>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
        <title><?php echo $titulo;?></title>
        <link rel="stylesheet" href="../../application/views/css/estilos.css" type="text/css" media="screen">
    </head>
    <body>
        <div id="formulario">
        <?php
        $attributes = array('class' => 'form', 'id' => 'email');
           
        echo validation_errors('<div id="error">','</div>');
       
        if(isset($exito))
            echo "<div id=\"exito\">" . $exito . "</div>";
        if(isset($error))
            echo "<div id=\"error\">" . $error . "</div>";

        echo form_open('prueba/sendEmail', $attributes);
       
            echo "<div>";
            echo form_label("Para: ");
            $attributes = array('id' => 'txtpara', 'size' => '20','name' => 'txtpara', 'maxlength' => '20', 'value' => set_value('txtpara') );
            echo form_input($attributes);
            echo "</div>";
           
            echo "<div>";
            echo form_label("Asunto: ");
            $attributes = array('id' => 'txtasunto', 'size' => '20','name' => 'txtasunto', 'maxlength' => '20', 'value' => set_value('txtasunto') );
            echo form_input($attributes);
            echo "</div>";
           
            echo "<div>";
            echo form_label("Mensaje: ");
            $attributes = array('id' => 'txtmensaje', 'rows' => '10','name' => 'txtmensaje', 'cols' => '25', 'value' => set_value('txtmensaje') );
            echo form_textarea($attributes);
            echo "</div>";
           
            echo "<div>";
            $attributes = array('id' => 'sbEnviar','name' => 'sbEnviar', 'class' => 'boton');
            echo form_submit($attributes,'Enviar');
            echo "</div>";

        echo form_close();
       
        ?>
        </div>
    </body>
</html>

Cuando hago referencia a "prueba/sendEmail" en la creacion del formulario, se refiere a la función sendEmail que se encuentra en mi controlador prueba (prueba.php)

El estilo al que hago referencia es el siguiente

@CHARSET "UTF-8";

body{
    font-family: serif;
    font-size: 12px;
}

#formulario{
    border: 2px solid olive;
    border-radius: 7px;
    -moz-border-radius:7px;
    width: 300px;
    margin-left: 20px;
    padding: 10px;
}

#formulario div label {
  width: 20%;
  float: left;
}


/* Estilo para elementos de formulario */

label{
    color:#3a454d;
    margin:15px 10px 0 0;
    display:block;
    float:left;
    font-weight: bold;
}

input {
    border:1px solid #899caa;
    border-radius:6px;
    -moz-border-radius:6px;
    box-shadow: 1px 1px 3px #bbb;
    -webkit-box-shadow: 1px 1px 3px #bbb;
    -moz-box-shadow: 1px 1px 3px #bbb;
       
    padding:8px;
    font-size:12px;
    color:#3a454d;
    font-weight:bold;
    float:none;
    margin-top: 5px;
}

.boton {
    margin-top: 10px;
    margin-left: 35%;
    border-radius : 8px;
    -moz-border-radius: 8px;
}

/* ---------------- */

#error{
    color:red;
    border-color: #e74476;
}


/* Estilo usado en el archivo de mensajes */
#exito{
    color:green;
    border-color: #30d252;
    font-size: 15px;
    margin-top: 10px;
}


Es importante que cargen la libreria form_validation, ya que hago uso de la misma.

Espero que les sea de utilidad.