Ejemplo n.º 1
0
 public function getReplacementsForPatterns(dmProjectModule $module, array $patterns, dmDoctrineRecord $record)
 {
     $moduleKey = $module->getKey();
     $replacements = array();
     foreach ($this->getPatternsPlaceholders($patterns) as $placeholder) {
         if ('culture' === $placeholder || 'user.culture' === $placeholder) {
             $replacements[$this->wrap($placeholder)] = $this->culture;
             continue;
         }
         /*
          * Extract model and field from 'model.field' or 'model'
          */
         if (strpos($placeholder, '.')) {
             list($usedModuleKey, $field) = explode('.', $placeholder);
         } else {
             $usedModuleKey = $placeholder;
             $field = '__toString';
         }
         $usedModuleKey = dmString::modulize($usedModuleKey);
         $usedRecord = null;
         /*
          * Retrieve used record
          */
         if ($usedModuleKey === $moduleKey) {
             $usedRecord = $record;
         } elseif ($module->hasAncestor($usedModuleKey)) {
             $usedRecord = $record->getAncestorRecord($module->getAncestor($usedModuleKey)->getModel());
         } else {
             $usedRecord = $record->getRelatedRecord($this->moduleManager->getModule($usedModuleKey)->getModel());
         }
         if ($usedRecord instanceof dmDoctrineRecord) {
             /*
              * get record value for field
              */
             if ($field === '__toString') {
                 $usedValue = $usedRecord->__toString();
                 $processMarkdown = true;
             } else {
                 try {
                     $usedValue = $usedRecord->get($field);
                 } catch (Doctrine_Record_UnknownPropertyException $e) {
                     $usedValue = $usedRecord->{'get' . dmString::camelize($field)}();
                 }
                 $processMarkdown = $this->shouldProcessMarkdown($usedRecord->getTable(), $field);
             }
             unset($usedRecord);
         } else {
             $usedValue = $moduleKey . '-' . $usedModuleKey . ' not found';
             $processMarkdown = false;
         }
         $usedValue = trim($usedValue);
         if ($processMarkdown) {
             $usedValue = dmMarkdown::brutalToText($usedValue);
         }
         $replacements[$this->wrap($placeholder)] = $usedValue;
     }
     return $replacements;
 }