function save(&$data) { $isNew = Sanitize::getInt($data['FieldOption'], 'optionid') ? false : true; $field_id = Sanitize::getInt($data['FieldOption'], 'fieldid'); if ($isNew) { // Remove non alphanumeric characters from option value $data['FieldOption']['value'] = Sanitize::translate($data['FieldOption']['value']); $data['FieldOption']['value'] = str_replace($this->blackList, '', $data['FieldOption']['value']); $data['FieldOption']['value'] = str_replace($this->dashReplacements, '-', $data['FieldOption']['value']); $data['FieldOption']['value'] = preg_replace(array('/[-]+/'), array('-'), $data['FieldOption']['value']); $data['FieldOption']['value'] = mb_strtolower($data['FieldOption']['value'], 'UTF-8'); // If is new checks for duplicate value $query = "SELECT count(fieldid) FROM #__jreviews_fieldoptions WHERE fieldid = '{$field_id}' AND value = " . $this->_db->Quote($data['FieldOption']['value']); $this->_db->setQuery($query); if ($this->_db->loadResult()) { return 'duplicate'; } // Find last option $this->_db->setQuery("select max(ordering) FROM #__jreviews_fieldoptions WHERE fieldid = '" . $field_id . "'"); $max = $this->_db->loadResult(); if ($max > 0) { $data['FieldOption']['ordering'] = $max + 1; } else { $data['FieldOption']['ordering'] = 1; } } # store it in the db if (!$this->store($data)) { return 'db_error'; } return 'success'; }
function save(&$data) { $isNew = Sanitize::getInt($data['FieldOption'], 'optionid') ? false : true; $control_value = ''; $field_id = Sanitize::getInt($data['FieldOption'], 'fieldid'); // Before saving storing control field info for the field option, // first check if this is a Field Option => Field relationship // If it is, then we drop the control field info. $query = "SELECT control_field FROM #__jreviews_fields WHERE fieldid = " . $field_id; $this->_db->setQuery($query); if (($FieldOptionToField = $this->_db->loadResult()) == '' && isset($data['FieldOption']['control_value']) && !empty($data['FieldOption']['control_value'])) { $control_value = Sanitize::getVar($data['FieldOption'], 'control_value'); if (is_array($control_value)) { $control_value = array_filter($control_value); } $data['FieldOption']['control_value'] = !empty($control_value) ? '*' . implode('*', $control_value) . '*' : ''; } else { $data['FieldOption']['control_field'] = ''; $data['FieldOption']['control_value'] = array(); } $data['FieldOption']['value'] = html_entity_decode(urldecode($data['FieldOption']['value']), ENT_COMPAT, 'utf-8'); if ($isNew) { $data['FieldOption']['text'] = html_entity_decode(urldecode($data['FieldOption']['text']), ENT_COMPAT, 'utf-8'); // Remove non alphanumeric characters from option value $data['FieldOption']['value'] = Sanitize::translate(urldecode($data['FieldOption']['value'])); $data['FieldOption']['value'] = trim($data['FieldOption']['value']); $data['FieldOption']['value'] = str_replace($this->blackList, '', $data['FieldOption']['value']); $data['FieldOption']['value'] = str_replace($this->dashReplacements, '-', $data['FieldOption']['value']); $data['FieldOption']['value'] = preg_replace(array('/[-]+/'), array('-'), $data['FieldOption']['value']); $data['FieldOption']['value'] = mb_strtolower($data['FieldOption']['value'], 'UTF-8'); // If is new checks for duplicate value $query = "\n SELECT \n optionid, control_field, control_value \n FROM \n #__jreviews_fieldoptions \n WHERE \n fieldid = {$field_id} AND value = " . $this->_db->Quote($data['FieldOption']['value']); $this->_db->setQuery($query); $option = $this->_db->loadAssocList(); if (!empty($option) && $control_value == '') { return 'duplicate'; } elseif (!empty($option) && $control_value != '') { $option = array_shift($option); $option['control_value'] = explode('*', rtrim(ltrim($option['control_value'], '*'), '*')); $value_exists = array_intersect($control_value, $option['control_value']); if ($data['FieldOption']['control_field'] == $option['control_field'] && !empty($value_exists)) { return 'duplicate'; } $data['FieldOption']['control_value'] = '*' . implode('*', array_unique(array_merge($control_value, $option['control_value']))) . '*'; $data['FieldOption']['optionid'] = $option['optionid']; } // Find last option if (!isset($data['FieldOption']['optionid'])) { $this->_db->setQuery("SELECT max(ordering) FROM #__jreviews_fieldoptions WHERE fieldid = '" . $field_id . "'"); $max = $this->_db->loadResult(); if ($max > 0) { $data['FieldOption']['ordering'] = $max + 1; } else { $data['FieldOption']['ordering'] = 1; } } } // Make sure there's a control value, otherwise clear the control field as well if (empty($data['FieldOption']['control_value'])) { $data['FieldOption']['control_field'] = ''; } # store it in the db if (!$this->store($data)) { return 'db_error'; } return 'success'; }
function uploadImages($listing_id, $path) { $imgMaxWidth = $this->Config->content_max_imgwidth; $fileKeys = $this->fileKeys; $images = array(); // Load thumbnail library App::import('Vendor', 'phpthumb' . DS . 'ThumbLib.inc'); foreach ($fileKeys as $key) { $tmp_name = $_FILES['image']['tmp_name'][$key]; $name = basename($_FILES['image']['name'][$key]); $fileParts = pathinfo($name); // Remove special chars, lowercase and trim $filename = trim(strtolower(Sanitize::translate($fileParts['filename']))); // Remove any duplicate whitespace, and ensure all characters are alphanumeric $filename = preg_replace(array('/\\s+/', '/\\_+/', '/\\./', '/[^A-Za-z0-9\\-]/', '/\\-+/'), array('-', '-', '-', '', '-'), $filename); // Append datetime stamp to file name $filename = $filename . "-" . time(); // Prepend contentid $filename = $listing_id . "_" . $filename . "." . $fileParts['extension']; $uploadfile = $path . $filename; if (move_uploaded_file($tmp_name, $uploadfile)) { $images[] = "jreviews/" . $filename . "|||0||bottom||"; chmod($uploadfile, 0644); // Begin image resizing if ($imgMaxWidth > 0) { $thumb = PhpThumbFactory::create($uploadfile); extract($thumb->getCurrentDimensions()); /* $width, $height */ $thumb->resize($imgMaxWidth, $height)->save($uploadfile); } } } $this->images = $images; }