09.25
php
alkemann
Note
Merge behavior start
Merge behavior start
- <?php
- /*
- * @author Alexander Morland (alexander#maritimecolours.no)
- * @co-author Eskil Mjelva Saatvedt
- * @co-author Ronny Vindenes
- * @co-author Carl Erik Fyllingen
- * @developedby Maritime Colours
- * @category Behavior
- * @version 0.1
- * @modified 25. sept. 2008 by alexander morland
- */
- class MergeableBehavior extends ModelBehavior
- {
- /**
- * Cake called intializer
- * Config options are list of field names and instructions on how to merge:
- * @options : 'use_target', 'use_source', 'use_target_source', 'use_source_target' or false to skip
- *
- * @param Object $Model
- * @param array $config
- */
- function setup(&$Model, $config = null) {
- $Model->primaryKey => FALSE,
- 'created' => FALSE,
- 'modified' => FALSE
- );
- if ($config) {
- }
- }
- function settings(&$Model) {
- return $this->settings;
- }
- $fields = am($this->settings, $field_options);
- $target = $Model->find('first', array('conditions'=>array($Model->primaryKey => $target_id),'recursive' => -1));
- $source = $Model->find('first', array('conditions'=>array($Model->primaryKey => $source_id),'recursive' => -1));
- foreach ($fields as $key => $value) {
- switch ($value) {
- case 'use_target':
- $new_values[$key] = $target[$Model->alias][$key];
- break;
- case 'use_source':
- $new_values[$key] = $source[$Model->alias][$key];
- break;
- case 'use_target_source':
- $new_values[$key] = $target[$Model->alias][$key]."\n ".$source[$Model->alias][$key];
- break;
- case 'use_source_target':
- $new_values[$key] = $source[$Model->alias][$key]."\n ".$target[$Model->alias][$key];
- break;
- case 'use_input': default:
- $new_values[$key] = $data[$Model->alias][$key];
- break;
- case FALSE: break;
- }
- }
- if ($Model->save($data,false)) {
- $Model->delete($target_id);
- $Model->delete($source_id);
- }
- return true;
- }
- }
- ?>
Parsed in 0.100 seconds, using GeSHi 1.0.7.14