/**
  *
  * Find a record XOR create a new record of this model
  * @param array $data. Should not contain data within the subarray of the mode.
  * @param array $findFields. Optional. If empty, we will simply use the data itself as the conditions
  * @return array Either the found or newly created Model data
  */
 public function findXORCreate(Model $model, $data = array(), $findFields = array())
 {
     $suppliedData = array();
     if (isset($data[$model->alias])) {
         $suppliedData = $data[$model->alias];
     } else {
         $suppliedData = $data;
     }
     $conditions = array();
     if (empty($findFields)) {
         $conditions = $suppliedData;
     } else {
         foreach ($findFields as $field) {
             if (array_key_exists($field, $suppliedData)) {
                 $conditions[$field] = $suppliedData[$field];
             } else {
                 $conditions[$field] = null;
             }
         }
     }
     if (!$model->Behaviors->enabled('UtilityBehaviors.ValidateFields')) {
         $model->Behaviors->load('UtilityBehaviors.ValidateFields');
     }
     $validFindFields = $model->validateFields(array_keys($conditions), array('return' => 'valid'));
     foreach ($conditions as $field => $value) {
         if (!in_array($field, $validFindFields)) {
             unset($conditions[$field]);
         }
     }
     $found = $model->find('first', array('conditions' => $conditions));
     if ($found) {
         return $found;
     } else {
         $model->create();
         $created = $model->save($suppliedData);
         return $created;
     }
 }