/** * 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); }