Пример #1
0
 public function GetFilterValue($uid, $refresh = FALSE)
 {
     $filterData = $this->GetFilterInfo($uid);
     if (!is_array($filterData)) {
         return NULL;
     }
     if (isset($filterData['value'])) {
         return $filterData['value'];
     }
     // for union modules, we cannot get a value from currentmodule because it is itself, part of the query
     if ($filterData['it'] === itNONE && utopia::GetCurrentModule() !== get_class($this) && (!isset($this->UNION_MODULE) || $this->UNION_MODULE !== TRUE)) {
         $parents = utopia::GetParents(get_class($this));
         foreach ($parents as $parent => $childLinks) {
             if ($parent == '/') {
                 $parent = utopia::GetCurrentModule();
             }
             if (!$parent || !class_exists($parent)) {
                 continue;
             }
             $parentObj = utopia::GetInstance($parent);
             foreach ($childLinks as $info) {
                 if (isset($info['fieldLinks'])) {
                     foreach ($info['fieldLinks'] as $link) {
                         if ($link['toField'] == $filterData['fieldName']) {
                             $row = $parentObj->GetCurrentRecord($refresh);
                             if (!$row && !$refresh) {
                                 $row = $parentObj->GetCurrentRecord(true);
                             }
                             if (isset($row[$link['fromField']])) {
                                 return $row[$link['fromField']];
                             }
                             $fltrLookup =& $parentObj->FindFilter($link['fromField'], ctEQ);
                             return $parentObj->GetFilterValue($fltrLookup['uid']);
                         }
                     }
                 }
             }
         }
     }
     $filters = GetFilterArray();
     if (isset($filters[$uid])) {
         return $filters[$uid];
     }
     return $filterData['default'];
 }