Update
Took 4 hours 1 minute
This commit is contained in:
Generated
+8
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
Generated
+21
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="Krzysieksiemv\Blog\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/twbs/bootstrap" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/blog-engine/php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/blog-engine/css" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/blog-engine/js" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpmailer/phpmailer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/summernote/font" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/summernote/lang" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/summernote/plugin" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
Generated
+12
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="blog@localhost" uuid="3c6b2249-6e5e-44cd-8a76-6fab98a5ceb9">
|
||||
<driver-ref>mariadb</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mariadb://localhost:3306/blog</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+412
@@ -0,0 +1,412 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DBNavigator.Project.DataEditorManager">
|
||||
<record-view-column-sorting-type value="BY_INDEX" />
|
||||
<value-preview-text-wrapping value="true" />
|
||||
<value-preview-pinned value="false" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseEditorStateManager">
|
||||
<last-used-providers />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||
<open-files />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.Settings">
|
||||
<connections />
|
||||
<browser-settings>
|
||||
<general>
|
||||
<display-mode value="TABBED" />
|
||||
<navigation-history-size value="100" />
|
||||
<show-object-details value="false" />
|
||||
</general>
|
||||
<filters>
|
||||
<object-type-filter>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="true" />
|
||||
<object-type name="ROLE" enabled="true" />
|
||||
<object-type name="PRIVILEGE" enabled="true" />
|
||||
<object-type name="CHARSET" enabled="true" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||
<object-type name="NESTED_TABLE" enabled="true" />
|
||||
<object-type name="COLUMN" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="true" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||
<object-type name="ARGUMENT" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="true" />
|
||||
<object-type name="CLUSTER" enabled="true" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</object-type-filter>
|
||||
</filters>
|
||||
<sorting>
|
||||
<object-type name="COLUMN" sorting-type="NAME" />
|
||||
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||
<object-type name="TYPE ATTRIBUTE" sorting-type="POSITION" />
|
||||
</sorting>
|
||||
<default-editors>
|
||||
<object-type name="VIEW" editor-type="SELECTION" />
|
||||
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||
<object-type name="TYPE" editor-type="SELECTION" />
|
||||
</default-editors>
|
||||
</browser-settings>
|
||||
<navigation-settings>
|
||||
<lookup-filters>
|
||||
<lookup-objects>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="false" />
|
||||
<object-type name="ROLE" enabled="false" />
|
||||
<object-type name="PRIVILEGE" enabled="false" />
|
||||
<object-type name="CHARSET" enabled="false" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="false" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="false" />
|
||||
<object-type name="CLUSTER" enabled="false" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</lookup-objects>
|
||||
<force-database-load value="false" />
|
||||
<prompt-connection-selection value="true" />
|
||||
<prompt-schema-selection value="true" />
|
||||
</lookup-filters>
|
||||
</navigation-settings>
|
||||
<dataset-grid-settings>
|
||||
<general>
|
||||
<enable-zooming value="true" />
|
||||
<enable-column-tooltip value="true" />
|
||||
</general>
|
||||
<sorting>
|
||||
<nulls-first value="true" />
|
||||
<max-sorting-columns value="4" />
|
||||
</sorting>
|
||||
<audit-columns>
|
||||
<column-names value="" />
|
||||
<visible value="true" />
|
||||
<editable value="false" />
|
||||
</audit-columns>
|
||||
</dataset-grid-settings>
|
||||
<dataset-editor-settings>
|
||||
<text-editor-popup>
|
||||
<active value="false" />
|
||||
<active-if-empty value="false" />
|
||||
<data-length-threshold value="100" />
|
||||
<popup-delay value="1000" />
|
||||
</text-editor-popup>
|
||||
<values-actions-popup>
|
||||
<show-popup-button value="true" />
|
||||
<element-count-threshold value="1000" />
|
||||
<data-length-threshold value="250" />
|
||||
</values-actions-popup>
|
||||
<general>
|
||||
<fetch-block-size value="100" />
|
||||
<fetch-timeout value="30" />
|
||||
<trim-whitespaces value="true" />
|
||||
<convert-empty-strings-to-null value="true" />
|
||||
<select-content-on-cell-edit value="true" />
|
||||
<large-value-preview-active value="true" />
|
||||
</general>
|
||||
<filters>
|
||||
<prompt-filter-dialog value="true" />
|
||||
<default-filter-type value="BASIC" />
|
||||
</filters>
|
||||
<qualified-text-editor text-length-threshold="300">
|
||||
<content-types>
|
||||
<content-type name="Text" enabled="true" />
|
||||
<content-type name="XML" enabled="true" />
|
||||
<content-type name="DTD" enabled="true" />
|
||||
<content-type name="HTML" enabled="true" />
|
||||
<content-type name="XHTML" enabled="true" />
|
||||
<content-type name="CSS" enabled="true" />
|
||||
<content-type name="SQL" enabled="true" />
|
||||
<content-type name="PL/SQL" enabled="true" />
|
||||
<content-type name="JavaScript" enabled="true" />
|
||||
<content-type name="JSON" enabled="true" />
|
||||
<content-type name="JSON5" enabled="true" />
|
||||
<content-type name="PHP" enabled="true" />
|
||||
<content-type name="YAML" enabled="true" />
|
||||
</content-types>
|
||||
</qualified-text-editor>
|
||||
<record-navigation>
|
||||
<navigation-target value="VIEWER" />
|
||||
</record-navigation>
|
||||
</dataset-editor-settings>
|
||||
<code-editor-settings>
|
||||
<general>
|
||||
<show-object-navigation-gutter value="false" />
|
||||
<show-spec-declaration-navigation-gutter value="true" />
|
||||
<enable-spellchecking value="true" />
|
||||
<enable-reference-spellchecking value="false" />
|
||||
</general>
|
||||
<confirmations>
|
||||
<save-changes value="false" />
|
||||
<revert-changes value="true" />
|
||||
</confirmations>
|
||||
</code-editor-settings>
|
||||
<code-completion-settings>
|
||||
<filters>
|
||||
<basic-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="false" />
|
||||
<filter-element type="OBJECT" id="view" selected="false" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||
<filter-element type="OBJECT" id="index" selected="false" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||
<filter-element type="OBJECT" id="function" selected="false" />
|
||||
<filter-element type="OBJECT" id="package" selected="false" />
|
||||
<filter-element type="OBJECT" id="type" selected="false" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</basic-filter>
|
||||
<extended-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</extended-filter>
|
||||
</filters>
|
||||
<sorting enabled="true">
|
||||
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||
<sorting-element type="OBJECT" id="column" />
|
||||
<sorting-element type="OBJECT" id="table" />
|
||||
<sorting-element type="OBJECT" id="view" />
|
||||
<sorting-element type="OBJECT" id="materialized view" />
|
||||
<sorting-element type="OBJECT" id="index" />
|
||||
<sorting-element type="OBJECT" id="constraint" />
|
||||
<sorting-element type="OBJECT" id="trigger" />
|
||||
<sorting-element type="OBJECT" id="synonym" />
|
||||
<sorting-element type="OBJECT" id="sequence" />
|
||||
<sorting-element type="OBJECT" id="procedure" />
|
||||
<sorting-element type="OBJECT" id="function" />
|
||||
<sorting-element type="OBJECT" id="package" />
|
||||
<sorting-element type="OBJECT" id="type" />
|
||||
<sorting-element type="OBJECT" id="dimension" />
|
||||
<sorting-element type="OBJECT" id="cluster" />
|
||||
<sorting-element type="OBJECT" id="dblink" />
|
||||
<sorting-element type="OBJECT" id="schema" />
|
||||
<sorting-element type="OBJECT" id="role" />
|
||||
<sorting-element type="OBJECT" id="user" />
|
||||
<sorting-element type="RESERVED_WORD" id="function" />
|
||||
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||
</sorting>
|
||||
<format>
|
||||
<enforce-code-style-case value="true" />
|
||||
</format>
|
||||
</code-completion-settings>
|
||||
<execution-engine-settings>
|
||||
<statement-execution>
|
||||
<fetch-block-size value="100" />
|
||||
<execution-timeout value="20" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<focus-result value="false" />
|
||||
<prompt-execution value="false" />
|
||||
</statement-execution>
|
||||
<script-execution>
|
||||
<command-line-interfaces />
|
||||
<execution-timeout value="300" />
|
||||
</script-execution>
|
||||
<method-execution>
|
||||
<execution-timeout value="30" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<parameter-history-size value="10" />
|
||||
</method-execution>
|
||||
</execution-engine-settings>
|
||||
<operation-settings>
|
||||
<transactions>
|
||||
<uncommitted-changes>
|
||||
<on-project-close value="ASK" />
|
||||
<on-disconnect value="ASK" />
|
||||
<on-autocommit-toggle value="ASK" />
|
||||
</uncommitted-changes>
|
||||
<multiple-uncommitted-changes>
|
||||
<on-commit value="ASK" />
|
||||
<on-rollback value="ASK" />
|
||||
</multiple-uncommitted-changes>
|
||||
</transactions>
|
||||
<session-browser>
|
||||
<disconnect-session value="ASK" />
|
||||
<kill-session value="ASK" />
|
||||
<reload-on-filter-change value="false" />
|
||||
</session-browser>
|
||||
<compiler>
|
||||
<compile-type value="KEEP" />
|
||||
<compile-dependencies value="ASK" />
|
||||
<always-show-controls value="false" />
|
||||
</compiler>
|
||||
<debugger>
|
||||
<debugger-type value="JDBC" />
|
||||
<use-generic-runners value="true" />
|
||||
</debugger>
|
||||
</operation-settings>
|
||||
<ddl-file-settings>
|
||||
<extensions>
|
||||
<mapping file-type-id="VIEW" extensions="vw" />
|
||||
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||
</extensions>
|
||||
<general>
|
||||
<lookup-ddl-files value="true" />
|
||||
<create-ddl-files value="false" />
|
||||
<synchronize-ddl-files value="true" />
|
||||
<use-qualified-names value="false" />
|
||||
<make-scripts-rerunnable value="true" />
|
||||
</general>
|
||||
</ddl-file-settings>
|
||||
<general-settings>
|
||||
<regional-settings>
|
||||
<date-format value="MEDIUM" />
|
||||
<number-format value="UNGROUPED" />
|
||||
<locale value="SYSTEM_DEFAULT" />
|
||||
<use-custom-formats value="false" />
|
||||
</regional-settings>
|
||||
<environment>
|
||||
<environment-types>
|
||||
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||
</environment-types>
|
||||
<visibility-settings>
|
||||
<connection-tabs value="true" />
|
||||
<dialog-headers value="true" />
|
||||
<object-editor-tabs value="true" />
|
||||
<script-editor-tabs value="false" />
|
||||
<execution-result-tabs value="true" />
|
||||
</visibility-settings>
|
||||
</environment>
|
||||
</general-settings>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="PROJECT_FILES" />
|
||||
<option name="description" value="" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="MarkdownSettingsMigration">
|
||||
<option name="stateVersion" value="1" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
+8
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/blog-engine.iml" filepath="$PROJECT_DIR$/.idea/blog-engine.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+38
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="MessDetectorOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PHPCSFixerOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PhpIncludePathManager">
|
||||
<include_path>
|
||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||
<path value="$PROJECT_DIR$/vendor/twbs/bootstrap" />
|
||||
<path value="$PROJECT_DIR$/vendor/blog-engine/scripts" />
|
||||
<path value="$PROJECT_DIR$/vendor/blog-engine/css" />
|
||||
<path value="$PROJECT_DIR$/vendor/blog-engine/js" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpmailer/phpmailer" />
|
||||
<path value="$PROJECT_DIR$/vendor/blog-engine/php" />
|
||||
<path value="$PROJECT_DIR$/vendor/summernote/font" />
|
||||
<path value="$PROJECT_DIR$/vendor/summernote/lang" />
|
||||
<path value="$PROJECT_DIR$/vendor/summernote/plugin" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
|
||||
<component name="PhpStanOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PhpUnit">
|
||||
<phpunit_settings>
|
||||
<PhpUnitSettings custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" />
|
||||
</phpunit_settings>
|
||||
</component>
|
||||
<component name="PsalmOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
</project>
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
+8
-8
@@ -7,16 +7,16 @@
|
||||
const BLOG_RAN = true;
|
||||
|
||||
// Tytuł bloga
|
||||
const BLOG_TITLE = "Kwiatowy Blog";
|
||||
const BLOG_TITLE = "nowy blog";
|
||||
|
||||
// Opis bloga
|
||||
const BLOG_DESC = "ef";
|
||||
const BLOG_DESC = "o niczym";
|
||||
|
||||
// Autor bloga/Nazwa wyświetlana dla głównego administratora bloga
|
||||
const BLOG_AUTHOR = "Krzysiek Smaga";
|
||||
|
||||
// Tagi bloga
|
||||
const BLOG_TAGS = "kwiaty, rośliny";
|
||||
const BLOG_TAGS = "asdf, sadf, wr";
|
||||
|
||||
// Domena bloga
|
||||
const BLOG_DOMAIN = "http://localhost";
|
||||
@@ -38,17 +38,17 @@
|
||||
const DB_PASS = "";
|
||||
|
||||
// Baza danych dla bloga
|
||||
const DB_NAME = "blog";
|
||||
const DB_NAME = "blog_now";
|
||||
|
||||
/*
|
||||
* KONFIGURACJA NARZĘDZIA SERWEROWEGO
|
||||
*/
|
||||
|
||||
// Port, który ma używać PHP dla serwera publicznego
|
||||
const PUB_PORT = "8085";
|
||||
const PUB_PORT = "8080";
|
||||
|
||||
// Port, który ma używać PHP dla serwera deweloperskiego
|
||||
const DEV_PORT = "8086";
|
||||
const DEV_PORT = "8081";
|
||||
|
||||
/*
|
||||
* KONFIGURACJA KONTA ADMINISTRATORA
|
||||
@@ -58,7 +58,7 @@
|
||||
const ADMIN_USER = "admin";
|
||||
|
||||
// Adres mailowy kontaktowy do głównego administratora bloga
|
||||
const ADMIN_EMAIL = "krzysiek-smaga@outlook.com";
|
||||
const ADMIN_EMAIL = "admin@blog.pl";
|
||||
|
||||
// Hasło dla głównego administratora bloga
|
||||
const ADMIN_PASS = "root";
|
||||
@@ -81,4 +81,4 @@
|
||||
const MAIL_PORT = "";
|
||||
|
||||
// Wymaga SSL'a
|
||||
const MAIL_SSL = 1;
|
||||
const MAIL_SSL = 0;
|
||||
+2
-2
@@ -57,11 +57,11 @@
|
||||
<p>Jeżeli chcesz korzystać z korzyści, jakie dają wbudowane narzędzia tego silnika, możesz ustawić pod siebie to, co chcesz. </p>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<label class="form-label" for="PUB_PORT">Nazwa użytkownika:</label>
|
||||
<label class="form-label" for="PUB_PORT">Port publiczny:</label>
|
||||
<input class="form-control mb-3" type="number" name="PUB_PORT" min="1" max="65535" placeholder="8080" value="8080" required>
|
||||
</div>
|
||||
<div class="col">
|
||||
<label class="form-label" for="DEV_PORT">Hasło:</label>
|
||||
<label class="form-label" for="DEV_PORT">Developer Port:</label>
|
||||
<input class="form-control mb-3" type="number" name="DEV_PORT" min="1" max="65535" placeholder="8081" value="8081" required />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
if(isset($_POST['logmein'])){
|
||||
$remember = ($_POST['remember'] ?? false);
|
||||
$auth->Authenticate($_POST['login'], $_POST['password'], $remember);
|
||||
unset($_POST['logmein']);
|
||||
}
|
||||
|
||||
if(isset($_SESSION['uToken_BE'])){
|
||||
if($auth->CheckRole($_SESSION['uToken_BE']) == "administrator" || $auth->CheckRole($_SESSION['uToken_BE']) == "moderator")
|
||||
if(isset($_GET['goto']))
|
||||
|
||||
+3
-1
@@ -3,10 +3,12 @@
|
||||
require "vendor/blog-engine/php/Authentication/AuthController.php";
|
||||
use BlogEngine\Authentication\AuthController;
|
||||
|
||||
session_start();
|
||||
|
||||
$auth = new AuthController();
|
||||
$conn = $auth->Connection();
|
||||
|
||||
if(!isset($_COOKIE['uToken_BE']))
|
||||
if(!isset($_SESSION['uToken_BE']))
|
||||
header("location: be_login.php");
|
||||
|
||||
$site = ($_GET['s'] ?? "home");
|
||||
|
||||
+90
-8
@@ -57,9 +57,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_POST['add'])){
|
||||
if(isset($_POST['add']))
|
||||
$postcon->CreatePost($_POST['title'], $_POST['content'], $_POST['name'], $_POST['tags'], $_POST['comments_status'], (isset($_POST['now_time']) ? true : $_POST['add_time']), "public");
|
||||
}
|
||||
|
||||
if(isset($_POST['draft']))
|
||||
$postcon->DraftPost($_POST['draft'], $_POST['title'], $_POST['content'], $_POST['name'], $_POST['tags'], $_POST['comments_status']);
|
||||
|
||||
if(isset($_POST['delete']))
|
||||
$postcon->DeletePost($_POST['delete']);
|
||||
|
||||
if(isset($_POST['update']))
|
||||
$postcon->UpdatePost($_POST['update'], $_POST['title'], $_POST['content'], $_POST['name'], $_POST['tags'], $_POST['comments_status']);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="pl">
|
||||
@@ -77,6 +85,7 @@
|
||||
</head>
|
||||
<body>
|
||||
<div class="container pt-3">
|
||||
<div id="alerts"></div>
|
||||
<h2 class="mb-5"><button class="btn btn-primary" onclick="location.href='../be_panel.php?s=posts'">Wróć</button> <?php echo ($post != null?"Modyfikowanie posta: '{$post['Tytuł']}'":"Dodawanie nowego posta") ?></h2>
|
||||
<form method="POST" action="be_post.php">
|
||||
<div class="row mb-3">
|
||||
@@ -87,9 +96,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 d-flex btn btn-group">
|
||||
<?php echo ($post != null?"<button type='submit' class='btn btn-success' name='update' value='{$post['ID']}'>Zaktualizuj</button>":"<button type='submit' class='btn btn-success' name='add'>Dodaj</button>") ?>
|
||||
<button type="submit" class="btn btn-primary" name="draft">Zapisz jako wersja robocza</button>
|
||||
<button type="submit" class="btn btn-danger" name="delete">Usuń</button>
|
||||
<?php echo ($post != null?"<button type='submit' class='btn btn-success' id='update_it' name='update' value='{$post['ID']}'>Zaktualizuj</button>":"<button type='submit' class='btn btn-success' name='add'>Dodaj</button>") ?>
|
||||
<button type="submit" class="btn btn-primary" name="draft" value="<?php echo ($post != null?$post['ID']:0) ?>">Zapisz jako wersja robocza</button>
|
||||
<button type="button" data-bs-toggle="modal" data-bs-target="#deletePost" class="btn btn-danger" <?php if($post == null) echo "disabled" ?>>Usuń</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -102,10 +111,11 @@
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">Ustawienia posta</h4>
|
||||
<div class='form-check mb-3'><input type='checkbox' id="autosave" class='form-check-input' checked><label for='autosave'>Automatyczne zapisywanie posta do wersji roboczej co 1 minutę</label> </div>
|
||||
<input type="hidden" name="id_post" id="id_post" value="<?php echo ($post != null?$post['ID']:0); ?>" />
|
||||
<h5>Status posta</h5>
|
||||
<p><?php echo ($post != null?$post['Widocznosc']:"W trakcie tworzenia") ?></p>
|
||||
<h5>Kto może publikować komentarze</h5>
|
||||
<select name="comments_status" class="form-select mb-3">
|
||||
<select name="comments_status" id="comments_status" class="form-select mb-3">
|
||||
<option value="open" <?php if($post != null && $post['Komentarze'] == 'open') echo "selected" ?>>Każdy</option>
|
||||
<option value="registered" <?php if($post != null && $post['Komentarze'] == 'registered') echo "selected" ?>>Zalogowani</option>
|
||||
<option value="closed" <?php if($post != null && $post['Komentarze'] == 'closed') echo "selected" ?>>Nikt</option>
|
||||
@@ -138,12 +148,11 @@
|
||||
<label for='now_time'>Godzina dodania równa godzinie naciśnięcia przycisku</label>
|
||||
</div>");
|
||||
?>
|
||||
|
||||
<div class="modal fade" id="newTag" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="exampleModalLabel">Tworzenie nowego tagu</h1>
|
||||
<h1 class="modal-title fs-5">Tworzenie nowego tagu</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
@@ -164,6 +173,27 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
if($post != null){
|
||||
echo '<div class="modal fade" id="deletePost" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Czy na pewno chcesz usunąć post?</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>Po usunięciu nie odzyskasz już tego posta. Pamiętaj, że możesz zawsze zarchiwizować swój post</p>
|
||||
<div class="text-end">
|
||||
<button type="submit" class="btn btn-danger" value="' . $post['ID'] . '" name="delete">Zatwierdź usunięcie</button>
|
||||
<button type="button" class="btn btn-success" data-bs-dismiss="modal">Anuluj</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -174,6 +204,11 @@
|
||||
<script>
|
||||
let title = document.getElementById('title');
|
||||
let insert = document.getElementById('content');
|
||||
let autosave_option = document.getElementById("autosave");
|
||||
|
||||
let autosave = autosave_option.value;
|
||||
let autosave_status = "";
|
||||
|
||||
$(document).ready(function(e){
|
||||
$('#summernote').summernote({
|
||||
height: 600,
|
||||
@@ -192,9 +227,56 @@
|
||||
createTag(document.getElementById('show_name').value, document.getElementById('slug').value, document.getElementById('tags'));
|
||||
}, true);
|
||||
|
||||
if(document.getElementById("update_it") != null) {
|
||||
document.getElementById('update_it').addEventListener('click', function () {
|
||||
insert.value = $('#summernote').summernote('code');
|
||||
}, true);
|
||||
}
|
||||
|
||||
title.addEventListener('keyup', function (e){
|
||||
if(title.value.length < 60)
|
||||
document.getElementById('name').value = title.value.toLowerCase().replace(" ", "_");
|
||||
}, true);
|
||||
|
||||
autosave_option.addEventListener('change', () => {
|
||||
autosave = autosave_option.value;
|
||||
}, true);
|
||||
|
||||
setInterval(function(){
|
||||
if(autosave){
|
||||
let tags = document.getElementsByName("tags[]");
|
||||
let selected_tags = "";
|
||||
for(let i = 0; i < tags.length; i++){
|
||||
if(tags[i].checked)
|
||||
selected_tags += "&tags[]=" + tags[i].value;
|
||||
}
|
||||
|
||||
let xhttp = new XMLHttpRequest();
|
||||
xhttp.open("POST", "../vendor/blog-engine/php/Posts/Calls/AutosaveCall.php");
|
||||
xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||
xhttp.onreadystatechange = function(e){
|
||||
if(this.readyState === 4 && this.status === 200){
|
||||
let wrapper = document.createElement("div");
|
||||
wrapper.innerHTML = "<div class='alert alert-primary' role='alert' id='alert'><div>" + this.responseText + "</div><button type='button' class='btn-close' data-bs-dismiss='alert'></button></div>";
|
||||
document.getElementById('alerts').append(wrapper);
|
||||
alert();
|
||||
}
|
||||
}
|
||||
xhttp.send(
|
||||
"id=" + document.getElementById("id_post").value +
|
||||
"&name=" + document.getElementById("name").value +
|
||||
"&title=" + document.getElementById('title').value +
|
||||
"&content=" + document.getElementById('content').value +
|
||||
"&commentStatus=" + document.getElementById("comments_status").value +
|
||||
selected_tags
|
||||
);
|
||||
}
|
||||
}, 60000);
|
||||
|
||||
function alert(){
|
||||
setTimeout(function (){
|
||||
document.getElementById('alerts').removeChild(document.getElementById('alerts').firstChild);
|
||||
}, 10000);
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
|
||||
+133
-1
@@ -1,4 +1,9 @@
|
||||
<?php
|
||||
require_once "vendor/blog-engine/php/Configuration.php";
|
||||
require_once "vendor/blog-engine/php/Authentication/AuthController.php";
|
||||
use BlogEngine\Configuration;
|
||||
use BlogEngine\Authentication\AuthController;
|
||||
|
||||
if(file_exists("_config.php")) {
|
||||
require "vendor/blog-engine/php/Dictionary.php";
|
||||
}
|
||||
@@ -20,6 +25,9 @@
|
||||
public function main($argv, $argc) : void{
|
||||
if($argc > 1){
|
||||
switch($argv[1]){
|
||||
case "init":
|
||||
$this->init();
|
||||
break;
|
||||
case "compile":
|
||||
if($argv[2] != null)
|
||||
switch($argv[2]) {
|
||||
@@ -105,7 +113,7 @@
|
||||
$site = str_replace($page_tag, $this->dictionary->page_tags[$page_tag], $site);
|
||||
}
|
||||
|
||||
$site = str_replace("<body>", "<body>\n<?php include \$topbar; ?>", $site);
|
||||
$site = str_replace("<body>", "<body>\n<?php echo \$topbar; ?>", $site);
|
||||
|
||||
$site_file = fopen("$folder/" . $name, "w");
|
||||
fwrite($site_file, $site);
|
||||
@@ -216,11 +224,135 @@ Aby zatrzymać serwer, naciśnij Ctrl+C
|
||||
===============================
|
||||
Dostępne komendy dla narzędzia:
|
||||
|
||||
* init - uruchamia kreator bloga
|
||||
* start-server [pub/dev] - uruchom serwer dla projektu. Opcja 'dev' specjalna dla programisty, opcja 'pub' dla każdego użytkownika. Domyślnie 'pub'
|
||||
* help - wyświetl listę komend
|
||||
* compile [pub/dev] - skompiluj projekt strony z folderu 'src'. Opcja 'dev' specjalna dla programisty, opcja 'pub' dla każdego użytkownika. Domyślnie 'pub'
|
||||
";
|
||||
}
|
||||
|
||||
public function init() : void {
|
||||
$data = array();
|
||||
echo "Okeeej! Czas na konfiguracje serwera blogowego! Zacznijmy od początku.\n";
|
||||
$_POST['BLOG_AUTHOR'] = readline("Jak się nazywasz: ");
|
||||
echo "\n> Cześć, {$_POST['BLOG_AUTHOR']}! ";
|
||||
|
||||
$_POST['BLOG_TITLE'] = readline("Jak będzie się ten blog nazywał: ");
|
||||
while($_POST['BLOG_TITLE'] == ""){
|
||||
$_POST['BLOG_TITLE'] = readline("Jeszcze raz... Jak się będzie nazywać ten blog: ");
|
||||
}
|
||||
|
||||
$_POST['BLOG_DESC'] = readline("O czym jest ten blog? Jaki jest jego opis: ");
|
||||
while($_POST['BLOG_DESC'] == ""){
|
||||
$_POST['BLOG_DESC'] = readline("Jeszcze raz... O czym jest ten blgo? Jaki jest jego opis: ");
|
||||
}
|
||||
|
||||
$_POST['BLOG_TAGS'] = readline("Jakie są słowa kluczowe dla tego bloga (oddziel przecinkiem): ");
|
||||
while($_POST['BLOG_TAGS'] == ""){
|
||||
$_POST['BLOG_TAGS'] = readline("Jeszcze raz... Jakie są słowa kluczowe dla tego bloga? Oddziel słowa przecinkiem: ");
|
||||
}
|
||||
|
||||
$_POST['BLOG_DOMAIN'] = readline("Na jakiej domenie będzie stał blog? (Domyślnie http://localhost): ");
|
||||
if($_POST['BLOG_DOMAIN'] == "")
|
||||
$_POST['BLOG_DOMAIN'] = "http://localhost";
|
||||
|
||||
echo "\nDobrze, przejdźmy do konfiguracji bazy danych. Nie będzie trudno\n";
|
||||
$_POST['DB_HOST'] = readline("Jaki jest adres serwera bazy danych? (Domyślnie: 127.0.0.1:3306): ");
|
||||
if($_POST['DB_HOST'] == "")
|
||||
$_POST['DB_HOST'] = "127.0.0.1:3306";
|
||||
|
||||
$_POST['DB_USER'] = readline("Nazwa użytkownika (Domyślnie: root): ");
|
||||
if($_POST['DB_USER'] == "")
|
||||
$_POST['DB_USER'] = "root";
|
||||
|
||||
$_POST['DB_PASS'] = readline("Hasło: ");
|
||||
|
||||
$_POST['DB_NAME'] = readline("Baza danych: ");
|
||||
while($_POST['DB_NAME'] == "")
|
||||
$_POST['DB_NAME'] = readline("Podaj poprawną nazwę bazy danych: ");
|
||||
|
||||
echo "\nUstawmy teraz odpowiednie porty\n";
|
||||
$_POST['PUB_PORT'] = readline("Port dla publicznego trybu serwera (Domyślnie: 8080): ");
|
||||
if($_POST['PUB_PORT'] == "")
|
||||
$_POST['PUB_PORT'] = "8080";
|
||||
|
||||
$_POST['DEV_PORT'] = readline("Port dla deweloperskiego trybu serwera (Domyślnie: 8081): ");
|
||||
if($_POST['DEV_PORT'] == "")
|
||||
$_POST['DEV_PORT'] = "8081";
|
||||
|
||||
echo "\nTeraz skonfigurujmy konto administratora dla bloga\n";
|
||||
$_POST['ADMIN_USER'] = readline("Nazwa użytkownika (Domyślnie: admin): ");
|
||||
if($_POST['ADMIN_USER'] == "")
|
||||
$_POST['ADMIN_USER'] = "admin";
|
||||
|
||||
$_POST['ADMIN_EMAIL'] = readline("Adres e-mail: ");
|
||||
while($_POST['ADMIN_EMAIL'] == "")
|
||||
$_POST['ADMIN_EMAIL'] = readline("Podaj poprawny adres mailowy: ");
|
||||
|
||||
$ADMIN_PASS = readline("Hasło: ");
|
||||
$ADMIN_REPASS = readline("Powtórz hasło: ");
|
||||
|
||||
while($ADMIN_PASS != $ADMIN_REPASS){
|
||||
echo "\nBłędnie wpisano hasła. Wpisz ponownie hasło\n";
|
||||
$ADMIN_PASS = readline("Hasło: ");
|
||||
$ADMIN_REPASS = readline("Powtórz hasło: ");
|
||||
}
|
||||
|
||||
$_POST['ADMIN_PASS'] = $ADMIN_PASS;
|
||||
|
||||
if(strtolower(readline("Czy chcesz skonfigurować teraz serwer poczty? (Y/N) (Domyślnie: N): ")) == "y"){
|
||||
$_POST['MAIL_NAME'] = readline("Podaj adres, z którego będą wysyłane maile: ");
|
||||
while($_POST['MAIL_NAME'] == "")
|
||||
$_POST['MAIL_NAME'] = readline("Podaj adres, z którego będą wysyłane maile: ");
|
||||
|
||||
$_POST['MAIL_PASS'] = readline("Hasło: ");
|
||||
while($_POST['MAIL_PASS'] == "")
|
||||
$_POST['MAIL_PASS'] = readline("Hasło: ");
|
||||
|
||||
$_POST['MAIL_SRV'] = readline("Serwer poczty wychodzącej (SMTP): ");
|
||||
while($_POST['MAIL_SRV'] == "")
|
||||
$_POST['MAIL_SRV'] = readline("Serwer poczty wychodzącej (SMTP): ");
|
||||
|
||||
$_POST['MAIL_PORT'] = readline("Port serwera: ");
|
||||
while($_POST['MAIL_PORT'] == "")
|
||||
$_POST['MAIL_PORT'] = readline("Port serwera: ");
|
||||
|
||||
$MAIL_SSL = strtolower(readline("Czy serwer poczty wymaga certyfikatu SSL? (Y/n): "));
|
||||
while($MAIL_SSL != "y" && $MAIL_SSL != "n"){
|
||||
$MAIL_SSL = strtolower(readline("Czy serwer poczty wymaga certyfikatu SSL? (Y/n): "));
|
||||
}
|
||||
|
||||
if($MAIL_SSL == "y")
|
||||
$MAIL_SSL = 1;
|
||||
else
|
||||
$MAIL_SSL = 0;
|
||||
} else {
|
||||
$_POST['MAIL_NAME'] = "";
|
||||
$_POST['MAIL_PASS'] = "";
|
||||
$_POST['MAIL_SRV'] = "";
|
||||
$_POST['MAIL_PORT'] = "";
|
||||
$MAIL_SSL = 0;
|
||||
}
|
||||
|
||||
$data = [
|
||||
"BLOG_TITLE" => $_POST['BLOG_TITLE'], "BLOG_DESC" => $_POST['BLOG_DESC'], "BLOG_AUTHOR" => $_POST['BLOG_AUTHOR'], "BLOG_TAGS" => $_POST['BLOG_TAGS'], "BLOG_DOMAIN" => $_POST['BLOG_DOMAIN'], "BLOG_ICON" => $file,
|
||||
"DB_HOST" => $_POST['DB_HOST'], "DB_USER" => $_POST['DB_USER'], "DB_PASS" => $_POST['DB_PASS'], "DB_NAME" => $_POST['DB_NAME'],
|
||||
"PUB_PORT" => $_POST['PUB_PORT'], "DEV_PORT" => $_POST['DEV_PORT'],
|
||||
"ADMIN_USER" => $_POST['ADMIN_USER'], "ADMIN_EMAIL" => $_POST['ADMIN_EMAIL'], "ADMIN_PASS" => $_POST['ADMIN_PASS'],
|
||||
"MAIL_NAME" => $_POST['MAIL_NAME'], "MAIL_PASS" => $_POST['MAIL_PASS'], "MAIL_SRV" => $_POST['MAIL_SRV'], "MAIL_PORT" => $_POST['MAIL_PORT'], "MAIL_SSL" => $MAIL_SSL
|
||||
];
|
||||
|
||||
$configuration = new Configuration();
|
||||
$auth = new AuthController();
|
||||
|
||||
$configuration->SendData($data);
|
||||
|
||||
include "_config.php";
|
||||
|
||||
$auth->CreateDatabase();
|
||||
|
||||
echo "Pomyślnie skonfigurowano!";
|
||||
}
|
||||
}
|
||||
|
||||
$exec = new CompileIt();
|
||||
|
||||
+3
-1
@@ -17,6 +17,8 @@
|
||||
"require": {
|
||||
"twbs/bootstrap": "^5.2",
|
||||
"phpmailer/phpmailer": "^6.7.1",
|
||||
"ext-mysqli": "*"
|
||||
"ext-mysqli": "*",
|
||||
"ext-readline": "*",
|
||||
"ext-mbstring": "*"
|
||||
}
|
||||
}
|
||||
+6
-7
@@ -5,21 +5,20 @@
|
||||
<title>Witaj świecie! - Kwiatowy Blog</title>
|
||||
|
||||
<link rel='stylesheet' href='vendor/blog-engine/blog.css' />
|
||||
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css' />
|
||||
<link rel='stylesheet' href='dev/css/style.css?v2' />
|
||||
<link rel='stylesheet' href='dev/css/style.css?v3.2' />
|
||||
|
||||
<meta name="author" content="Krzysiek Smaga">
|
||||
<meta name="keywords" content="kwiaty, rośliny">
|
||||
<meta name="keywords" content="nowy, pierwszy, super">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
</head>
|
||||
<body>
|
||||
<?php include $topbar; ?>
|
||||
<?php (isset($_SESSION['uToken_BE'])?include $topbar:""); ?>
|
||||
<h1>Kwiatowy Blog</h1>
|
||||
<p>ef</p>
|
||||
<p>dsfsadf</p>
|
||||
<a href="be_login.php">Zaloguj się do panelu</a>
|
||||
</body>
|
||||
|
||||
<script src='vendor/blog-engine/blog.js'></script>
|
||||
<script src='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js'></script>
|
||||
<script src='dev/js/script.js?v2'></script>
|
||||
<script src='vendor/blog-engine/js/jquery-3.7.0.min.js'></script>
|
||||
<script src='dev/js/script.js?v3.2'></script>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
require "_config.php";
|
||||
require "vendor/blog-engine/php/Authentication/AuthController.php";
|
||||
require "vendor/blog-engine/php/Posts/PostController.php";
|
||||
|
||||
use BlogEngine\Posts\PostController;
|
||||
use BlogEngine\Authentication\AuthController;
|
||||
|
||||
session_start();
|
||||
|
||||
$auth = new AuthController();
|
||||
$conn = $auth->Connection();
|
||||
+7
-4
@@ -5,17 +5,20 @@
|
||||
<title>Witaj świecie! - Kwiatowy Blog</title>
|
||||
|
||||
<link rel='stylesheet' href='vendor/blog-engine/blog.css' />
|
||||
<link rel='stylesheet' href='public/css/style.css?v1' />
|
||||
<link rel='stylesheet' href='public/css/style.css?v3.1' />
|
||||
|
||||
<meta name="author" content="Krzysiek Smaga">
|
||||
<meta name="keywords" content="kwiaty, rośliny">
|
||||
<meta name="keywords" content="nowy, pierwszy, super">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
</head>
|
||||
<body>
|
||||
<?php include $topbar; ?>
|
||||
<h1>Kwiatowy Blog</h1>
|
||||
<p>ef</p>
|
||||
<p>dsfsadf</p>
|
||||
<a href="be_login.php">Zaloguj się do panelu</a>
|
||||
</body>
|
||||
|
||||
<script src='vendor/blog-engine/blog.js'></script>
|
||||
<script src='public/js/script.js?v1'></script>
|
||||
<script src='vendor/blog-engine/js/jquery-3.7.0.min.js'></script>
|
||||
<script src='public/js/script.js?v3.1'></script>
|
||||
</html>
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
require "../../../../_config.php";
|
||||
require "../Authentication/AuthController.php";
|
||||
use BlogEngine\Authentication\AuthController;
|
||||
|
||||
$auth = new AuthController();
|
||||
$conn = $auth->Connection();
|
||||
|
||||
if(isset($_POST['title']) && isset($_POST['content']) && isset($_POST['name'])){
|
||||
|
||||
}
|
||||
|
||||
$conn->close();
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
require "../../../../../_config.php";
|
||||
require "../../Authentication/AuthController.php";
|
||||
require "../PostController.php";
|
||||
|
||||
use BlogEngine\Posts\PostController;
|
||||
use BlogEngine\Authentication\AuthController;
|
||||
|
||||
session_start();
|
||||
|
||||
$auth = new AuthController();
|
||||
$conn = $auth->Connection();
|
||||
|
||||
$postcon = new PostController($auth);
|
||||
|
||||
if(isset($_POST['name']) && isset($_POST['title']) && isset($_POST['content'])){
|
||||
$id = $_POST['id'] ?? 0;
|
||||
if($postcon->AutoSave($id, $_POST['name'], $_POST['title'], $_POST['content'], (isset($_POST['tags'])?$_POST['tags']:null), $_POST['commentStatus']))
|
||||
echo "Zapisano zmiany!";
|
||||
else
|
||||
echo "Błąd w zapisie! Spróbuj ponownie później";
|
||||
}
|
||||
+109
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace BlogEngine\Posts {
|
||||
use BlogEngine\Authentication\AuthController;
|
||||
use Cassandra\Date;
|
||||
|
||||
class PostController {
|
||||
public AuthController $auth;
|
||||
@@ -24,7 +25,115 @@ namespace BlogEngine\Posts {
|
||||
mysqli_query($srv, "INSERT INTO tag_to_post VALUES($tag, $last_id_post)");
|
||||
}
|
||||
|
||||
$srv->close();
|
||||
header("location: ../../../be_panel.php?s=posts");
|
||||
}
|
||||
|
||||
public function DraftPost($id = 0, $title = '', $content = '', $name = '', $tags = [], $commentStatus = ''){
|
||||
$srv = $this->auth->Connection();
|
||||
|
||||
$date = (is_bool($add_time)?"NOW":Date("'Y-m-d H:i:s'", strtotime($add_time)));
|
||||
$id_user = $this->auth->GetID($_SESSION['uToken_BE']);
|
||||
|
||||
if($id == 0){
|
||||
$id = mysqli_fetch_row(mysqli_query($srv, "SELECT MAX(id_post) FROM posts;"))[0] + 1;
|
||||
|
||||
$insert_post = "INSERT INTO posts VALUES($last_id_post, $id_user, '$name', '$title', '$content', 'draft', '$commentStatus', 0, $date, null);";
|
||||
mysqli_query($srv, $insert_post);
|
||||
|
||||
foreach ($tags as $tag){
|
||||
mysqli_query($srv, "INSERT INTO tag_to_post VALUES($tag, $id)");
|
||||
}
|
||||
} else {
|
||||
$update_post = "UPDATE posts SET id_post = $id, name = '$name', title = '$title', content = '$content', status = 'draft', comments = '$commentStatus' WHERE id_post = $id;";
|
||||
mysqli_query($srv, $update_post);
|
||||
mysqli_query($srv, "DELETE FROM tag_to_post WHERE id_post = $id");
|
||||
|
||||
foreach ($tags as $tag){
|
||||
mysqli_query($srv, "INSERT INTO tag_to_post VALUES($tag, $id)");
|
||||
}
|
||||
}
|
||||
|
||||
$srv->close();
|
||||
header("location: ../../../be_panel.php?s=posts");
|
||||
}
|
||||
|
||||
public function UpdatePost($id, $title, $content, $name, $tags, $commentStatus){
|
||||
$srv = $this->auth->Connection();
|
||||
|
||||
$date = (is_bool($add_time)?"NOW":Date("'Y-m-d H:i:s'", strtotime($add_time)));
|
||||
$id_user = $this->auth->GetID($_SESSION['uToken_BE']);
|
||||
|
||||
$update_post = "UPDATE posts SET id_post = $id, name = '$name', title = '$title', content = '$content', status = 'public', comments = '$commentStatus', updated_at = NOW() WHERE id_post = $id;";
|
||||
mysqli_query($srv, $update_post);
|
||||
mysqli_query($srv, "DELETE FROM tag_to_post WHERE id_post = $id");
|
||||
|
||||
foreach ($tags as $tag){
|
||||
mysqli_query($srv, "INSERT INTO tag_to_post VALUES($tag, $id)");
|
||||
}
|
||||
|
||||
$srv->close();
|
||||
header("location: ../../../be_panel.php?s=posts");
|
||||
}
|
||||
|
||||
public function DeletePost($id){
|
||||
$srv = $this->auth->Connection();
|
||||
mysqli_query($srv, "DELETE FROM tag_to_post WHERE id_post = $id");
|
||||
mysqli_query($srv, "DELETE FROM posts WHERE id_post = $id");
|
||||
$srv->close();
|
||||
header("location: ../../../be_panel.php?s=posts");
|
||||
}
|
||||
|
||||
public function AutoSave($id, $name, $title, $content, $tags = null, $commentStatus = "open") : bool {
|
||||
$srv = $this->auth->Connection();
|
||||
$response = false;
|
||||
$id_user = $this->auth->GetID($_SESSION['uToken_BE']);
|
||||
|
||||
$post = "";
|
||||
if($id == null || $id == 0){
|
||||
$post = "INSERT INTO posts VALUES(null, $id_user, '$name', '$title', '$content', 'draft', '$commentStatus', 0, NOW(), null)";
|
||||
} else {
|
||||
$post = "UPDATE posts SET name = '$name', title = '$title', content = '$content', status = 'draft', comments = '$commentStatus' WHERE id_post = $id";
|
||||
}
|
||||
|
||||
if(mysqli_query($srv, $post))
|
||||
$response = true;
|
||||
|
||||
$srv->close();
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function DownloadPost($year, $month, $date, $name) : array {
|
||||
$srv = $this->auth->Connection();
|
||||
$post = array();
|
||||
|
||||
$get_post = "SELECT users.display_name AS autor, posts.title AS tytul, posts.content AS tresc, posts.views AS wyswietlenia, posts.added_at AS dodano, (SELECT GROUP_CONCAT(CONCAT(comments.author, ";;", comments.content, ";;", comments.added_at)) FROM comments WHERE comments.id_post = posts.id_post GROUP BY comments.id_comment) AS komentarze FROM posts, users WHERE users.id_user = posts.id_user AND YEAR(added_at) = '$year' AND MONTH(added_at) = '$month' AND DAY(added_at) = '$day' AND posts.name = '$name';";
|
||||
$res_post = mysqli_query($srv, $get_post);
|
||||
|
||||
if($row = mysqli_fetch_row($res_post)){
|
||||
array_push($post, [
|
||||
"Autor" => $row[0],
|
||||
"Tytul" => $row[1],
|
||||
"Tresc" => $row[2],
|
||||
"Wyswietlenia" => $row[3],
|
||||
"Dodano" => $row[4],
|
||||
"Komentarze" => array()
|
||||
]);
|
||||
|
||||
$comments = mb_split("||||", $row[5]);
|
||||
|
||||
foreach($comments as $comment){
|
||||
$data = mb_split(";;", $comment);
|
||||
array_push($post[0]["Komentarze"], [
|
||||
"Autor" => $data[0],
|
||||
"Tresc" => $data[1],
|
||||
"Dodano" => $data[2]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return post;
|
||||
}
|
||||
}
|
||||
}
|
||||
Vendored
+56
-49
@@ -42,35 +42,37 @@ namespace Composer\Autoload;
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
/** @var ?string */
|
||||
/** @var \Closure(string):void */
|
||||
private static $includeFile;
|
||||
|
||||
/** @var string|null */
|
||||
private $vendorDir;
|
||||
|
||||
// PSR-4
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<string, int>>
|
||||
* @var array<string, array<string, int>>
|
||||
*/
|
||||
private $prefixLengthsPsr4 = array();
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<int, string>>
|
||||
* @var array<string, list<string>>
|
||||
*/
|
||||
private $prefixDirsPsr4 = array();
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, string>
|
||||
* @var list<string>
|
||||
*/
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<string, string[]>>
|
||||
* List of PSR-0 prefixes
|
||||
*
|
||||
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
|
||||
*
|
||||
* @var array<string, array<string, list<string>>>
|
||||
*/
|
||||
private $prefixesPsr0 = array();
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, string>
|
||||
* @var list<string>
|
||||
*/
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
@@ -78,8 +80,7 @@ class ClassLoader
|
||||
private $useIncludePath = false;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
* @psalm-var array<string, string>
|
||||
* @var array<string, string>
|
||||
*/
|
||||
private $classMap = array();
|
||||
|
||||
@@ -87,29 +88,29 @@ class ClassLoader
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
/**
|
||||
* @var bool[]
|
||||
* @psalm-var array<string, bool>
|
||||
* @var array<string, bool>
|
||||
*/
|
||||
private $missingClasses = array();
|
||||
|
||||
/** @var ?string */
|
||||
/** @var string|null */
|
||||
private $apcuPrefix;
|
||||
|
||||
/**
|
||||
* @var self[]
|
||||
* @var array<string, self>
|
||||
*/
|
||||
private static $registeredLoaders = array();
|
||||
|
||||
/**
|
||||
* @param ?string $vendorDir
|
||||
* @param string|null $vendorDir
|
||||
*/
|
||||
public function __construct($vendorDir = null)
|
||||
{
|
||||
$this->vendorDir = $vendorDir;
|
||||
self::initializeIncludeClosure();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]
|
||||
* @return array<string, list<string>>
|
||||
*/
|
||||
public function getPrefixes()
|
||||
{
|
||||
@@ -121,8 +122,7 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return array<string, array<int, string>>
|
||||
* @return array<string, list<string>>
|
||||
*/
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
@@ -130,8 +130,7 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return array<string, string>
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
@@ -139,8 +138,7 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return array<string, string>
|
||||
* @return list<string>
|
||||
*/
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
@@ -148,8 +146,7 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[] Array of classname => path
|
||||
* @psalm-return array<string, string>
|
||||
* @return array<string, string> Array of classname => path
|
||||
*/
|
||||
public function getClassMap()
|
||||
{
|
||||
@@ -157,8 +154,7 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $classMap Class to filename map
|
||||
* @psalm-param array<string, string> $classMap
|
||||
* @param array<string, string> $classMap Class to filename map
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@@ -176,23 +172,24 @@ class ClassLoader
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param string[]|string $paths The PSR-0 root directories
|
||||
* @param list<string>|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
$paths
|
||||
);
|
||||
}
|
||||
|
||||
@@ -201,19 +198,19 @@ class ClassLoader
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
$this->prefixesPsr0[$first][$prefix] = $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
$paths
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -223,7 +220,7 @@ class ClassLoader
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param string[]|string $paths The PSR-4 base directories
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
@@ -232,17 +229,18 @@ class ClassLoader
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
$paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
@@ -252,18 +250,18 @@ class ClassLoader
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
$this->prefixDirsPsr4[$prefix] = $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
$paths
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -273,7 +271,7 @@ class ClassLoader
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param string[]|string $paths The PSR-0 base directories
|
||||
* @param list<string>|string $paths The PSR-0 base directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@@ -291,7 +289,7 @@ class ClassLoader
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param string[]|string $paths The PSR-4 base directories
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
@@ -425,7 +423,8 @@ class ClassLoader
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
$includeFile = self::$includeFile;
|
||||
$includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -476,9 +475,9 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
||||
* Returns the currently registered loaders keyed by their corresponding vendor directories.
|
||||
*
|
||||
* @return self[]
|
||||
* @return array<string, self>
|
||||
*/
|
||||
public static function getRegisteredLoaders()
|
||||
{
|
||||
@@ -555,6 +554,14 @@ class ClassLoader
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
private static function initializeIncludeClosure()
|
||||
{
|
||||
if (self::$includeFile !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -564,9 +571,9 @@ class ClassLoader
|
||||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
* @private
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
self::$includeFile = \Closure::bind(static function($file) {
|
||||
include $file;
|
||||
}, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
+11
-4
@@ -98,7 +98,7 @@ class InstalledVersions
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (isset($installed['versions'][$packageName])) {
|
||||
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
|
||||
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ class InstalledVersions
|
||||
*/
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints($constraint);
|
||||
$constraint = $parser->parseConstraints((string) $constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
@@ -328,7 +328,9 @@ class InstalledVersions
|
||||
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir];
|
||||
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require $vendorDir.'/composer/installed.php';
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = $required;
|
||||
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||
self::$installed = $installed[count($installed) - 1];
|
||||
}
|
||||
@@ -340,12 +342,17 @@ class InstalledVersions
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
self::$installed = require __DIR__ . '/installed.php';
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require __DIR__ . '/installed.php';
|
||||
self::$installed = $required;
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (self::$installed !== array()) {
|
||||
$installed[] = self::$installed;
|
||||
}
|
||||
|
||||
return $installed;
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -3,7 +3,7 @@
|
||||
'name' => 'krzysieksiemv/blog',
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => '905de3bcc7dff60b47d30a2f635649c644437b23',
|
||||
'reference' => 'e7dd0b2fd68fa13c0a39aee2f4a6f43a02202ec1',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
@@ -13,7 +13,7 @@
|
||||
'krzysieksiemv/blog' => array(
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => '905de3bcc7dff60b47d30a2f635649c644437b23',
|
||||
'reference' => 'e7dd0b2fd68fa13c0a39aee2f4a6f43a02202ec1',
|
||||
'type' => 'project',
|
||||
'install_path' => __DIR__ . '/../../',
|
||||
'aliases' => array(),
|
||||
|
||||
Reference in New Issue
Block a user