PHP Classes

File: uploady/logic/installLogic.php

Recommend this page to a friend!
  Classes of Faris AL-Otabi   Uploady PHP Upload File to MySQL   uploady/logic/installLogic.php   Download  
File: uploady/logic/installLogic.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Uploady PHP Upload File to MySQL
Store file upload details in a MySQL database
Author: By
Last change: Fix install.php
Fix #20
Date: 9 months ago
Size: 15,725 bytes
 

Contents

Class file image Download
<?php if (ENVIRONMENT == 'production' || ENVIRONMENT == 'testing' || ENVIRONMENT == 'development') { header("Location: /"); exit; } use Farisc0de\PhpMigration\Options\Options; use Farisc0de\PhpMigration\Options\Types; $utils = new Uploady\Utils(); $database = new Uploady\Database(); $install = new \Farisc0de\PhpMigration\Migration($database, $utils); $upload = new Farisc0de\PhpFileUploading\Upload(new Farisc0de\PhpFileUploading\Utility()); $php_alert = ""; if (PHP_VERSION_ID < 70200) { $php_alert = $utils->alert("Please update your PHP to 7.2", "danger", "times-circle"); } $required_libs = [ "JSON" => "json", "PDO" => "pdo", "MySQL" => "pdo_mysql", "Mbstring" => "mbstring", ]; $is_installed = []; foreach ($required_libs as $lib_name => $lib_id) { array_push($is_installed, ["name" => $lib_name, "status" => extension_loaded($lib_id) ? "Installed" : "Missing"]); } $writables = [ "uploads", "config/config.php", "config/environment.php" ]; $is_writable = []; foreach ($writables as $file_name) { array_push($is_writable, [ "name" => $file_name, "status" => is_writable($file_name) == true ? "Writable" : "Not Writable", ]); } $disabled = ""; if ( $utils->findKeyValue($is_installed, "status", "Missing") || $utils->findKeyValue($is_writable, "status", "Not Writable") || PHP_VERSION_ID < 70200 ) { $disabled = "disabled"; } $upload->generateUserID(); if ($_SERVER["REQUEST_METHOD"] == "POST") { try { $users = [ [ 'id', Types::integer(), Options::unSigned(), Options::notNull() ], [ 'username', Types::string(25), Options::notNull() ], [ 'email', Types::string(225), Options::notNull() ], [ 'password', Types::string(225), Options::notNull() ], [ 'user_id', Types::string(64), Options::notNull() ], [ 'role', Types::integer(), Options::notNull(), Options::defaultValue("1") ], [ 'api_key', Types::string(255), Options::notNull(), Options::defaultValue(bin2hex(random_bytes(16))) ], [ 'otp_status', Types::Boolean(), Options::notNull(), Options::defaultValue("0") ], [ 'otp_secret', Types::string(255), Options::Null(), ], [ 'failed_login', Types::integer(), Options::notNull(), Options::defaultValue("0") ], [ 'last_login', Types::timeStamp(), Options::notNull(), Options::defaultValue("CURRENT_TIMESTAMP") ], [ 'reset_hash', Types::string(64), Options::Null(), ], [ 'created_at', Types::timeStamp(), Options::Null(), ], [ 'activation_hash', Types::string(64), Options::Null(), ], [ 'is_active', Types::Boolean(), Options::notNull(), Options::defaultValue("0") ] ]; $files = [ ['id', Types::integer(), Options::unSigned(), Options::notNull()], ['file_id', Types::string(100), Options::notNull()], ['user_id', Types::string(100), Options::notNull()], ['file_data', Types::LongText(), Options::notNull()], ['file_settings', Types::LongText(), Options::notNull()], ['user_data', Types::LongText(), Options::notNull()], ['downloads', Types::integer(), Options::null()], ['uploaded_at', Types::timeStamp(), Options::null()], ]; $settings = [ ["id", Types::integer(), Options::unSigned(), Options::notNull()], ["setting_key", Types::string(50), Options::notNull()], ["setting_value", Types::string(225)], ]; $pages = [ ["id", Types::integer(), Options::unSigned(), Options::notNull()], ["slug", Types::Text(), Options::notNull()], ["deletable", Types::Boolean(), Options::defaultValue(0), Options::notNull()], ["created_at", Types::timeStamp(), Options::currentTimeStamp(), Options::notNull()] ]; $languages = [ ["id", Types::integer(), Options::unSigned(), Options::notNull()], ["language", Types::string(50), Options::notNull()], ["language_code", Types::string(50), Options::notNull()], ["language_direction", Types::string(10), Options::defaultValue("ltr"), Options::notNull()], ["is_active", Types::boolean(), Options::defaultValue(0), Options::notNull()], ["created_at", Types::timeStamp(), Options::currentTimeStamp(), Options::notNull()] ]; $pages_translation = [ ["id", Types::integer(), Options::unSigned(), Options::notNull()], ["page_id", Types::integer(), Options::notNull()], ["language_id", Types::integer(), Options::notNull()], ["title", Types::Text(), Options::notNull()], ["content", Types::LongText(), Options::notNull()], ["created_at", Types::timeStamp(), Options::currentTimeStamp(), Options::notNull()] ]; $roles = [ ["id", Types::integer(), Options::unSigned(), Options::notNull()], ["title", Types::string(75), Options::notNull()], ["size_limit", Types::string(150), Options::notNull()], ["created_at", Types::timeStamp(), Options::currentTimeStamp(), Options::notNull()] ]; $install->createTable("users", $users); $install->createTable("files", $files); $install->createTable("settings", $settings); $install->createTable("pages", $pages); $install->createTable("pages_translation", $pages_translation); $install->createTable("roles", $roles); $install->createTable("languages", $languages); $install->setPrimary("users", "id"); $install->setUnique("users", "email"); $install->setUnique("users", "user_id"); $install->setUnique("users", "activation_hash"); $install->setAutoinc("users", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->setPrimary("files", "id"); $install->setUnique("files", "file_id"); $install->setAutoinc("files", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->setPrimary("settings", "id"); $install->setAutoinc("settings", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->setPrimary("pages", "id"); $install->setAutoinc("pages", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->setPrimary("roles", "id"); $install->setAutoinc("roles", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->setPrimary("languages", "id"); $install->setAutoinc("languages", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->setPrimary("pages_translation", "id"); $install->setAutoinc("pages_translation", [ "id", Types::integer(), Options::unSigned(), Options::notNull() ]); $install->insertValue("users", [ "username" => $utils->sanitize($_POST["username"]), "email" => $utils->sanitize($_POST["email"]), "password" => password_hash($utils->sanitize($_POST["password"]), PASSWORD_BCRYPT), "user_id" => $upload->getUserID(), "role" => 3, "api_key" => bin2hex(random_bytes(16)), "is_active" => true ]); $install->insertValue( "settings", [ 'setting_key' => 'website_name', 'setting_value' => 'Uploady' ] ); $install->insertValue( "settings", [ 'setting_key' => 'website_headline', 'setting_value' => 'Simple File Uploading Software' ] ); $install->insertValue( "settings", [ 'setting_key' => 'description', 'setting_value' => 'this is uploading service website' ] ); $install->insertValue( "settings", [ 'setting_key' => 'keywords', 'setting_value' => 'upload,file upload,file uploading,file sharing' ] ); $install->insertValue( "settings", [ 'setting_key' => 'website_logo', 'setting_value' => null ] ); $install->insertValue( "settings", [ 'setting_key' => 'website_favicon', 'setting_value' => null ] ); $install->insertValue( "settings", [ 'setting_key' => 'owner_name', 'setting_value' => $utils->sanitize($_POST['username']) ] ); $install->insertValue( "settings", [ 'setting_key' => 'owner_email', 'setting_value' => $utils->sanitize($_POST['email']) ] ); $install->insertValue( "settings", [ 'setting_key' => 'public_upload', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'twitter_link', 'setting_value' => null ] ); $install->insertValue( "settings", [ 'setting_key' => 'instagram_link', 'setting_value' => null ] ); $install->insertValue( "settings", [ 'setting_key' => 'linkedin_link', 'setting_value' => null ] ); $install->insertValue( "settings", [ 'setting_key' => 'smtp_status', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'smtp_host', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'smtp_username', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'smtp_password', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'smtp_port', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'smtp_security', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'maintenance_mode', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'recaptcha_status', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'recaptcha_site_key', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'recaptcha_secret_key', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'adsense_status', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'adsense_client_code', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'analytics_status', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'analytics_code', 'setting_value' => '' ] ); $install->insertValue( "settings", [ 'setting_key' => 'sharethis_status', 'setting_value' => false ] ); $install->insertValue( "settings", [ 'setting_key' => 'sharethis_code', 'setting_value' => '' ] ); $install->insertValue("pages", [ 'slug' => 'about', 'deletable' => false ]); $install->insertValue("pages", [ 'slug' => 'terms', 'deletable' => false ]); $install->insertValue("pages", [ 'slug' => 'privacy', 'deletable' => false ]); $install->insertValue("roles", [ 'title' => 'User', 'size_limit' => '150 MB', ]); $install->insertValue("roles", [ 'title' => 'Guest', 'size_limit' => '50 MB', ]); $install->insertValue("roles", [ 'title' => 'Admin', 'size_limit' => '500 MB', ]); foreach ($utils->getLanguages() as $code => $name) { $install->insertValue("languages", [ 'language' => $name, 'language_code' => $code, 'is_active' => $code == 'en' ? true : false, ]); } // Enable Production Mode /* -------------------------- */ $env_file = APP_PATH . "config/environment.php"; $env_file_content = file_get_contents($env_file); $env_file_content = preg_replace("/installation/", "production", $env_file_content, 1); file_put_contents($env_file, $env_file_content); /* -------------------------- */ $msg = true; } catch (PDOException $ex) { $error = $ex->getMessage(); error_log($ex->getMessage() . "\n", 3, LOGS_PATH); } } $page = "installPage";