diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b9cc7cb..6892da7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,9 @@ -# Contribution Guidelines for TempusDebugger -Contributing to TempusDebugger is completely voluntary and should follow all of the guidelines listed here in order to ensure the highest probability of acceptance. It is highly recommended to use a php linter to automate more of this process. The project is maintained on github and all contributions need to be submitted via pull request to their specific repository under the `dev` branch. In order to contribute, simply follow the instructions for [creating a pull request](#creating-a-pull-request) below. +# Contribution Guidelines for Houdini + +Contributing to Houdini is completely voluntary and should follow all of the guidelines listed here in order to ensure the highest probability of acceptance. It is highly recommended to use a php linter to automate more of this process. The project is maintained on github and all contributions need to be submitted via pull request to their specific repository under the `dev` branch. In order to contribute, simply follow the instructions for [creating a pull request](#creating-a-pull-request) below. ## Pull Request Requirements + - All revisions must follow TTP naming conventions (see [Naming Conventions](#naming-conventions) Section) - Include a clear and concise explanation of the features or changes included in your revision listed by file. - All code must follow [PSR 2](http://www.php-fig.org/psr/psr-2/) standards @@ -12,6 +14,7 @@ Contributing to TempusDebugger is completely voluntary and should follow all of - Any new dependencies will have a longer validation process and should be accompanied by the required information (see [Dependencies](#dependencies) Section) ## Naming Conventions + - File names are to be lower case - All class names must be upper case - Any data being stored as a file must be saved in the `app/` directory, preferably the `app/config/` directory. @@ -20,6 +23,7 @@ Contributing to TempusDebugger is completely voluntary and should follow all of - Views must be named using underscores for separation and must be prefixed with view_ ## Dependencies + Whenever a dependency is updated or added, pull requests must include a section that answers the following questions. - Why is this dependency required - Could this be reasonably accomplished within the app by implementing new features in a later version? explain. @@ -27,6 +31,7 @@ Whenever a dependency is updated or added, pull requests must include a section - What features are absolutely necessary for your feature or modification to work ## Documentation + ### Classes New classes must be prefaced with a doc-block following this style: @@ -38,7 +43,7 @@ New classes must be prefaced with a doc-block following this style: * * @version 3.0 * @author Joey Kimsey - * @link https://TheTempusProject.com/TempusDebugger + * @link https://TheTempusProject.com/Houdini * @license https://opensource.org/licenses/MIT [MIT LICENSE] */ ``` @@ -56,6 +61,7 @@ From top to bottom: `@link http://link.com` ### Functions + Functions must be prefaced with a doc-block following this style: ``` /** @@ -80,9 +86,9 @@ From top to bottom: `@return [type] - description` ## Creating a Pull Request -This is a simple explanation of how to create a pull request for changes to TempusDebugger. You can find a detailed walk-through on how to [create a pull request](https://help.github.com/articles/creating-a-pull-request/) on github. +This is a simple explanation of how to create a pull request for changes to Houdini. You can find a detailed walk-through on how to [create a pull request](https://help.github.com/articles/creating-a-pull-request/) on github. 1. First ensure you have followed all the contributing guidelines 2. Squash your merge into a single revision. This will make it easier to view the changes as a whole. -3. You can submit a pull request [here](https://github.com/TheTempusProject/TempusDebugger/compare) +3. You can submit a pull request [here](https://github.com/TheTempusProject/Houdini/compare) 4. Please submit all pull requests to the dev branch or they will be ignored. \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c32ae1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Joey Kimsey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index b18b56b..3698794 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,17 @@ # Houdini -Houdini is a php templating engine designed in conjunction with [The Tempus Project](https://thetempusproject.com). Honestly, I do not know how to explain it other than to show you. + +Houdini is a php templating engine designed in conjunction with [The Tempus Project](https://thetempusproject.com). This package allows you to store output as variables and plug it in to templates and formatted html either for direct display or cache assets to be rendered together as a completed page. + +This functionality applies to several commonly utilized page components such as navigation, forms, pagination, interface and more. ## Installation -You can install houdini either using composer or its included autoload functionality + +You can install houdini either using composer or its included autoload functionality in the bin folder. ## Usage ### Components +### Email ### Filters ### Forms ### Issues @@ -14,5 +19,5 @@ You can install houdini either using composer or its included autoload functiona ### Pagination ### Views -## Settings +## Constants / Settings diff --git a/bin/autoload.php b/bin/autoload.php index ddebe44..8d7f01d 100644 --- a/bin/autoload.php +++ b/bin/autoload.php @@ -13,14 +13,8 @@ namespace TheTempusProject\Houdini; use TheTempusProject\Hermes\Classes\Autoloader; -if ( ! defined('HOUDINI_ROOT_DIRECTORY' ) ) { - define('HOUDINI_ROOT_DIRECTORY', dirname(__DIR__) . DIRECTORY_SEPARATOR); -} -if ( ! defined('HOUDINI_CONFIG_DIRECTORY' ) ) { - define('HOUDINI_CONFIG_DIRECTORY', BEDROCK_ROOT_DIRECTORY . 'config' . DIRECTORY_SEPARATOR); -} if ( ! defined('HOUDINI_CONSTANTS_LOADED' ) ) { - require_once HOUDINI_CONFIG_DIRECTORY . 'constants.php'; + require_once dirname( __DIR__ ) . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'constants.php'; } $autoloader = new Autoloader; diff --git a/classes/email.php b/classes/email.php deleted file mode 100644 index 5c60661..0000000 --- a/classes/email.php +++ /dev/null @@ -1,219 +0,0 @@ - - * @link https://TheTempusProject.com/Core - * @license https://opensource.org/licenses/MIT [MIT LICENSE] - */ -namespace TheTempusProject\Houdini\Classes; - -use TheTempusProject\Houdini\Classes\Views; -use TheTempusProject\Bedrock\Classes\Config; -use TheTempusProject\Canary\Canary as Debug; -use TheTempusProject\Hermes\Functions\Route as Routes; - -class Email { - private static $header = null; - private static $subject = null; - private static $title = null; - private static $message = null; - private static $unsub = false; - private static $useTemplate = false; - private static $footer = null; - private static $debug = false; - - /** - * Sends pre-constructed email templates. Useful for modifying the - * entire theme or layout of the system generated emails. - * - * @param string $email - The email you are sending to. - * @param string $type - The template you wish to send. - * @param string|array $params - Any special parameters that may be required from your individual email template. - * - * @return bool - */ - public static function send( $email, $type, $params = null, $flags = null ) { - if ( !empty( $flags ) ) { - if ( is_array( $flags ) ) { - foreach ( $flags as $key => $value ) { - switch ( $key ) { - case 'template': - if ( $value == true ) { - self::$useTemplate = true; - } - break; - case 'unsubscribe': - if ( $value == true ) { - self::$unsub = true; - } - break; - case 'debug': - if ( $value == true ) { - self::$debug = false; - } - break; - } - } - } - } - self::build(); - switch ( $type ) { - case 'debug': - self::$subject = 'Please Confirm your email at {SITENAME}'; - self::$title = 'Almost Done'; - self::$message = 'Please click or copy-paste this link to confirm your registration: Confirm Your Email'; - break; - - case 'confirmation': - self::$subject = 'Please Confirm your email at {SITENAME}'; - self::$title = 'Almost Done'; - self::$message = 'Please click or copy-paste this link to confirm your registration: Confirm Your Email'; - break; - - case 'install': - self::$subject = 'Notification from {SITENAME}'; - self::$title = 'Installation Success'; - self::$message = 'This is just a simple email to notify you that you have successfully installed The Tempus Project framework!'; - break; - - case 'passwordChange': - self::$subject = 'Security Notice from {SITENAME}'; - self::$title = 'Password Successfully Changed'; - self::$message = 'Recently your password on {SITENAME} was changed. If you are the one who changed the password, please ignore this email.'; - break; - - case 'emailChangeNotice': - self::$subject = 'Account Update from {SITENAME}'; - self::$title = 'Email Updated'; - self::$message = 'This is a simple notification to let you know your email has been changed at {SITENAME}.'; - break; - - case 'emailChange': - self::$subject = 'Account Update from {SITENAME}'; - self::$title = 'Confirm your E-mail'; - self::$message = 'Please click or copy-paste this link to confirm your new Email: Confirm Your Email'; - break; - - case 'emailNotify': - self::$subject = 'Account Update from {SITENAME}'; - self::$title = 'Email Updated'; - self::$message = 'You recently changed your email address on {SITENAME}.'; - break; - - case 'forgotPassword': - self::$subject = 'Reset Instructions for {SITENAME}'; - self::$title = 'Reset your Password'; - self::$message = 'You recently requested information to change your password at {SITENAME}.
Your password reset code is: {PARAMS}
Please click or copy-paste this link to reset your password: Password Reset'; - break; - - case 'forgotUsername': - self::$subject = 'Account Update from {SITENAME}'; - self::$title = 'Account Details'; - self::$message = 'Your username for {SITENAME} is {PARAMS}.'; - break; - - case 'subscribe': - self::$subject = 'Thanks for Subscribing'; - self::$title = 'Thanks for Subscribing!'; - self::$message = 'Thank you for subscribing to updates from {SITENAME}. If you no longer wish to receive these emails, you can un-subscribe using the link below.'; - self::$unsub = true; - break; - - case 'unsubInstructions': - self::$subject = 'Unsubscribe Instructions'; - self::$title = 'We are sad to see you go'; - self::$message = 'If you would like to be un-subscribed from future emails from {SITENAME} simply click the link below.

Click here to unsubscribe'; - self::$unsub = true; - break; - - case 'unsubscribe': - self::$subject = 'Unsubscribed'; - self::$title = 'We are sad to see you go'; - self::$message = 'This is just a notification that you have successfully been unsubscribed from future emails from {SITENAME}.'; - break; - - case 'contact': - self::$subject = $params['subject']; - self::$title = $params['title']; - self::$message = $params['message']; - break; - - default: - return false; - break; - } - if ( self::$useTemplate ) { - $data = new \stdClass(); - if ( self::$unsub ) { - $data->UNSUB = Views::simpleView( 'email.unsubscribe' ); - } else { - $data->UNSUB = ''; - } - // $data->LOGO = Config::getValue('main/logo'); - $data->SITENAME = Config::getValue( 'main/name' ); - $data->EMAIL = $email; - if ( !is_array( $params ) ) { - $data->PARAMS = $params; - } else { - foreach ( $params as $key => $value ) { - $data->$key = $value; - } - } - $data->MAIL_FOOT = Views::simpleView( 'email.foot' ); - $data->MAIL_TITLE = self::$title; - $data->MAIL_BODY = Template::parse( self::$message, $data ); - $subject = Template::parse( self::$subject, $data ); - $body = Views::simpleView( 'email.template', $data ); - } else { - $subject = self::$subject; - $body = '

' . self::$title . '

' . self::$message; - } - - if ( !is_object( $email ) ) { - $email = (object) [ - (object) [ 'email' => $email ], - ]; - } - - $error = false; - foreach ( $email as $data ) { - if ( !mail( $data->email, $subject, $body, self::$header ) ) { - Debug::error( 'Failed to send email. emailSubject: ' . $subject . ' emailRecipientEmail: ' . $data->email ); - Debug::error( var_export( error_get_last(), true ) ); - $error = true; - } - } - if ( $error ) { - return false; - } - Debug::info( "Email sent: $type." ); - - return true; - } - - /** - * Constructor for the header. - */ - public static function build() { - if ( empty( self::$header ) ) { - self::$header = 'From: ' . Config::getValue( 'main/name' ) . ' <' . EMAIL_FROM_EMAIL . ">\r\n"; - self::$header .= "MIME-Version: 1.0\r\n"; - self::$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; - $url = parse_url( Routes::getAddress(), PHP_URL_HOST ); - $parts = explode( '.', $url ); - $count = count( $parts ); - if ( $count > 2 ) { - $host = $parts[$count - 2] . '.' . $parts[$count - 1]; - } else { - $host = $url; - } - if ( self::$debug ) { - self::$header .= 'CC: ' . DEBUG_EMAIL . "\r\n"; - } - } - } -} diff --git a/classes/pagination.php b/classes/pagination.php deleted file mode 100644 index 6b3385b..0000000 --- a/classes/pagination.php +++ /dev/null @@ -1,224 +0,0 @@ - - * @link https://TheTempusProject.com/Core - * @license https://opensource.org/licenses/MIT [MIT LICENSE] - */ -namespace TheTempusProject\Houdini\Classes; - -use TheTempusProject\Houdini\Classes\Template; -use TheTempusProject\Hermes\Functions\Route as Routes; -use TheTempusProject\Bedrock\Functions\Input; -use TheTempusProject\Bedrock\Classes\Config; -use TheTempusProject\Bedrock\Functions\Check; -use TheTempusProject\Canary\Canary as Debug; - -class Pagination extends Template { - //The settings that will not change - public static $paginationSettings = []; - - //The instance for each generation - public static $instance = null; - - public function __construct() { - if ( empty( self::$paginationSettings['limit'] ) ) { - $this->loadSettings(); - } - // check for user settings - if ( empty( self::$paginationSettings['perPage'] ) ) { - self::$paginationSettings['perPage'] = DEFAULT_RESULTS_PER_PAGE; - if ( ( !empty( self::$paginationSettings['userPerPage'] ) ) && ( self::$paginationSettings['userPerPage'] <= self::$paginationSettings['maxPerPage'] ) ) { - self::$paginationSettings['perPage'] = self::$paginationSettings['userPerPage']; - } - } - // The query minimum and maximum based on current page and page limit - if ( self::$paginationSettings['currentPage'] == 1 ) { - self::$paginationSettings['min'] = 0; - } else { - self::$paginationSettings['min'] = ( ( self::$paginationSettings['currentPage'] - 1 ) * self::$paginationSettings['perPage'] ); - } - // if ( self::$paginationSettings['currentPage'] == 1 ) { - self::$paginationSettings['max'] = self::$paginationSettings['perPage']; - // } else { - // self::$paginationSettings['max'] = ( self::$paginationSettings['currentPage'] * self::$paginationSettings['perPage'] ); - // } - // The query limit based on our settings here - self::$paginationSettings['limit'] = [self::$paginationSettings['min'], self::$paginationSettings['max']]; - } - - private static function loadSettings() { - Debug::log( 'Loading Pagination Settings.' ); - // hard cap built into system for displaying results - self::$paginationSettings['maxPerPage'] = MAX_RESULTS_PER_PAGE; - - // hard cap built into system retrieving results - self::$paginationSettings['maxQuery'] = Config::getValue( 'database/dbMaxQuery' ); - - // Set max query to the lowest of the three settings since this will modify how many results are possible. - if ( self::$paginationSettings['maxQuery'] <= self::$paginationSettings['maxPerPage'] ) { - self::$paginationSettings['maxPerPage'] = self::$paginationSettings['maxQuery']; - } - - // Check for results request to set/modify the perPage setting - if ( Input::exists( 'results' ) ) { - if ( Check::ID( Input::get( 'results' ) ) ) { - if ( Input::get( 'results' ) <= self::$paginationSettings['maxPerPage'] ) { - self::$paginationSettings['perPage'] = Input::get( 'results' ); - } - } - } - if ( empty( self::$paginationSettings['perPage'] ) ) { - self::$paginationSettings['perPage'] = self::$paginationSettings['maxPerPage']; - } - - // Check for pagination in get - if ( Input::exists( 'page' ) ) { - if ( Check::ID( Input::get( 'page' ) ) ) { - self::$paginationSettings['currentPage'] = (int) Input::get( 'page' ); - } else { - self::$paginationSettings['currentPage'] = 1; - } - } else { - self::$paginationSettings['currentPage'] = 1; - } - - if ( ( self::$paginationSettings['currentPage'] - 3 ) > 1 ) { - self::$paginationSettings['firstPage'] = ( self::$paginationSettings['currentPage'] - 2 ); - } else { - self::$paginationSettings['firstPage'] = 1; - } - } - - public static function generate() { - // account for empty values here instead of inside the script. - Debug::log( 'Creating new Pagination Instance.' ); - self::$instance = new self(); - return self::$instance; - } - - public static function updatePaginationTotal( $count ) { - if ( empty( self::$paginationSettings ) ) { - self::generate(); - } - if ( Check::id( $count ) ) { - Debug::log( 'Pagination: Updating results count' ); - self::$paginationSettings['results'] = $count; - self::$paginationSettings['totalPages'] = ceil( ( self::$paginationSettings['results'] / self::$paginationSettings['perPage'] ) ); - if ( ( self::$paginationSettings['currentPage'] + 3 ) < self::$paginationSettings['totalPages'] ) { - self::$paginationSettings['lastPage'] = self::$paginationSettings['currentPage'] + 3; - } else { - self::$paginationSettings['lastPage'] = self::$paginationSettings['totalPages']; - } - Debug::info( 'Pagination: results update completed.' ); - } else { - Debug::info( 'Pagination: results update failed.' ); - } - } - - public static function paginate() { - $pageData = []; - if ( self::firstPage() != 1 ) { - $data[1]['ACTIVEPAGE'] = ''; - $data[1]['PAGENUMBER'] = 1; - $data[1]['LABEL'] = 'First'; - $pageData[1] = (object) $data[1]; - } - for ( $x = self::firstPage(); $x < self::lastPage(); $x++ ) { - if ( $x == self::currentPage() ) { - $active = ' class="active"'; - } else { - $active = ''; - } - $data[$x]['ACTIVEPAGE'] = $active; - $data[$x]['PAGENUMBER'] = $x; - $data[$x]['LABEL'] = $x; - $pageData[$x] = (object) $data[$x]; - } - if ( self::lastPage() <= self::totalPages() ) { - $x = self::totalPages(); - if ( $x == self::currentPage() ) { - $active = ' class="active"'; - } else { - $active = ''; - } - $data[$x]['ACTIVEPAGE'] = $active; - $data[$x]['PAGENUMBER'] = $x; - $data[$x]['LABEL'] = 'Last'; - $pageData[$x] = (object) $data[$x]; - } - $pageData = (object) $pageData; - - if ( self::totalPages() <= 1 ) { - Components::set( 'PAGINATION', 'no pagination' ); - } else { - Components::set( 'PAGINATION', Views::simpleView( 'nav.pagination', $pageData ) ); - } - } - - public static function updatePrefs( $pageLimit ) { - if ( Check::id( $pageLimit ) ) { - Debug::log( 'Pagination: Updating user pref' ); - self::$paginationSettings['userPerPage'] = $pageLimit; - } else { - Debug::info( 'Pagination: User pref update failed.' ); - } - } - - /** - * Getters - */ - public static function getMin() { - if ( isset( self::$paginationSettings['min'] ) ) { - return self::$paginationSettings['min']; - } else { - Debug::info( 'Pagination: Min not found' ); - return 0; - } - } - public static function getMax() { - if ( isset( self::$paginationSettings['max'] ) ) { - return self::$paginationSettings['max']; - } else { - Debug::info( 'Pagination: Max not found' ); - return 0; - } - } - public static function perPage() { - if ( !empty( self::$paginationSettings['perPage'] ) ) { - return self::$paginationSettings['perPage']; - } - } - public static function firstPage() { - if ( !empty( self::$paginationSettings['firstPage'] ) ) { - return self::$paginationSettings['firstPage']; - } else { - Debug::info( 'Pagination: firstPage not found' ); - } - } - public static function lastPage() { - if ( !empty( self::$paginationSettings['lastPage'] ) ) { - return self::$paginationSettings['lastPage']; - } else { - Debug::info( 'Pagination: lastPage not found' ); - } - } - public static function totalPages() { - if ( !empty( self::$paginationSettings['totalPages'] ) ) { - return self::$paginationSettings['totalPages']; - } else { - Debug::info( 'Pagination: totalPages not found' ); - } - } - public static function currentPage() { - if ( !empty( self::$paginationSettings['currentPage'] ) ) { - return self::$paginationSettings['currentPage']; - } else { - Debug::info( 'Pagination: currentPage not found' ); - } - } -} \ No newline at end of file diff --git a/classes/template.php b/classes/template.php index 2e4d03b..17f93dd 100644 --- a/classes/template.php +++ b/classes/template.php @@ -16,15 +16,12 @@ namespace TheTempusProject\Houdini\Classes; use TheTempusProject\Canary\Canary as Debug; use TheTempusProject\Hermes\Functions\Route as Routes; -use TheTempusProject\Bedrock\Functions\Token; -use TheTempusProject\Bedrock\Functions\Date; -use TheTempusProject\Bedrock\Classes\Config; -use TheTempusProject\Bedrock\Classes\CustomException; +// use TheTempusProject\Bedrock\Functions\Date; +// use TheTempusProject\Bedrock\Classes\CustomException; use TheTempusProject\Houdini\Classes\Components; use TheTempusProject\Houdini\Classes\Forms; use TheTempusProject\Houdini\Classes\Filters; use TheTempusProject\Houdini\Classes\Issues; -use TheTempusProject\Houdini\Classes\Pagination; class Template { private static $follow = true; @@ -45,7 +42,6 @@ class Template { Components::set( 'ROOT_ADDRESS', Routes::getAddress() ); Components::set( 'TITLE', '' ); Components::set( 'PAGE_DESCRIPTION', '' ); - Components::set( 'TOKEN', Token::generate() ); Components::set( 'BASE', Routes::getAddress() ); Debug::gend(); } @@ -112,7 +108,7 @@ class Template { return self::loadTemplate( $location, $name ); } } - new CustomException( 'template', $docLocation ); + // new CustomException( 'template', $docLocation ); } /** @@ -130,7 +126,7 @@ class Template { $fullPath = $path . $name . '.inc.php'; $className = APP_SPACE . '\\Templates\\' . ucfirst( $name ) . 'Loader'; if ( !file_exists( $fullPath ) ) { - new CustomException( 'templateLoader', $fullPath ); + // new CustomException( 'templateLoader', $fullPath ); } else { Debug::log( 'Requiring template loader: ' . $name ); require_once $fullPath; @@ -206,10 +202,7 @@ class Template { self::buildRobot(); self::buildHeaders(); if ( empty( self::$templateLocation ) ) { - self::setTemplate( Config::getValue( 'main/template' ) ); - } - if ( empty( self::$templateLocation ) ) { - self::setTemplate( Config::getValue( 'main/template' ) ); + // throw an error here @todo return; } if ( !Debug::status( 'render' ) ) { @@ -322,6 +315,7 @@ class Template { * be used as components for the provided html. * @return string - The fully parsed html output. */ + public static function parse( $template, $data = null, $flags = null ) { if ( empty( $template ) ) { return $template; @@ -346,7 +340,8 @@ class Template { if ( empty( $data[2] ) ) { return ''; } - return Date::formatTimestamp( $data[1], $data[2] ); + return $data[2]; // @todo need a way to decouple this from houdini to bedrock + // return Date::formatTimestamp( $data[1], $data[2] ); }, $template ); diff --git a/composer.json b/composer.json index a23fb49..d8beaca 100644 --- a/composer.json +++ b/composer.json @@ -4,23 +4,38 @@ "description": "Php functions that aid in creating, managing, and displaying frontend components.", "license": "MIT", "minimum-stability": "dev", - "keywords": ["php","tools","frontend","thetempusproject"], - "homepage": "https://github.com/TheTempusProject/Houdini", - "authors": [ + "keywords": + [ + "php", + "tools", + "frontend", + "thetempusproject" + ], + "homepage": "https://git.thetempusproject.com/the-tempus-project/houdini", + "authors": + [ { "name": "Joey Kimsey", "email": "Joey@thetempusproject.com", - "homepage": "https://TheTempusProject.com", + "homepage": "https://JoeyKimsey.com", "role": "Lead Developer" } ], - "require": { - "php": ">=8.1.0" + "require": + { + "php": ">=8.1.0", + "thetempusproject/canary": ">=1.0", + "thetempusproject/hermes": ">=1.0" }, - "autoload": { - "classmap": [ + "autoload": + { + "classmap": + [ "classes" + ], + "files": + [ + "config/constants.php" ] } -} - +} \ No newline at end of file diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..186ffee --- /dev/null +++ b/composer.lock @@ -0,0 +1,109 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "a5f3c6aec6567c9b48b59eecc9588183", + "packages": [ + { + "name": "thetempusproject/canary", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://git.thetempusproject.com/the-tempus-project/canary", + "reference": "be5589533f8c1d0b1c28bac8829333f0077c698d" + }, + "require": { + "php": ">=8.1.0" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "config/constants.php", + "bin/canary.php" + ], + "classmap": [ + "classes" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joey Kimsey", + "email": "Joey@thetempusproject.com", + "homepage": "https://JoeyKimsey.com", + "role": "Lead Developer" + } + ], + "description": "Functionality for tracking, logging, and sending log messages to chrome for debugging.", + "homepage": "https://git.thetempusproject.com/the-tempus-project/canary", + "keywords": [ + "debugging", + "php", + "thetempusproject", + "tools" + ], + "time": "2024-08-08T05:18:19+00:00" + }, + { + "name": "thetempusproject/hermes", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://git.thetempusproject.com/the-tempus-project/hermes", + "reference": "e38f8debefb7097b15cb479184dc869e3e3111c0" + }, + "require": { + "php": ">=8.1.0" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "config/constants.php" + ], + "classmap": [ + "classes", + "functions" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joey Kimsey", + "email": "Joey@thetempusproject.com", + "homepage": "https://JoeyKimsey.com", + "role": "Lead Developer" + } + ], + "description": "Php functions that aid in routing and redirecting; requests and responses.", + "homepage": "https://git.thetempusproject.com/the-tempus-project/hermes", + "keywords": [ + "php", + "routing", + "thetempusproject", + "tools" + ], + "time": "2024-08-08T05:24:32+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=8.1.0" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/config/constants.php b/config/constants.php index 62bc5e4..17f0e2a 100644 --- a/config/constants.php +++ b/config/constants.php @@ -1,10 +1,12 @@ cssIncludes[] = Template::parse(''); - $this->jsIncludes[] = Template::parse(''); - - diff --git a/vendor/.gitignore b/vendor/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/vendor/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file