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); } }
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'); } }