public static function uploadAttributeImage($details, $customSetParam, $db, $table, $name, $attributeID, $uploader_username)
 {
     $imageKeys = array();
     foreach ($details['name'] as $k => $v) {
         $imageKeys[] = $k;
     }
     Zend_Debug::dump($imageKeys);
     foreach ($imageKeys as $k => $v) {
         $hasImageError = false;
         $price_offset = $customSetParam[$name]['price'][$v];
         $detail_name = $customSetParam[$name]['name'][$v];
         $file['name'] = $details['name'][$v];
         $file['type'] = $details['type'][$v];
         $file['tmp_name'] = $details['tmp_name'][$v];
         $file['error'] = $details['error'][$v];
         $file['size'] = $details['size'][$v];
         //$file = $image;
         switch ($file['error']) {
             case UPLOAD_ERR_OK:
                 //echo "upload okay";
                 break;
             case UPLOAD_ERR_FORM_SIZE:
                 //$this->messenger->addMessage('The uploaded file is too large');
                 break;
             case UPLOAD_ERR_PARTIAL:
                 //$this->messenger->addMessage('The uploaded file was too large');
                 break;
             case UPLOAD_ERR_NO_FILE:
                 //$this->messenger->addMessage('No file was uploaded');
                 $hasImageError = true;
                 break;
             case UPLOAD_ERR_NO_TMP_DIR:
                 //$this->messenger->addMessage('Temporary folder not found');
                 $hasImageError = true;
                 break;
             case UPLOAD_ERR_CANT_WRITE:
                 //$this->messenger->addMessage('Unable to write file');
                 $hasImageError = true;
                 break;
             case UPLOAD_ERR_EXTENSION:
                 //$this->messenger->addMessage('Invalid file extension');
                 $hasImageError = true;
                 break;
             default:
                 $hasImageError = true;
                 //$this->messenger->addMessage('Unkonw error code');
         }
         if (!$hasImageError) {
             //start the process of imaging.
             $hasImageInfoError = false;
             $info = getImageSize($file['tmp_name']);
             if (!$info) {
                 $this->messenger->addMessage('Uploaded file was not an image');
             }
             //echo $info[2];
             switch ($info[2]) {
                 case IMAGETYPE_PNG:
                 case IMAGETYPE_GIF:
                 case IMAGETYPE_JPEG:
                 case IMAGETYPE_JPG:
                     break;
                 default:
                     $hasImageInfoError = true;
                     $this->messenger->addMessage('type', 'Invalid image type uploaded');
             }
             if (!$hasImageInfoError) {
                 $newImage = new DatabaseObject_Attribute_CustomAttributeDetails($db, $table);
                 echo 'table is: ' . $table . '<br/>';
                 echo 'name is: ' . $name . '<br/>';
                 $newImage->setSaveFilePath($uploader_username, $table, $name);
                 $newImage->details_name = $detail_name;
                 $newImage->price_offset = $price_offset;
                 $newImage->image_name = $file['name'];
                 //$newImage->setUsername(Zend_Auth::getInstance()->getIdentity()->username);
                 $newImage->set_id = $attributeID;
                 $newImage->uploadFile($file['tmp_name']);
                 $newImage->filename = basename($file['name']);
                 $newImage->save();
                 //this is the place to create all the neccessary thumbnails for the website.
                 echo 'here at creating the thumbnails -0<br />';
                 /*$newImage->createThumbnail(150, 200, 'homeFrontFour');
                 		echo 'here at creating the thumbnails -1<br />';*/
                 //$newImage->createThumbnail(300, 350, 'productDetailImage');
                 $newImage->createThumbnail(30, 30, 'miniDetailImage');
                 $newImage->createThumbnail(50, 70, 'smallDetailImage');
                 echo 'here at creating the thumbnails -3<br />';
                 /*$newImage->createThumbnail(200, 200, 'productFirstImage');
                 			echo 'here at creating the thumbnails -2<br />';
                 		
                 		$newImage->createThumbnail(30, 200, 'productSmallPreview');
                 			echo 'here at creating the thumbnails -4<br />';*/
             } else {
                 $newImage = new DatabaseObject_Attribute_CustomAttributeDetails($db, $table);
                 echo 'table is: ' . $table . '<br/>';
                 echo 'name is: ' . $name . '<br/>';
                 $newImage->setSaveFilePath($uploader_username, $table, $name);
                 $newImage->details_name = $detail_name;
                 $newImage->price_offset = $price_offset;
                 $newImage->image_name = $file['name'];
                 //$newImage->setUsername(Zend_Auth::getInstance()->getIdentity()->username);
                 $newImage->set_id = $attributeID;
                 $newImage->save();
             }
         } else {
             $newImage = new DatabaseObject_Attribute_CustomAttributeDetails($db, $table);
             echo 'table is: ' . $table . '<br/>';
             echo 'name is: ' . $name . '<br/>';
             $newImage->setSaveFilePath($uploader_username, $table, $name);
             $newImage->details_name = $detail_name;
             $newImage->price_offset = $price_offset;
             $newImage->image_name = $file['name'];
             //$newImage->setUsername(Zend_Auth::getInstance()->getIdentity()->username);
             $newImage->set_id = $attributeID;
             $newImage->save();
         }
     }
 }
 public function uploadattributeAction()
 {
     //action= 1 = new //action= 2 = add //action= 3 = delete //action= 0 =view
     $action = $this->request->getParam('actioncall');
     //echo 'action is '.$action;
     if (!isset($action) || $action < 0 && $action > 3 || !is_numeric($action)) {
         echo 'invalid action';
         //invalid action.
     } elseif ($action == 1) {
         //1 new.
         //need the action, paramSet
         echo 'action 1';
         $table = $this->request->getParam('paramSet');
         $table_details = $table . '_details';
         //$paramSet = 'fabricSet';
         Zend_Debug::dump($_FILES);
         //addition of new attributes.
         $fp = new FormProcessor_Attribute_CustomAttribute($this->db, $table, $this->signedInUserSessionInfoHolder->generalInfo->userID);
         if ($this->request->isPost()) {
             echo 'here at post<br />';
             if ($fp->process($this->request)) {
                 echo 'it is processed';
                 Zend_Debug::dump($_FILES);
                 //Zend_Debug::dump($v);
                 //echo 'product name is: '.$fp->product->name;
                 echo 'the name of customeSetName is: ' . $fp->customSetName[0];
                 DatabaseObject_Helper_ImageUpload::uploadAttributeImage($_FILES['customAttributeDetailImage'], $fp->customSetParam, $this->db, $table_details, $fp->customSetName[0], $fp->attributeID, $this->signedInUserSessionInfoHolder->generalInfo->username);
                 //redirect back to product listing/where they came from.
                 //$this->_redirect("/manageattribute/uploadattribute?actioncall=0&paramSet=$table&id=$fp->attributeID");
                 $this->messenger->addMessage('Attribute set has been added');
                 $this->_redirect($_SERVER['HTTP_REFERER']);
             } else {
                 echo "it is not processed.";
                 $this->messenger->addMessage('it is not processed, there is a duplicate');
                 $this->_redirect($_SERVER['HTTP_REFERER']);
                 //add message and redirect back to product listing where they came from.
             }
         }
     } elseif ($action == 2) {
         //add
         //need id of attribute_table
         //need the paramSet
         $id = $this->request->getParam('id');
         if (isset($id) || $id > 0 && is_numeric($id)) {
             //load attribute
             $table = $this->request->getParam('paramSet');
             $table_details = $table . '_details';
             //check fabric id is valid
             $fabricSet = DatabaseObject_Helper_ManageAttribute::confirmattributeidwithuploader($this->db, $table, $this->signedInUserSessionInfoHolder->generalInfo->userID, $id);
             if (count($fabricSet) == 1) {
                 $fp = new FormProcessor_Attribute_CustomAttribute($this->db, $table, $this->signedInUserSessionInfoHolder->generalInfo->userID);
                 //load load id for attributeSet
                 if ($fp->load($id)) {
                     //if uploaded
                     if ($this->request->isPost()) {
                         //process image upload
                         $customSetParam = $this->request->getParam('attributeSet');
                         //upload attribute details for image upload;
                         DatabaseObject_Helper_ImageUpload::uploadAttributeImage($_FILES['customAttributeDetailImage'], $customSetParam, $this->db, $table_details, $fp->customSet->name_of_set, $fp->customSet->getId(), $this->signedInUserSessionInfoHolder->generalInfo->username);
                         echo 'finished upload';
                         $this->_redirect("/manageattribute/uploadattribute?actioncall=0&paramSet={$table}&id={$id}");
                         $this->_redirect($_SERVER['HTTP_REFERER']);
                     }
                 }
                 //$this->view->attribute = $attribute;
             } else {
                 $this->messenger->addMessage('sorry you do not have permission to edit this attribute');
                 $this->_redirect($_SERVER['HTTP_REFERER']);
             }
             //edit existing attribute status
         }
     } elseif ($action == 3) {
         //3 delete
         //need id of attribute_detail id
         //need paramSet_detail list
         echo 'action is 3';
         if ($this->request->isPost()) {
             $ids = $this->request->getParam('image_id');
             //$attribute_name = $this->request->getParam('attribute_name');
             $table = $this->request->getParam('paramSet');
             $table_details = $table . '_details';
             Zend_Debug::dump($ids);
             if (isset($ids) || count($ids) > 0) {
                 foreach ($ids as $k => $v) {
                     $image = new DatabaseObject_Attribute_CustomAttributeDetails($this->db, $table_details);
                     if ($image->loadForPost($this->signedInUserSessionInfoHolder->generalInfo->username, $v)) {
                         $attributeSetTmp = DatabaseObject_Helper_ManageAttribute::receiveAttributeSetFromId($this->db, $table, $image->set_id);
                         Zend_Debug::dump($attributeSetTmp);
                         $image->setSaveFilePath($this->signedInUserSessionInfoHolder->generalInfo->username, $table_details, $attributeSetTmp[0]['name_of_set']);
                         //this has to be set for every operation that usesthe get thumbnail path.
                         $image->delete();
                     }
                 }
                 $this->_redirect($_SERVER['HTTP_REFERER']);
             } else {
                 $this->messenger->addMessage('You must select an attribute to delete');
                 $this->_redirect($_SERVER['HTTP_REFERER']);
             }
         }
     } elseif ($action == 0) {
         //view details
         echo 'action is 0';
         $id = $this->request->getParam('id');
         if (isset($id) || $id > 0 && is_numeric($id)) {
             $table = $this->request->getParam('paramSet');
             $attributeSet = DatabaseObject_Helper_ManageAttribute::confirmattributeidwithuploader($this->db, $table, $this->signedInUserSessionInfoHolder->generalInfo->userID, $id);
             if (count($attributeSet) == 1) {
                 Zend_Debug::dump($attributeSet);
                 echo 'here at exisitng attribute';
                 $attribute = DatabaseObject_Helper_ManageAttribute::loadAttributeIdDetail($this->db, $table, $id);
                 Zend_Debug::dump($attribute);
                 $this->view->attribute = $attribute;
             } else {
                 //$this->messenger->addMessage('sorry you do not have permission to edit this attribute');
                 echo 'can not load this attribute';
             }
         } else {
             echo 'you must provide an specific id';
         }
     }
     //only new fabric sets will be generated
 }
 public static function removeAttributeForUser($db, $attributeType, $attributeID, $username)
 {
     $select = $db->select();
     $select->from($attributeType, '*')->where('id=?', $attributeID);
     $attributeSet = $db->fetchAll($select);
     Zend_Debug::dump($attributeSet);
     $select = $db->select();
     $select->from($attributeType . '_details', '*')->where('set_id = ?', $attributeID);
     //echo $select;
     $attributeDetails = $db->fetchAll($select);
     //$attributeEverything = $db->fetchAll('$select');
     //Zend_Debug::dump($attributeEverything);
     //Zend_Debug::dump($attributeDetails);
     foreach ($attributeDetails as $k => $v) {
         echo 'here at delete details';
         $detailsImage = new DatabaseObject_Attribute_CustomAttributeDetails($db, $attributeType . '_details');
         echo 'id is: ' . $v['id'];
         //$detailsImage->load($v['id']);
         if ($detailsImage->load($v['id'])) {
             echo 'here at image delete';
             $detailsImage->setSaveFilePath($username, $attributeType . '_details', $attributeSet[0]['name_of_set']);
             $detailsImage->delete();
         }
     }
     $where = array($attributeType . '_id = ' . $attributeID);
     //echo 'product_'.$table.'_id: '.$product_attribute_set_id;
     $db->delete('product_' . $attributeType, $where);
     $where2 = array('id = ' . $attributeID);
     $db->delete($attributeType, $where2);
 }