jueves, 16 de diciembre de 2010

Cakephp: Swift Mailer Component


Requisitos:
  • Windows XP, o Linux
  • Apache 2 instalado
  • PHP 5.2 instalado (extension openssl para SSL o TLS)
  • CakePhp 1.2, instalado
  • MySQL 5, opcional
Objetivo:

Implementar un mecanismo para el envio de email (Sin CakeMailer).


Instalación:

  1. Desacargar SwiftMailer y copiarlo en /app/vendors/swift_mailer
  2. Copiar este componente a /app/controllers/components/swift_mailer.php

Uso:

Ubicar la libreria...

La carpeta vendors debería tener este aspecto:



Crear los layouts...

Para que el componente funcione correctamente se debe de crear un layout por defecto (default.ctp) para los emails: html y text. Estos últimos deben de estar ubicados en la carpeta /app/views/layouts/email/.

La carpeta de los layouts debería tener este aspecto: (Ej. default.ctp)



Crear las vistas...

Para el contenido de los emails se necesitarán plantillas, los cuales deben de estar ubicados en la carpeta /app/views/elements/email/.

La carpeta de las plantillas del contenido del email debería tener este aspecto: (Ej. default.ctp)



En el controlador...

class TestsController extends AppController {
var $name = 'Tests';
var $helpers = array('Html');
var $components = array('SwiftMailer');
var $uses = null;

function testEmail() {
// se configuran los datos del email
$datos = array(
'nombre' => 'Cake User',
'asunto' => 'Email Test',
'mensaje' => 'Body Message'
);
$asunto = 'Email Test';
$destinatario = 'test@test.com';
$plantilla = "default";

// se configuran los parametros SMTP
$this->SwiftMailer->smtpHost = "mail.myhost.com";
$this->SwiftMailer->smtpPort = 25;
$this->SwiftMailer->smtpUsername = test@myhost.com;
$this->SwiftMailer->smtpPassword = "mypassword";

// se configuran los parametros de envio
$this->SwiftMailer->sendAs = 'html';
$this->SwiftMailer->from = "test@gmail.com";
$this->SwiftMailer->fromName = "Swift Mailer";
$this->SwiftMailer->to = $destinatario;
$this->SwiftMailer->replyTo = "replayto@gmail.com";
$this->SwiftMailer->bcc = array('bcc@host.com');

// se obtiene la fecha actual
$fechaHoraActual = date('d-m-Y H:i:s');

// se envian los parametros necesarios a la vista
$this->set('datos', $datos);
$this->set('fechaHoraActual', $fechaHoraActual);

try {
$exito = $this->SwiftMailer->send('default', $asunto);
if(!$exito) {
$this->log("Error sending email");
}
} catch(Exception $e) {
$this->log("Failed to send email: ".$e->getMessage());
$exito = false;
}

if(!$exito) {
$this->Session->setFlash('El email no pudo ser enviado.', 'default', array('class' => 'error'));
return false;
}

$this->Session->setFlash('El email fue enviado con exito.', 'default', array('class' => 'success'));
return true;
}
}

Listo!!!


Enlace Original:

- http://bakery.cakephp.org/articles/sky_l3ppard/2009/11/07/updated-swiftmailer-4-xx-component-with-attachments-and-plugins

miércoles, 15 de diciembre de 2010

Cakephp: Zip Component


Requisitos:

  • Windows XP, o Linux
  • Apache 2 instalado
  • PHP 5 instalado (php_zip)
  • CakePhp 1.2, instalado
  • MySQL 5, opcional

Objetivo:

Implementar un mecanismo para comprimir archivos y/o carpetas.

Instalación:

  1. Copiar este componente a /app/controllers/components/zip.php
Uso:

En el controlador...

class FilesController extends AppController {
var $name = 'Files';
var $components = array('Zip');

function zip() {
// se establece la ruta del folder a comprimir
$folder = WWW_ROOT.'files'.DS.'backup';

// se valida la existencia del folder
if(!file_exists($folder)) {
if(!mkdir($folder)) {
$this->Session->setFlash('Error al crear la carpeta.', 'default', array('class' => 'error'));
return false;
}
}

// se genera el archivo zip
if(is_dir($folder)) {
// se establece la ruta del zip a generar
$dmy_his = date('dmy-his');
$zip_file = $folder.DS.'bk-'.$dmy-his.'.zip';

// se realiza el zip
$this->Zip->begin($zip_file);
$this->Zip->addDir($folder, 'bk-'.$dmy-his);
$this->Zip->close();
if(!file_exists($zip_file)) {
$this->Session->setFlash('Error al generar el archivo zip.', 'default', array('class' => 'error'));
return false;
}

// se forza la descarga del zip generado
$this->redirect('/files/backup/bk-'.$dmy-his.'.zip');
return true;
} else {
$this->Session->setFlash('La carpeta no existe.', 'default', array('class' => 'error'));
return false;
}
}
}

Listo!!!

Enlace Original:

- http://bakery.cakephp.org/articles/SeanCallan/2007/07/18/zip-component

martes, 14 de diciembre de 2010

CakePhp: Webservices con NuSoap


Requisitos:

  • Windows XP, o Linux
  • Apache 2 instalado
  • PHP 5 instalado
  • CakePhp 1.2, instalado
  • MySQL 5, opcional

Objetivo:

Implementar un mecanismo para publicar y/o consumir servicios web.

Instalación:

  1. Copiar esta version hackeada de nusoap a /vendors/nusoap/nusoap.php
  2. Copiar este controlador de los servicios web a /vendors/nusoap/web_services_controller.php
  3. Copiar este componente a /app/controllers/components/soap.php

Uso:

Creando el Servidor

Los servicios estarán publicados en el url http://my_host/my_cake/wsuserservices
(escriba la url en el web browser para ver la información del servicio web)

En el controlador...

App::import('Vendor', 'nusoap/web_services_controller');

class WsuserservicesController extends WebServicesController {
var $name = 'Wsuserservices';
var $uses = null;
var $api = array(
'add'=> array (
'doc' => 'crea un usuario',
'input' => array(
'id' => 'xsd:integer',
'name' => 'xsd:string'
)
),
'name' => array(
'doc' => 'obtiene el nombre de un usuario',
'input' => array(
'id' => 'xsd:integer'
)
'output' => array(
'return' => 'xsd:string'
)
)
);

function add($id, $name) {
$data['User']['id'] = $id;
$data['User']['name'] = $name;
$this->User->save($data);
}

function name($id) {
$this->User->id=$id;
$data=$this->User->read();
return $data[0]['User']['name'];
}
}

Creando el cliente

En el controlador...

class WsclientservicesController extends AppController {
var $name = 'Wsclientservices';
var $components = array('Soap');
var $uses = null;

function getUserName() {
$url = "http://my_host/my_cake/wsuserservices";
$func = 'name';
$param=array(’id’=>’34′);
$name=$this->soap->client($url,$func,$param);
$this->set(’name’,$name);
}

Listo!!!

Enlace Original:

-
http://rossoft.wordpress.com/2006/02/16/webservices-in-cakephp-other-approach/

miércoles, 24 de noviembre de 2010

Perfil Profesional

Analista Desarrollador de aplicaciones web y de escritorio. Capacidad de comunicación a nivel verbal y escrito. Facilidad para trabajar en equipo y bajo presión. Capacidad de análisis y solución de problemas, así como dedicación absoluta para conseguir y mantener altos niveles de calidad.

Las + Populares