jmcneese / permissionable

A CakePHP 1.3 plugin that provides UNIX-like row-level permissions for model data.
http://jmcneese.wordpress.com/2010/01/28/rmac-is-dead-long-live-rmac/
MIT License
50 stars 8 forks source link

drops belongsTo relationships when fields=>null #5

Open mixersoft opened 14 years ago

mixersoft commented 14 years ago

example: $this->Model->read(null, $id)

fix:

    if (is_array($queryData['fields'])) {

        $queryData['fields'][] = "{$alias}.*";

    } elseif(!empty($queryData['fields'])) {

        $queryData['fields'] = array(
            $queryData['fields'],
            "{$alias}.*"
        );

    } else {
        $queryData['fields'] = array(
            "{$Model->alias}.*",
            "{$alias}.*"
        );

// add this line in behavior to fix if (isset($Model->belongsTo)) { $belongsToModels = array_keys($Model->belongsTo); foreach( $belongsToModels as $belongsTo_alias ){ $queryData['fields'][] = $belongsTo_alias.'.*'; } }

    }
mixersoft commented 14 years ago

try this instead:

        if ( $Model->recursive > -1 && isset($Model->belongsTo)) {
            $belongsToModels = array_keys($Model->belongsTo);
            foreach( $belongsToModels as $belongsTo_alias ){
                $queryData['fields'][] = $belongsTo_alias.'.*';
            }
        }
mixersoft commented 13 years ago

The problem is also present when you use both Containable + Permissionable and expect to add fields from Containable. $options = array( 'contain'=>array('Owner.id', 'Owner.username'), 'fields'=>'Group.*', // MUST ADD 'fields' for containable+permissionable // 'permissionable'=>false, 'conditions'=>array('Group.id'=>$id), );