In fact, i don't need to use make method in my add fonction.
I just saw it enough to have dirname and basename for Generator
Behavior makes the versions.
Anyway, i think the real problem is why $Model->exists() return false
in BeforeSave method in Coupler Behavior
Is it normal? Am I missing something

my new app/model/mediafile.php :

class Mediafile extends AppModel{
        var $name = "Mediafile";

        //media plugin behaviors
        var $actsAs = array(
                'Media.Coupler' => array(
                        'baseDirectory' => MEDIA_TRANSFER,
                        'filterDirectory' => MEDIA_FILTER
                ),
                'Media.Generator' => array(
                        'baseDirectory' => MEDIA_TRANSFER,
                        'filterDirectory' => MEDIA_FILTER,
                        'createDirectory' => true,
                        'overwrite' => true
                ),
                'Media.Polymorphic'
        );

        //file validation which only allowed jpeg and png to be uploaded
        var $validate = array(
                'file' => array(
                        'mimeType' => array(
                                'rule' => array('checkMimeType', false, array( 
'image/jpeg',
'image/png'))
                        )
                )
        );

        var $belongsTo = array(
                'User' => array(
                        'className' => 'User',
                        'foreignKey' => 'foreign_key',
                        'conditions' => '',
                        'fields' => '',
                        'order' => ''
                ),
                'Homeslide' => array(
                        'className' => 'Homeslide',
                        'foreignKey' => 'foreign_key',
                        'conditions' => '',
                        'fields' => '',
                        'order' => ''
                )
        );

        // delete filters files
        public function beforeDelete($cascade = true) {
        if (!$cascade) {
            return true;
        }

        $result = $this->find('first', array(
            'conditions' => array($this->primaryKey => $this->id),
            'fields'     => array('dirname', 'basename'),
            'recursive'  => -1
        ));
        if (empty($result)) {
            return false;
        }

        $pattern  = MEDIA_FILTER . "*/";
        $pattern .= $result[$this->alias]['dirname'] . '/';
        $pattern .= pathinfo($result[$this->alias]['basename'],
PATHINFO_FILENAME);

        $files = glob("{$pattern}.*");

        $name = Mime_Type::guessName($result[$this->alias]
['basename']);
        $versions = array_keys(Configure::read('Media.filter.' .
$name));

        if (count($files) > count($versions)) {
            $message  = 'MediaFile::beforeDelete - ';
            $message .= "Pattern `{$pattern}` matched more than number
of versions. ";
            $message .= "Failing deletion of versions and record for
`Media@{$this->id}`.";
            CakeLog::write('warning', $message);
            return false;
        }

        foreach ($files as $file) {
            $File = new File($file);

            if (!$File->delete()) {
                return false;
            }
        }
        return true;
    }

}

Thanks for your help

On 5 avr, 10:59, David Persson <nper...@gmx.de> wrote:
> Hi,
>
> The coupler behavior's beforeSave method looks like it is doing too much
> having too many sideeffects. I'll take a look at it and see if I can reduce
> those to a mininum. Will get back and post the results than.
>
> - David

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to