eZ Community » Forums » Developer » cronjobs hide /unhide
expandshrink

cronjobs hide /unhide

cronjobs hide /unhide

Wednesday 17 February 2010 2:35:53 pm - 5 replies

Hello,

I am trying to make an unHide cronjob so I made some changes for unhide.php based on the hide.php as follows (I added comments to the changed lines), please also check my other comment at http://share.ez.no/forums/developer/cronjobs-hide-unhide

<code>

<?php
//
// Created on: <21-Jan-05 16:00:52 kk>
//
// SOFTWARE NAME: eZ publish
// SOFTWARE RELEASE: 3.10.0
// BUILD VERSION: 20254
// COPYRIGHT NOTICE: Copyright (C) 1999-2007 eZ systems AS
// SOFTWARE LICENSE: GNU General Public License v2.0
// NOTICE: >
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2.0 of the GNU General
// Public License as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of version 2.0 of the GNU General
// Public License along with this program; if not, write to the Free
// Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
// MA 02110-1301, USA.
//
//
/*! \file hide.php
*/
include_once( "kernel/classes/ezcontentobjecttreenode.php" );
include_once( "lib/ezutils/classes/ezini.php" );
$ini =& eZINI::instance( 'content.ini' );
$rootNodeIDList = $ini->variable( 'HideSettings','RootNodeList' );
$hideAttributeArray = $ini->variable( 'HideSettings', 'HideDateAttributeList' );
$hideClasses = array_keys( $hideAttributeArray );
$currrentDate = time();
$offset = 0;
$limit = 20;
foreach( $rootNodeIDList as $nodeID )
{
$rootNode = eZContentObjectTreeNode::fetch( $nodeID );
while( true )
{
$nodeArray =& $rootNode->subTree( array( 'ClassFilterType' => 'include',
'ClassFilterArray' => $hideClasses,
'Offset' => $offset,
'Limit' => $limit ) );
if ( !$nodeArray ||
count( $nodeArray ) == 0 )
{
break;
}
$offset += $limit;
foreach ( array_keys( $nodeArray ) as $key )
{
$node =& $nodeArray[$key];
$dataMap =& $node->attribute( 'data_map' );
$dateAttributeName = $hideAttributeArray[$node->attribute( 'class_identifier' )];
if ( !$dateAttributeName )
{
continue;
}
$dateAttribute =& $dataMap[$dateAttributeName];
if ( is_null( $dateAttribute ) || !$dateAttribute->hasContent() )
{
continue;
}
$date = $dateAttribute->content();
$retractDate = $date->attribute( 'timestamp' );

///////////////////////// changed !$node->attribute( 'is_hidden' ) to $node->attribute( 'is_hidden' )
if ( $retractDate > 0 && $retractDate < $currrentDate && $node->attribute( 'is_hidden' ) )
{
///////////////////////// changed hideSubTree to unhideSubTree
eZContentObjectTreeNode::unhideSubTree( $node );
if ( !$isQuiet )
{
$cli->output( 'unHiding node : ' . $node->attribute( 'node_id' ) );
}
}
}
}
}
?>
?>

</code>

It's a project using ezp 3.10 version!

Q: Could this work for me (please take a look at http://share.ez.no/forums/developer/cronjobs-hide-unhide) ?

Thanks

Modified on Wednesday 17 February 2010 2:38:05 pm by Jorge estévez

Wednesday 17 February 2010 4:13:25 pm

Hello again,

I got deeper and made some slight changes to the unhide.php specially:

if ( $retractDate > 0 && $currrentDate > $retractDate )

I have unhide.php running, but I encountered a problem: While searching for nodes It does not consider a hidded nodes, I need to take those hidden nodes into consideration (in fact those are the ones I need to process) cause the main issue here is to unhide them....
I assume that this is where I need to make changes to include hidden nodes:

$nodeArray =& $rootNode->subTree( array( 'ClassFilterType' => 'include',
'ClassFilterArray' => $unhideClasses,
'Offset' => $offset,
'Limit' => $limit ) );

How?
I need some help... thanks

Modified on Wednesday 17 February 2010 4:15:00 pm by Jorge estévez

Wednesday 17 February 2010 4:51:34 pm

I added:

<code>

$fetchHidden = true;

$nodeArray =& $rootNode->subTree( array( 'ClassFilterType' => 'include',
'ClassFilterArray' => $unhideClasses,
'Offset' => $offset,
'Limit' => $limit,
'FetchHidden' => $fetchHidden ) );

</code>

Hidden nodes are not fetched...

Wednesday 17 February 2010 10:49:01 pm

Hello,

there already something about unhide .

check here http://www.mugo.ca/Products/Hide-Until-Date

Thursday 18 February 2010 11:03:24 am

Hi,

the hide cronjob is useless for big sites, see bug report: http://issues.ez.no/IssueView.php?Id=14831&activeItem=1

Friday 19 February 2010 5:16:36 pm

Hello,

I think I have the solution, I have posted all at http://issues.ez.no/IssueView.php?Id=14831& the scripts to hide and unhide nodes and it's childs.

Thanks to all...

I think it will work for versions 3.10+

expandshrink

You must be logged in to post messages in this topic!

36 542 Users on board!

Forums menu

Proudly Developed with from