Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Mon, Jun 16, 12:04 AM

in-portal

Index: branches/unlabeled/unlabeled-1.14.2/kernel/include/custommetadata.php
===================================================================
--- branches/unlabeled/unlabeled-1.14.2/kernel/include/custommetadata.php (nonexistent)
+++ branches/unlabeled/unlabeled-1.14.2/kernel/include/custommetadata.php (revision 8011)
@@ -0,0 +1,185 @@
+<?php
+
+
+class clsCustomMetaData extends clsItem
+{
+// var $m_CustomDataId;
+// var $m_ResourceId;
+// var $m_CustomFieldId;
+// var $m_Value;
+
+ var $FieldName;
+
+ function clsCustomMetaData($CustomDataId=-1,$table="CustomMetaData")
+ {
+ parent::clsItem();
+ $this->tablename=GetTablePrefix()."CustomMetaData";
+ $this->type=12;
+ $this->BasePermission="";
+ $this->id_field = "CustomDataId";
+ $this->NoResourceId=1; //set this to avoid using a resource ID
+ }
+}
+
+class clsCustomDataList extends clsItemCollection
+{
+ function clsCustomDataList()
+ {
+ parent::clsItemCollection();
+ $this->classname = 'clsCustomMetaData';
+ }
+
+ function LoadResource($ResourceId)
+ {
+ // TO REMOVE
+ }
+
+ function DeleteResource($ResourceId, $main_prefix)
+ {
+ if (!$ResourceId) return false;
+
+ $custom_table = $this->Application->getUnitOption($main_prefix.'-cdata', 'TableName');
+ $sql = 'DELETE FROM '.$custom_table.'
+ WHERE ResourceId = '.$ResourceId;
+ $this->adodbConnection->Execute($sql);
+ }
+
+ function CopyResource($OldId,$NewId, $main_prefix)
+ {
+ $custom_data =& $this->Application->recallObject($main_prefix.'-cdata.-item', null, Array('skip_autoload' => true));
+ $custom_data->Load($OldId, 'ResourceId');
+
+ if ($custom_data->isLoaded()) {
+ $custom_data->SetDBField('ResourceId', $NewId);
+ $custom_data->Create();
+ }
+ }
+
+ function &SetFieldValue($FieldId,$ResourceId,$Value)
+ {
+ // so strange construction used, because in normal
+ // way it doesn't work at all (gets item copy not
+ // pointer)
+ $index = $this->GetDataItem($FieldId, true);
+
+ if($index !== false)
+ {
+ $d =& $this->Items[$index];
+ }
+ else
+ {
+ $d = null;
+ }
+
+ if(is_object($d))
+ {
+ $d->Set('Value', $Value);
+ if(!strlen($Value))
+ {
+ for($x=0;$x<count($this->Items);$x++)
+ {
+ if($this->Items[$x]->Get("CustomFieldId") == $FieldId && $this->Items[$x]->Get("ResourceId") == $ResourceId)
+ {
+ $this->Items[$x]->Set("CustomFieldId",0);
+ break;
+ }
+ }
+ $d->Delete(true);
+ }
+ }
+ else
+ {
+ $d = new clsCustomMetaData();
+ $d->Set("CustomFieldId",$FieldId);
+ $d->Set("ResourceId",$ResourceId);
+ $d->Set("Value",$Value);
+ array_push($this->Items,$d);
+ }
+ return $d;
+ }
+
+ function &GetDataItem($id, $return_index = false)
+ {
+ // $id - custom field id to find
+ // $return_index - return index to items, not her.
+ $found = false;
+ $index = false;
+ for($i = 0; $i < $this->NumItems(); $i++)
+ {
+ $d =& $this->GetItemRefByIndex($i);
+ if($d->Get("CustomFieldId")==$id)
+ {
+ $found = true;
+ break;
+ }
+ }
+
+ return $found ? ($return_index ? $i : $d) : $found;
+ }
+
+ function SaveData($main_prefix, $resource_id)
+ {
+ // to call OnAfterConfigRead event
+ $item_table = $this->Application->getUnitOption($main_prefix, 'TableName');
+
+ $ml_formatter =& $this->Application->recallObject('kMultiLanguage');
+ $custom_data =& $this->Application->recallObject($main_prefix.'-cdata', null, Array('skip_autoload' => true));
+ $custom_data->Load($resource_id, 'ResourceId');
+
+ foreach($this->Items as $f) {
+ $custom_id = $f->Get('CustomFieldId');
+ $value = isset($GLOBALS['_CopyFromEditTable']) ? $f->Get('Value') : stripslashes($f->Get('Value'));
+
+ $custom_name = $ml_formatter->LangFieldName('cust_'.$custom_id);
+ $custom_data->SetDBField($custom_name, $value);
+ }
+
+ $custom_data->SetDBField('ResourceId', $resource_id);
+ return $custom_data->isLoaded() ? $custom_data->Update() : $custom_data->Create();
+ }
+
+ function &getTempHandler($prefix)
+ {
+ if (strlen($prefix) > 2 || strlen($prefix) == 0) {
+ // not e.g. bb, c, u, but CustomFieldId :) or empty at all
+ $this->Application->reportError(get_class($this), 'CopyToEditTable');
+ }
+
+ $temp_handler =& $this->Application->recallObject($prefix.'-cdata_TempHandler', 'kTempTablesHandler');
+ return $temp_handler;
+ }
+
+ function CopyToEditTable($main_prefix, $idlist)
+ {
+ $temp_handler =& $this->getTempHandler($main_prefix);
+ $tables = $temp_handler->Tables;
+ $parent_prefix = $this->Application->getUnitOption($main_prefix.'-cdata', 'ParentPrefix');
+ if ($parent_prefix) {
+ $tables['ForeignKey'] = $this->Application->getUnitOption($main_prefix.'-cdata', 'ForeignKey');
+ $tables['ParentPrefix'] = $parent_prefix;
+ $tables['ParentTableKey'] = $this->Application->getUnitOption($main_prefix.'-cdata', 'ParentTableKey');
+ }
+ $temp_handler->Tables = $tables;
+
+ $temp_handler->DoCopyLiveToTemp($temp_handler->Tables, $idlist);
+ }
+
+ function CopyFromEditTable($main_prefix)
+ {
+ $temp_handler =& $this->getTempHandler($main_prefix);
+ $temp_handler->DoCopyTempToOriginal($temp_handler->Tables);
+ }
+
+ function PurgeEditTable($main_prefix)
+ {
+ $temp_handler =& $this->getTempHandler($main_prefix);
+ $temp_handler->CancelEdit();
+ }
+
+ function CreateEmptyEditTable($main_prefix)
+ {
+ $temp_handler =& $this->getTempHandler($main_prefix);
+ $temp_handler->DoCopyLiveToTemp($temp_handler->Tables, Array(0));
+ }
+}
+?>
Property changes on: branches/unlabeled/unlabeled-1.14.2/kernel/include/custommetadata.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.14
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property

Event Timeline