clsItem(); $this->tablename=GetTablePrefix()."CustomField"; $this->type=10; $this->BasePermission=""; $this->id_field = "CustomFieldId"; $this->NoResourceId=1; //set this to avoid using a resource ID $this->debuglevel=0; if($CustomFieldId>-1) $this->LoadFromDatabase($CustomFieldId); } function GetAdminUI() { $a = new clsConfigAdminItem(); $a->name = "_".$this->Get("FieldName"); $a->heading = $this->Get("Heading"); $a->prompt = $this->Get("Prompt"); $a->ElementType = $this->Get("ElementType"); $a->ValidationRules=""; $a->default_value = ""; $a->ValueList=$this->Get("ValueList"); if(!strlen($a->ElementType)) $a->ElementType="text"; if(!strlen($a->prompt)) $a->prompt = "lu_fieldcustom__".strtolower($this->Get("FieldName")); return $a; } function parsetag($tag) { if(is_object($tag)) { $tagname = $tag->name; } else $tagname = $tag; switch($tagname) { case "fieldlabel": return $this->Get("FieldLabel"); break; case "fieldname": return $this->Get("FieldName"); break; case "customfieldid": return $this->Get("CustomFieldId"); default: return "Undefined:$tagname"; break; } } } class clsCustomFieldList extends clsItemCollection { var $Type; function clsCustomFieldList($type=-1,$table="CustomField") { $this->clsItemCollection(); $this->Type=$type; $this->classname = "clsCustomField"; if($table=="CustomField") $table = GetTablePrefix().$table; $this->SourceTable = $table; if($this->Type>0) $this->LoadFields(); } function LoadFields() { $this->Clear(); $sql = "SELECT * FROM ".$this->SourceTable." WHERE Type=".$this->Type." ORDER BY DisplayOrder DESC, CustomFieldId ASC"; if($this->debuglevel > 1) echo $sql."
\n"; $rs = $this->adodbConnection->Execute($sql); while($rs && !$rs->EOF) { $data = $rs->fields; $this->AddItemFromArray($data); $rs->MoveNext(); } } function LoadFieldsAndValues($ResourceId, $main_prefix, $temp_table = false) { $this->Clear(); $table = $this->Application->getUnitOption($main_prefix.'-cdata', 'TableName'); if ($temp_table) { $table = kTempTablesHandler::GetTempName($table); } $sql = 'SELECT * FROM '.$table.' WHERE ResourceId = '.$ResourceId; $custom_data = $this->adodbConnection->GetRow($sql); $sql = 'SELECT * FROM '.TABLE_PREFIX.'CustomField WHERE Type = '.$this->Application->getUnitOption($main_prefix, 'ItemType'); $custom_fields = $this->Conn->Query($sql, 'CustomFieldId'); $ml_formatter =& $this->Application->recallObject('kMultiLanguage'); foreach ($custom_fields as $custom_id => $custom_info) { $custom_name = $ml_formatter->LangFieldName('cust_'.$custom_id); $custom_info['Value'] = getArrayValue($custom_data, $custom_name) ? $custom_data[$custom_name] : ''; $custom_info['CustomDataId'] = 0; $this->AddItemFromArray($custom_info); } } function GetFieldUIList($GeneralTab=FALSE) { $ret = new clsConfigAdmin(); if($this->NumItems()>0) { foreach($this->Items as $field) { if($GeneralTab==TRUE && $field->Get("OnGeneralTab")==1 || !$GeneralTab) { $ui = $field->GetAdminUI(); array_push($ret->Items,$ui); } } } return $ret; } function GetFieldNames() { $res = array(); foreach($this->Items as $f) $res[] = $f->Get("FieldName"); return $res; } function SaveFields() { foreach($this->Items as $i) { if($i->Get("CustomFieldId")) { $i->Update(); } else $i->Create(); } } function Query_CustomField($where=NULL,$orderby=NULL,$limit=NULL) { $this->Clear(); $sql = "SELECT * FROM ".$this->SourceTable; if(isset($where)) $sql = sprintf('%s WHERE %s',$sql,$where); if(isset($orderby) && strlen(trim($orderby))>0) $sql = sprintf('%s ORDER BY %s',$sql,$orderby); if(isset($limit) && strlen(trim($limit))) $sql .= " ".$limit; // $sql."
"; $this->Query_Item($sql); return $this->Items; } function AddField($Type,$FieldName,$FieldLabel,$ShowGeneral=0,$Heading="", $Prompt="", $ElementType="",$ValueList="") { global $objItemTypes,$objSearchConfig,$objLanguages; //if(!is_numeric($Type)) // { $f = new clsCustomField(); $f->tablename = $this->SourceTable; $f->Set(array("Type","FieldName","FieldLabel","OnGeneralTab","Heading","Prompt", "ElementType","ValueList"), array($Type,$FieldName,$FieldLabel,$ShowGeneral,$Heading,$Prompt, $ElementType,$ValueList)); $f->Create(); $Item = $objItemTypes->GetItem($Type); if(is_object($Item)) { //$Table = $Item->Get("SourceTable"); $Table = 'CustomField'; $Header = "la_text_".strtolower($Item->Get("ItemName")); $Module = $Item->Get("Module"); // $Desc = $FieldLabel; if(!is_object($objSearchConfig)) { $objSearchConfig = new clsSearchConfigList(); } $NextOrder = $objSearchConfig->GetNextDisplayOrder($Module); $desc = "lu_fieldcustom__".strtolower($FieldName); if(!strlen($FieldLabel)) { $FieldLabel = $FieldName; } $l = $objLanguages->GetPrimary(); $phrases = new clsPhraseList(); $phrases->AddPhrase($desc,$l,$FieldLabel,2, $Item->Get('Module') ); $dtable = GetTablePrefix()."CustomMetaData"; $Join = "($dtable.ResourceId={Table}.ResourceId)"; $objSearchConfig->AddSearchField($Table,$FieldName,$Module,$Type == 6 ? -1 : 0,0, $FieldLabel,$desc,$Header,$NextOrder,0, $ElementType, NULL, NULL, NULL, NULL, NULL, $f->Get("CustomFieldId"), NULL); } return $f; //} //else // return FALSE; } function EditField($FieldId,$Type,$FieldName,$FieldLabel,$ShowGeneral=0,$Heading="", $Prompt="",$ElementType="",$ValueList="") { global $objSearchConfig; $f = $this->GetItem($FieldId); $f->Set(array("Type","FieldName","FieldLabel","OnGeneralTab","Heading","Prompt","ElementType","ValueList"), array($Type,$FieldName,$FieldLabel,$ShowGeneral,$Heading,$Prompt,$ElementType,$ValueList)); $f->Update(); $db =& $this->adodbConnection; if (!$FieldLabel) $FieldLabel = $FieldName; $sql = 'UPDATE '.GetTablePrefix().'SearchConfig SET FieldType = '.$db->qstr($ElementType).', DisplayName = '.$db->qstr('lu_fieldcustom__'.strtolower($FieldName)).', FieldName = '.$db->qstr($FieldName).', Description = '.$db->qstr($FieldLabel).' WHERE CustomFieldId = '.$FieldId; $this->adodbConnection->Execute($sql); return $f; } function DeleteField($FieldId) { global $objItemTypes, $objSearchConfig; //echo "
"; print_r($objSearchConfig); echo "
"; $f = $this->GetItem($FieldId); $Type = $f->Get("Type"); $Item = $objItemTypes->GetItem($Type); $Module = $Item->Get("Module"); if(is_object($Item)) { //$table = $Item->Get("TableName"); $table = GetTablePrefix()."CustomField"; if(!is_object($objSearchConfig)) { $objSearchConfig = new clsSearchConfigList($Module); } $sql = 'DELETE FROM '.$objSearchConfig->SourceTable.' WHERE CustomFieldId = '.$FieldId; $this->adodbConnection->Execute($sql); $phrase_name = 'lu_fieldcustom__'.strtolower($f->Get('FieldName')); $sql = 'DELETE FROM '.GetTablePrefix().'Phrase WHERE Phrase = '.$this->adodbConnection->qstr($phrase_name); $this->adodbConnection->Execute($sql); } $f->Delete(); } }/*clsCustomFieldList*/ ?>