You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openNG/public_html/modules/nodes/create.php

103 lines
2.5 KiB
PHP

<?php
/*
* openNG is more free software. It is licensed under the WTFPL, which
* allows you to do pretty much anything with it, without having to
* ask permission. Commercial use is allowed, and no attribution is
* required. We do politely request that you share your modifications
* to benefit other developers, but you are under no enforced
* obligation to do so :)
*
* Please read the accompanying LICENSE document for the full WTFPL
* licensing text.
*/
if(!isset($_APP)) { die("Unauthorized."); }
if($router->uMethod == "get")
{
/* Display form */
$sData = array(
"contents" => NewTemplater::Render("nodes/create", $locale->strings, array())
);
}
elseif($router->uMethod == "post")
{
/* Process form */
$sErrors = array();
$sErrorFields = array();
if(empty($_POST['name']))
{
$sErrors[] = "You must enter a name for the new node. This name does not have to be unique.";
$sErrorFields[] = "name";
}
if(empty($sErrors))
{
$uNodeId = generate_uuid();
$sNode = new Node();
$sNode->uId = $uNodeId;
$sNode->uName = $_POST['name'];
$sNode->uNotes = $_POST['notes'];
$sNode->uTypeId = "";
$sNode->uParentRevisionId = "";
$sNode->uFirstRevisionId = $uNodeId;
$sNode->uUserId = 0;
$sNode->uCreationDate = time();
$sNode->uLatestRevision = true;
$sNode->InsertIntoDatabase();
/* Insert properties, if any */
foreach(array_combine($_POST['property_name'], $_POST['property_value']) as $property_name => $property_value)
{
if(!empty($property_name))
{
$uPropertyId = generate_uuid();
$sProperty = new Property();
$sProperty->uId = $uPropertyId;
$sProperty->uName = $property_name;
$sProperty->uValue = $property_value;
$sProperty->uSource = "";
$sProperty->uTypeId = "";
$sProperty->uParentRevisionId = "";
$sProperty->uFirstRevisionId = $uPropertyId;
$sProperty->uNodeId = $uNodeId;
$sProperty->uRelationshipId = "";
$sProperty->uReliability = 1; /* Normal */
$sProperty->uCreationDate = time();
$sProperty->uLatestRevision = true;
$sProperty->InsertIntoDatabase();
}
}
$sData = array(
"result" => "success",
"message" => "Node '" . htmlspecialchars($_POST['name']) . "' created.",
"node_id" => $uNodeId
);
}
else
{
$sErrorList = "";
foreach($sErrors as $sError)
{
$sErrorList .= "<li>{$sError}</li>";
}
$sData = array(
"result" => "error",
"message" => "One or more form fields were not filled in correctly: <ul>{$sErrorList}</ul>",
"errorfields" => $sErrorFields
);
}
}