/**
  * A wildcard method to handle calling specially named varchar fields, e.g. Email, URL.
  * @param  string $method The method name
  * @return mixed
  */
 public function obj($fieldName, $arguments = null, $forceReturnedObject = true, $cache = false, $cacheName = null)
 {
     $varchar = DBField::create_field("Varchar", null, $fieldName);
     if ($data = $varchar->getDataByFieldName($this->getFaker())) {
         $varchar->setValue($data);
         return $varchar;
     }
     return parent::obj($fieldName);
 }
 /**
  * If we're publishing, returns proper php
  */
 public function obj($fieldName, $arguments = null, $forceReturnedObject = true, $cache = false, $cacheName = null)
 {
     $value = parent::obj($fieldName, $arguments, $forceReturnedObject, $cache, $cacheName);
     // if we're publishing and this variable is qualified, output php code instead
     if ($this->failover && $this->liveVars && isset($this->varName) && LivePubHelper::is_publishing() && $this->isLiveVar($fieldName)) {
         $accessor = "get{$fieldName}";
         $php = '';
         // find out how we got the data
         if ($this->failover instanceof ArrayData) {
             $php = '$' . $this->varName . '["' . $fieldName . '"]';
         } elseif (is_callable(array($this->failover, $fieldName))) {
             // !@TODO respect arguments
             $php = '$' . $this->varName . '->' . $fieldName . '()';
         } elseif (is_callable(array($this->failover, $accessor))) {
             // !@TODO respect arguments
             $php = '$' . $this->varName . '->' . $accessor . '()';
         } elseif (isset($this->failover, $fieldName)) {
             $php = '$' . $this->varName . '->' . $fieldName;
         }
         // return the appropriate php
         if ($php) {
             if (is_object($value)) {
                 if ($value instanceof ViewableWrapper) {
                     LivePubHelper::$init_code[] = '<?php $' . $value->getVar() . ' = ' . $php . ' ?>';
                 }
                 // !@TODO: only other option is DataObjectSet - check that this is handled right
             } else {
                 $value = in_array($fieldName, $this->liveVarsUnescaped) ? '<?php echo ' . $php . '; ?>' : '<?php echo htmlentities(' . $php . '); ?>';
                 if ($forceReturnedObject) {
                     $value = new HTMLText($value);
                 }
             }
         }
     }
     return $value;
 }