Ejemplo n.º 1
0
 function afterSave($status)
 {
     // Change listing owner if claim is approved
     if ($status && $this->data['Claim']['approved'] == 1) {
         App::import('Model', array('everywhere_com_content', 'jreviews_content'), 'jreviews');
         $Listing = new EverywhereComContentModel();
         $JreviewsContent = new JreviewsContentModel();
         $Listing->store($this->data);
         $JreviewsContent->store($this->data);
     }
 }
Ejemplo n.º 2
0
 function save(&$data, $location = 'listing', $isNew, &$validFields)
 {
     $msg = '';
     $fieldLocation = inflector::camelize($location);
     // Check if there are custom fields to save or exit
     if (isset($data['Field']) && (!is_array($data['Field'][$fieldLocation]) || count($data['Field'][$fieldLocation]) == 1)) {
         return $msg;
     }
     // Define field types that accept predefined options to store the reference values
     $optionsArray = array("select", "selectmultiple", "checkboxes", "radiobuttons");
     if (!empty($validFields)) {
         foreach ($validFields as $validField) {
             $fieldName = $validField['name'];
             $inputValue = '';
             if (Sanitize::getVar($data['Field'][$fieldLocation], $fieldName, '') != '' || $validField['type'] == 'code' && Sanitize::getVar($data['__raw']['Field'][$fieldLocation], $fieldName, '') != '') {
                 switch ($validField['type']) {
                     case 'selectmultiple':
                     case 'checkboxes':
                         //Checks for types with options
                         $multi_options = Sanitize::getVar($data['Field'][$fieldLocation], $fieldName, '');
                         $inputValue = '*' . implode('*', $multi_options) . '*';
                         break;
                     case 'select':
                     case 'radiobuttons':
                         //Checks for types with options
                         $inputValue = '*' . Sanitize::getString($data['Field'][$fieldLocation], $fieldName) . '*';
                         break;
                     case 'code':
                         // Affiliate code left unfiltered
                         $inputValue = Sanitize::getString($data['__raw']['Field'][$fieldLocation], $fieldName, '');
                         break;
                     case 'decimal':
                         $inputValue = Sanitize::getFloat($data['Field'][$fieldLocation], $fieldName);
                         break;
                     case 'integer':
                         $inputValue = Sanitize::getInt($data['Field'][$fieldLocation], $fieldName);
                         break;
                     case 'date':
                         if (Sanitize::getString($data['Field'][$fieldLocation], $fieldName) != '' && Sanitize::getString($data['Field'][$fieldLocation], $fieldName) != null) {
                             $inputValue = strftime(_CURRENT_SERVER_TIME_FORMAT, strtotime(Sanitize::getString($data['Field'][$fieldLocation], $fieldName)));
                         } else {
                             $inputValue = '';
                         }
                         break;
                     case 'textarea':
                     case 'text':
                         if (isset($validField['_params']['allow_html']) && $validField['_params']['allow_html'] == 1) {
                             $inputValue = Sanitize::stripScripts(Sanitize::getVar($data['__raw']['Field'][$fieldLocation], $fieldName));
                             $inputValue = stripslashes($inputValue);
                         } else {
                             $inputValue = Sanitize::getString($data['Field'][$fieldLocation], $fieldName, '');
                         }
                         break;
                     case 'website':
                     case 'email':
                         $inputValue = Sanitize::stripScripts(Sanitize::getVar($data['Field'][$fieldLocation], $fieldName));
                         break;
                     default:
                         $inputValue = Sanitize::getVar($data['Field'][$fieldLocation], $fieldName);
                         break;
                 }
                 # Modify form post arrays to current values
                 if ($inputValue === '' || $inputValue === '**') {
                     $inputValue = '';
                 }
                 $data['Field'][$fieldLocation][$fieldName] = $inputValue;
             } else {
                 // To clear multiple choice fields
                 switch ($validField['type']) {
                     case 'decimal':
                     case 'integer':
                         $data['Field'][$fieldLocation][$fieldName] = null;
                         break;
                     default:
                         $data['Field'][$fieldLocation][$fieldName] = '';
                         break;
                 }
             }
             // Debug custom fields array
             $msg .= "{$validField['name']}=>{$inputValue}" . "<br />";
         }
     }
     # Need to check if jreviews_content or jreviews_reviews record exists to decide whether to insert or update the table
     if ($location == 'review') {
         App::import('Model', 'jreviews_review_field', 'jreviews');
         $JreviewsReviewFieldModel = new JreviewsReviewFieldModel();
         $recordExists = $JreviewsReviewFieldModel->findCount(array('conditions' => array('JreviewsReviewField.reviewid= ' . $data['Field']['Review']['reviewid'])));
     } else {
         App::import('Model', 'jreviews_content', 'jreviews');
         $JreviewsContentModel = new JreviewsContentModel();
         $recordExists = $JreviewsContentModel->findCount(array('conditions' => array('JreviewsContent.contentid = ' . $data['Listing']['id'])));
     }
     $dbAction = $recordExists ? 'update' : 'insert';
     if ($location == 'review') {
         $this->{$dbAction}('#__jreviews_review_fields', $fieldLocation, $data['Field'], 'reviewid');
     } else {
         if (Configure::read('PaidListings.enabled') && Sanitize::getInt($data, 'paid_category')) {
             # PaidListings integration - saves all fields to jreviews_paid_listing_fields table and removes unpaid fields from jreviews_content table
             $PaidListingField = RegisterClass::getInstance('PaidListingFieldModel');
             $PaidListingField->save($data);
         }
         $this->{$dbAction}('#__jreviews_content', $fieldLocation, $data['Field'], 'contentid');
     }
 }