/** * (non-PHPdoc) * @see ModelBehavior::beforeSave() */ public function beforeSave(Model $Model) { // проверяем необходимость сворачивания полей в gridfs foreach ($this->_settings['fields'] as $field) { $data = $Model->data[$Model->alias]; $paths = explode('.', $field); foreach ($paths as $path) { if (!empty($data[$path])) { $data = $data[$path]; } else { $data = null; } } $bytes = serialize($data); if (!empty($data) && mb_strlen($bytes, '8bit') > $this->_settings['size']) { // сохраняем содержимое поля в gridfs, а в значение поля записываем id в grid-е $value = $this->_Grid->storeBytes($bytes); if (count($paths) == 1) { $Model->data[$Model->alias][$paths[0]] = $value; } elseif (count($paths) == 2) { $Model->data[$Model->alias][$paths[0]][$paths[1]] = $value; } elseif (count($paths) == 3) { $Model->data[$Model->alias][$paths[0]][$paths[1]][$paths[2]] = $value; } elseif (count($paths) == 4) { $Model->data[$Model->alias][$paths[0]][$paths[1]][$paths[2]][$paths[3]] = $value; } } } return parent::beforeSave($Model); }
/** * Run before a model is saved, used to set up slug for model. * * @param object $Model Model about to be saved. * @return boolean true if save should proceed, false otherwise * @access public */ function beforeSave(&$Model) { $return = parent::beforeSave($Model); // Make label fields an array if (!is_array($this->__settings[$Model->alias]['label'])) { $this->__settings[$Model->alias]['label'] = array($this->__settings[$Model->alias]['label']); } // Make sure all label fields are available foreach ($this->__settings[$Model->alias]['label'] as $field) { if (!$Model->hasField($field)) { return $return; } } // See if we should be generating a slug if ($Model->hasField($this->__settings[$Model->alias]['slug']) && ($this->__settings[$Model->alias]['overwrite'] || empty($Model->id))) { // Build label out of data in label fields, if available, or using a default slug otherwise $label = ''; foreach ($this->__settings[$Model->alias]['label'] as $field) { if (!empty($Model->data[$Model->alias][$field])) { $label .= ife(!empty($label), ' ', '') . $Model->data[$Model->alias][$field]; } } // Keep on going only if we've got something to slug if (!empty($label)) { // Get the slug $slug = $this->__slug($label, $this->__settings[$Model->alias]); // Look for slugs that start with the same slug we've just generated $conditions = array($Model->alias . '.' . $this->__settings[$Model->alias]['slug'] => 'LIKE ' . $slug . '%'); if (!empty($Model->id)) { $conditions[$Model->alias . '.' . $Model->primaryKey] = '!= ' . $Model->id; } $result = $Model->find('all', array('conditions' => $conditions, 'fields' => array($Model->primaryKey, $this->__settings[$Model->alias]['slug']), 'recursive' => -1)); $sameUrls = null; if (!empty($result)) { $sameUrls = Set::extract($result, '{n}.' . $Model->alias . '.' . $this->__settings[$Model->alias]['slug']); } // If we have collissions if (!empty($sameUrls)) { $begginingSlug = $slug; $index = 1; // Attach an ending incremental number until we find a free slug while ($index > 0) { if (!in_array($begginingSlug . $this->__settings[$Model->alias]['separator'] . $index, $sameUrls)) { $slug = $begginingSlug . $this->__settings[$Model->alias]['separator'] . $index; $index = -1; } $index++; } } // Now set the slug as part of the model data to be saved, making sure that // we are on the white list of fields to be saved if (!empty($Model->whitelist) && !in_array($this->__settings[$Model->alias]['slug'], $Model->whitelist)) { $Model->whitelist[] = $this->__settings[$Model->alias]['slug']; } $Model->data[$Model->alias][$this->__settings[$Model->alias]['slug']] = $slug; } } return $return; }
/** * Prepare the meta data for saving */ public function beforeSave(Model $Model, $options = array()) { if (isset($Model->data[$Model->alias]['MetaData'])) { $Model->data['MetaData'] = $Model->data[$Model->alias]['MetaData']; unset($Model->data[$Model->alias]['MetaData']); } return parent::beforeSave($Model, $options); }
public function beforeSave(Model $Model) { parent::beforeSave($Model); if ($this->settings[$Model->alias]['before'] == 'save') { $this->process($Model); } return true; }
public function beforeSave(Model $Model, $options = array()) { parent::beforeSave($Model, $options); if ($this->settings[$Model->alias]['before'] === 'save') { return $this->geocode($Model); } return true; }
public function beforeSave(Model $Model) { $return = parent::beforeSave($Model); if ($this->settings[$Model->alias]['before'] == 'save') { return $this->confirm($Model, $return); } return $return; }
/** * beforeSave callback * * @param Model $model The current model being used * @param array $options Callback options * * @return mixed */ public function beforeSave(Model $model, $options = array()) { $fields = (array) $this->__settings[$model->alias]['fields']; $scope = (array) $this->__settings[$model->alias]['scope']; $conditions = !empty($this->__settings[$model->alias]['conditions']) ? (array) $this->__settings[$model->alias]['conditions'] : array(); $slugfield = $this->__settings[$model->alias]['slugfield']; $hasFields = true; foreach ($fields as $field) { if (!$model->hasField($field)) { $hasFields = false; } if (!isset($model->data[$model->alias][$field])) { $hasFields = false; } } if ($hasFields && $model->hasField($slugfield) && ($this->__settings[$model->alias]['overwrite'] || empty($model->id))) { $toSlug = array(); foreach ($fields as $field) { $toSlug[] = $model->data[$model->alias][$field]; } $toSlug = join(' ', $toSlug); $slug = Inflector::slug($toSlug, $this->__settings[$model->alias]['separator']); if ($this->__settings[$model->alias]['lower']) { $slug = strtolower($slug); } if (strlen($slug) > $this->__settings[$model->alias]['length']) { $slug = substr($slug, 0, $this->__settings[$model->alias]['length']); } $conditions[$model->alias . '.' . $slugfield . ' LIKE'] = $slug . '%'; if (!empty($model->id)) { $conditions[$model->alias . '.' . $model->primaryKey . ' !='] = $model->id; } if (!empty($scope)) { foreach ($scope as $s) { if (isset($model->data[$model->alias][$s])) { $conditions[$model->alias . '.' . $s] = $model->data[$model->alias][$s]; } } } $sameUrls = $model->find('all', array('recursive' => -1, 'conditions' => $conditions)); $sameUrls = !empty($sameUrls) ? Hash::extract($sameUrls, '{n}.' . $model->alias . '.' . $slugfield) : array(); if (!empty($sameUrls)) { if (in_array($slug, $sameUrls)) { $begginingSlug = $slug; $index = 1; while ($index > 0) { if (!in_array($begginingSlug . $this->__settings[$model->alias]['separator'] . $index, $sameUrls)) { $slug = $begginingSlug . $this->__settings[$model->alias]['separator'] . $index; $index = -1; } $index++; } } } $model->data[$model->alias][$slugfield] = $slug; } return parent::beforeSave($model); }
/** * beforeSave is called before a model is saved. Returning false from a beforeSave callback * will abort the save operation. * * @param Model $model Model using this behavior * @param array $options Options passed from Model::save(). * * @return mixed|void */ public function beforeSave(\Model $model, $options = array()) { parent::beforeSave($model); $request = new CakeRequest(); $data = ['blog' => urlencode(Configure::read('General.site_url')), 'user_ip' => urlencode($model->data[$model->alias]['author_ip']), 'user_agent' => urlencode($model->data[$model->alias]['agent']), 'referrer' => urlencode($request->referer()), 'permalink' => urlencode($request->referer()), 'comment_type' => urlencode('comment'), 'comment_author' => urlencode($model->data[$model->alias]['author']), 'comment_author_email' => urlencode($model->data[$model->alias]['author_email']), 'comment_author_url' => urlencode($model->data[$model->alias]['author_url']), 'comment_content' => urlencode($model->data[$model->alias]['content'])]; if (Akismet::isSpam($data, Configure::read('Akismet.api_key'))) { $model->data[$model->alias]['status'] = 'spam'; } }
public function beforeSave(Model $Model, $options = array()) { $return = parent::beforeSave($Model, $options); if ($this->settings[$Model->alias]['before'] === 'save') { return $this->confirm($Model, $return); } //pr($Model->data); return $return; }
function beforeSave(Model $Model) { $data =& $Model->data[$Model->alias]; if (!empty($data['password'])) { $data['salt'] = $this->generateSaltString(); $data['password'] = $this->generateSaltedPassword($data['password'], $data['salt']); } else { unset($data['password']); } return parent::beforeSave($Model); }
public function beforeSave(Model $model, $options = array()) { $alias = $model->alias; $fields = $this->settings[$alias]; foreach ($fields as $date => $year) { if (isset($model->data[$alias][$date]) && !empty($model->data[$alias][$date])) { $model->data[$alias][$year] = date('Y', strtotime($model->data[$alias][$date])); } } return parent::beforeSave($model, $options); }
public function beforeSave(Model $model, $options = array()) { $format = 'Y-m-d'; $fields = $this->settings[$model->alias]; foreach ($fields as $field) { if (isset($model->data[$model->alias][$field]) && !empty($model->data[$model->alias][$field])) { $value = $model->data[$model->alias][$field]; $model->data[$model->alias][$field] = date($format, strtotime($value)); } } return parent::beforeSave($model, $options); }
/** * Before save callback * * @param object $model Model using this behavior * @return boolean True if the operation should continue, false if it should abort */ public function beforeSave($model) { $return = parent::beforeSave($model); if ($return === false) { return $return; } foreach ($this->settings[$model->alias] as $field) { if (isset($model->data[$model->alias][$field])) { $model->data[$model->alias][$field] = $this->compress($model, $model->data[$model->alias][$field]); } } return $return; }
/** * Trim através do callback beforeSave * * @see ModelBehavior::beforeSave() */ public function beforeSave(Model $model, $options = array()) { parent::beforeSave($model, $options); $this->_Model = $model; if (isset($this->_disabledFor[$model->alias])) { return true; } $this->_autoTrim(); return true; }
/** * Run before a model is saved, used to set up slug for model. * * @param Model $Model Model about to be saved. * @return boolean true if save should proceed, false otherwise */ public function beforeSave(Model $Model) { $return = parent::beforeSave($Model); if (!is_array($this->__settings[$Model->alias]['label'])) { $this->__settings[$Model->alias]['label'] = array($this->__settings[$Model->alias]['label']); } foreach ($this->__settings[$Model->alias]['label'] as $field) { if (!$Model->hasField($field)) { return $return; } } if ($Model->hasField($this->__settings[$Model->alias]['slug']) && ($this->__settings[$Model->alias]['overwrite'] || empty($Model->id))) { $label = ''; foreach ($this->__settings[$Model->alias]['label'] as $field) { if (!empty($Model->data[$Model->alias][$field])) { $label .= (!empty($label) ? ' ' : '') . $Model->data[$Model->alias][$field]; } } if (!empty($label)) { $slug = $this->__slug($label, $this->__settings[$Model->alias]); $conditions = array($Model->alias . '.' . $this->__settings[$Model->alias]['slug'] . ' LIKE' => $slug . '%'); // Fix 2 if (!empty($Model->id)) { $conditions['not'] = array($Model->alias . '.' . $Model->primaryKey => $Model->id); } $result = $Model->find('all', array('conditions' => $conditions, 'fields' => array($Model->primaryKey, $this->__settings[$Model->alias]['slug']), 'recursive' => -1)); $sameUrls = null; if (!empty($result)) { $sameUrls = Hash::extract($result, '{n}.' . $Model->alias . '.' . $this->__settings[$Model->alias]['slug']); } if (!empty($sameUrls)) { $begginingSlug = $slug; $index = 1; while ($index > 0) { if (!in_array($begginingSlug . $this->__settings[$Model->alias]['separator'] . $index, $sameUrls)) { $slug = $begginingSlug . $this->__settings[$Model->alias]['separator'] . $index; $index = -1; } $index++; } } if (!empty($Model->whitelist) && !in_array($this->__settings[$Model->alias]['slug'], $Model->whitelist)) { $Model->whitelist[] = $this->__settings[$Model->alias]['slug']; } $Model->data[$Model->alias][$this->__settings[$Model->alias]['slug']] = $slug; } } return $return; }
public function beforeSave($Model) { $return = parent::beforeSave($Model); $fields = $this->__settings[$Model->alias]['fields']; if (empty($fields)) { return $return; } foreach ($fields as $before => $after) { if (isset($Model->data[$Model->alias][$before])) { $val = $this->replaceSpecialChars($Model, $Model->data[$Model->alias][$before]); $Model->data[$Model->alias][$after] = $val; } } return $return; }
/** * public $actsAs = array('StringManipulation' => array( 'fields' => array( 'operation' => array([fields]) ) ) ); * * public $actsAs = array('StringManipulation' => array( 'fields' => array( 'lowercase' => array('ingredient', 'type') ) ) ); * * Applies the operation to all the fields * * @param type $model */ public function beforeSave(&$model) { parent::beforeSave($model); foreach ($this->config['fields'] as $op => $fields) { foreach ($fields as $field) { if (empty($this->model->data[$this->model->name][$field])) { break; } switch ($op) { case 'lowercase': $this->model->data[$this->model->name][$field] = strtolower($this->model->data[$this->model->name][$field]); break; } } } }
/** * Before save callback * * @param object $model Model using this behavior * @return boolean True if the operation should continue, false if it should abort * @access public */ public function beforeSave(&$model) { $return = parent::beforeSave($model); // What is the field that should hold this? if (in_array($this->settings[$model->alias]['mode'], array('update', 'auto')) and isset($model->data[$model->alias][$model->primaryKey]) and !empty($model->data[$model->alias][$model->primaryKey])) { $field = $this->settings[$model->alias]['field']; if ($model->hasField($field)) { //Build the URL... $controllerName = Inflector::variable(Inflector::tableize($model->alias)); $params = $this->_getParams(&$model, $this->settings[$model->alias]['fields']); $url = Router::url(array('controller' => $controllerName, 'action' => $this->settings[$model->alias]['action'], $params)); $model->data[$model->alias][$field] = $this->trimURL($url, $this->settings[$model->alias]['api']); } } return $return; }
public function beforeSave(Model $model, $options = array()) { $fields = $this->settings[$model->alias]; $alias = $model->alias; $fieldName = $fields['content']; if (!empty($model->data[$alias][$fieldName])) { $file = $model->data[$alias][$fieldName]; if ($file['error'] == 0) { if (isset($fields['name'])) { $model->data[$alias][$fields['name']] = $file['name']; } $model->data[$alias][$fieldName] = file_get_contents($file['tmp_name']); } } return parent::beforeSave($model, $options); }
/** * Run before a model is saved, used to set up slug for model. * * @param object $model Model about to be saved. * @return boolean true if save should proceed, false otherwise */ public function beforeSave($model) { $return = parent::beforeSave($model); $settings = $this->settings[$model->alias]; $fields = (array) $settings['label']; if ($settings['real']) { foreach ($fields as $field) { if (!$model->hasField($field)) { return $return; } } } if ((!$settings['real'] || $model->hasField($settings['slug'])) && ($settings['overwrite'] || empty($model->id))) { $label = ''; foreach ($fields as $field) { if (!empty($model->data[$model->alias][$field])) { $label .= (!empty($label) ? ' ' : '') . $model->data[$model->alias][$field]; } } if (!empty($label)) { $slug = $this->_slug($label, $settings); $conditions = array($model->alias . '.' . $settings['slug'] . ' LIKE' => $slug . '%'); if (!empty($model->id)) { $conditions['not'] = array($model->alias . '.' . $model->primaryKey => $model->id); } $result = $model->find('all', array('conditions' => $conditions, 'fields' => array($model->primaryKey, $settings['slug']), 'recursive' => -1)); $sameUrls = null; if (!empty($result)) { $sameUrls = Set::extract($result, '/' . $model->alias . '/' . $settings['slug']); } if (!empty($sameUrls)) { $begginingSlug = $slug; $index = 1; do { $currentSlug = $begginingSlug . $settings['separator'] . $index++; if (!in_array($currentSlug, $sameUrls)) { $slug = $currentSlug; break; } } while (true); } $model->data[$model->alias][$settings['slug']] = $slug; $this->_addToWhitelist($model, $settings['slug']); } } return $return; }
/** * Before save convert data to sqlformat * * @return True **/ public function beforeSave(Model $model, $options = array()) { parent::beforeSave($model, $options); $columnTypes = $model->getColumnTypes(); $fields = array_filter($columnTypes, array($this, 'valueIsDate')); foreach ($fields as $field => $value) { if (!array_key_exists($field, $model->data[$model->alias])) { continue; } $date = $this->dateObject($model->data[$model->alias][$field]); if (!$date) { return false; } $model->data[$model->alias][$field] = $this->ObjectToSQL($date); } return true; }
/** * Before save callback * * @param object $model Model using this behavior * @return bool True if the operation should continue, false if it should abort */ public function beforeSave($model) { $result = parent::beforeSave($model); if (empty($this->settings[$model->alias]['save']) || $result === false || $model->exists()) { return $result; } $defaults = array(); foreach ($model->schema() as $field => $properties) { $defaults[$field] = $properties['default']; } $data = array(); foreach ($this->settings[$model->alias]['save'] as $field => $fieldValue) { if (!isset($model->data[$model->alias][$field]) || $model->data[$model->alias][$field] == $defaults[$field]) { $data[$field] = $fieldValue; } } if (!empty($data)) { $this->_addToWhitelist($model, array_keys($data)); $model->data[$model->alias] = array_merge($model->data[$model->alias], $data); } return $result; }
/** * Before save callback * * @param object $model Model using this behavior * @return boolean True if the operation should continue, false if it should abort * @access public */ public function beforeSave(\Model $model, $options = array()) { $return = parent::beforeSave($model, $options); if (!$return) { return; } $this->getFields($model); foreach ($this->_fields[$model->alias] as $fieldName) { if (!isset($model->data[$model->alias][$fieldName]) or empty($model->data[$model->alias][$fieldName])) { continue; } if ($this->settings[$model->alias]['overwrite']) { $model->data[$model->alias][$fieldName] = $this->clean($model, $model->data[$model->alias][$fieldName]); } else { $affix = $this->settings[$model->alias]['affix']; $affixedFieldName = "{$fieldName}{$affix}"; if ($this->settings[$model->alias]['affix_position'] == 'prefix') { $affixedFieldName = "{$affix}{$fieldName}"; } $model->data[$model->alias][$affixedFieldName] = $this->clean($model, $model->data[$model->alias][$fieldName]); } } return parent::beforeSave($model, $options); }
/** * before saving loop through any fields that need to be encrypted and * encrypt them * * @param object $Model the model being encrypted * @return bool true / false see parent::beforeSave() */ public function beforeSave($Model) { if (is_array(current($Model->data[$Model->alias]))) { // saveall foreach ($Model->data[$Model->alias] as $k => $row) { foreach ($this->settings[$Model->alias]['fields'] as $field) { if (isset($Model->data[$Model->alias][$k][$field])) { $Model->data[$Model->alias][$k][$field . '_search'] = $this->searchFieldData($Model->alias, $Model->data[$Model->alias][$k][$field]); $Model->data[$Model->alias][$k][$field] = $this->encrypt($Model->data[$Model->alias][$k][$field]); } } } } else { // normal save foreach ($this->settings[$Model->alias]['fields'] as $field) { if (isset($Model->data[$Model->alias][$field])) { $Model->data[$Model->alias][$field . '_search'] = $this->searchFieldData($Model->alias, $Model->data[$Model->alias][$field]); $Model->data[$Model->alias][$field] = $this->encrypt($Model->data[$Model->alias][$field]); } } } return parent::beforeSave($Model); }
/** * beforeSave method * * @param Model $model Model using this behavior * @param array $options Options passed from Model::save(). * @return mixed False if the operation should abort. Any other result will continue. * @see Model::save() */ public function beforeSave(Model $model, $options = array()) { $settings = $this->settings[$model->alias]; if (!isset($settings['beforeSave']) || $settings['beforeSave'] === 'off') { return parent::beforeSave($model, $options); } switch ($settings['beforeSave']) { case 'on': return false; case 'test': return true; case 'modify': $model->data[$model->alias]['name'] .= ' modified before'; return true; } }
public function beforeSave(\Model $model, $options = array()) { parent::beforeSave($model, $options); return true; }
public function beforeSave(\Model $model, $options = array()) { $model = $this->checkParent($model); $model = $this->setCreatedUpdated($model); return parent::beforeSave($model, $options); }
/** * Standard beforeSave callback * - triggers the dataPrepUuidHABTM() * * @param Model $Model * @param array $options * @return boolean */ public function beforeSave(Model $Model, $options = array()) { $Model->data = $this->dataPrepUuidHABTM($Model, $Model->data); return parent::beforeSave($Model, $options); }
/** * beforeSave method * * @param mixed $model * @access public * @return void */ function beforeSave(&$model) { $settings = $this->settings[$model->alias]; if (!isset($settings['beforeSave']) || $settings['beforeSave'] == 'off') { return parent::beforeSave($model); } switch ($settings['beforeSave']) { case 'on': return false; break; case 'test': return null; break; case 'modify': $model->data[$model->alias]['name'] .= ' modified before'; return true; break; } }
/** * beforeSave is called before a model is saved. Returning false from a beforeSave callback * will abort the save operation. * * @param Model $model Model using this behavior * @param array $options Options passed from Model::save(). * @return mixed False if the operation should abort. Any other result will continue. * @see Model::save() */ public function beforeSave(Model $model, $options = array()) { if (!empty($model->hasMany['Audit'])) { if ($model->id = !empty($model->id) ? $model->id : (!empty($model->data[$model->alias]['id']) ? $model->data[$model->alias]['id'] : '')) { $this->data[$model->id]['Audit']['entity'] = (!empty($model->plugin) ? $model->plugin . '.' : '') . $model->name; $this->data[$model->id]['Audit']['entity_id'] = $model->id; $this->data[$model->id]['Audit']['event'] = $model->exists() ? 'UPDATE' : 'CREATE'; $this->data[$model->id]['Audit']['new'] = $this->data[$model->id]['Audit']['old'] = array(); $this->data[$model->id]['Audit']['creator_id'] = !empty($model->data['Creator']['id']) ? $model->data['Creator']['id'] : null; $model->data = Hash::remove($model->data, 'Creator'); if ($this->data[$model->id]['Audit']['event'] == 'CREATE') { $this->data[$model->id]['Audit']['old'] = json_encode(array()); $this->data[$model->id]['Audit']['new'] = json_encode($model->data[$model->alias]); } else { if ($this->data[$model->id]['Audit']['event'] == 'UPDATE') { $old = $model->find('first', array('conditions' => array($model->alias . '.id' => $model->id), 'recursive' => -1)); foreach ($model->data[$model->alias] as $field => $value) { if ($field == 'updated') { continue; } if ($model->hasField($field) && $old[$model->alias][$field] != $value) { $this->data[$model->id]['Audit']['old'][$field] = $old[$model->alias][$field]; $this->data[$model->id]['Audit']['new'][$field] = $value; } } if (!empty($this->data[$model->id]['Audit']['old']) && !empty($this->data[$model->id]['Audit']['new'])) { $this->data[$model->id]['Audit']['old'] = json_encode($this->data[$model->id]['Audit']['old']); $this->data[$model->id]['Audit']['new'] = json_encode($this->data[$model->id]['Audit']['new']); } } } } } return parent::beforeSave($model, $options); }