Example #1
0
 /**
  *
  * Edit Album form
  *
  */
 public function init()
 {
     $cname = explode('_', get_class());
     $this->preInit(end($cname));
     // use template file
     $this->setDecorators(array(array('ViewScript', array('viewScript' => 'forms/EditAlbum.phtml'))));
     // get group from database
     $request = Zend_Controller_Front::getInstance()->getRequest();
     $album_id = $request->getParam('id');
     $Albums = new Application_Model_Albums();
     $album = $Albums->getAlbum($album_id);
     $username_minchars = Zend_Registry::get('config')->get('username_minchars');
     $username_maxchars = Zend_Registry::get('config')->get('username_maxchars');
     // fields
     $id = new Zend_Form_Element_Hidden('id');
     $id->setValue($album);
     $album_name = new Zend_Form_Element_Text('album_name');
     $album_name->setDecorators(array('ViewHelper', 'Errors'))->addFilter('StringTrim')->addValidator('alnum', false, array('allowWhiteSpace' => true))->addValidator('stringLength', false, array($username_minchars, $username_maxchars))->setErrorMessages(array(sprintf($this->translator->translate('Please choose a valid name between %d and %d characters'), $username_minchars, $username_maxchars)))->setLabel($this->translator->translate('Album Name'))->setRequired(true)->setValue($album['name'])->setAttrib('class', 'form-control');
     $description = new Zend_Form_Element_Textarea('description');
     $description->setDecorators(array('ViewHelper', 'Errors'))->setAttrib('COLS', '')->setAttrib('ROWS', '4')->addFilter('StripTags')->setValue($album['description'])->setLabel($this->translator->translate('About this album'))->setAttrib('class', 'form-control');
     $submit = new Zend_Form_Element_Submit('formsubmit');
     $submit->setDecorators(array('ViewHelper'))->setLabel($this->translator->translate('Save'))->setAttrib('class', 'submit btn btn-default');
     $this->addElements(array($id, $album_name, $description, $submit));
     $this->postInit();
 }
 /**
  * move image to album (via ajax)
  */
 public function moveimageAction()
 {
     $Images = new Application_Model_Images();
     $Albums = new Application_Model_Albums();
     $current_user = Zend_Auth::getInstance()->getIdentity();
     $request = $this->getRequest();
     $image_id = $request->getParam('resource_id');
     $album_id = $request->getParam('album_id');
     // do some basic checks
     if (!$image_id || !$album_id) {
         $this->getHelper('json')->sendJson(false);
     }
     // see if this is a delete
     if ($album_id == 'trash') {
         $ret = $Images->deleteImage($image_id, 'posts');
         $this->getHelper('json')->sendJson($ret);
         return;
     }
     // see if this is "set as profile picture"
     if ($album_id == 'avatar' || $album_id == 'cover') {
         $image = $Images->getImage($image_id);
         $file_name = $image['data']['file_name'];
         $tmp_file_name = 'setas_' . $file_name;
         $Storage = new Application_Model_Storage();
         $StorageAdapter = $Storage->getAdapter();
         $StorageAdapter->getFileFromStorage($file_name, $tmp_file_name, 'posts');
         // save params to session and redirect to edit page
         $session = new Zend_Session_Namespace('Default');
         $pass_params = array('tmp_image' => $tmp_file_name, 'image_type' => $album_id, 'callback' => '', 'profile_name' => $current_user->name);
         $session->pass_params = $pass_params;
         $this->getHelper('json')->sendJson(true);
         return;
     }
     $album = $Albums->getAlbum($album_id);
     // see if this album belongs to the current user
     if (!isset($album['user_id']) || $album['user_id'] != $current_user->id) {
         $this->getHelper('json')->sendJson(false);
     }
     $ret = $Images->updateField($image_id, 'album_id', $album_id);
     if ($album['name']) {
         $ret = $album['name'];
     }
     $this->getHelper('json')->sendJson($ret);
 }
 /**
  * Edit album
  */
 public function editalbumAction()
 {
     $request = $this->getRequest();
     $Albums = new Application_Model_Albums();
     $album_form = new Application_Form_EditAlbum();
     $this->view->album_form = $album_form;
     $total_count = $Albums->getAlbumsCount($this->profile->id);
     $album_id = $request->getParam('id');
     $this->prepareProfile($this->profile);
     $this->prepareImagesAlbumsCount();
     $album = $Albums->getAlbum($album_id);
     $this->view->active_item = $album['name'];
     if ($request->isPost() && $album_form->isValid($_POST)) {
         $album_name = $album_form->getValue('album_name');
         $album_description = $album_form->getValue('description');
         $result = $Albums->updateAlbum($album_id, $album_name, $album_description);
         if ($result) {
             Application_Plugin_Alerts::success($this->view->translate('Album updated'));
         }
         $this->redirect('profiles/editalbum/id/' . $album_id);
     }
 }
 /**
  * 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);
 }