El siguiente post que encontré nos muestra algunas reglas para escribir código estándar en php según los estándares que propone PEAR. Pueden ver esta información http://dotpress.wordpress.com/2007/03/29/pear-estandares-de-desarrollo-para-php/
Saludos ...
lunes, 19 de mayo de 2008
viernes, 9 de mayo de 2008
Función en Drupal 5.x para setear mensaje
Para setear un mensaje general la api de drupal nos ofrece una función. Esta función es drupal_set_message. Puede ser utilizada dentro de nuestros módulos para efectuar un mensaje al sistema.
Sintáxis
array drupal_set_message($message = null, $type = 'status', $repeat = true)
Parámetros
Fuente: http://api.drupal.org/api/function/drupal_set_message
Saludos ...
Sintáxis
array drupal_set_message($message = null, $type = 'status', $repeat = true)
Parámetros
- $message: mensaje que vamos a mandar para que la función lo coloque.
- $type: es el tipo de mensaje. Tiene las siguientes opciones:
- 'status'
- 'warning'
- 'error' --> normalmente color rojo
- $repeat: si es false el mensaje no se repetirá.
1.
2. function drupal_set_message($message = NULL, $type = 'status', $repeat = TRUE) {
3. if ($message) {
4. if (!isset($_SESSION['messages'])) {
5. $_SESSION['messages'] = array();
6. }
7.
8. if (!isset($_SESSION['messages'][$type])) {
9. $_SESSION['messages'][$type] = array();
10. }
11.
12. if ($repeat || !in_array($message, $_SESSION['messages'][$type])) {
13. $_SESSION['messages'][$type][] = $message;
14. }
15. }
16.
17. // messages not set when DB connection fails
18. return isset($_SESSION['messages']) ? $_SESSION['messages'] : NULL;
19. }
20. ?>Fuente: http://api.drupal.org/api/function/drupal_set_message
Saludos ...
jueves, 8 de mayo de 2008
Función hook_access Drupal 5.x
El hook access dentro del api drupal 5.x para el desarrollo de módulos nos ayuda a definir los permisos de acceso (por ejemplo para crear un tipo de nodo). La cuenta administrativa (con id #1 en la tabla) no tendrá problema para pasar por los permisos de acceso de cualquier módulo. Si no se define este hook para un módulo que defina un tipo de dato, todos los controles de acceso fallarán y sólo el administrador o los usuarios que tengan el permiso "administrar nodos" podrán verlos.
Parámetros:
$op: es la operación a realizar. Por ejemplo:
Se retorna true si la acción se puede realizar, de lo contrario, se retorna false.
Ej.
Saludos ...
Parámetros:
$op: es la operación a realizar. Por ejemplo:
- create
- delete
- update
- delete
- view
Se retorna true si la acción se puede realizar, de lo contrario, se retorna false.
Ej.
1.
2. function hook_access($op, $node) {
3. global $user;
4.
5. if ($op == 'create') {
6. return user_access('create stories');
7. }
8.
9. if ($op == 'update' || $op == 'delete') {
10. if (user_access('edit own stories') && ($user->uid == $node->uid)) {
11. return TRUE;
12. }
13. }
14. }
15. ?>Fuente: http://drupa.org/api/function/hook_access/5Saludos ...
Presentación sobre Programación Orientada a Objetos - Conceptos y su uso en php
Aquí les dejo una presentación que realizé para mi curso de php. Más adelante agrego los ejemplos.
Saludos ...
Saludos ...
Custom URL's en Drupal 5.x
Para cambiar el estilo las url's de nuestro sitio en drupal (por ejemplo www.example.com/node/14 a www.example.com/articulo/14) tenemos una función que nos puede ayudar.
Esta función es custom_url_rewrite. A continuación les dejo un ejemplo de modificar la url con node por articulo.
Donde si el parámetro $op es 'source' quiere decir que hay que traducirla para el código y si es 'alias' se hace la traducción para la url.
Esta función se guarda en el archivo settings.php de nuestro sitio (por ejemplo ejemplo/sites/default/settings.php)
Saludos ...
Esta función es custom_url_rewrite. A continuación les dejo un ejemplo de modificar la url con node por articulo.
1.
2. function custom_url_rewrite($op, $result, $path) {
3. if ($op == 'alias') {
4. if (preg_match('|^node/(.*)|', $path, $matches)) {
5. return 'articulo/'. $matches[1];
6. }
7.
8. }
9. if ($op == 'source') {
10. if (preg_match('|^articulo(/.*)|', $path, $matches)) {
11. return 'node'. $matches[1];
12. }
13.
14. }
15. return $result;
16. }
17. ?>
Donde si el parámetro $op es 'source' quiere decir que hay que traducirla para el código y si es 'alias' se hace la traducción para la url.
Esta función se guarda en el archivo settings.php de nuestro sitio (por ejemplo ejemplo/sites/default/settings.php)
Saludos ...
viernes, 25 de abril de 2008
Presentación sobre SQL - Conceptos
Aquí les dejo con una presentación que hice para un Curso de PHP que estoy impartiendo. El fin es explicar los principales conceptos del lenguajes SQL.
martes, 22 de abril de 2008
mysql_num_rows vs. SQl - SELECT COUNT(*)
Haciendo una paginación para un proyecto me dió la curiosidad de verificar cuál método es más efectivo para contar el total de registros. Bueno a pesar de ser obvio que con sql count(*) sería más rápido, me propuse hacer las pruebas y estos fueron los resultados:
Conclusión
A las personas que todavía realizan las paginaciones con mysql_num_rows, preferiblemente usen sql (función COUNT(*)).
Saludos ...
- Prueba con SELECT COUNT(*) FROM tabla
Fecha: 22/04/2008 11:35:17 am
Test con count(*) - registros = 44069
Tiempo 0.00441598892212 segundos - Prueba mysql_num_rows
Fecha: 22/04/2008 11:35:21 am
Test con mysql_affected_rows - registros = 44069
Tiempo 59.3658621311 segundos
1.
2. require('../benchmark.php');
3. $caso = 'mysql';
4. $file = '../var/bench_databasecount.txt';
5. try{
6. Benchmark::startBenchmark($file);
7. $conn = mysql_connect('localhost', 'root', 'pannet1');
8. mysql_select_db('test', $conn);
9. switch($caso){
10. case 'count':
11. $sql = "SELECT COUNT(*) as contador FROM tabla";
12. $rs = mysql_query($sql, $conn);
13. $count = mysql_fetch_array($rs);
14. Benchmark::pushLog('Test con count - registros = '.$count['contador']."\n", $file);
15. break;
16. case 'mysql':
17. $sql = "SELECT * FROM tabla";
18. $rs = mysql_query($sql, $conn);
19. $count = mysql_num_rows($rs);
20. Benchmark::pushLog('Test con mysql_affected_rows - registros = '.$count ."\n", $file);
21. break;
22.
23. }
24. Benchmark::endBenchmark($file);
25. echo 'Termino';
26. }catch(Exception $e){
27. echo $e->getMessage();
28. }
29. ?>
30.
31.Conclusión
A las personas que todavía realizan las paginaciones con mysql_num_rows, preferiblemente usen sql (función COUNT(*)).
Saludos ...
Suscribirse a:
Entradas (Atom)
