/** * Creates a new TenantObject object based on the given values from the database. * @param array $values * @return \PhoenixSNS\Objects\TenantObject based on the values of the fields in the given associative array */ public static function GetByAssoc($values) { $item = new TenantObject(); $item->ID = $values["object_ID"]; $item->Tenant = Tenant::GetByID($values["object_TenantID"]); $item->Module = Module::GetByID($values["object_ModuleID"]); $item->ParentObject = TenantObject::GetByID($values["object_ParentObjectID"]); $item->DefaultProperty = TenantObjectProperty::GetByID($values["object_DefaultPropertyID"]); $item->Name = $values["object_Name"]; return $item; }
/** * Creates a TenantObject with the specified criteria on this Tenant. * @param string $name The name of the TenantObject to create. * @param string $titles * @param string $descriptions * @param TenantInstanceProperty[] $properties Instance properties to create on this TenantObject. * @param TenantObject $parentObject The TenantObject which owns this TenantObject * @param string $instances * @param TenantObjectInstanceProperty $defaultProperty The TenantObjectInstanceProperty used for inline-rendering an instance of this property * @return NULL|\PhoenixSNS\Objects\TenantObject The newly-created TenantObject, or NULL if the creation operation failed. */ public function CreateObject($name, $titles = null, $descriptions = null, array $properties = null, TenantObject $parentObject = null, array $instances = null, TenantObjectInstanceProperty $defaultProperty = null) { global $MySQL; if ($titles == null) { $titles = array($name); } if ($descriptions == null) { $descriptions = array(); } if ($properties == null) { $properties = array(); } if ($instances == null) { $instances = array(); } // do not create the object if the object with the same name already exists if ($this->HasObject($name)) { $bt = debug_backtrace(); trigger_error("Object '" . $name . "' already exists on tenant '" . $this->URL . "' in " . $bt[0]["file"] . "::" . $bt[0]["function"] . " on line " . $bt[0]["line"] . "; ", E_USER_WARNING); return $this->GetObject($name); } $query = "INSERT INTO " . System::$Configuration["Database.TablePrefix"] . "TenantObjects (object_TenantID, object_ModuleID, object_ParentObjectID, object_Name, object_DefaultPropertyID) VALUES ("; $query .= $this->ID . ", "; $query .= "NULL" . ", "; $query .= ($parentObject == null ? "NULL" : $parentObject->ID) . ", "; $query .= "'" . $MySQL->real_escape_string($name) . "', "; if ($defaultProperty != null && is_numeric($defaultProperty->ID)) { $query .= $defaultProperty->ID; } else { $query .= "NULL"; } $query .= ")"; $result = $MySQL->query($query); if ($result === false) { return false; } $id = $MySQL->insert_id; $object = TenantObject::GetByID($id); $object->SetTitles($titles); $object->SetDescriptions($descriptions); foreach ($properties as $property) { $object->CreateInstanceProperty($property); } if (is_array($instances)) { foreach ($instances as $instance) { // handle as an array of property/value pairs $object->CreateInstance($instance); } } return $object; }
public static function GetByAssoc($values) { $item = new TenantObjectInstanceMethod(); $item->ID = $values["method_ID"]; $item->ParentObject = TenantObject::GetByID($values["method_ObjectID"]); $item->Name = $values["method_Name"]; $item->CodeBlob = $values["method_CodeBlob"]; return $item; }
/** * Creates a new TenantObjectInstanceProperty object based on the given values from the database. * @param array $values * @return TenantObjectInstanceProperty based on the values of the fields in the given associative array */ public static function GetByAssoc($values) { $item = new TenantObjectInstanceProperty(); $item->ID = $values["property_ID"]; $item->ParentObject = TenantObject::GetByID($values["property_ObjectID"]); $item->Name = $values["property_Name"]; $item->DataType = DataType::GetByID($values["property_DataTypeID"]); if ($item->DataType != null) { $item->DefaultValue = $item->DataType->Decode($values["property_DefaultValue"]); } $item->Required = $values["property_IsRequired"] == 1; $item->ColumnVisible = $values["property_ColumnVisible"] == 1; return $item; }
/** * Creates a new TenantObjectProperty object based on the given values from the database. * @param array $values * @return \PhoenixSNS\Objects\TenantObjectProperty based on the values of the fields in the given associative array */ public static function GetByAssoc($values) { $item = new TenantObjectProperty(); $item->ID = $values["property_ID"]; $item->Tenant = Tenant::GetByID($values["property_TenantID"]); $item->ParentObject = TenantObject::GetByID($values["property_ObjectID"]); $item->Name = $values["property_Name"]; $item->Description = $values["property_Description"]; $item->DataType = DataType::GetByID($values["property_DataTypeID"]); $item->DefaultValue = $values["property_DefaultValue"]; $item->Required = $values["property_IsRequired"] == 1; $item->Enumeration = TenantEnumeration::GetByID($values["property_EnumerationID"]); $item->RequireChoiceFromEnumeration = $values["property_RequireChoiceFromEnumeration"] == 1; return $item; }
$page->CurrentObject = $object; $page->CurrentMethod = $method; $page->Render(); break; case "instance": $page = new TenantObjectMethodManagementPage(); $page->CurrentTenant = Tenant::GetByURL($path[0]); $page->CurrentObject = TenantObject::GetByID($path[2]); $page->CurrentMethod = TenantObjectInstanceMethod::GetByID($path[5]); $page->Render(); break; } break; case "": $tenant = Tenant::GetByURL($path[0]); $object = TenantObject::GetByID($path[2]); if ($_SERVER["REQUEST_METHOD"] == "POST") { $count = $_POST["InstanceProperty_NewPropertyCount"]; for ($i = $count; $i > 0; $i--) { $name = $_POST["InstanceProperty_" . $i . "_Name"]; $dataType = DataType::GetByID($_POST["InstanceProperty_" . $i . "_DataTypeID"]); $defaultValue = $_POST["InstanceProperty_" . $i . "_DefaultValue"]; $object->CreateInstanceProperty(new TenantObjectInstanceProperty($name, $dataType, $defaultValue)); } System::Redirect("~/tenant/manage/" . $tenant->URL . "/objects/" . $object->ID); return true; } else { $page = new TenantObjectManagementPage(); $page->CurrentTenant = $tenant; $page->CurrentObject = $object; $page->Render();