Version 0.9.6 beta - added new form elements, also added a nibiru binary in order to create modules and plugins.

This commit is contained in:
Stephan Kasdorf
2023-04-03 21:13:03 +02:00
parent fbe7f59697
commit b1bded6101
60 changed files with 204 additions and 66 deletions

View File

@@ -17,8 +17,13 @@
"vendor-dir": "core/l" "vendor-dir": "core/l"
}, },
"require": { "require": {
"php": ">=7.1.0", "php": ">=8.1.0",
"smarty/smarty": "^3.1", "smarty/smarty": "^3.1",
"phpmailer/phpmailer": "^6.1" "phpmailer/phpmailer": "^6.1",
"dasprid/enum": "^1.0.3",
"bacon/bacon-qr-code": ">=1.0.3",
"mevdschee/php-crud-api": "^2.14",
"symfony/psr-http-message-bridge": "^2.1",
"laminas/laminas-diactoros": "^2.24"
} }
} }

0
core/c/auth.php Normal file → Executable file
View File

17
core/c/autoloader.php Normal file → Executable file
View File

@@ -138,9 +138,22 @@ class Autoloader
{ {
foreach (self::getFilesInFoler() as $file) foreach (self::getFilesInFoler() as $file)
{ {
$required[] = $file; if(!strstr($file, self::PLUGINS_FOLDER))
require_once $file; {
$required[] = $file;
require_once $file;
}
else
{
$plugins[] = $file;
}
} }
foreach($plugins as $plugin)
{
$required[] = $plugin;
require_once $plugin;
}
if(self::isDebug()) if(self::isDebug())
{ {
View::getInstance()->assign( View::getInstance()->assign(

0
core/c/config.php Normal file → Executable file
View File

19
core/c/controller.php Normal file → Executable file
View File

@@ -25,9 +25,10 @@ class Controller extends View
protected function __construct() protected function __construct()
{ {
$this->_setConfig(Config::getInstance()->getConfig()); $this->_setConfig(Config::getInstance()->getConfig());
$this->_setController();
} }
public static function getInstance(): View public static function getInstance(): View|Controller
{ {
$className = get_called_class(); $className = get_called_class();
if( self::$_instance == null ) if( self::$_instance == null )
@@ -54,19 +55,29 @@ class Controller extends View
} }
/** /**
* @desc will return the current controller name
* @return string * @return string
*/ */
public function getController() public function getController(): string
{ {
return $this->_controller; return $this->_controller;
} }
/** /**
* @desc will set the current controller name
* @param string $controller * @param string $controller
*/ */
protected function setController( $controller ) protected function _setController( string $controller = "" )
{ {
$this->_controller = $controller; if($controller!="")
{
$this->_controller = $controller;
}
else
{
$url = explode("/", $_SERVER['REQUEST_URI']);
$this->_controller = $url[1];
}
} }
/** /**

0
core/c/debug.php Normal file → Executable file
View File

0
core/c/dispatcher.php Normal file → Executable file
View File

0
core/c/display.php Normal file → Executable file
View File

0
core/c/engine.php Normal file → Executable file
View File

0
core/c/form.php Normal file → Executable file
View File

View File

@@ -67,6 +67,7 @@ class FormAttributes
$this->_element = str_replace(' maxlength="MAXLENGTH"', '', $this->_element); $this->_element = str_replace(' maxlength="MAXLENGTH"', '', $this->_element);
$this->_element = str_replace(' min="MIN"', '', $this->_element); $this->_element = str_replace(' min="MIN"', '', $this->_element);
$this->_element = str_replace(' max="MAX"', '', $this->_element); $this->_element = str_replace(' max="MAX"', '', $this->_element);
$this->_element = str_replace(' href="HREF"', '', $this->_element);
$this->_element = str_replace(' step="STEP"', '', $this->_element); $this->_element = str_replace(' step="STEP"', '', $this->_element);
$this->_element = str_replace(' tabindex="TABINDEX"', '', $this->_element); $this->_element = str_replace(' tabindex="TABINDEX"', '', $this->_element);
$this->_element = str_replace(' SPEECH', '', $this->_element); $this->_element = str_replace(' SPEECH', '', $this->_element);
@@ -88,6 +89,7 @@ class FormAttributes
$this->_element = str_replace(' CHECKED', '', $this->_element); $this->_element = str_replace(' CHECKED', '', $this->_element);
$this->_element = str_replace(' VALUE', '', $this->_element); $this->_element = str_replace(' VALUE', '', $this->_element);
$this->_element = str_replace(' PATTERN', '', $this->_element); $this->_element = str_replace(' PATTERN', '', $this->_element);
$this->_element = str_replace('ANY', '', $this->_element);
} }
/** /**

View File

@@ -137,61 +137,43 @@ class JsonNavigation extends Config
} }
} }
/** /**
* Loads the navigation from a json file into * Loads the navigation from a json file into
* the view, making the variables available * the view, making the variables available
* @param string $name * @param string $name
*/ */
public function loadJsonNavigationArray( string $name = '' ) public function loadJsonNavigationArray( string $name = 'navigation' )
{ {
if( $name ) self::$_navigation_array = array();
{ self::setSectionName( $name );
self::$_navigation_array = array(); self::setName( $name );
self::setSectionName( $name ); parent::getInstance();
self::setName( $name ); self::setFileContentString();
parent::getInstance(); self::setFileContentArray();
self::setFileContentString(); self::setNavigation();
self::setFileContentArray(); $nav = self::getNavigation();
self::setNavigation(); foreach ( $nav as $item => $value)
} {
$nav = self::getNavigation(); if($item == self::getSectionName())
foreach ( $nav as $item => $value) {
{ $keys = array_keys($value);
if($item == self::getSectionName()) for($i=0; sizeof($keys)>$i;$i++)
{ {
$keys = array_keys($value); $fields = [];
for($i=0; sizeof($keys)>$i;$i++) $fieldKeys=array_keys($value[$keys[$i]]);
{ $fields['title']=$keys[$i];
if(array_key_exists('link', $value[$keys[$i]]))
{ foreach ($fieldKeys as $fieldKey)
self::$_navigation_array[] = array( {
'title' => $keys[$i], if(array_key_exists($fieldKey, $value[$keys[$i]]))
'icon' => $value[$keys[$i]]["icon"], {
'link' => $value[$keys[$i]]["link"], $fields[$fieldKey]=$value[$keys[$i]][$fieldKey];
'tooltip' => $value[$keys[$i]]["tooltip"], }
'footer' => $value[$keys[$i]]['footer'] }
); self::$_navigation_array[] = $fields;
} }
elseif(array_key_exists('onclick', $value[$keys[$i]])) }
{ }
self::$_navigation_array[] = array( View::getInstance()->getEngine()->assignGlobal(self::getName(), self::$_navigation_array);
'title' => $keys[$i], }
'icon' => $value[$keys[$i]]["icon"],
'tooltip' => $value[$keys[$i]]["tooltip"],
'onclick' => $value[$keys[$i]]["onclick"],
'footer' => $value[$keys[$i]]['footer']
);
}
}
}
}
if( $name )
{
View::getInstance()->getEngine()->assignGlobal(self::getName(), self::$_navigation_array);
}
else
{
View::getInstance()->getEngine()->assignGlobal("navigationJson", self::$_navigation_array);
}
}
} }

14
core/c/model.php Normal file → Executable file
View File

@@ -78,6 +78,7 @@ class Model extends Table
$numItems = count($tablefields); $numItems = count($tablefields);
$i = 0; $i = 0;
$fieldarray = ""; $fieldarray = "";
$parameters = "";
foreach($this->getTables()[$table] as $field) foreach($this->getTables()[$table] as $field)
{ {
if( $i==0 ) if( $i==0 )
@@ -87,15 +88,25 @@ class Model extends Table
if( ++$i === $numItems ) if( ++$i === $numItems )
{ {
$parameters .= "private $".$field.";\n\t";
$setters .= "public function _set".str_replace('_', '', ucfirst($field))."($".$field.")\n\t{\n\t\t\$this->".$field." = $".$field.";\n\t}\n\n\t";
$getters .= "public function get".str_replace('_', '', ucfirst($field))."()\n\t{\n\t\treturn \$this->".$field.";\n\t}\n\n\t";
$fieldarray .= "\t\t\t\t\t\t\t\t'" . $field . "' => '" . $field . "'"."\n\t\t\t\t\t\t)"; $fieldarray .= "\t\t\t\t\t\t\t\t'" . $field . "' => '" . $field . "'"."\n\t\t\t\t\t\t)";
} }
else else
{ {
$parameters .= "private $".$field.";\n\t";
$setters .= "public function _set".str_replace('_', '', ucfirst($field))."($".$field.")\n\t{\n\t\t\$this->".$field." = $".$field.";\n\t}\n\n\t";
$getters .= "public function get".str_replace('_', '', ucfirst($field))."()\n\t{\n\t\treturn \$this->".$field.";\n\t}\n\n\t";
$fieldarray .= "\t\t\t\t\t\t\t\t'" . $field . "' => '" . $field . "',\n"; $fieldarray .= "\t\t\t\t\t\t\t\t'" . $field . "' => '" . $field . "',\n";
} }
} }
$template = str_replace('[FIELDARRAY]', $fieldarray, $this->getModelTemplate());
$template = str_replace('[CLASSPARAMETERS]', $parameters, $this->getModelTemplate());
$template = str_replace('[FIELDARRAY]', $fieldarray, $template);
$template = str_replace('[SETTERS]', $setters, $template);
$template = str_replace('[GETTERS]', $getters, $template);
$template = str_replace('[TABLE]', $table, $template); $template = str_replace('[TABLE]', $table, $template);
$template = str_replace('[CLASSNAME]', ucfirst($classname), $template); $template = str_replace('[CLASSNAME]', ucfirst($classname), $template);
$template = str_replace('[FOLDERNAME]', ucfirst($this->getFolderNamespace()), $template); $template = str_replace('[FOLDERNAME]', ucfirst($this->getFolderNamespace()), $template);
@@ -119,7 +130,6 @@ class Model extends Table
$template = str_replace('[ADAPTER]', self::ADAPTER_MYSQL, $template); $template = str_replace('[ADAPTER]', self::ADAPTER_MYSQL, $template);
$template = str_replace('[CONNECTOR]', self::ADAPTER_PDO, $template); $template = str_replace('[CONNECTOR]', self::ADAPTER_PDO, $template);
} }
if(Config::getInstance()->getConfig()[self::CONFIG_SECTION][self::DB_OVERWRITE_MODELS]) if(Config::getInstance()->getConfig()[self::CONFIG_SECTION][self::DB_OVERWRITE_MODELS])
{ {
file_put_contents($this->getFolderOut() . '/' . $classname . self::PHP_FILE_ENDING, $template); file_put_contents($this->getFolderOut() . '/' . $classname . self::PHP_FILE_ENDING, $template);

7
core/c/nibiru.php Normal file
View File

@@ -0,0 +1,7 @@
<?php
namespace Nibiru;
class Nibiru
{
//TODO: Generator Class in order to generate Modules fast
}

0
core/c/pdo.php Normal file → Executable file
View File

0
core/c/postgresql.php Normal file → Executable file
View File

0
core/c/psql.php Normal file → Executable file
View File

0
core/c/registry.php Normal file → Executable file
View File

View File

@@ -70,7 +70,7 @@ class Router extends Config
/** /**
* @return mixed * @return mixed
*/ */
public function getRoutes() public static function getRoutes()
{ {
return self::$_routes; return self::$_routes;
} }

0
core/c/settings.php Normal file → Executable file
View File

0
core/c/table.php Normal file → Executable file
View File

0
core/c/typecheckbox.php Normal file → Executable file
View File

39
core/c/typecloseany.php Executable file
View File

@@ -0,0 +1,39 @@
<?php
namespace Nibiru\Form;
use Nibiru\Adapter;
/**
* Copyright 2020 Nibiru Framework
* Licence: BSD 4-Old License
* Author: Stephan Kasdorf
* File: typeclosediv.php
* Date: 05.09.20
*/
class TypeCloseAny extends FormAttributes implements IForm
{
private $_attributes = array(
self::FORM_VALUE => '',
self::FORM_ATTRIBUTE_ID => '',
self::FORM_ATTRIBUTE_CLASS => '',
self::FORM_ATTRIBUTE_ANY => ''
);
/**
* @param $attributes
* @return mixed
*/
public function loadElement($attributes)
{
parent::__construct( $this->_attributes );
$this->_setElement();
$this->_setAttributes( self::loadAttributeValues( $attributes ) );
return $this->getElement();
}
/**
* just a closing div element
*/
private function _setElement( )
{
$this->_element = '</ANY>' . "\n";
}
}

0
core/c/typeclosediv.php Normal file → Executable file
View File

0
core/c/typecolor.php Normal file → Executable file
View File

0
core/c/typedate.php Normal file → Executable file
View File

0
core/c/typedatetime.php Normal file → Executable file
View File

0
core/c/typeemail.php Normal file → Executable file
View File

0
core/c/typefileupload.php Normal file → Executable file
View File

0
core/c/typehidden.php Normal file → Executable file
View File

0
core/c/typeimagesubmit.php Normal file → Executable file
View File

0
core/c/typenumber.php Normal file → Executable file
View File

40
core/c/typeopenany.php Executable file
View File

@@ -0,0 +1,40 @@
<?php
namespace Nibiru\Form;
use Nibiru\Adapter;
/**
* Copyright 2020 Nibiru Framework
* Licence: BSD 4-Old License
* Author: Stephan Kasdorf
* File: typeopendiv.php
* Date: 05.09.20
*/
class TypeOpenAny extends FormAttributes implements IForm
{
private $_attributes = array(
self::FORM_VALUE => '',
self::FORM_ATTRIBUTE_ID => '',
self::FORM_ATTRIBUTE_CLASS => '',
self::FORM_ATTRIBUTE_ANY => '',
self::FORM_ATTRIBUTE_HREF => ''
);
/**
* @param $attributes
* @return mixed
*/
public function loadElement($attributes)
{
parent::__construct( $this->_attributes );
$this->_setElement();
$this->_setAttributes( self::loadAttributeValues( $attributes ) );
return $this->getElement();
}
/**
* just the opening div element
*/
private function _setElement( )
{
$this->_element = '<ANY href="HREF" ID CLASS>' . 'VALUE' . "\n";
}
}

0
core/c/typeopendiv.php Normal file → Executable file
View File

0
core/c/typeoption.php Normal file → Executable file
View File

0
core/c/typepassword.php Normal file → Executable file
View File

0
core/c/typeradio.php Normal file → Executable file
View File

0
core/c/typerange.php Normal file → Executable file
View File

0
core/c/typereset.php Normal file → Executable file
View File

0
core/c/typesearch.php Normal file → Executable file
View File

0
core/c/typeselect.php Normal file → Executable file
View File

0
core/c/typesubmit.php Normal file → Executable file
View File

0
core/c/typetelefon.php Normal file → Executable file
View File

0
core/c/typetext.php Normal file → Executable file
View File

0
core/c/typetextarea.php Normal file → Executable file
View File

0
core/c/typeurl.php Normal file → Executable file
View File

View File

@@ -2,7 +2,9 @@
namespace Nibiru\Factory; namespace Nibiru\Factory;
use Nibiru\Form\TypeButton; use Nibiru\Form\TypeButton;
use Nibiru\Form\TypeCheckbox; use Nibiru\Form\TypeCheckbox;
use Nibiru\Form\TypeCloseAny;
use Nibiru\Form\TypeCloseDiv; use Nibiru\Form\TypeCloseDiv;
use Nibiru\Form\TypeCloseSpan;
use Nibiru\Form\TypeColor; use Nibiru\Form\TypeColor;
use Nibiru\Form\TypeDatetime; use Nibiru\Form\TypeDatetime;
use Nibiru\Form\TypeEmail; use Nibiru\Form\TypeEmail;
@@ -11,7 +13,9 @@ use Nibiru\Form\TypeHidden;
use Nibiru\Form\TypeImageSubmit; use Nibiru\Form\TypeImageSubmit;
use Nibiru\Form\TypeLabel; use Nibiru\Form\TypeLabel;
use Nibiru\Form\TypeNumber; use Nibiru\Form\TypeNumber;
use Nibiru\Form\TypeOpenAny;
use Nibiru\Form\TypeOpenDiv; use Nibiru\Form\TypeOpenDiv;
use Nibiru\Form\TypeOpenSpan;
use Nibiru\Form\TypeOption; use Nibiru\Form\TypeOption;
use Nibiru\Form\TypePassword; use Nibiru\Form\TypePassword;
use Nibiru\Form\TypeRadio; use Nibiru\Form\TypeRadio;
@@ -506,4 +510,25 @@ class Form
self::setElement( new TypeCloseDiv() ); self::setElement( new TypeCloseDiv() );
self::assemble( self::getElement()->loadElement( false ) ); self::assemble( self::getElement()->loadElement( false ) );
} }
/**
* @desc adds an opening span to the form element
* @param $attributes
* @return void
*/
public static function addOpenAny( $attributes )
{
self::setElement( new TypeOpenAny() );
self::assemble( self::getElement()->loadElement( $attributes ));
}
/**
* @desc adds a closing span to the form element
* @return void
*/
public static function addCloseAny( $attributes )
{
self::setElement( new TypeCloseAny() );
self::assemble( self::getElement()->loadElement( $attributes ));
}
} }

View File

@@ -83,6 +83,8 @@ require_once __DIR__ . '/c/typeurl.php';
require_once __DIR__ . '/c/typelabel.php'; require_once __DIR__ . '/c/typelabel.php';
require_once __DIR__ . '/c/typeopendiv.php'; require_once __DIR__ . '/c/typeopendiv.php';
require_once __DIR__ . '/c/typeclosediv.php'; require_once __DIR__ . '/c/typeclosediv.php';
require_once __DIR__ . '/c/typeopenany.php';
require_once __DIR__ . '/c/typecloseany.php';
require_once __DIR__ . '/i/view.php'; require_once __DIR__ . '/i/view.php';
require_once __DIR__ . '/c/view.php'; require_once __DIR__ . '/c/view.php';
require_once __DIR__ . '/i/controller.php'; require_once __DIR__ . '/i/controller.php';

0
core/i/auth.php Normal file → Executable file
View File

0
core/i/controller.php Normal file → Executable file
View File

0
core/i/db.php Normal file → Executable file
View File

0
core/i/engine.php Normal file → Executable file
View File

2
core/i/form.php Normal file → Executable file
View File

@@ -50,6 +50,8 @@ interface IForm
const FORM_ATTRIBUTE_TABINDEX = 'tabindex'; const FORM_ATTRIBUTE_TABINDEX = 'tabindex';
const FORM_ATTRIBUTE_DISABLED = 'disabled'; const FORM_ATTRIBUTE_DISABLED = 'disabled';
const FORM_ATTRIBUTE_PATTERN = 'pattern'; const FORM_ATTRIBUTE_PATTERN = 'pattern';
const FORM_ATTRIBUTE_ANY = 'any';
const FORM_ATTRIBUTE_HREF = 'href';
/** /**
* @desc loads the current Form element to the form * @desc loads the current Form element to the form

0
core/i/mysql.php Normal file → Executable file
View File

0
core/i/pdo.php Normal file → Executable file
View File

0
core/i/postgresql.php Normal file → Executable file
View File

0
core/i/psql.php Normal file → Executable file
View File

0
core/i/view.php Normal file → Executable file
View File

0
core/t/messages.php Normal file → Executable file
View File

BIN
nibiru Executable file

Binary file not shown.