Example #1
0
 /**
  * This method will lookup the publisher, narrator and author based on the name
  *
  * If they don't exist the record will be created. The result will be always 
  * merged into $this->data if lookup return true.
  *
  * @param Model
  * @param string
  * @param string
  * @return boolean True on success
  */
 public function lookup(Model $Model, $type = null, $name = null)
 {
     extract($this->settings[$Model->alias]);
     $type = strtolower($type);
     $modelClass = Inflector::classify($type);
     if (!in_array($modelClass, $types) || empty($name)) {
         return false;
     }
     $result = $Model->findExistingRecord($modelClass, $name);
     if (empty($result)) {
         $fieldName = $Model->{$modelClass}->displayField;
         $data = array($fieldName => $name);
         // if (isset($Model->data[$modelClass])) {
         // if (isset($Model->data[$modelClass][$fieldName]) && $Model->data[$modelClass][$fieldName] != $name) {
         // unset($Model->data[$modelClass]['id']);
         // }
         if (isset($Model->data[$modelClass])) {
             $data = Set::merge($Model->data[$modelClass], $data);
         }
         $result = $Model->saveLookupRecord($modelClass, $data);
         $Model->data[$modelClass]['id'] = $Model->{$modelClass}->id;
         $Model->data[$modelClass]['name'] = $name;
         $Model->data[$Model->alias][$type . '_id'] = $Model->{$modelClass}->id;
     } else {
         $Model->data[$modelClass] = $result[$modelClass];
         $Model->data[$Model->alias][$type . '_id'] = $result[$modelClass]['id'];
     }
     return true;
 }