Forums / Developer / Can't preview file datatype before...

"Please Note:
  • At the specific request of Ibexa we are changing this projects name to "Exponential" or "Exponential (CMS)" effective as of August, 11th 2025.
  • This project is not associated with the original eZ Publish software or its original developer, eZ Systems or Ibexa".

Can't preview file datatype before...

Author Message

Issam MOUZOUN

Monday 21 December 2009 8:07:40 am

Hello,

 

I develop a subscription module, any people can subscribe and must attach file (ezbinaryfile) and wait my approbation,.

 

My problem is i can't preview the attached document during before approving

I developp with ez 4.1.3

Thanks

Jérôme Vieilledent

Tuesday 22 December 2009 12:30:30 am

Hi Issam

Maybe you should give a try to eZ Approve 2. It's much more advanced thant standard eZ Approve workflow.

Anyway, I'm surprised that you can't preview the binary file. I just tested on my 4.2 instance and it smells like a bug in content/download module...

Jérôme Vieilledent

Tuesday 22 December 2009 1:15:03 am

OK, I found out where the problem is, and this is a registered bug.
When running content/download, Exponential will check the node assignments of the attribute parent object. But in that case, the object has no node assignment because it's not published yet !
Problem occurs in kernel/content/download.php, lines 52 to 79

// Get locations.
$nodeAssignments = $contentObject->attribute( 'assigned_nodes' );
if ( count( $nodeAssignments ) === 0 )
{
    // oops, no locations. probably it's related object. Let's check his owners
    $ownerList = eZContentObject::fetch( $contentObjectID )->reverseRelatedObjectList( false, false, false, false );
    foreach ( $ownerList as $owner )
    {
        if ( is_object( $owner ) )
        {
            $ownerNodeAssignments = $owner->attribute( 'assigned_nodes' );
            $nodeAssignments = array_merge( $nodeAssignments, $ownerNodeAssignments );
        }
    }
}

// If exists location that current user has access to and location is visible.
$canAccess = false;
foreach ( $nodeAssignments as $nodeAssignment )
{
    if ( ( eZContentObjectTreeNode::showInvisibleNodes() || !$nodeAssignment->attribute( 'is_invisible' ) ) and $nodeAssignment->canRead() )
    {
        $canAccess = true;
        break;
    }
}
if ( !$canAccess )
    return $Module->handleError( eZError::KERNEL_NOT_AVAILABLE, 'kernel' );