edgar.dueñas
Enviado por edgar.dueñas el Mié, 11/05/2016 - 12:27

Actualizando el nodo directamente desde Hook_cron. Está cambiando el estado de los "informes" de nodos creados 7 días antes de la fecha actual.

/ **
 * Cambio de estado del nodo "reporte_campo" creado 7as antes de la fecha actual
 * Hook_crone
 * / 
function hook_cron ( ) {
 
    $ date = date ( "Ymd H: i: s" ) ;
    $ date_lock_unix = strtotime ( $ date ) - 604800 ; // 7 días antes de la fecha actual 
    $ date_lock = date ( "Ymd H: i: s" , $ date_lock_unix ) ;
 
    $ queryCancelado = new EntityFieldQuery ( ) ;
    // Nodos de consulta del tipo de contenido "informes" 
    $ resultActive = $ queryCancelado - > entityCondition ( 'entity_type' , 'node' ) 
        - > entityCondition ( 'bundle' , 'reports' ) 
        - > propertyCondition ( 'status' , 1 ) 
        - > fieldCondition ( 'field_estado_reporte' ,, '300' , '! =' ) 
        - > fieldCondition ( 'field_fecha_del_reporte' , 'value' , $ date_lock , '<=' ) 
        - > addTag ( ' DANGEROUS_ACCESS_CHECK_OPT_OUT ' )  // acceso de omisión check 
        - > execute ( ) ;
 
    if  ( isset ( $ resultActive [ 'node' ] ) )  { 
        $ news_items_nids = array_keys ( $ resultActive [ 'node' ] ) ;
        // Actualizar la tabla directamente 
        db_update ( 'field_data_field_estado_reporte' ) 
            - > fields ( array ( 'field_estado_reporte_tid' = >  '300' ) )  // Cambiar el estado a "cerrado" 
            - > condición ('entity_id' , $ news_items_nids ) 
            - > execute ( ) ;
        // Borrar la memoria caché 
        drupal_flush_all_caches ( ) ;
    } 
}