/**
  * Custom background
  */
 public function setbackgroundpictureAction()
 {
     $Profiles = new Application_Model_Profiles();
     $ProfilesMeta = new Application_Model_ProfilesMeta();
     $request = $this->getRequest();
     $request_profile_id = $request->getParam('id', false);
     $profile = $Profiles->getProfileByField('id', $request_profile_id);
     if (Zend_Auth::getInstance()->getIdentity()->role == 'admin' && $request_profile_id) {
         // admin edit
         $profile_id = $request_profile_id;
         $this->view->sidebar_editprofile = $profile;
         // attach sidebar box
         Zend_Registry::get('hooks')->attach('hook_view_sidebar', 5, function () {
             echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/editprofile.phtml');
         });
     } elseif ($request_profile_id && $Profiles->getProfile($profile->name, false, true)) {
         // users pages & groups
         $this->buildMenu(true);
         $profile_id = $request_profile_id;
     } else {
         // user profile
         $this->buildMenu();
         $profile_id = Zend_Auth::getInstance()->getIdentity()->id;
     }
     $profile_name = Zend_Auth::getInstance()->getIdentity()->name;
     $form = new Application_Form_CustomBackground();
     $current_background_file = $ProfilesMeta->getMetaValue('background_file', $profile_id);
     $Storage = new Application_Model_Storage();
     $StorageAdapter = $Storage->getAdapter();
     if ($request->isPost() && $form->isValid($_POST)) {
         // file uploaded?
         if ($form->background->isUploaded()) {
             $form->background->receive();
             // must have
             $receive_path = $form->background->getFileName();
             $filename = $form->background->getValue();
             $extension = strtolower(pathinfo($receive_path, PATHINFO_EXTENSION));
             $tmp_filename = 'profileimage_' . $profile_name . '.' . $extension;
             // delete old tmp image files
             $StorageAdapter->deleteOldTmpFiles(0, 'profileimage_' . $profile_name);
             // move new file to tmp folder
             rename($receive_path, TMP_PATH . '/' . $tmp_filename);
             // check if valid image
             if (!Application_Plugin_ImageLib::isValidImage(TMP_PATH . '/' . $tmp_filename)) {
                 unlink(TMP_PATH . '/' . $tmp_filename);
                 Application_Plugin_Alerts::error($this->view->translate('Server-side error'), 'off');
                 $this->redirect();
                 return;
             }
             // delete old file
             $StorageAdapter->deleteFileFromStorage($current_background_file, 'cover');
             // move uploaded file to permanent location
             $current_background_file = $StorageAdapter->moveFileToStorage($tmp_filename, 'cover');
             // update db
             $ProfilesMeta->metaUpdate('background_file', $current_background_file, $profile_id);
         }
         $ProfilesMeta->metaUpdate('background_repeat', $form->getValue('background_repeat'), $profile_id);
         $ProfilesMeta->metaUpdate('background_scroll', $form->getValue('background_scroll'), $profile_id);
         $ProfilesMeta->metaUpdate('background_stretch', $form->getValue('background_stretch'), $profile_id);
         $ProfilesMeta->metaUpdate('background_noimage', $form->getValue('background_noimage'), $profile_id);
         Application_Plugin_Alerts::success($this->view->translate('Settings updated, please clear your browser cache'), 'off');
     }
     $this->view->image = $current_background_file ? $StorageAdapter->getStoragePath('cover') . $current_background_file : false;
     $this->view->form = $form;
     $this->view->load_colorpicker = true;
 }
 /**
  */
 public function setImage()
 {
     // Form Submitted...
     if ($this->request->isPost() && $this->form->isValid($_POST)) {
         // file uploaded?
         if ($this->form->{$this->file_element}->isUploaded()) {
             $this->form->{$this->file_element}->receive();
             // must have
             $receive_path = $this->form->{$this->file_element}->getFileName();
             $filename = $this->form->{$this->file_element}->getValue();
             $extension = strtolower(pathinfo($receive_path, PATHINFO_EXTENSION));
             if ($this->profile_name) {
                 // delete old tmp image files
                 $Storage = new Application_Model_Storage();
                 $StorageAdapter = $Storage->getAdapter();
                 $StorageAdapter->deleteOldTmpFiles(0, 'profileimage_' . $this->profile_name);
                 $tmp_filename = 'profileimage_' . $this->profile_name . '.' . $extension;
                 // move new file to tmp folder
                 rename($receive_path, TMP_PATH . '/' . $tmp_filename);
                 // check if valid image
                 if (!Application_Plugin_ImageLib::isValidImage(TMP_PATH . '/' . $tmp_filename)) {
                     unlink(TMP_PATH . '/' . $tmp_filename);
                     Application_Plugin_Alerts::error($this->translator->translate('Server-side error'), 'off');
                     $this->redirector->gotoUrl();
                     return;
                 }
                 Application_Plugin_Alerts::success($this->translator->translate('You can adjust the picture here'), 'off');
                 // go back to current page after editing
                 $base_url = Application_Plugin_Common::getFullBaseUrl(false);
                 $callback_url = $base_url . $this->request->getRequestUri() . '/edit_done/1';
                 // save params to session and redirect to edit page
                 $session = new Zend_Session_Namespace('Default');
                 $pass_params = array('tmp_image' => $tmp_filename, 'image_type' => $this->image_type, 'callback' => $callback_url, 'profile_name' => $this->profile_name);
                 $session->pass_params = $pass_params;
                 $this->redirector->gotoUrl('images/edit');
             } else {
                 // here we store site settings images
                 // i.e. network background image
                 $this->form->{$this->file_element}->receive();
                 // must have
                 $receive_path = $this->form->{$this->file_element}->getFileName();
                 $filename = $this->form->{$this->file_element}->getValue();
                 $extension = strtolower(pathinfo($receive_path, PATHINFO_EXTENSION));
                 $file_name = $this->image_type . '.' . $extension;
                 // move new file to public image folder
                 rename($receive_path, PUBLIC_PATH . '/images/' . $file_name);
                 // store to app settings & refresh
                 $app_option_key = $this->image_type;
                 $AppOptions = new Application_Model_AppOptions();
                 $AppOptions->updateOption($app_option_key, $file_name);
                 $current_config = Zend_Registry::get('config');
                 $current_config->{$app_option_key} = $file_name;
                 Zend_Registry::set('config', $current_config);
                 Application_Plugin_Alerts::success($this->translator->translate('Image uploaded'), 'off');
                 $base_url = Application_Plugin_Common::getFullBaseUrl(false);
                 $callback_url = $base_url . $this->request->getRequestUri();
                 // flush url
                 $this->redirector->gotoUrl($callback_url);
             }
         } else {
             if ($this->is_requiered) {
                 // nothing to upload
                 Application_Plugin_Alerts::error($this->translator->translate('Please choose a picture'), 'off');
             }
         }
     }
     // somethig went wrong, image too big?
     if ($this->request->isPost() && !$this->form->isValid($_POST)) {
         Application_Plugin_Alerts::error($this->translator->translate('File not allowed or too big'), 'off');
     }
 }
 /**
  * Receive uploaded files (ajax/blueimp)
  */
 public function receivefileAction()
 {
     $ret = Zend_Registry::get('Zend_Translate')->translate('Server-side error');
     if ($this->getRequest()->isPost()) {
         $Images = new Application_Model_Images();
         $adapter = new Zend_File_Transfer_Adapter_Http();
         $adapter->addValidator('Extension', false, 'jpg,jpeg,png,gif');
         $files = $adapter->getFileInfo();
         $receive_to = $this->getRequest()->getParam('to');
         $form_unique_key = (int) $this->getRequest()->getParam('form_unique_key');
         $current_user_id = Zend_Auth::getInstance()->getIdentity()->id;
         $current_user_role = Zend_Auth::getInstance()->getIdentity()->role;
         foreach ($files as $file => $info) {
             // file uploaded & is valid
             if (!$adapter->isUploaded($file)) {
                 continue;
             }
             if (!$adapter->isValid($file)) {
                 continue;
             }
             // check max file size
             if ($info['size'] > Zend_Registry::get('config')->get('max_file_upload_size')) {
                 continue;
             }
             $filename = $adapter->getFileName($file);
             $extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
             $fileinfo = $adapter->getFileInfo($file);
             $filesize = $fileinfo[$file]['size'];
             $profilename = Zend_Auth::getInstance()->getIdentity()->name;
             $randomstring = Application_Plugin_Common::getRandomString();
             // generate tmp filename
             $tmp_filename = 'post_' . $profilename . '_' . $form_unique_key . '_' . $randomstring . '.' . $extension;
             $tmp_filename_full = TMP_PATH . '/' . $tmp_filename;
             // set to rename uploaded file upon receiving to tmp folder
             $adapter->setDestination(TMP_PATH);
             $adapter->addFilter('rename', $tmp_filename_full);
             // receive the files into the tmp directory, must have
             $adapter->receive($file);
             // check if valid image
             if (!Application_Plugin_ImageLib::isValidImage($tmp_filename_full)) {
                 unlink($tmp_filename_full);
                 continue;
             }
             // check storage limits
             $max_files_per_user = 0 + Zend_Registry::get('config')->get('max_files_per_user');
             $max_storage_per_user = 0 + Zend_Registry::get('config')->get('max_storage_per_user');
             if ($current_user_role == 'user' && ($max_files_per_user || $max_storage_per_user)) {
                 $storage_usage = $Images->getStorageUsage($current_user_id);
                 if ($max_files_per_user && $storage_usage['image_count'] > $max_files_per_user || $max_storage_per_user && $storage_usage['image_size'] > $max_storage_per_user) {
                     $ret = Zend_Registry::get('Zend_Translate')->translate('Storage limits reached');
                     unlink($tmp_filename_full);
                     continue;
                 }
             }
             if ($receive_to !== 'tmp') {
                 // receive to album, check if user is an album owner
                 if ($receive_to > 0) {
                     $Albums = new Application_Model_Albums();
                     $album = $Albums->getAlbum($receive_to);
                     // exit on wrong album
                     if (!$album || $album['user_id'] != $current_user_id) {
                         $this->_helper->json(false);
                         return;
                     }
                 }
                 $Storage = new Application_Model_Storage();
                 $StorageAdapter = $Storage->getAdapter();
                 $original_filename = '';
                 if (Zend_Registry::get('config')->get('resample_images')) {
                     Application_Plugin_ImageLib::resample(TMP_PATH . '/' . $tmp_filename, TMP_PATH . '/thumb_' . $tmp_filename);
                     $image_filename = $StorageAdapter->moveFileToStorage('thumb_' . $tmp_filename, 'posts');
                     if (Zend_Registry::get('config')->get('keep_original')) {
                         $original_filename = $StorageAdapter->moveFileToStorage($tmp_filename, 'posts');
                     } else {
                         $original_filename = '';
                         unlink(TMP_PATH . '/' . $tmp_filename);
                         // clean up
                     }
                 } else {
                     $image_filename = $StorageAdapter->moveFileToStorage($tmp_filename, 'posts');
                 }
                 if ($image_filename) {
                     $ret = $Images->addImage($image_filename, $filesize, $current_user_id, $current_user_id, 0, $receive_to, $original_filename);
                 }
             }
             $ret = true;
         }
     }
     $this->_helper->json($ret);
 }