/** * Creates a static method on this TenantObject using the given parameters. * @param string $name The name used in code to identify this TenantObjectMethod. * @param TenantObjectMethodParameter[] $parameters Array of TenantObjectMethodParameter objects representing parameters to this TenantObjectMethod. * @param string $codeblob The PHP code that runs when this TenantObjectMethod is executed. * @param string[] $namespaceReferences Array of PHP namespaces that should be referenced by this TenantObjectMethod. * @return TenantObjectMethod|NULL The newly created TenantObjectMethod, or NULL if the creation operation failed. */ public function CreateMethod($name, $parameters, $codeblob, $namespaceReferences = null) { global $MySQL; $query = "INSERT INTO " . System::$Configuration["Database.TablePrefix"] . "TenantObjectMethods (method_ObjectID, method_Name, method_CodeBlob) VALUES ("; $query .= $this->ID . ", "; $query .= "'" . $MySQL->real_escape_string($name) . "', "; $query .= "'" . $MySQL->real_escape_string($codeblob) . "'"; $query .= ")"; $result = $MySQL->query($query); if ($result === false) { PhoenixSNS::Log("Database error when trying to create a static method for the specified tenant object.", array("DatabaseError" => $MySQL->error . " (" . $MySQL->errno . ")", "Query" => $query)); return null; } $method = TenantObjectMethod::GetByID($MySQL->insert_id); if (is_array($namespaceReferences)) { foreach ($namespaceReferences as $ref) { $method->AddNamespaceReference($ref); } } return $method; }
switch ($path[4]) { case "": $tenant = Tenant::GetByURL($path[0]); $object = TenantObject::GetByID($path[2]); $page = new TenantObjectInstanceBrowsePage(); $page->CurrentTenant = $tenant; $page->CurrentObject = $object; $page->Render(); break; } case "methods": switch ($path[4]) { case "static": $tenant = Tenant::GetByURL($path[0]); $object = TenantObject::GetByID($path[2]); $method = TenantObjectMethod::GetByID($path[5]); if ($_SERVER["REQUEST_METHOD"] == "POST") { $method->CodeBlob = $_POST["method_CodeBlob"]; $method->Update(); System::Redirect("~/tenant/manage/" . $tenant->URL . "/objects/" . $object->ID); return true; } $page = new TenantObjectMethodManagementPage(); $page->CurrentTenant = $tenant; $page->CurrentObject = $object; $page->CurrentMethod = $method; $page->Render(); break; case "instance": $page = new TenantObjectMethodManagementPage(); $page->CurrentTenant = Tenant::GetByURL($path[0]);