src/Model/Media/Attachment.php
public function store($uri = null) {

        $fileHandler = $this->container->file;
        $uploadsFolder = $this->config->getParam('site-users-folder', '/users');
        $allowedTypes = $this->allowed;
        if (empty($allowedTypes)):
            $attachmentTypes = $this->config->getParamSection("attachments");
            foreach ($attachmentTypes as $group => $types):
                $allowedTypes = array_merge($allowedTypes, $types);
            endforeach;
        endif;
        //Check User Upload Limit;
        //Check File upload limit;
        //Validate the file

        $fileName = preg_replace('/[^' . $this->_validChars . ']|\.+$/i', "", basename($file['name']));
        if (strlen($fileName) == 0 || strlen($fileName) > $this->_maxNameLength) {
            $this->setError(_("Invalid file name"));
            throw new \Platform\Exception($this->getError());
        }
        //Check that the file has a valid extension
        $fileExtension = $fileHandler->getExtension($fileName);

        if (!array_key_exists(strtolower($fileExtension), $allowedTypes)) {
            $this->setError(_("Attempting to upload an invalid file type"));
            throw new \Platform\Exception($this->getError());
        }
        //The target folder
        //Check that folder exists, otherwise create it and set the appropriate permission;
        $uploadsFolder = FSPATH . $uploadsFolder;
        if (isset($this->_owner)) {
            $uploadsFolder .= DS . $this->_owner;
        }
        $uploadsFolder .= DS . "attachments"; //All uploads are saved in the attachments folder
        $uploadsFolder = str_replace(array('/', '\\'), DS, $uploadsFolder);

        if (!$fileHandler->is($uploadsFolder, true)) { //if its not a folder
            $folderHandler = \Library\Folder::getInstance();
            if (!$folderHandler->create($uploadsFolder)) {
                $this->setError(_("Could not create the target uploads folder. Please check that you have write permissions"));
                throw new \Platform\Exception($this->getError());
            }
        }

        $_uploadFileName = str_replace(array(" "), "_", $fileName);
        $uploadFileName = $uploadsFolder . DS . time().$_uploadFileName; //adding a timestamp to avoid name collisions
        if (!move_uploaded_file($file['tmp_name'], $uploadFileName)) {
            $this->setError(_("Could not move the uploaded folder to the target directory"));
            throw new \Platform\Exception($this->getError());
        }

        //Get the uploaded file extension type.
        $this->_fileType = $fileHandler::getMimeType($uploadFileName);
        //Validate the file MimeType against the allowed extenion type, if fails,
        //delete the file and throw an error.

        foreach (
            array(
                "media_title" => basename($file['name']),
                "media_actor"=> $this->user->get("user_id"),
                "attachment_name" => $fileName,
                "attachment_title" => basename($file['name']), //@todo Wil need to check $file[title],
                "attachment_size" => $file['size'],
                "attachment_src" => str_replace(FSPATH, '', $uploadFileName),
                "attachment_ext" => $fileExtension,
                "attachment_owner" => $this->user->get("user_name_id"),
                "attachment_type" => $this->_fileType
            ) as $property => $value):
            $this->setPropertyValue($property, $value);
        endforeach;

        if (!$this->saveObject(NULL, "attachment")) { //Null because the system can autogenerate an ID for this attachment
            $fileHandler->delete($uploadFileName);
            $this->setError(_("Could not store the attachment properties to the database"));
            throw new \Platform\Exception($this->getError());
        }

        return true;
    }
public function store($uri = null) {

        $fileHandler = $this->container->file;
        $uploadsFolder = $this->config->getParam('site-users-folder', '/users');
        $allowedTypes = $this->allowed;
        if (empty($allowedTypes)):
            $attachmentTypes = $this->config->getParamSection("attachments");
            foreach ($attachmentTypes as $group => $types):
                $allowedTypes = array_merge($allowedTypes, $types);
            endforeach;
        endif;
        //Check User Upload Limit;
        //Check File upload limit;
        //Validate the file

        $fileName = preg_replace('/[^' . $this->_validChars . ']|\.+$/i', "", basename($file['name']));
        if (strlen($fileName) == 0 || strlen($fileName) > $this->_maxNameLength) {
            $this->setError(_("Invalid file name"));
            throw new \Platform\Exception($this->getError());
        }
        //Check that the file has a valid extension
        $fileExtension = $fileHandler->getExtension($fileName);

        if (!array_key_exists(strtolower($fileExtension), $allowedTypes)) {
            $this->setError(_("Attempting to upload an invalid file type"));
            throw new \Platform\Exception($this->getError());
        }
        //The target folder
        //Check that folder exists, otherwise create it and set the appropriate permission;
        $uploadsFolder = FSPATH . $uploadsFolder;
        if (isset($this->_owner)) {
            $uploadsFolder .= DS . $this->_owner;
        }
        $uploadsFolder .= DS . "attachments"; //All uploads are saved in the attachments folder
        $uploadsFolder = str_replace(array('/', '\\'), DS, $uploadsFolder);

        if (!$fileHandler->is($uploadsFolder, true)) { //if its not a folder
            $folderHandler = \Library\Folder::getInstance();
            if (!$folderHandler->create($uploadsFolder)) {
                $this->setError(_("Could not create the target uploads folder. Please check that you have write permissions"));
                throw new \Platform\Exception($this->getError());
            }
        }

        $_uploadFileName = str_replace(array(" "), "_", $fileName);
        $uploadFileName = $uploadsFolder . DS . time().$_uploadFileName; //adding a timestamp to avoid name collisions
        if (!move_uploaded_file($file['tmp_name'], $uploadFileName)) {
            $this->setError(_("Could not move the uploaded folder to the target directory"));
            throw new \Platform\Exception($this->getError());
        }

        //Get the uploaded file extension type.
        $this->_fileType = $fileHandler::getMimeType($uploadFileName);
        //Validate the file MimeType against the allowed extenion type, if fails,
        //delete the file and throw an error.

        foreach (
            array(
                "media_title" => basename($file['name']),
                "media_actor"=> $this->user->get("user_id"),
                "attachment_name" => $fileName,
                "attachment_title" => basename($file['name']), //@todo Wil need to check $file[title],
                "attachment_size" => $file['size'],
                "attachment_src" => str_replace(FSPATH, '', $uploadFileName),
                "attachment_ext" => $fileExtension,
                "attachment_owner" => $this->user->get("user_name_id"),
                "attachment_type" => $this->_fileType
            ) as $property => $value):
            $this->setPropertyValue($property, $value);
        endforeach;

        if (!$this->saveObject(NULL, "attachment")) { //Null because the system can autogenerate an ID for this attachment
            $fileHandler->delete($uploadFileName);
            $this->setError(_("Could not store the attachment properties to the database"));
            throw new \Platform\Exception($this->getError());
        }

        return true;
    }
public function store ( $ uri = null ) { $ fileHandler = $ this -> container -> file ; $ uploadsFolder = $ this -> config -> getParam ( 'site-users-folder' , '/users' ) ; $ allowedTypes = $ this -> allowed ; if ( empty ( $ allowedTypes ) ) : $ attachmentTypes = $ this -> config -> getParamSection ( "attachments" ) ; foreach ( $ attachmentTypes as $ group => $ types ) : $ allowedTypes = array_merge ( $ allowedTypes , $ types ) ; endforeach ; endif ; //Check User Upload Limit; //Check File upload limit; //Validate the file $ fileName = preg_replace ( '/[^' . $ this -> _validChars . ']|\.+$/i' , "" , basename ( $ file [ 'name' ] ) ) ; if ( strlen ( $ fileName ) == 0 || strlen ( $ fileName ) > $ this -> _maxNameLength ) { $ this -> setError ( _ ( "Invalid file name" ) ) ; throw new \ Platform \ Exception ( $ this -> getError ( ) ) ; } //Check that the file has a valid extension $ fileExtension = $ fileHandler -> getExtension ( $ fileName ) ; if ( ! array_key_exists ( strtolower ( $ fileExtension ) , $ allowedTypes ) ) { $ this -> setError ( _ ( "Attempting to upload an invalid file type" ) ) ; throw new \ Platform \ Exception ( $ this -> getError ( ) ) ; } //The target folder //Check that folder exists, otherwise create it and set the appropriate permission; $ uploadsFolder = FSPATH . $ uploadsFolder ; if ( isset ( $ this -> _owner ) ) { $ uploadsFolder .= DS . $ this -> _owner ; } $ uploadsFolder .= DS . "attachments" ; //All uploads are saved in the attachments folder $ uploadsFolder = str_replace ( array ( '/' , '\\' ) , DS , $ uploadsFolder ) ; if ( ! $ fileHandler -> is ( $ uploadsFolder , true ) ) { //if its not a folder $ folderHandler = \ Library \ Folder :: getInstance ( ) ; if ( ! $ folderHandler -> create ( $ uploadsFolder ) ) { $ this -> setError ( _ ( "Could not create the target uploads folder. Please check that you have write permissions" ) ) ; throw new \ Platform \ Exception ( $ this -> getError ( ) ) ; } } $ _uploadFileName = str_replace ( array ( " " ) , "_" , $ fileName ) ; $ uploadFileName = $ uploadsFolder . DS . time ( ) . $ _uploadFileName ; //adding a timestamp to avoid name collisions if ( ! move_uploaded_file ( $ file [ 'tmp_name' ] , $ uploadFileName ) ) { $ this -> setError ( _ ( "Could not move the uploaded folder to the target directory" ) ) ; throw new \ Platform \ Exception ( $ this -> getError ( ) ) ; } //Get the uploaded file extension type. $ this -> _fileType = $ fileHandler :: getMimeType ( $ uploadFileName ) ; //Validate the file MimeType against the allowed extenion type, if fails, //delete the file and throw an error. foreach ( array ( "media_title" => basename ( $ file [ 'name' ] ) , "media_actor" => $ this -> user -> get ( "user_id" ) , "attachment_name" => $ fileName , "attachment_title" => basename ( $ file [ 'name' ] ) , //@todo Wil need to check $file[title], "attachment_size" => $ file [ 'size' ] , "attachment_src" => str_replace ( FSPATH , '' , $ uploadFileName ) , "attachment_ext" => $ fileExtension , "attachment_owner" => $ this -> user -> get ( "user_name_id" ) , "attachment_type" => $ this -> _fileType ) as $ property => $ value ) : $ this -> setPropertyValue ( $ property , $ value ) ; endforeach ; if ( ! $ this -> saveObject ( NULL , "attachment" ) ) { //Null because the system can autogenerate an ID for this attachment $ fileHandler -> delete ( $ uploadFileName ) ; $ this -> setError ( _ ( "Could not store the attachment properties to the database" ) ) ; throw new \ Platform \ Exception ( $ this -> getError ( ) ) ; } return true ; }
Saves options to the database, inserting if none exists or updating on duplicate key

@param array $options An array of options
@param string $group A unique string representing the options group
@return boolean true. Will throw an exception upon any failure.
Saves options to the database inserting if none exists or updating on duplicate key