Instalar composer en Ubuntu

Los siguientes pasos son para una instalación global de composer:

1. Descargar el instalador en el directorio actual:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

2. Verificar la integridad del instalador:

php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

3. Correr el instalador:

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

4. Remover/borrar el archivo instalador:

php -r "unlink('composer-setup.php');"

Ejemplo timbrado webservice folios digitales PHP

Folios Digitales como Proveedor de Servicios de Expedición de Comprobante Fiscal Digital a través de Internet, ofrece sus servicios de timbrado conforme a los nuevos requerimientos especificados para realizar las validaciones
de los CFDI exigidos por el SAT.
El servicio de conexión de Folios Digitales permite enviar un XML desde nuestro propio aplicativo (ERP) y recibir el CFDI ya timbrado.

La URL de acceso al Web Service de Pruebas es la siguiente:
https://www.foliosdigitalespac.com/WSTimbrado33Test/WSCFDI33.svc?WSDL

El método TimbrarCFDI es el encargado de emitir el comprobante fiscal, y recibe los siguientes parametros:

– usuario: (Requerido) Usuario FD que va a realizar la petición.
– password: (Requerido) Contraseña de autenticación del usuario.
– cadenaXML: (Requerido) Contenido del XML con la información del comprobante.
– referencia: (Requerido) Referencia única que desee asignar el cliente al CFDI timbrado.

Ejemplo básico de timbrado en el lenguaje PHP:

// Variable que debera contener el XML del CFDI
$cfdi = '<xml>';

// Variable que contiene la direccion del WSDL
$URL_WS = 'https://www.foliosdigitalespac.com/WSTimbrado33Test/WSCFDI33.svc?WSDL'; 


// Conexion con el PAC

$pac = new SoapClient($URL_WS, array('trace' => TRUE,'connection_timeout'=>15));
        

// Declarar parametros a enviar
        
$username = new SoapVar('usuario',XSD_STRING);
$password = new SoapVar('password',XSD_STRING);
$xml = new SoapVar($cfdi,XSD_STRING);


// Timbrar

$result = $pac->__soapCall('TimbrarCFDI', array('parameters' => array('usuario' => $username, 'password' => $password, 'cadenaXML'=>$xml, 'referencia' => 'Test')));


// Resultado

if ($result->TimbrarCFDIResult->OperacionExitosa) {
    // UUID
    $uuid = $result->TimbrarCFDIResult->Timbre->UUID;
    // Mensaje
    $mensaje = $result->TimbrarCFDIResult->MensajeError;
    // XML timbrado
    $xml_timbrado = $result->TimbrarCFDIResult->XMLResultado
} else {
    echo "Error al timbrar";
}

Instalar SOAP para PHP en Ubuntu

El proceso de instalación de SOAP es muy sencillo, abre una ventana de la terminal y ejecuta los siguiente comandos:

PHP 5.6

$ sudo sudo apt-get install php5.6-soap

$ sudo service apache2 restart

 

PHP 7.0

$ sudo sudo apt-get install php7.0-soap

$ sudo service apache2 restart

 
 

Recuerda reiniciar el servicio de Apache o Nginx

Generar códigos de barras desde PHP


En esta ocasión vamos a ver un ejemplo muy sencillo para generar códigos de barras desde PHP.
Utilizaremo la libreria Barcode la cual puedes descargar desde https://github.com/davidscotttufts/php-barcode

Una vez descargues la libreria, debes descomprimirla en el folder donde vamos a trabajar con el ejemplo, también debes crear una carpeta donde van a almacenarse los codigos generados en formato PNG, a esta última carpeta debes asignarle los permisos necesarios si estas trabajando en Linux.

Ahora creamos el archivo PHP para generar los códigos:

<?php
/*
 *  Script que genera un codigo de barras con
 *  la libreria barcode.php
 */

include 'barcode.php';

$codigo = '000100255590';

barcode('codigos/' . $codigo . '.png', $codigo, 50, 'horizontal', 'code128', true);

?>

<img src="codigos/<?php echo $codigo . '.png'; ?>">

Para este ejemplo, la carpeta donde almacenamos los codigos en formato PNG se llama «codigos».

La funcion barcode recibe los siguientes parametros:

1.- Filepath: ruta y nombre del archivo donde se almacenará la imagen.
2.- Text: Código
3.- Size: Tamaño para la generación del código
4.- Orientation: (para este ejemplo horizontal)
5.- Code type: Formato del código (para este ejemplo code128)
6.- Print: True – Imprime codigo de barras y la clave del codigo, False – Imprime solo el código de barras.

Con un poco de mas creatividad y con la ayuda de la libreria FPDF puedes conseguir crear códigos de barras más personalizados y de mejor calidad, como en las siguientes imagenes:

Archivo de conexión a la Base de Datos en OSClass

En OSClass el archivo que contiene la información necesaria para poder establecer la conexión a la Base de datos se encuentra en raíz y lleva el nombre de config.php, si revisas este archivo te encontrarás las siguientes lineas que determinan la configuración de la conexión a la Base de Datos de tu proyecto:

/** MySQL database name for OSClass */
define('DB_NAME', 'osclass');

/** MySQL database username */
define('DB_USER', 'root');

/** MySQL database password */
define('DB_PASSWORD', 'pass');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Table prefix */
define('DB_TABLE_PREFIX', 'oc_');

Como puedes observar la información es mas que clara y se determinan los siguientes parametros:

  • Nombre de la Base de Datos
  • Usuario
  • Contraseña
  • Nombre del Host (generalmente localhost)
  • Prefijo para las tablas de la D.B.

Así, si en un futuro te ves en la necesidad de cambiar el nombre a tu base de datos o modificar la contraseña de tu usuario (por citar un ejemplo), ya sabes que archivo modificar.

Obtener las subcategorias de una categoria en WordPress

Estos ultimos días he estado diseñando un template para WordPress, y en esta ocasión quiero compartir con ustedes la forma de obtener las subcategorias de una categoria por medio del Slug de esta última, para ello utilizamos la function get_category_by_slug()


<?php
// Obtenemos la informacion de las subcategorias contenidas en la categoria "work"
$idObj = get_category_by_slug('work'); 
$categories = get_categories(array('child_of' => $idObj->term_id)); 

print_r($categories);  // para ver toda la informacion contenida en el array $categories

// Por ejemplo, imprimimos el nombre de las subcategorias
foreach ($categories as $category) : 
    echo $category->name;
endforeach;
 
?>

PHP envío de parámetros a una función SOAP

Estos días he estado trabajando con la conexión a un Servicio Web al cual tenía que enviarle un array de argumentos a uno de los métodos del objeto SoapClient también llamados funciones SOAP, algo que hay que tomar en cuenta es que la mayoría de los servidores SOAP requieren que los nombres de los parámetros sean enviados en formato de array asociativo, de la siguiente forma:

// Conexion al Web Service
$client = new SoapClient("url.wsdl", array('trace' => TRUE,'connection_timeout'=>15));

$user = new SoapVar('valoruser',XSD_STRING);
$password = new SoapVar('valorpassword',XSD_STRING);
$token = new SoapVar('valortoken',XSD_STRING);

// Realizamos la llamada a la funcion SOAP (validar)
$result = $client->__soapCall('validar',array('parameters' => array('username'=>$user,'password'=>$password,'token'=>$token)));

Fuente:
http://php.net/manual/es/soapclient.soapcall.php

PHP SoapVar parámetro XML

El día me di a la tarea de consumir un web service al cual tenia que enviar un XML como parametro a una de sus funciones. Es bastante sencillo, y después de investigar quedó de la forma siguiente:


try {
    // Conexion al web service
    $client = new SoapClient("url.wsdl", array('trace' => TRUE,'connection_timeout'=>15));

    $varXml = new SoapVar($xml,XSD_ANYXML,null,null,null);

    // Llamamos a la función que recibe como parametro el XML
    // el resultado lo asignamos a la variable $result.
    $result = $client->function($varXml);
} catch (Exception $e) {
    // Codigo
}

Donde:

$xml es la variable que contiene el XML.

Enviar correo con PHPMailer y Gmail

Ejemplo sencillo de como enviar un email utilizando la librería de PHPMailer y una cuenta de Gmail.

include ("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();
$mail->Host     = "ssl://smtp.gmail.com";
$mail->Port     = 465;
$mail->SMTPAuth = true;

$mail->Username = "usuario@gmail.com";
$mail->Password = "password";

$mail->From     = "usuario@gmail.com";
$mail->FromName = "Webmaster";

$mail->Subject  = "Prueba desde Gmail";
$mail->WordWrap = 50;

$mail->AddAttachment("/path/to/file.zip");                // archivo adjunto
$mail->AddAttachment("/path/to/image.jpg", "image2.jpg"); // archivo adjunto

$mail->AddAddress("usuario@dominio.com");                 // Correo destino
$mail->IsHTML(TRUE);

$mail->Body = "Mensaje de prueba";

if(!$mail->Send()) {
    echo "Error: " . $mail->ErrorInfo;
} else {
    echo "Mensaje enviado";
}

Links:

http://sourceforge.net/projects/phpmailer/?source=directory
http://code.google.com/a/apache-extras.org/p/phpmailer/
https://github.com/Synchro/PHPMailer