function activateEnumAttrInfo(&$attrInfo, $className, $attr, $withDefaults = TRUE) { global $lll, $useHtmlInEnumValues; $attrInfo["default"] = array(); $attrInfo["values"] = splitByCommas($this->getAttr("values"), !$useHtmlInEnumValues); $defs = splitByCommas($this->getAttr("default"), !$useHtmlInEnumValues); foreach ($attrInfo["values"] as $val) { $lllLabel = "{$className}_{$attr}_{$val}"; if (!isset($lll[$lllLabel])) { $lll[$lllLabel] = $val; } if ($withDefaults && in_array($val, $defs)) { $attrInfo["default"][] = $val; } } return count($attrInfo["values"]); }
function generCheckbox($name, &$listNames, &$listValues, $selected, $cols, $vert = FALSE, $showRelation = "", $multimask = 0, $afterField = "", $anyfield = "") { global $hackTdClass; $selected = splitByCommas($selected); $s = "\n<table border='0' colspan='0' rowspan='0'>\n"; $length = count($listValues); if (isset($hackTdClass) && $hackTdClass) { $hTdClass = " class='{$hackTdClass}'"; } else { $hTdClass = " class='celltext'"; } if ($vert) { //vertical $rows = ceil($length / $cols); $ind1 = 0; $ind2 = 0; $aind = 0; $aindH = 0; for ($i = 0; $i < $rows; $i++) { $s .= "<tr>"; for ($j = 0; $j < $cols; $j++) { if (!isset($listValues[$ind2])) { break; } $v = $listValues[$ind2]; $s .= "<td{$hTdClass}>"; $s .= "<input type='checkbox' id='{$name}" . "_{$ind2}' name='{$name}" . "[{$ind2}]' value='{$v}'"; if ($showRelation) { if (isset($showRelation[$v])) { $s .= " show='{$showRelation[$v]}_rel'"; } else { $s .= " show='none'"; } } if (in_array($v, $selected)) { $s .= " checked"; } if ($anyfield == $v) { $s .= " src='any'"; } $s .= ">" . $listNames[$ind2]; $s .= "</td>\n"; $ind2 += $rows; } $s .= "</tr>\n"; $ind1++; $ind2 = $ind1; } } else { //horizontal for ($i = 0; $i < $length / $cols; $i++) { $s .= "<tr>"; for ($j = $i * $cols; $j < ($i + 1) * $cols; $j++) { if (!isset($listValues[$j])) { break 2; } $v = $listValues[$j]; $s .= "<td{$hTdClass}>"; $s .= "<input type='checkbox' id='{$name}" . "_{$j}' name='{$name}" . "[{$j}]' value='{$v}'"; if ($showRelation) { if (isset($showRelation[$v])) { $s .= " show='{$showRelation[$v]}_rel'"; } else { $s .= " show='none'"; } } if (in_array($v, $selected)) { $s .= " checked"; } if ($anyfield == $v) { $s .= " src='any'"; } $s .= ">" . $listNames[$j]; $s .= "</td>\n"; } $s .= "</tr>\n"; } } if ($afterField) { $s .= "<tr>"; $s .= "<td colspan='{$cols}'>{$afterField}</td>"; $s .= "</tr>"; } $s .= "</table>\n"; return $s; }
function displayEnumValue($attr) { global $useHtmlInEnumValues; if ($this->{$attr} === "") { return ""; } $vals = splitByCommas($this->{$attr}, !$useHtmlInEnumValues); $lllProp =& new LllProperties($this, $attr); $vals =& $lllProp->getSelectLabels($vals); return implode(", ", $vals); }
function getAdvancedCustomFieldConditions(&$fields) { $cond = array(); foreach ($fields as $v) { if (!$v->displayInSearchFormCondition() || !isset($this->{$v->columnIndex})) { continue; } if ($v->columnIndex == "title" || $v->columnIndex == "description") { if ($tdCond = $this->getTitleDescriptionCondition($v->columnIndex)) { $cond[] = $tdCond; } continue; } $columnIndexField = $this->setUserFieldExists($v); $subCond = array(); switch ($v->type) { case customfield_text: // pl.: $-1234,345.99-$698.00 if ($v->columnIndex == "iid") { $columnIndexField = "n.id"; } if ($v->rangeSearch) { if (ereg("^[\$]*([\\-]*[0-9\\.\\,]+)[ ]*-[ ]*[\$]*([\\-]*[0-9\\.\\,]+)", $this->{$v->columnIndex}, $regs)) { $cond[] = "(0+{$columnIndexField}>={$regs['1']} AND 0+{$columnIndexField}<={$regs['2']})"; break; } elseif (ereg("^[\$]*([\\-]*[0-9\\.\\,]+)[ ]*-", $this->{$v->columnIndex}, $regs)) { $cond[] = "0+{$columnIndexField}>={$regs['1']}"; break; } elseif (ereg("[ ]*-[ ]*[\$]*([\\-]*[0-9\\.\\,]+)", $this->{$v->columnIndex}, $regs)) { $cond[] = "0+{$columnIndexField}<={$regs['1']}"; break; } } case customfield_text: case customfield_textarea: // hogy ne akadjunk ossze a hiddenben erkezo 'id' valueval a custom list modify eseten: $val = $v->columnIndex == "id" ? $this->iid : $this->{$v->columnIndex}; if ($val !== '') { $word = quoteSQL($val); if ($v->subType == customfield_alnum || $v->type == customfield_textarea) { $cond[] = "{$columnIndexField} LIKE '%{$word}%'"; } else { $cond[] = "{$columnIndexField}='{$word}'"; } } break; case customfield_bool: if (($val = $this->{$v->columnIndex}) != -1) { if ($v->type == customfield_bool && $val == 0) { $val = ""; } // mert a FALSE bool ertekek a TEXT fieldben ""-kent tarolodnak $cond[] = "{$columnIndexField}='{$val}'"; } break; case customfield_selection: case customfield_multipleselection: case customfield_checkbox: $enumVal = $this->{$v->columnIndex}; if ($enumVal == -1 || $enumVal === "") { break; } if (is_string($enumVal)) { //$enumVal = $v->type==customfield_selection ? array($enumVal) : splitByCommas($enumVal, FALSE); $enumVal = splitByCommas($enumVal, FALSE); } $enumVal = array_map(create_function('$v', 'return str_replace(",", ",,", $v);'), $enumVal); if (!($count = count($enumVal))) { break; } if ($v->columnIndex == "ownerName") { // ha egy db. 0 erkezik, az a gorumjuzert jeloli ('My ads' custom list), // akkor viszont itt csak egy helyettesitot teszunk a querybe: if ($count == 1 && !$enumVal[0]) { $cond[] = "n.ownerId=#gorumuser#"; } elseif ($count == 1) { $cond[] = "n.ownerId='" . quoteSQL($enumVal[0]) . "'"; } else { foreach ($enumVal as $val) { $subCond[] = $val ? quoteSQL($val) : "'#gorumuser#'"; } $cond[] = "FIND_IN_SET(n.ownerId, '" . implode(",", $subCond) . "')!=0"; } break; } foreach ($enumVal as $val) { if ($v->type == customfield_selection) { $subCond[] = "{$columnIndexField}='" . quoteSQL($val) . "'"; } else { $subCond[] = $this->composeSearchRegexp($columnIndexField, $val); } } $cond[] = "(" . implode(" OR ", $subCond) . ")"; break; case customfield_date: if ($dateCond = $this->getDateCondition($v->columnIndex, $columnIndexField)) { $cond[] = $dateCond; } break; case customfield_picture: case customfield_media: if (($val = $this->{$v->columnIndex}) != -1) { $cond[] = $val ? "{$columnIndexField}!=''" : "{$columnIndexField}=''"; } break; default: break; } } return $cond; }