├── .gitignore ├── Changelog.md ├── Credits.md ├── README.md ├── app ├── Controllers │ ├── AdminPanel.php │ ├── Auth.php │ ├── ChangeLang.php │ ├── Home.php │ ├── LiveCheck.php │ └── Members.php ├── Example-Config.php ├── Install │ ├── Footer.php │ ├── Header.php │ ├── Install.php │ ├── Step1.php │ ├── Step2.php │ ├── Step3.php │ ├── Step4.php │ ├── Step5.php │ ├── database_check.php │ ├── database_import.php │ ├── email_check.php │ ├── recap_check.php │ └── recaptcha.php ├── Models │ ├── AdminPanel.php │ ├── Auth.php │ ├── Home.php │ ├── Members.php │ ├── Recent.php │ └── Users.php ├── Plugins │ ├── Comments │ │ ├── CommentsVersion.php │ │ ├── Controllers │ │ │ └── Comments.php │ │ ├── Models │ │ │ └── Comments.php │ │ └── Views │ │ │ ├── comments_sidebar.php │ │ │ └── view_comments_status.php │ ├── Forum │ │ ├── Controllers │ │ │ ├── Forum.php │ │ │ └── ForumAdmin.php │ │ ├── ForumVersion.php │ │ ├── Models │ │ │ ├── Forum.php │ │ │ └── ForumAdmin.php │ │ └── Views │ │ │ ├── forum_blocked.php │ │ │ ├── forum_categories.php │ │ │ ├── forum_home.php │ │ │ ├── forum_settings.php │ │ │ ├── forum_sidebar.php │ │ │ ├── forum_top_sweets_card.php │ │ │ ├── forum_top_viewed_card.php │ │ │ ├── forum_unpublished.php │ │ │ ├── newtopic.php │ │ │ ├── searchForum.php │ │ │ ├── topic.php │ │ │ └── topics.php │ ├── Friends │ │ ├── Controllers │ │ │ └── Friends.php │ │ ├── FriendsVersion.php │ │ ├── Models │ │ │ └── Friends.php │ │ └── Views │ │ │ ├── friend_requests.php │ │ │ ├── friends.php │ │ │ └── friends_sidebar.php │ └── Messages │ │ ├── Controllers │ │ └── Messages.php │ │ ├── MessagesVersion.php │ │ ├── Models │ │ └── Messages.php │ │ └── Views │ │ ├── message_display.php │ │ ├── message_new.php │ │ ├── messages.php │ │ ├── messages_list.php │ │ └── messages_sidebar.php ├── Routes.php ├── System │ ├── Controller.php │ ├── Error.php │ ├── ErrorLogger.php │ ├── Language │ │ ├── En │ │ │ ├── 404.php │ │ │ ├── Auth.php │ │ │ ├── Friends.php │ │ │ ├── Members.php │ │ │ └── Welcome.php │ │ ├── Es │ │ │ ├── 404.php │ │ │ ├── Auth.php │ │ │ ├── Friends.php │ │ │ ├── Members.php │ │ │ └── Welcome.php │ │ ├── LangList.php │ │ └── fr │ │ │ ├── 404.php │ │ │ ├── Auth.php │ │ │ ├── Friends.php │ │ │ ├── Members.php │ │ │ └── Welcome.php │ ├── Libraries │ │ ├── Adds.php │ │ ├── Assets.php │ │ ├── Auth │ │ │ ├── Auth.php │ │ │ ├── Cookie.php │ │ │ └── Cookie_Multi_Domain.php │ │ ├── BBCode.php │ │ ├── Comments.php │ │ ├── Common.php │ │ ├── Csrf.php │ │ ├── CurrentUserData.php │ │ ├── Database.php │ │ ├── ErrorMessages.php │ │ ├── Form.php │ │ ├── ForumStats.php │ │ ├── Images.php │ │ ├── Inflector.php │ │ ├── Language.php │ │ ├── PageFunctions.php │ │ ├── PageViews.php │ │ ├── Paginator.php │ │ ├── Password.php │ │ ├── PhpMailer │ │ │ ├── Exception.php │ │ │ ├── Mail.php │ │ │ ├── PhpMailer.php │ │ │ ├── Pop3.php │ │ │ └── Smtp.php │ │ ├── Request.php │ │ ├── Session.php │ │ ├── SimpleImage.php │ │ ├── SiteStats.php │ │ ├── SuccessMessages.php │ │ ├── Sweets.php │ │ ├── TimeDiff.php │ │ ├── Url.php │ │ └── ZipCode.php │ ├── Load.php │ ├── LoadSiteSettings.php │ ├── Models.php │ └── Router.php ├── Templates │ ├── AdminPanel │ │ ├── Assets │ │ │ ├── css │ │ │ │ ├── datepicker.css │ │ │ │ ├── datepicker3.css │ │ │ │ ├── index.htm │ │ │ │ └── sb-admin.css │ │ │ ├── images │ │ │ │ ├── favicon.ico │ │ │ │ ├── index.htm │ │ │ │ ├── logo.gif │ │ │ │ └── uap3logolg.gif │ │ │ └── js │ │ │ │ ├── bootstrap.bundle.min.js │ │ │ │ ├── chart-data.js │ │ │ │ ├── chart.min.js │ │ │ │ ├── index.htm │ │ │ │ ├── jquery.easing.min.js │ │ │ │ ├── jquery.min.js │ │ │ │ └── sb-admin.min.js │ │ ├── Footer.php │ │ └── Header.php │ └── Default │ │ ├── Assets │ │ ├── css │ │ │ ├── index.htm │ │ │ └── style.css │ │ ├── images │ │ │ ├── favicon.ico │ │ │ ├── index.htm │ │ │ ├── logo.gif │ │ │ ├── uap3logolg.gif │ │ │ └── uap4logo_wait_animation.gif │ │ └── js │ │ │ ├── bbcode.js │ │ │ ├── bbcode_status.js │ │ │ ├── form_check_all.js │ │ │ ├── forum_autosave_topic.js │ │ │ ├── forum_autosave_topic_reply.js │ │ │ ├── index.htm │ │ │ ├── index.html │ │ │ ├── lang.En.js │ │ │ ├── lang.Es.js │ │ │ ├── live_email.js │ │ │ ├── live_username_check.js │ │ │ ├── loader.js │ │ │ └── password_strength_match.js │ │ ├── Footer.php │ │ └── Header.php ├── Update │ ├── Update.php │ └── db_updates_421_to_430.sql └── Views │ ├── Adds │ ├── AddsBottom.php │ ├── AddsSidebarBottom.php │ ├── AddsSidebarTop.php │ └── AddsTop.php │ ├── AdminPanel │ ├── Adds.php │ ├── AdminPanel.php │ ├── AdvancedSettings.php │ ├── AuthLogs.php │ ├── EmailSettings.php │ ├── Group.php │ ├── Groups.php │ ├── MassEmail.php │ ├── PagePermissions.php │ ├── PagesPermissions.php │ ├── Settings.php │ ├── SiteLink.php │ ├── SiteLinks.php │ ├── SystemRoute.php │ ├── SystemRoutes.php │ ├── TermsPrivacy.php │ ├── Upgrade.php │ ├── User.php │ └── Users.php │ ├── Error │ └── 404.php │ ├── Home │ ├── About.php │ ├── Contact.php │ ├── Content.php │ ├── Error.php │ ├── Home.php │ ├── Member-Forum-Sidebar.php │ ├── Member-Friends-Sidebar.php │ └── Recent.php │ └── Members │ ├── Account-Settings.php │ ├── Activate.php │ ├── Change-Email.php │ ├── Change-Password.php │ ├── Edit-Profile-Image.php │ ├── Edit-Profile-Images.php │ ├── Edit-Profile.php │ ├── Forgot-Password.php │ ├── LiveCheck.php │ ├── Login.php │ ├── Member-Account-Sidebar.php │ ├── Member-Stats-Sidebar.php │ ├── Members.php │ ├── Privacy-Settings.php │ ├── Register.php │ ├── Resend-Activation.php │ ├── Reset-Password.php │ └── View-Profile.php ├── assets ├── images │ ├── forum-pics │ │ ├── index.html │ │ ├── replies │ │ │ └── index.html │ │ └── topics │ │ │ └── index.html │ ├── index.html │ └── profile-pics │ │ ├── default-1.jpg │ │ ├── default-2.jpg │ │ ├── default-3.jpg │ │ ├── default-4.jpg │ │ ├── default-5.jpg │ │ └── index.html ├── index.html └── themes │ ├── cerulean │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── cosmo │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── cyborg │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── darkly │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── default │ └── uap-custom.css │ ├── flatly │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── index.html │ ├── journal │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── litera │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── lumen │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── lux │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── materia │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── minty │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── pulse │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── sandstone │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── simplex │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── sketchy │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── slate │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── solar │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── spacelab │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── superhero │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ ├── united │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css │ └── yeti │ ├── _bootswatch.scss │ ├── _variables.scss │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── uap-custom.css ├── composer.json ├── composer.lock ├── database.sql ├── errors ├── missing-lang.log └── php-error.log └── public ├── .htaccess ├── index.php └── uap4logo_wait_animation.gif /.gitignore: -------------------------------------------------------------------------------- 1 | app/Config.php 2 | app/_notes/dwsync.xml 3 | app/Templates/Default/_notes/dwsync.xml 4 | *.xml 5 | [Vv]endor/ 6 | app/Example-Config.php 7 | app/Example-Config.php 8 | assets/images/profile-pics/DaVaR/DaVaR_PROFILE_53498547eb.jpg 9 | assets/images/profile-pics/DaVaR/DaVaR_PROFILE_b32cf2b964.jpg 10 | errors/php-error.log -------------------------------------------------------------------------------- /Credits.md: -------------------------------------------------------------------------------- 1 | Credits 2 | -- 3 | Thank You to all who helped make UserApplePie possible. 4 | The following contributed to the UAP build. 5 | If your name is not on the list, please let us know so that we can add it. 6 | -- 7 | David (DaVaR) Sargent – https://www.userapplepie.com/ 8 | 9 | Gary Mathis - https://www.youtube.com/channel/UCtDDxnmPWXcTj1GSrkFMqKg 10 | 11 | David Carr @ Nova Framework - http://novaframework.com/ 12 | 13 | Bartek Kuśmierczuk - contact@qsma.pl - http://qsma.pl 14 | 15 | Jhobanny Morillo - geomorillo@yahoo.com 16 | 17 | Bryan Yeh 18 | 19 | Cam Tosh 20 | 21 | EddyBeaupre 22 | 23 | Bootswatch Themes - https://www.bootswatch.com 24 | 25 | Lightbox - https://lokeshdhakar.com/projects/lightbox2/ 26 | -------------------------------------------------------------------------------- /app/Controllers/ChangeLang.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\Controllers; 11 | 12 | use App\System\Load, 13 | App\System\Controller, 14 | Libs\Session, 15 | Libs\Url, 16 | Libs\SuccessMessages; 17 | 18 | /** 19 | * Language Changer Controller. 20 | */ 21 | class ChangeLang extends Controller 22 | { 23 | 24 | /** 25 | * Call the parent construct 26 | */ 27 | public function __construct() 28 | { 29 | parent::__construct(); 30 | $this->language->load('Welcome'); 31 | } 32 | 33 | /** 34 | * Define the change lang page 35 | * @param $new_lang_code 36 | */ 37 | public function index($new_lang_code = null) 38 | { 39 | if(isset($new_lang_code)){ 40 | $_SESSION['cur_lang'] = $new_lang_code; 41 | /** 42 | * Check to see if user came from another page within the site 43 | */ 44 | if(isset($_SESSION['lang_prev_page'])){ $lang_prev_page = $_SESSION['lang_prev_page']; }else{ $lang_prev_page = ""; } 45 | /** 46 | * Checking to see if user user was viewing anything before lang change 47 | * If they were viewing a page on this site, then after lange change 48 | * send them to that page they were on. 49 | */ 50 | if(!empty($lang_prev_page)){ 51 | /* Clear the prev page session if set */ 52 | if(isset($_SESSION['lang_prev_page'])){ 53 | unset($_SESSION['lang_prev_page']); 54 | } 55 | $prev_page = $lang_prev_page; 56 | /* Send user back to page they were at before lang change */ 57 | /* Success Message Display */ 58 | Url::redirect($prev_page); 59 | }else{ 60 | Url::redirect(); 61 | } 62 | }else{ 63 | Url::redirect(); 64 | } 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /app/Controllers/LiveCheck.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\Controllers; 11 | 12 | use App\System\Load; 13 | use App\System\Controller; 14 | use Libs\Database; 15 | 16 | /** 17 | * Live Check for Email 18 | */ 19 | 20 | class LiveCheck extends Controller 21 | { 22 | 23 | protected $db; 24 | 25 | /** 26 | * Call the parent construct 27 | */ 28 | public function __construct() { 29 | $this->db = Database::get(); 30 | } 31 | 32 | /** 33 | * Define email live check and load template file 34 | */ 35 | public function emailCheck() 36 | { 37 | if(isset($_POST['email'])){ 38 | $email = $_POST['email']; 39 | }else if(isset($_POST['newemail'])){ 40 | $email = $_POST['newemail']; 41 | } 42 | if(isSet($email)) 43 | { 44 | $query = $this->db->select('SELECT email FROM '.PREFIX.'users WHERE email=:email', 45 | array(':email' => $email)); 46 | $count = count($query); 47 | if($count == "0") 48 | { 49 | // Check input to be sure it meets the site standards for emails 50 | if(filter_var($email, FILTER_VALIDATE_EMAIL)) { 51 | $data['welcomeMessage'] = "OK"; 52 | }else{ 53 | $data['welcomeMessage'] = "BAD"; 54 | } 55 | } 56 | else 57 | { 58 | $data['welcomeMessage'] = "INUSE"; 59 | } 60 | unset($email, $ttl_un_rows); 61 | }else{ 62 | $data['welcomeMessage'] = "BAD"; 63 | } 64 | /** Push data to the view **/ 65 | Load::View('Members/LiveCheck', $data, '', '', false); 66 | 67 | } 68 | 69 | /** 70 | * Define email live check and load template file 71 | */ 72 | public function userNameCheck() 73 | { 74 | (isset($_POST['username'])) ? $username = $_POST['username'] : $username = ""; 75 | if(isSet($username)) 76 | { 77 | $query = $this->db->select('SELECT username FROM '.PREFIX.'users WHERE username=:username', 78 | array(':username' => $username)); 79 | $count = count($query); 80 | if($count == "0") 81 | { 82 | // Check input to be sure it meets the site standards for usernames 83 | if(!preg_match("/^[a-zA-Z\p{Cyrillic}0-9]+$/u", $username)){ 84 | // UserName Chars wrong 85 | $data['welcomeMessage'] = "CHAR"; 86 | }else{ 87 | // UserName is good 88 | $data['welcomeMessage'] = "OK"; 89 | } 90 | } 91 | else 92 | { 93 | $data['welcomeMessage'] = "INUSE"; 94 | } 95 | unset($username, $ttl_un_rows); 96 | } 97 | /** Push data to the view **/ 98 | Load::View('Members/LiveCheck', $data, '', '', false); 99 | } 100 | 101 | } 102 | 103 | ?> 104 | -------------------------------------------------------------------------------- /app/Install/Footer.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | use Libs\Url; 10 | ?> 11 | 12 | 13 |
14 | 15 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/Install/Install.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | 11 | /** Include the Example-Config.php file to get current settings **/ 12 | if (file_exists(ROOTDIR.'app/Example-Config.php')) { 13 | require ROOTDIR.'app/Example-Config.php'; 14 | new \App\Config(); 15 | } 16 | 17 | /** Include the Install Header **/ 18 | require APPDIR.'Install/Header.php'; 19 | 20 | /** Check to make sure system is not already installed **/ 21 | if (!file_exists(APPDIR.'Config.php')) { 22 | /** Make Sure All The Steps Needed for Install are on server **/ 23 | if (file_exists(APPDIR.'Install/Step1.php')) { 24 | /** Check to see if an install step is set **/ 25 | if (!isset($_GET['install_step'])){ 26 | /** No Install Step set, display step1 **/ 27 | require APPDIR.'Install/Step1.php'; 28 | }else{ 29 | /** Check to see what step user is on **/ 30 | if($_GET['install_step'] == "2"){ 31 | /** Display step2 **/ 32 | require APPDIR.'Install/Step2.php'; 33 | }else if($_GET['install_step'] == "3" || $_POST['install_step'] == "3"){ 34 | /** Display step3 **/ 35 | require APPDIR.'Install/Step3.php'; 36 | }else if($_GET['install_step'] == "4"){ 37 | /** Display step4 **/ 38 | require APPDIR.'Install/Step4.php'; 39 | }else if($_GET['install_step'] == "5"){ 40 | /** Display step5 **/ 41 | require APPDIR.'Install/Step5.php'; 42 | } 43 | } 44 | } 45 | }else{ 46 | echo "UAP 3 Is Installed. Remove Install Directory!"; 47 | } 48 | 49 | /** Include the Install Footer **/ 50 | require APPDIR.'Install/Footer.php'; 51 | -------------------------------------------------------------------------------- /app/Install/Step3.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | /** Create Database **/ 11 | ?> 12 | 13 |
14 |
15 |

UAP 4 Database Creation

16 |
17 |
18 | Now we are going to Import data to the Database.
19 |
20 | Database Name:
21 | Database Prefix: 22 |
23 | 24 | "; 33 | echo ""; 34 | echo ""; 35 | echo ""; 36 | echo ""; 37 | echo "
"; 38 | } 39 | 40 | /** Database Import Success, Show button to move on **/ 41 | if(isset($database_import)){ 42 | echo "
"; 43 | echo "Move on to Step 4"; 44 | }else{ 45 | /** Check for database error **/ 46 | if(isset($database_error)){ 47 | echo "
There was an error importing data to database. Check your database and make sure ".DB_NAME." database exist and is empty.
"; 48 | echo "Retry Import Data to Database
"; 49 | } 50 | } 51 | ?> 52 | 53 |
54 |
55 | -------------------------------------------------------------------------------- /app/Install/Step4.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | /** Finalize Install **/ 11 | ?> 12 | 13 |
14 |
15 |

UAP 4 Installation Step 4

16 |
17 |
18 | Congratulations!
19 |
20 | Looks like everything is ready to go.
21 |
22 | Make sure to sign up as the first user for your UAP4 install. Once signed in you can update the site settings in the Admin Panel.

23 | Click Save and Finalize Install to Finish Up Install!
24 |
25 | 26 | 27 | 28 | Save and Finalize Install 29 | 30 |
31 |
32 | -------------------------------------------------------------------------------- /app/Install/Step5.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | /** Install Success **/ 11 | 12 | /** Last thing we need to do is Copy Example-Config.php to Config.php **/ 13 | if (file_exists(ROOTDIR.'app/Example-Config.php') && is_writable(ROOTDIR.'app')) { 14 | if(copy(ROOTDIR.'app/Example-Config.php', ROOTDIR.'app/Config.php')){ 15 | $copy_file = true; 16 | }else{ 17 | $copy_file = false; 18 | } 19 | }else{ 20 | $copy_file = false; 21 | } 22 | 23 | if(!$copy_file){ 24 | echo "
There was an error creating Config.php. You must manually rename Example-Config.php to Config.php in the /app/ folder.
"; 25 | }else{ 26 | ?> 27 | 28 |
29 |
30 |

UAP 4 Installation Step 4

31 |
32 |
33 | UserApplePie 4 Has Successfully Installed on your Server.
34 | Make sure to go sign up for your site, as the first user to sign up is admin by default.
35 |
36 | Thank You for choosing UserApplePie to run your website. Make sure to visit 37 | www.userapplepie.com 38 | for updates, plugins, and much more!
39 |
40 | You may change site settings in the future by editing /app/Config.php file.

41 | Also if you like you can delete the Install Folder that is located in /app/. 42 |
43 | Click Here To Enjoy Your New Install 44 | 45 |
46 |
47 | 48 | -------------------------------------------------------------------------------- /app/Install/database_check.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | try { 11 | $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS); 12 | // set the PDO error mode to exception 13 | $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 14 | echo "Connected Successfully!"; 15 | $updated_config = true; 16 | } 17 | catch(PDOException $e){ 18 | echo "Connection failed: " . $e->getMessage(); 19 | } 20 | -------------------------------------------------------------------------------- /app/Install/database_import.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | 11 | /** Test The Database Settings and Make sure it works **/ 12 | try { 13 | $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS); 14 | // set the PDO error mode to exception 15 | $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 16 | echo "Database Connected Successfully!"; 17 | $database_working = true; 18 | } 19 | catch(PDOException $e){ 20 | echo "Database Connection failed: " . $e->getMessage(); 21 | echo "Go Back to Step 2 and Fix Database Settings"; 22 | } 23 | 24 | if(isset($database_working)){ 25 | /** Database Settings are working. Now Import Database Data **/ 26 | 27 | // Reconnect to Database for Import 28 | $link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 29 | if (!$link) { 30 | echo "Error: Unable to connect to MySQL." . PHP_EOL; 31 | echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 32 | echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; 33 | exit; 34 | } 35 | 36 | // Location of SQL file 37 | $sqlfile = ROOTDIR.'database.sql'; 38 | 39 | // Temporary variable, used to store current query 40 | $templine = ''; 41 | // Read in entire file 42 | $lines = file($sqlfile); 43 | // Loop through each line 44 | foreach ($lines as $line) 45 | { 46 | // Skip it if it's a comment 47 | if (substr($line, 0, 2) == '--' || $line == '') 48 | continue; 49 | 50 | // Add this line to the current segment 51 | $templine .= $line; 52 | 53 | // If it has a semicolon at the end, it's the end of the query 54 | if (substr(trim($line), -1, 1) == ';') 55 | { 56 | // Change the prefix if not default 57 | $set_prefix = PREFIX; 58 | $default_prefix = "uap4_"; 59 | if($set_prefix != $default_prefix){ 60 | $templine = str_replace($default_prefix, $set_prefix, $templine); 61 | } 62 | // Perform the query 63 | if(!mysqli_query($link,$templine)){ 64 | print('
Error performing query \'' . $templine . '\': ' . mysqli_connect_error() . ' '); 65 | $errors[] = "true"; 66 | } 67 | // Reset temp variable to empty 68 | $templine = ''; 69 | 70 | } 71 | } 72 | } 73 | if(!isset($errors)){ 74 | echo "
Database Imported Successfully!"; 75 | $database_import = true; 76 | }else{ 77 | $database_error = true; 78 | } 79 | -------------------------------------------------------------------------------- /app/Install/email_check.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | //EMAIL MESSAGE USING PHPMAILER 13 | $mail = new \Helpers\PhpMailer\Mail(); 14 | $mail->addAddress(EMAIL_USERNAME); 15 | $mail->subject("UAP - EMAIL TEST"); 16 | $body = "Hello

"; 17 | $body .= "This is a Test Email from your new UserApplePie Installation.
"; 18 | $body .= "If you can read this, well your email settings are good!

"; 19 | $body .= "Thank You for choosing UserApplePie! Enjoy!"; 20 | $mail->body($body); 21 | try{ 22 | $mail->Send(); 23 | echo "Email Sent!"; 24 | 25 | } catch(Exception $e){ 26 | //Something went bad 27 | echo "Email Test Fail - " . $mail->ErrorInfo; 28 | } 29 | -------------------------------------------------------------------------------- /app/Install/recap_check.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | require APPDIR.'Install/recaptcha.php'; 11 | 12 | //reCAPTCHA 2.0 check 13 | $response = null; 14 | 15 | // check secret key 16 | $reCaptcha = new ReCaptcha(RECAP_PRIVATE_KEY); 17 | 18 | if ($response != null && $response->success) { 19 | $errors = array(); 20 | } ?> 21 | 22 |
23 | 24 | -------------------------------------------------------------------------------- /app/Models/Home.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\Models; 11 | 12 | use App\System\Models, 13 | Libs\Database; 14 | 15 | class Home extends Models { 16 | 17 | /** 18 | * This is just a sample test model function 19 | * If called it will not work due to test table not being in database 20 | * @param int $id 21 | * @return int data 22 | */ 23 | public function test($id){ 24 | $data = $this->db->select('SELECT * FROM '.PREFIX.'test WHERE id = :id', 25 | array(':id' => $id)); 26 | return $data[0]->id; 27 | } 28 | 29 | /** 30 | * gets all system pages from database that are public 31 | * @param string $orderby 32 | * @return array dataset 33 | */ 34 | public function getPublicURLs(){ 35 | $system_pages = $this->db->select(" 36 | SELECT 37 | p.url as url, p.edit_timestamp as edit_timestamp, p.timestamp as timestamp 38 | FROM 39 | ".PREFIX."pages p 40 | LEFT JOIN 41 | ".PREFIX."pages_permissions pp 42 | ON 43 | p.id = pp.page_id 44 | WHERE 45 | pp.group_id = '0' 46 | AND 47 | p.sitemap = 'true' 48 | ORDER BY 49 | url 50 | "); 51 | return $system_pages; 52 | } 53 | 54 | /** 55 | * get list of all recent posts in forum ordered by date. 56 | * @param int $limit 57 | * @return array dataset 58 | */ 59 | public function getForumPosts($limit = "1000"){ 60 | $data = $this->db->select(" 61 | SELECT 62 | fp.forum_post_id as forum_post_id, 63 | fp.forum_url as forum_url, 64 | fp.forum_timestamp as forum_timestamp, 65 | fp.forum_edit_date as forum_edit_date 66 | FROM ".PREFIX."forum_posts fp 67 | WHERE fp.allow = 'TRUE' 68 | AND fp.forum_publish = '1' 69 | ORDER BY forum_timestamp DESC 70 | LIMIT $limit 71 | "); 72 | return $data; 73 | } 74 | 75 | /** 76 | * get latest forum post reply based on forum_post_id 77 | * @param int $forum_post_id 78 | * @param string data 79 | */ 80 | public function getLatestForumReply($forum_post_id){ 81 | $data = $this->db->select(" 82 | SELECT 83 | fpr.fpr_timestamp as fpr_timestamp 84 | FROM ".PREFIX."forum_post_replies fpr 85 | WHERE fpr.allow = 'TRUE' 86 | AND fpr.forum_publish = '1' 87 | AND fpr.fpr_post_id = :forum_post_id 88 | ORDER BY fpr_timestamp DESC 89 | LIMIT 1 90 | ", array(':forum_post_id' => $forum_post_id)); 91 | return $data[0]->fpr_timestamp; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /app/Plugins/Comments/CommentsVersion.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 1.0.0 for UAP v.4.3.0 8 | */ 9 | define('UAPCommentsVersion', '1.0.0'); 10 | -------------------------------------------------------------------------------- /app/Plugins/Comments/Models/Comments.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 1.0.0 for UAP v.4.3.0 8 | */ 9 | 10 | /** Comments model **/ 11 | 12 | namespace App\Plugins\Comments\Models; 13 | 14 | use App\System\Models, 15 | Libs\Url; 16 | 17 | class Comments extends Models { 18 | 19 | /** 20 | * Get commets by id 21 | * @param int $where_id 22 | * @return array dataset 23 | */ 24 | public function getCommentsByID($where_id){ 25 | $data = $this->db->select(" 26 | SELECT 27 | * 28 | FROM 29 | ".PREFIX."comments 30 | WHERE 31 | id = :id 32 | ORDER BY 33 | id 34 | DESC LIMIT 1 35 | ", array(':id' => $where_id)); 36 | return $data; 37 | } 38 | 39 | /** 40 | * Get commets by id 41 | * @param int $where_id 42 | * @return array dataset 43 | */ 44 | public function getStatus($where_id){ 45 | $data = $this->db->select(" 46 | SELECT 47 | * 48 | FROM 49 | ".PREFIX."status 50 | WHERE 51 | id = :id 52 | ORDER BY 53 | id 54 | DESC LIMIT 1 55 | ", array(':id' => $where_id)); 56 | return $data; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /app/Plugins/Comments/Views/comments_sidebar.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 1.0.0 for UAP v.4.3.0 8 | */ 9 | 10 | ?> 11 | 12 |
13 |
14 | Comments Sidebar 15 |
16 | 25 |
26 | -------------------------------------------------------------------------------- /app/Plugins/Forum/ForumVersion.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.2 for UAP v.4.3.0 8 | */ 9 | define('UAPForumVersion', '2.1.2'); 10 | -------------------------------------------------------------------------------- /app/Plugins/Forum/Views/forum_top_sweets_card.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.2 for UAP v.4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | use Libs\TimeDiff; 12 | use Libs\CurrentUserData; 13 | use Libs\ForumStats; 14 | 15 | if(empty($data['forum_top_sweets_posts'])){ $data['forum_top_sweets_posts'] = ForumStats::forum_top_sweets_posts();} 16 | 17 | ?> 18 | 19 |
20 |
21 | Top Sweeted Forum Posts 22 |
23 | 51 |
52 | -------------------------------------------------------------------------------- /app/Plugins/Forum/Views/forum_top_viewed_card.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.2 for UAP v.4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | use Libs\TimeDiff; 12 | use Libs\CurrentUserData; 13 | use Libs\ForumStats; 14 | 15 | if(empty($data['forum_top_posts'])){ $data['forum_top_posts'] = ForumStats::forum_top_posts();} 16 | 17 | ?> 18 | 19 |
20 |
21 | Top Viewed Forum Posts 22 |
23 | 51 |
52 | -------------------------------------------------------------------------------- /app/Plugins/Friends/FriendsVersion.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.1 for UAP v.4.3.0 8 | */ 9 | define('UAPFriendsVersion', '2.1.1'); 10 | -------------------------------------------------------------------------------- /app/Plugins/Friends/Views/friends_sidebar.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.1 for UAP v.4.3.0 8 | */ 9 | 10 | // View to display message sidebar 11 | 12 | use Libs\Language; 13 | use Libs\CurrentUserData; 14 | 15 | ?> 16 | 17 | 18 |
19 |
20 | My Friends 21 |
22 | 42 |
43 | 44 | 48 |
49 |
50 |
51 | 52 |
53 |
54 |
55 | 56 |
57 | 58 |
59 |
60 |
61 | 62 | 63 |
64 |
65 | Members Status 66 |
67 | 71 |
72 | -------------------------------------------------------------------------------- /app/Plugins/Messages/MessagesVersion.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.1 for UAP v.4.3.0 8 | */ 9 | define('UAPMessagesVersion', '2.1.1'); 10 | -------------------------------------------------------------------------------- /app/Plugins/Messages/Views/message_new.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.1 for UAP v.4.3.0 8 | */ 9 | 10 | // Message New Displays form for user to create a new message to send 11 | // Also works with message reply 12 | 13 | use Libs\Language, 14 | Libs\ErrorMessages, 15 | Libs\SuccessMessages, 16 | Core\Error, 17 | Libs\Form; 18 | 19 | ?> 20 | 21 |
22 | 23 |
24 |
25 | 26 |
27 |
28 |

29 | 30 | 38 | 39 | 'post')); ?> 40 | 41 | 42 |
43 |
44 | 45 |
46 | 'text', 'name' => 'to_username', 'class' => 'form-control', 'value' => $data['to_username'], 'placeholder' => 'To Username', 'maxlength' => '100')); ?> 47 |
48 | 49 | 50 |
51 |
52 | 53 |
54 | 'text', 'name' => 'subject', 'class' => 'form-control', 'value' => urldecode($data['subject']), 'placeholder' => 'Subject', 'maxlength' => '100')); ?> 55 |
56 | 57 | 58 |
59 |
60 | 61 |
62 | 'text', 'name' => 'content', 'class' => 'form-control', 'value' => $data['content'], 'placeholder' => 'Message Content', 'rows' => '6')); ?> 63 |
64 | 65 | 66 | 67 | 71 | 72 | 73 | 77 | 78 |
79 |
80 |
81 | -------------------------------------------------------------------------------- /app/Plugins/Messages/Views/messages_sidebar.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 2.1.1 for UAP v.4.3.0 8 | */ 9 | 10 | // View to display message sidebar 11 | 12 | use Libs\Language; 13 | 14 | ?> 15 | 16 | 17 |
18 |
19 | Private Messages 20 |
21 | 33 |
34 | -------------------------------------------------------------------------------- /app/System/Controller.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\System; 11 | 12 | use App\System\Router, 13 | Libs\Language as Language, 14 | Libs\Auth\Auth as AuthHelper, 15 | App\Models\Users, 16 | Libs\PageFunctions; 17 | 18 | abstract class Controller { 19 | 20 | /** 21 | * Routes variable to use the routes class. 22 | * 23 | * @var string 24 | */ 25 | public $routes; 26 | 27 | /** 28 | * Language variable to use the languages class. 29 | * 30 | * @var string 31 | */ 32 | public $language; 33 | /** 34 | * Auth variable to use the Auth class. 35 | * 36 | * @var string 37 | */ 38 | public $auth; 39 | /** 40 | * User variable to use the User class. 41 | * 42 | * @var string 43 | */ 44 | public $user; 45 | /** 46 | * PageFunctions variable to use the PageFunctions class. 47 | * 48 | * @var string 49 | */ 50 | public $PageFunctions; 51 | 52 | function __construct(){ 53 | 54 | /** Initialise the Router object **/ 55 | $this->routes = Router::extendedRoutes(); 56 | /** initialise the AuthHelper object */ 57 | $this->auth = new AuthHelper(); 58 | /** initialise the Users object */ 59 | $this->user = new Users(); 60 | /** initialise the PageFunctions object */ 61 | $this->PageFunctions = new PageFunctions(); 62 | /** Get Current User Data if logged in */ 63 | if ($this->auth->isLogged()) { 64 | $u_id = $this->auth->currentSessionInfo()['uid']; 65 | $this->user->update($u_id); 66 | }else{ 67 | $u_id = null; 68 | } 69 | /** Log All Activity to Site Logs **/ 70 | if($u_id != null){ 71 | \Libs\SiteStats::log(\Libs\CurrentUserData::getUserName($u_id)); 72 | }else{ 73 | \Libs\SiteStats::log(); 74 | } 75 | /** Clean offline users from DB */ 76 | $this->user->cleanOfflineUsers(); 77 | /** initialise the language object */ 78 | $this->language = new Language(); 79 | /** Check Page Permissions **/ 80 | /** Set userID to 0 if null **/ 81 | if(!isset($u_id)){$u_id='0';} 82 | $this->PageFunctions->systemPagePermission($u_id); 83 | 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /app/System/Error.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\System; 11 | 12 | use App\System\Controller, 13 | App\System\Load, 14 | Libs\Auth\Auth as AuthHelper, 15 | App\Models\Users; 16 | 17 | class Error { 18 | 19 | /** Standard URL Error **/ 20 | static function show($type){ 21 | /** initialise the AuthHelper object */ 22 | $auth = new AuthHelper(); 23 | /** initialise the Users object */ 24 | $user = new Users(); 25 | 26 | /** Check to see if user is logged in **/ 27 | if($data['isLoggedIn'] = $auth->isLogged()){ 28 | /** User is logged in - Get their data **/ 29 | $u_id = $auth->user_info(); 30 | $data['currentUserData'] = $user->getCurrentUserData($u_id); 31 | $data['isAdmin'] = $user->checkIsAdmin($u_id); 32 | } 33 | 34 | $data['error_code'] = "404"; 35 | if($type == '404'){ 36 | $data['bodyText'] = "Oops! Looks like something went wrong!"; 37 | $data['bodyText'] .= "
The Requested URL Does Not Exist!"; 38 | $data['bodyText'] .= "
Please check your spelling and try again."; 39 | }else{ 40 | $data['bodyText'] = "Oops! Looks like something went wrong!"; 41 | } 42 | Load::View("Home::Error", $data); 43 | } 44 | 45 | /** User Profile Error **/ 46 | static function profileError(){ 47 | 48 | /** initialise the AuthHelper object */ 49 | $auth = new AuthHelper(); 50 | /** initialise the Users object */ 51 | $user = new Users(); 52 | 53 | /** Check to see if user is logged in **/ 54 | if($data['isLoggedIn'] = $auth->isLogged()){ 55 | /** User is logged in - Get their data **/ 56 | $u_id = $auth->user_info(); 57 | $data['currentUserData'] = $user->getCurrentUserData($u_id); 58 | $data['isAdmin'] = $user->checkIsAdmin($u_id); 59 | } 60 | 61 | $data['error_code'] = "User Profile"; 62 | $data['bodyText'] = "Oops! Looks like something went wrong!"; 63 | $data['bodyText'] .= "
The Requested User Profile Does Not Exist!"; 64 | $data['bodyText'] .= "
Please check your spelling and try again."; 65 | 66 | Load::View("Home::Error", $data); 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /app/System/Language/En/404.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | return [ 13 | '404content' => " 14 |

The page you were looking for could not be found

15 |

This could be the result of the page being removed, the name being changed or the page being temporarily unavailable

16 |

Troubleshooting

17 | 18 | 22 | ", 23 | ]; 24 | -------------------------------------------------------------------------------- /app/System/Language/En/Friends.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | return [ 13 | /** Friends **/ 14 | 'friends_username' => "User Name", 15 | 'send_friend_request' => "Send Friend Request", 16 | 'friend' => "Friend", 17 | 'your_friend' => "Your Friend", 18 | 'pending_approval' => "Pending Approval", 19 | 'search_found' => "Search Found", 20 | 'matches_for' => "Matches For", 21 | 'search' => "Search", 22 | 'search_friends' => "Search Friends", 23 | ]; 24 | -------------------------------------------------------------------------------- /app/System/Language/En/Welcome.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | return [ 13 | // Home method 14 | 'homeText' => 'Home', 15 | 'homeMessage' => ' 16 | Hello, Welcome from the Home controller!
17 | This content can be changed in /app/Views/Home/Home.php 18 | ', 19 | 20 | // Contact method 21 | 'contactText' => 'Contact', 22 | 'contactMessage' => ' 23 | Hello, Welcome from the Home controller and Contact method!
24 | This content can be changed in /app/Views/Home/Contact.php 25 | ', 26 | 27 | // About method 28 | 'aboutText' => 'About', 29 | 'aboutMessage' => ' 30 | Hello, Welcome from the Home controller and About method!
31 | This content can be changed in /app/Views/Home/About.php 32 | ', 33 | 34 | // Buttons 35 | 'openHome' => 'Home', 36 | 'openAbout' => 'About', 37 | 'openContact' => 'Contact', 38 | 39 | // Global 40 | 'uap_home' => "Home", 41 | 'uap_about' => "About", 42 | 'uap_contact' => "Contact", 43 | 'uap_logout' => "Logout", 44 | 'uap_forum' => "Forum", 45 | 'uap_view_profile' => "View Profile", 46 | 'uap_account_settings' => "Account Settings", 47 | 'uap_admin_panel' => "Admin Panel", 48 | 'uap_private_messages' => "Private Messages", 49 | 'uap_success' => "Success", 50 | 'uap_error' => "Error", 51 | 'uap_pages_displaying' => "Displaying", 52 | 'uap_friends' => "Friends", 53 | 54 | // Recent 55 | 'recent_posts' => "Friends Recent Activity", 56 | 57 | // Lang Change Success Message 58 | 'lang_change_success' => "You have successfully changed the site language.", 59 | 60 | // Footer 61 | 'uap_poweredby' => "Powered By", 62 | 'uap_all_rights' => "All Rights Reserved", 63 | 64 | // Friends 65 | 'uap_friends' => "Friends", 66 | 67 | // Terms and Privacy 68 | 'terms_title' => "Terms", 69 | 'privacy_title' => "Privacy", 70 | ]; 71 | -------------------------------------------------------------------------------- /app/System/Language/Es/404.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | return [ 13 | '404content' => " 14 |

La página que estás buscando no se pudo encontrar

15 |

Esto podría ser el resultado de la página que se retira , el nombre que se cambió o la página que se está temporalmente no disponible

16 |

Solución de problemas

17 | 18 | 22 | ", 23 | ]; 24 | -------------------------------------------------------------------------------- /app/System/Language/Es/Friends.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | return [ 13 | /** Friends **/ 14 | 'friends_username' => "Nombre de usuario", 15 | 'send_friend_request' => "Envia solicitud de amistad", 16 | 'friend' => "Amigo", 17 | 'your_friend' => "Tu amigo", 18 | 'pending_approval' => "Aprobación pendiente", 19 | 'search_found' => "Búsqueda encontrada", 20 | 'matches_for' => "Partidos para", 21 | 'search' => "Buscar", 22 | 'search_friends' => "Buscar amigos", 23 | ]; 24 | -------------------------------------------------------------------------------- /app/System/Language/Es/Welcome.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | return [ 13 | // Home method 14 | 'homeText' => 'Bienvenido', 15 | 'homeMessage' => ' 16 | Hola, bienvenido desde el controlador principal!
17 | Este contenido se puede cambiar en /app/Views/Home/Home.php 18 | ', 19 | 20 | // Contact method 21 | 'contactText' => 'Contacto', 22 | 'contactMessage' => ' 23 | Hola, bienvenido desde el controlador principal y el método de contacto!
24 | Este contenido se puede cambiar en /app/Views/Home/Contact.php 25 | ', 26 | 27 | // About method 28 | 'aboutText' => 'Acerca de', 29 | 'aboutMessage' => ' 30 | Hola, bienvenido desde el controlador principal y Acerca método!
31 | Este contenido se puede cambiar en /app/Views/Home/About.php 32 | ', 33 | 34 | // Buttons 35 | 'openHome' => 'Casa', 36 | 'openAbout' => 'Acerca de', 37 | 'openContact' => 'Contacto', 38 | 39 | // Global 40 | 'uap_home' => "Casa", 41 | 'uap_about' => 'Acerca de', 42 | 'uap_contact' => 'Contacto', 43 | 'uap_logout' => "Cerrar sesión", 44 | 'uap_forum' => "Foro", 45 | 'uap_view_profile' => "Ver perfil", 46 | 'uap_account_settings' => "Configuraciones de la cuenta", 47 | 'uap_admin_panel' => "Panel de administrador", 48 | 'uap_private_messages' => "Mensajes Privados", 49 | 'uap_success' => "Éxito", 50 | 'uap_error' => "¡Error", 51 | 'uap_pages_displaying' => "Viendo", 52 | 53 | // Recent 54 | 'recent_posts' => "Actividad reciente de amigos", 55 | 56 | // Lang Change Success Message 57 | 'lang_change_success' => "Has cambiar con éxito el idioma del sitio.", 58 | 59 | // Footer 60 | 'uap_poweredby' => "Energizado por", 61 | 'uap_all_rights' => "Todos los derechos reservados", 62 | 63 | // Friends 64 | 'uap_friends' => "Amigos", 65 | 66 | // Terms and Privacy 67 | 'terms_title' => "Condiciones", 68 | 'privacy_title' => "Intimidad", 69 | ]; 70 | -------------------------------------------------------------------------------- /app/System/Language/LangList.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | return array( 11 | // 'cz' => array('info' => 'Czech', 'name' => 'čeština', 'locale' => 'cz_CZ', 'dir' => 'ltr'), 12 | // 'da' => array('info' => 'Danish', 'name' => 'Dansk', 'locale' => 'da_DK', 'dir' => 'ltr'), 13 | // 'de' => array('info' => 'German', 'name' => 'Deutsch', 'locale' => 'de_DE', 'dir' => 'ltr'), 14 | 'En' => array('info' => 'English', 'name' => 'English', 'locale' => 'en_US', 'dir' => 'ltr'), 15 | 'Es' => array('info' => 'Spanish', 'name' => 'Español', 'locale' => 'es_ES', 'dir' => 'ltr'), 16 | // 'fa' => array('info' => 'Persian', 'name' => 'پارسی', 'locale' => 'fa_IR', 'dir' => 'rtl'), 17 | 'fr' => array('info' => 'French', 'name' => 'Français', 'locale' => 'fr_FR', 'dir' => 'ltr'), 18 | // 'it' => array('info' => 'Italian', 'name' => 'italiano', 'locale' => 'it_IT', 'dir' => 'ltr'), 19 | // 'ja' => array('info' => 'Japanesse', 'name' => '日本語', 'locale' => 'ja_JA', 'dir' => 'ltr'), 20 | // 'nl' => array('info' => 'Dutch', 'name' => 'Nederlands', 'locale' => 'nl_NL', 'dir' => 'ltr'), 21 | // 'pl' => array('info' => 'Polish', 'name' => 'polski', 'locale' => 'pl_PL', 'dir' => 'ltr'), 22 | // 'ro' => array('info' => 'Romanian', 'name' => 'Română', 'locale' => 'ro_RO', 'dir' => 'ltr'), 23 | // 'ru' => array('info' => 'Russian', 'name' => 'ру́сский', 'locale' => 'ru_RU', 'dir' => 'ltr'), 24 | ); 25 | -------------------------------------------------------------------------------- /app/System/Language/fr/404.php: -------------------------------------------------------------------------------- 1 | 9 | * @translator Eddy Beaupré 10 | * @version 4.3.0 11 | */ 12 | 13 | return [ 14 | '404content' => " 15 |

La page que vous cherchiez n'a pas pu être trouvée.

16 |

Cela peut être le résultat de la suppression de la page, de la modification du nom ou de l'indisponibilité temporaire de la page.

17 |

Dépannage

18 | 19 | 23 | ", 24 | ]; 25 | -------------------------------------------------------------------------------- /app/System/Language/fr/Friends.php: -------------------------------------------------------------------------------- 1 | 9 | * @translator Eddy Beaupré 10 | * @version 4.3.0 11 | */ 12 | 13 | return [ 14 | /** Friends **/ 15 | 'friends_username' => "Nom d'utilisateur", 16 | 'send_friend_request' => "Envoyer une demande d'amitié", 17 | 'friend' => "Ami", 18 | 'your_friend' => "Vos amis", 19 | 'pending_approval' => "Validation en attente", 20 | 'search_found' => "Recherche trouvée", 21 | 'matches_for' => "Correspondances pour", 22 | 'search' => "Recherche", 23 | 'search_friends' => "Rechercher des amis", 24 | ]; 25 | -------------------------------------------------------------------------------- /app/System/Language/fr/Welcome.php: -------------------------------------------------------------------------------- 1 | 9 | * @translator Eddy Beaupré 10 | * @version 4.3.0 11 | */ 12 | 13 | return [ 14 | // Home method 15 | 'homeText' => 'Home', 16 | 'homeMessage' => ' 17 | Bonjour, Bienvenue depuis le contrôleur Home!
18 | Ce contenu peut être modifié dans /app/Views/Home/Home.php 19 | ', 20 | 21 | // Contact method 22 | 'contactText' => 'Contact', 23 | 'contactMessage' => ' 24 | Bonjour, Bienvenue depuis le contrôleur Home et la méthode contact!
25 | Ce contenu peut être modifié dans /app/Views/Home/Contact.php 26 | ', 27 | 28 | // About method 29 | 'aboutText' => 'About', 30 | 'aboutMessage' => ' 31 | Bonjour, Bienvenue depuis le contrôleur Home et la méthode About!
32 | Ce contenu peut être modifié dans /app/Views/Home/About.php 33 | ', 34 | 35 | // Buttons 36 | 'openHome' => 'Accueil', 37 | 'openAbout' => 'À propos', 38 | 'openContact' => 'Contact', 39 | 40 | // Global 41 | 'uap_home' => "Accueil", 42 | 'uap_about' => "À propos", 43 | 'uap_contact' => "Contact", 44 | 'uap_logout' => "Déconnexion", 45 | 'uap_forum' => "Forum", 46 | 'uap_view_profile' => "Voir le profil", 47 | 'uap_account_settings' => "Paramètres du compte", 48 | 'uap_admin_panel' => "Panneau d'administration", 49 | 'uap_private_messages' => "Messages privés", 50 | 'uap_success' => "Succès", 51 | 'uap_error' => "Erreur", 52 | 'uap_pages_displaying' => "Affichage", 53 | 'uap_friends' => "Amis", 54 | 55 | // Recent 56 | 'recent_posts' => "Activité récente des amis", 57 | 58 | // Lang Change Success Message 59 | 'lang_change_success' => "Vous avez changé la langue du site.", 60 | 61 | // Footer 62 | 'uap_poweredby' => "Propulsé par", 63 | 'uap_all_rights' => "Tous droits réservés", 64 | 65 | // Friends 66 | 'uap_friends' => "Copains", 67 | 68 | // Terms and Privacy 69 | 'terms_title' => "Termes", 70 | 'privacy_title' => "Intimité", 71 | ]; 72 | -------------------------------------------------------------------------------- /app/System/Libraries/Adds.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | use Libs\Database; 13 | 14 | class Adds 15 | { 16 | private static $db; 17 | 18 | /** 19 | * Load Adds if any set 20 | */ 21 | public static function getAdds($location = null){ 22 | if(!empty($location)){ 23 | self::$db = Database::get(); 24 | $data = self::$db->select("SELECT setting_data FROM ".PREFIX."settings WHERE setting_title = :location", 25 | array(':location' => $location)); 26 | (isset($data[0]->setting_data)) ? $adds_data = $data[0]->setting_data : $adds_data = ""; 27 | if(!empty($adds_data)){ 28 | return $adds_data; 29 | }else{ 30 | return false; 31 | } 32 | }else{ 33 | return false; 34 | } 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /app/System/Libraries/Assets.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | use App\System\Error; 13 | 14 | class Assets { 15 | 16 | public static function css($css_url){ 17 | if(isset($css_url)){ 18 | foreach ($css_url as $value) { 19 | $css[] = ''; 20 | } 21 | return implode("", $css); 22 | } 23 | } 24 | 25 | public static function js($js_url){ 26 | if(isset($js_url)){ 27 | foreach ($js_url as $value) { 28 | $js[] = ''; 29 | } 30 | return implode("", $js); 31 | } 32 | } 33 | 34 | public static function loadFile($extRoutes = null, $location = null){ 35 | /* Check to make sure a file is properly requested */ 36 | if(isset($extRoutes)){ 37 | $mimes = array 38 | ( 39 | 'jpg' => 'image/jpg', 40 | 'jpeg' => 'image/jpg', 41 | 'gif' => 'image/gif', 42 | 'png' => 'image/png', 43 | 'css' => 'text/css', 44 | 'js' => 'application/javascript' 45 | ); 46 | 47 | if(isset($extRoutes[5])){ 48 | (isset($location)) ? $filename = $extRoutes[5] : $filename = $extRoutes[5] ; 49 | }else if(isset($extRoutes[4])){ 50 | (isset($location)) ? $filename = $extRoutes[4] : $filename = $extRoutes[4] ; 51 | }else{ 52 | (isset($location)) ? $filename = $extRoutes[3] : $filename = $extRoutes[4] ; 53 | } 54 | 55 | $ext = strtolower(@end((explode('.', $filename)))); 56 | 57 | if(isset($location)){ 58 | if(isset($extRoutes[4])){ 59 | $file = ROOTDIR.'assets/'.$extRoutes[1].'/'.$extRoutes[2].'/'.$extRoutes[3].'/'.$filename; 60 | }else{ 61 | $file = ROOTDIR.'assets/'.$extRoutes[1].'/'.$extRoutes[2].'/'.$filename; 62 | } 63 | $file = preg_replace('{/$}', '', $file); 64 | }else{ 65 | if(isset($extRoutes[5])){ 66 | $file = APPDIR.'Templates/'.$extRoutes[1].'/Assets/'.$extRoutes[3].'/'.$extRoutes[4].'/'.$filename; 67 | }else{ 68 | $file = APPDIR.'Templates/'.$extRoutes[1].'/Assets/'.$extRoutes[3].'/'.$filename; 69 | } 70 | } 71 | 72 | if(file_exists($file)){ 73 | header('Content-Type: '. $mimes[$ext]); 74 | header('Content-Disposition: inline; filename="'.$filename.'";'); 75 | readfile($file); 76 | }else{ 77 | Error::show(404); 78 | } 79 | }else{ 80 | Error::show(404); 81 | } 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /app/System/Libraries/Auth/Cookie.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | * 9 | * @author Jhobanny Morillo 10 | */ 11 | 12 | namespace Libs\Auth; 13 | 14 | class Cookie { 15 | 16 | public static function exists($key) { 17 | if (isset($_COOKIE[$key])) { 18 | return true; 19 | } else { 20 | return false; 21 | } 22 | } 23 | 24 | public static function set($key, $value, $expiry = "", $path = "/", $domain = false) { 25 | $retval = false; 26 | if (!headers_sent()) { 27 | if ($domain === false) 28 | $domain = $_SERVER['HTTP_HOST']; 29 | 30 | $retval = @setcookie($key, $value, $expiry, $path, $domain); 31 | if ($retval) 32 | $_COOKIE[$key] = $value; 33 | } 34 | return $retval; 35 | } 36 | 37 | public static function get($key, $default = '') { 38 | return (isset($_COOKIE[$key]) ? $_COOKIE[$key] : $default); 39 | } 40 | 41 | public static function display() { 42 | return $_COOKIE; 43 | } 44 | 45 | public static function destroy($key, $value = '', $path = "/", $domain = "") { 46 | if (isset($_COOKIE[$key])) { 47 | unset($_COOKIE[$key]); 48 | setcookie($key, $value, time() - 3600, $path, $domain); 49 | } 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /app/System/Libraries/Auth/Cookie_Multi_Domain.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | * 9 | * @author Jhobanny Morillo 10 | */ 11 | 12 | namespace Libs\Auth; 13 | 14 | class Cookie { 15 | 16 | public static function exists($key) { 17 | if (isset($_COOKIE[$key])) { 18 | return true; 19 | } else { 20 | return false; 21 | } 22 | } 23 | 24 | public static function set($key, $value, $expiry = "", $path = "/") { 25 | $retval = false; 26 | if (!headers_sent()) { 27 | 28 | $retval = @setcookie($key, $value, $expiry, $path); 29 | if ($retval) 30 | $_COOKIE[$key] = $value; 31 | } 32 | return $retval; 33 | } 34 | 35 | public static function get($key, $default = '') { 36 | return (isset($_COOKIE[$key]) ? $_COOKIE[$key] : $default); 37 | } 38 | 39 | public static function display() { 40 | return $_COOKIE; 41 | } 42 | 43 | public static function destroy($key, $value = '', $path = "/") { 44 | if (isset($_COOKIE[$key])) { 45 | unset($_COOKIE[$key]); 46 | setcookie($key, $value, time() - 3600, $path); 47 | } 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /app/System/Libraries/BBCode.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | class BBCode 13 | { 14 | 15 | // Convert BBCode to HTML Output 16 | public static function getHtml($str){ 17 | $bb[] = "#\[b\](.*?)\[/b\]#si"; 18 | $html[] = "\\1"; 19 | $bb[] = "#\[i\](.*?)\[/i\]#si"; 20 | $html[] = "\\1"; 21 | $bb[] = "#\[u\](.*?)\[/u\]#si"; 22 | $html[] = "\\1"; 23 | $bb[] = "#\[quote\](.*?)\[/quote\]#si"; 24 | $html[] = "
Quote
\\1
"; 25 | $bb[] = "#\[youtube\](.*?)\[/youtube\]#si"; 26 | $html[] = '
'; 27 | $bb[] = "#\[hr\]#si"; 28 | $html[] = "
"; 29 | $bb[] = "#\[code\](.*?)\[/code\]#si"; 30 | $html[] = "
Code
\\1
"; 31 | $str = str_replace('https://youtu.be/','',$str); 32 | $str = preg_replace ($bb, $html, $str); 33 | $patern="#\[url href=([^\]]*)\]([^\[]*)\[/url\]#i"; 34 | $replace='\\2'; 35 | $str=preg_replace($patern, $replace, $str); 36 | $patern="#\[img\]([^\[]*)\[/img\]#i"; 37 | $replace=''; 38 | $str=preg_replace($patern, $replace, $str); 39 | //$str=nl2br($str); 40 | return $str; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /app/System/Libraries/Common.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\System\Libraries; 11 | 12 | class Common { 13 | 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /app/System/Libraries/ErrorMessages.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | /** 13 | * collection of methods for working with error messages. 14 | */ 15 | class ErrorMessages 16 | { 17 | /** 18 | * Get and display recent error message from error session 19 | * @return string 20 | */ 21 | public static function display(){ 22 | // Check to see if session error_message exists 23 | if(isset($_SESSION['error_message'])){ 24 | // Get data from session then display it 25 | $error_msg = $_SESSION['error_message']; 26 | $display_msg = " 27 |
28 | 34 |
"; 35 | unset($_SESSION['error_message']); 36 | return $display_msg; 37 | } 38 | } 39 | 40 | /** 41 | * Push Error Message to Session for display on page user is redirected to 42 | * @param $error_msg string Message Text 43 | * @param $redirect_to_page string URL Page Name for Redirect 44 | */ 45 | public static function push($error_msg, $redirect_to_page = null){ 46 | // Check to see if there is already a error message session 47 | if(isset($_SESSION['error_message'])){ 48 | // Clean error message Session 49 | unset($_SESSION['error_message']); 50 | } 51 | // Send error message to session 52 | $_SESSION['error_message'] = $error_msg; 53 | // Check to see if a redirect to page is supplied 54 | if(isset($redirect_to_page)){ 55 | // Redirect User to Given Page 56 | Url::redirect($redirect_to_page); 57 | } 58 | } 59 | 60 | /** 61 | * Displays Message without sessions to keep form data for retry 62 | * @param $e_msg string Message Text 63 | * @return string 64 | */ 65 | public static function display_raw($e_msg = null){ 66 | // Make sure an Error Message should be displayed 67 | if(isset($e_msg)){ 68 | // Check to see if we are displaying an array of errors 69 | if(is_array($e_msg)){ 70 | // Not an array, display single error 71 | $error_msg = ""; 72 | foreach($e_msg as $em){ 73 | $error_msg .= "
$em"; 74 | } 75 | }else{ 76 | $error_msg = $e_msg; 77 | } 78 | // Not an array, display single error 79 | $display_msg = " 80 |
81 | 87 |
"; 88 | return $display_msg; 89 | } 90 | } 91 | 92 | 93 | } 94 | -------------------------------------------------------------------------------- /app/System/Libraries/Images.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | use Libs\Database, 13 | Libs\Form, 14 | Libs\Request; 15 | 16 | class Images 17 | { 18 | 19 | /** 20 | * Ready the database for use in this helper. 21 | * 22 | * @var string 23 | */ 24 | private static $db; 25 | 26 | /** 27 | * getImageCountForum 28 | * 29 | * gets total number of images releated to Forum 30 | * 31 | * @param string $location 32 | * @param int $topic_id 33 | * @param int $topic_id 34 | * 35 | * @return string returns count data 36 | */ 37 | public static function getImageCountForum($location = null, $topic_id = null, $topic_reply_id = null){ 38 | // Check to see if we are getting count for Forum Topic 39 | if($location == "Topic"){ 40 | // Get image count for Forum Topics 41 | self::$db = Database::get(); 42 | $data = self::$db->select(" 43 | SELECT imageLocation 44 | FROM ".PREFIX."forum_images 45 | WHERE forumTopicID = :topic_id 46 | ", 47 | array(':topic_id' => $topic_id)); 48 | return count($data); 49 | } 50 | } 51 | 52 | /** 53 | * getForumImagesTopicReply 54 | * 55 | * get topic images 56 | * 57 | * @param int $topic_id 58 | * @param int $topic_reply_id 59 | * 60 | * @return string returns image url 61 | */ 62 | public static function getForumImagesTopicReply($topic_id = null, $topic_reply_id = null){ 63 | // Get images for Forum Topic Reply 64 | self::$db = Database::get(); 65 | $data = self::$db->select(" 66 | SELECT imageName, imageLocation 67 | FROM ".PREFIX."forum_images 68 | WHERE forumTopicID = :topic_id 69 | AND forumTopicReplyID = :topic_reply_id 70 | ", 71 | array(':topic_id' => $topic_id, ':topic_reply_id' => $topic_reply_id)); 72 | return $data; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/System/Libraries/Inflector.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | * 9 | * @author Virgil-Adrian Teaca - virgil@giulianaeassociati.com 10 | * @version 1.0 11 | */ 12 | 13 | namespace Libs; 14 | 15 | class Inflector extends \Doctrine\Common\Inflector\Inflector 16 | { 17 | } 18 | -------------------------------------------------------------------------------- /app/System/Libraries/PageViews.php: -------------------------------------------------------------------------------- 1 | 9 | * @version 4.3.0 10 | */ 11 | 12 | namespace Libs; 13 | 14 | use Libs\Database; 15 | 16 | class PageViews 17 | { 18 | private static $db; 19 | 20 | /** 21 | * views 22 | * 23 | * gets view count 24 | * updates view count if enabled 25 | * 26 | * @param boolean $addView (true/false) 27 | * @param string $view_location (Section of site where view is) 28 | * @param int $view_id (ID of post where view is) 29 | * @param int $view_owner_userid (ID of user viewing) 30 | * 31 | * @return string returns views count 32 | */ 33 | public static function views($addView = null, $view_id = null, $view_location = null, $view_owner_userid = "0", $view_sec_id = "0"){ 34 | // Get data from server 35 | // Get current user's IP address 36 | $view_user_ip = $_SERVER['REMOTE_ADDR']; 37 | // Get full URL address for current page 38 | $view_uri = $_SERVER['REQUEST_URI']; 39 | $view_server = $_SERVER['SERVER_NAME']; 40 | 41 | // Check to see if user is a guest... then set their id to 0 42 | if($view_owner_userid == null){$view_owner_userid = "0";}; 43 | 44 | // Check to see if current user has already viewed page 45 | self::$db = Database::get(); 46 | $already_view_data = self::$db->select(" 47 | SELECT 48 | * 49 | FROM 50 | ".PREFIX."views 51 | WHERE 52 | view_id = :view_id 53 | AND view_location = :view_location 54 | AND view_user_ip = :view_user_ip 55 | ", 56 | array(':view_id' => $view_id, 57 | ':view_location' => $view_location, 58 | ':view_user_ip' => $view_user_ip)); 59 | $already_view_count = count($already_view_data); 60 | 61 | // Check to see if current user has already viewed this page 62 | if($already_view_count < 1){ 63 | // Check to see if this is a page that we want to add view to 64 | if($addView == "true"){ 65 | // Insert New View Into Database 66 | self::$db = Database::get(); 67 | $view_add_data = self::$db->insert( 68 | PREFIX.'views', 69 | array('view_id' => $view_id, 'view_sec_id' => $view_sec_id, 70 | 'view_location' => $view_location, 71 | 'view_user_ip' => $view_user_ip, 'view_server' => $view_server, 72 | 'view_uri' => $view_uri, 'view_owner_userid' => $view_owner_userid)); 73 | }// End addView Check 74 | }// End already viewed check 75 | 76 | // Output View Count for display on page 77 | // Get view count from db 78 | self::$db = Database::get(); 79 | $view_data = self::$db->select(" 80 | SELECT 81 | * 82 | FROM 83 | ".PREFIX."views 84 | WHERE 85 | view_id = :view_id 86 | AND view_location = :view_location 87 | ", 88 | array(':view_id' => $view_id, 89 | ':view_location' => $view_location)); 90 | return count($view_data); 91 | } 92 | 93 | } 94 | -------------------------------------------------------------------------------- /app/System/Libraries/Password.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | * 9 | * @author David Carr - dave@daveismyname.com 10 | */ 11 | 12 | namespace Libs; 13 | 14 | /** 15 | * Password functions for php's native password functions 16 | */ 17 | class Password 18 | { 19 | 20 | /** 21 | * Hash the password using the specified algorithm 22 | * 23 | * @param string $password The password to hash 24 | * @param int $algo The algorithm to use (Defined by PASSWORD_* constants) 25 | * @param array $options The options for the algorithm to use 26 | * 27 | * @return string|false The hashed password, or false on error. 28 | */ 29 | public static function make($password, $algo = PASSWORD_DEFAULT, array $options = array()) 30 | { 31 | return password_hash($password, $algo, $options); 32 | } 33 | 34 | /** 35 | * Get information about the password hash. Returns an array of the information 36 | * that was used to generate the password hash. 37 | * 38 | * array( 39 | * 'algo' => 1, 40 | * 'algoName' => 'bcrypt', 41 | * 'options' => array( 42 | * 'cost' => 10, 43 | * ), 44 | * ) 45 | * 46 | * @param string $hash The password hash to extract info from 47 | * 48 | * @return array The array of information about the hash. 49 | */ 50 | public static function getInfos($hash) 51 | { 52 | return password_get_info($hash); 53 | } 54 | 55 | /** 56 | * Determine if the password hash needs to be rehashed according to the options provided 57 | * 58 | * If the answer is true, after validating the password using password_verify, rehash it. 59 | * 60 | * @param string $hash The hash to test 61 | * @param int $algo The algorithm used for new password hashes 62 | * @param array $options The options array passed to password_hash 63 | * 64 | * @return boolean True if the password needs to be rehashed. 65 | */ 66 | 67 | public static function needsRehash($hash, $algo = PASSWORD_DEFAULT, array $options = array()) 68 | { 69 | return password_needs_rehash($hash, $algo, $options); 70 | } 71 | 72 | /** 73 | * Verify a password against a hash using a timing attack resistant approach 74 | * 75 | * @param string $password The password to verify 76 | * @param string $hash The hash to verify against 77 | * 78 | * @return boolean If the password matches the hash 79 | */ 80 | public static function verify($password, $hash) 81 | { 82 | return password_verify($password, $hash); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /app/System/Libraries/PhpMailer/Exception.php: -------------------------------------------------------------------------------- 1 | ' . $this->getMessage() . "
\n"; 22 | echo $errorMsg; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/System/Libraries/PhpMailer/Mail.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs\PhpMailer; 11 | 12 | /** 13 | * Custom class for PHPMailer to uniform sending emails. 14 | */ 15 | class Mail extends PhpMailer 16 | { 17 | /** 18 | * From 19 | * 20 | * @var string $From set sender email 21 | */ 22 | public $From = EMAIL_USERNAME; 23 | 24 | /** 25 | * FromName 26 | * 27 | * @var string $FromName set sender name 28 | */ 29 | public $FromName = EMAIL_FROM_NAME; 30 | 31 | /** 32 | * Host 33 | * 34 | * @var string $Host set sender SMTP Route 35 | */ 36 | public $Host = EMAIL_HOST; 37 | 38 | /** 39 | * Mailer 40 | * 41 | * @var string $Mailer set type default is SMTP 42 | */ 43 | public $Mailer = 'smtp'; 44 | 45 | /** 46 | * SMTPAuth 47 | * 48 | * @var string $SMTPAuth use authenticated 49 | */ 50 | public $SMTPAuth = true; 51 | 52 | /** 53 | * Username 54 | * 55 | * @var string $Username set username 56 | */ 57 | public $Username = EMAIL_USERNAME; 58 | 59 | /** 60 | * Password 61 | * 62 | * @var string $Password set password 63 | */ 64 | public $Password = EMAIL_PASSWORD; 65 | 66 | /** 67 | * SMTPSecure 68 | * 69 | * @var string $SMTPSecure set Secure SMTP 70 | */ 71 | public $SMTPSecure = EMAIL_STMP_SECURE; 72 | 73 | /** 74 | * The default SMTP server port. 75 | * @type int 76 | */ 77 | public $Port = EMAIL_PORT; 78 | 79 | /** 80 | * WordWrap 81 | * @var integer $WordWrap set word wrap 82 | */ 83 | public $WordWrap = 75; 84 | 85 | /** 86 | * Subject 87 | * 88 | * @param string $subject The subject of the email 89 | */ 90 | public function subject($subject) 91 | { 92 | $this->Subject = $subject; 93 | } 94 | 95 | /** 96 | * Body 97 | * 98 | * @param string $body The content of the email 99 | */ 100 | public function body($body) 101 | { 102 | $this->Body = $body; 103 | } 104 | 105 | /** 106 | * Send 107 | * 108 | * @return none - sends the email. 109 | */ 110 | public function send() 111 | { 112 | $this->AltBody = strip_tags(stripslashes($this->Body))."\n\n"; 113 | $this->AltBody = str_replace(" ", "\n\n", $this->AltBody); 114 | return parent::send(); 115 | } 116 | 117 | /** 118 | * Clean Message. 119 | * Remove email specific characters from a given string 120 | * 121 | * @param string. Email body. 122 | * @return string. 123 | */ 124 | public function cleanMessage($string) 125 | { 126 | $bad = array("content-type","bcc:","to:","cc:","href"); 127 | return str_replace($bad, "", $string); 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /app/System/Libraries/Request.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | * 9 | * @author David Carr - dave@daveismyname.com 10 | */ 11 | 12 | namespace Libs; 13 | 14 | /** 15 | * It contains the request information and provide methods to fetch request body. 16 | */ 17 | class Request 18 | { 19 | /** 20 | * Gets the request method. 21 | * 22 | * @return string 23 | */ 24 | public static function getMethod() 25 | { 26 | $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; 27 | 28 | if (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) { 29 | $method = $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']; 30 | } elseif (isset($_REQUEST['_method'])) { 31 | $method = $_REQUEST['_method']; 32 | } 33 | 34 | return strtoupper($method); 35 | } 36 | 37 | /** 38 | * Safer and better access to $_POST. 39 | * 40 | * @param string $key 41 | * @static static method 42 | * 43 | * @return mixed 44 | */ 45 | public static function post($key) 46 | { 47 | return array_key_exists($key, $_POST)? $_POST[$key]: null; 48 | } 49 | 50 | /** 51 | * Safer and better access to $_FILES. 52 | * 53 | * @param string $key 54 | * @static static method 55 | * 56 | * @return mixed 57 | */ 58 | public static function files($key) 59 | { 60 | return array_key_exists($key, $_FILES)? $_FILES[$key]: null; 61 | } 62 | 63 | /** 64 | * Safer and better access to $_GET. 65 | * 66 | * @param string $key 67 | * @static static method 68 | * 69 | * @return mixed 70 | */ 71 | public static function query($key) 72 | { 73 | return self::get($key); 74 | } 75 | 76 | /** 77 | * Safer and better access to $_GET. 78 | * 79 | * @param string $key 80 | * @static static method 81 | * 82 | * @return mixed 83 | */ 84 | public static function get($key) 85 | { 86 | return array_key_exists($key, $_GET)? $_GET[$key]: null; 87 | } 88 | 89 | /** 90 | * Detect if request is Ajax. 91 | * 92 | * @static static method 93 | * 94 | * @return boolean 95 | */ 96 | public static function isAjax() 97 | { 98 | if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { 99 | return strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; 100 | } 101 | return false; 102 | } 103 | 104 | /** 105 | * Detect if request is POST request. 106 | * 107 | * @static static method 108 | * 109 | * @return boolean 110 | */ 111 | public static function isPost() 112 | { 113 | return $_SERVER["REQUEST_METHOD"] === "POST"; 114 | } 115 | 116 | /** 117 | * Detect if request is GET request. 118 | * 119 | * @static static method 120 | * 121 | * @return boolean 122 | */ 123 | public static function isGet() 124 | { 125 | return $_SERVER["REQUEST_METHOD"] === "GET"; 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /app/System/Libraries/TimeDiff.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | class TimeDiff 13 | { 14 | // Time format is UNIX timestamp or 15 | // PHP strtotime compatible strings 16 | public static function dateDiff($time1, $time2, $precision = 6) { 17 | // If not numeric then convert texts to unix timestamps 18 | if (!is_int($time1)) { 19 | $time1 = strtotime($time1); 20 | } 21 | if (!is_int($time2)) { 22 | $time2 = strtotime($time2); 23 | } 24 | 25 | // If time1 is bigger than time2 26 | // Then swap time1 and time2 27 | if ($time1 > $time2) { 28 | $ttime = $time1; 29 | $time1 = $time2; 30 | $time2 = $ttime; 31 | } 32 | 33 | // Set up intervals and diffs arrays 34 | $intervals = array('year','month','day','hour','minute','second'); 35 | $diffs = array(); 36 | 37 | // Loop thru all intervals 38 | foreach ($intervals as $interval) { 39 | // Set default diff to 0 40 | $diffs[$interval] = 0; 41 | // Create temp time from time1 and interval 42 | $ttime = strtotime("+1 " . $interval, $time1); 43 | // Loop until temp time is smaller than time2 44 | while ($time2 >= $ttime) { 45 | $time1 = $ttime; 46 | $diffs[$interval]++; 47 | // Create new temp time from time1 and interval 48 | $ttime = strtotime("+1 " . $interval, $time1); 49 | } 50 | } 51 | 52 | $count = 0; 53 | $times = array(); 54 | // Loop thru all diffs 55 | foreach ($diffs as $interval => $value) { 56 | // Break if we have needed precission 57 | if ($count >= $precision) { 58 | break; 59 | } 60 | // Add value and interval 61 | // if value is bigger than 0 62 | if ($value > 0) { 63 | // Add s if value is not 1 64 | if ($value != 1) { 65 | $interval .= "s"; 66 | } 67 | // Add value and interval to times array 68 | $times[] = $value . " " . $interval; 69 | $count++; 70 | } 71 | } 72 | 73 | // Return string with times 74 | return implode(", ", $times); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /app/System/Libraries/ZipCode.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace Libs; 11 | 12 | use Libs\Database, 13 | Libs\Cookie, 14 | Libs\BBCode; 15 | 16 | class ZipCode 17 | { 18 | private static $db; 19 | 20 | // Get City, State based on Zip Code 21 | public static function getCityState($zip){ 22 | self::$db = Database::get(); 23 | $data = self::$db->select(" 24 | SELECT 25 | * 26 | FROM 27 | ".PREFIX."cities_extended 28 | WHERE 29 | zip = :zip 30 | ", 31 | array(':zip' => $zip)); 32 | return $data[0]->city.", ".$data[0]->state_code; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /app/System/Models.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\System; 11 | 12 | use Libs\Database; 13 | 14 | class Models { 15 | 16 | protected $db; 17 | 18 | function __construct(){ 19 | /** Connect to PDO for all models. */ 20 | $this->db = Database::get(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/css/index.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/AdminPanel/Assets/css/index.htm -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/AdminPanel/Assets/images/favicon.ico -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/images/index.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/AdminPanel/Assets/images/index.htm -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/AdminPanel/Assets/images/logo.gif -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/images/uap3logolg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/AdminPanel/Assets/images/uap3logolg.gif -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/js/chart-data.js: -------------------------------------------------------------------------------- 1 | var randomScalingFactor = function(){ return Math.round(Math.random()*1000)}; 2 | 3 | 4 | 5 | var barChartData = { 6 | labels : ["January","February","March","April","May","June","July"], 7 | datasets : [ 8 | { 9 | fillColor : "rgba(220,220,220,0.5)", 10 | strokeColor : "rgba(220,220,220,0.8)", 11 | highlightFill: "rgba(220,220,220,0.75)", 12 | highlightStroke: "rgba(220,220,220,1)", 13 | data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()] 14 | }, 15 | { 16 | fillColor : "rgba(48, 164, 255, 0.2)", 17 | strokeColor : "rgba(48, 164, 255, 0.8)", 18 | highlightFill : "rgba(48, 164, 255, 0.75)", 19 | highlightStroke : "rgba(48, 164, 255, 1)", 20 | data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()] 21 | } 22 | ] 23 | 24 | } 25 | 26 | var pieData = [ 27 | { 28 | value: 300, 29 | color:"#30a5ff", 30 | highlight: "#62b9fb", 31 | label: "Blue" 32 | }, 33 | { 34 | value: 50, 35 | color: "#ffb53e", 36 | highlight: "#fac878", 37 | label: "Orange" 38 | }, 39 | { 40 | value: 100, 41 | color: "#1ebfae", 42 | highlight: "#3cdfce", 43 | label: "Teal" 44 | }, 45 | { 46 | value: 120, 47 | color: "#f9243f", 48 | highlight: "#f6495f", 49 | label: "Red" 50 | } 51 | 52 | ]; 53 | 54 | var doughnutData = [ 55 | { 56 | value: 300, 57 | color:"#30a5ff", 58 | highlight: "#62b9fb", 59 | label: "Blue" 60 | }, 61 | { 62 | value: 50, 63 | color: "#ffb53e", 64 | highlight: "#fac878", 65 | label: "Orange" 66 | }, 67 | { 68 | value: 100, 69 | color: "#1ebfae", 70 | highlight: "#3cdfce", 71 | label: "Teal" 72 | }, 73 | { 74 | value: 120, 75 | color: "#f9243f", 76 | highlight: "#f6495f", 77 | label: "Red" 78 | } 79 | 80 | ]; 81 | 82 | window.onload = function(){ 83 | var chart1 = document.getElementById("line-chart").getContext("2d"); 84 | window.myLine = new Chart(chart1).Line(lineChartData, { 85 | responsive: true 86 | }); 87 | var chart2 = document.getElementById("bar-chart").getContext("2d"); 88 | window.myBar = new Chart(chart2).Bar(barChartData, { 89 | responsive : true 90 | }); 91 | var chart3 = document.getElementById("doughnut-chart").getContext("2d"); 92 | window.myDoughnut = new Chart(chart3).Doughnut(doughnutData, {responsive : true 93 | }); 94 | var chart4 = document.getElementById("pie-chart").getContext("2d"); 95 | window.myPie = new Chart(chart4).Pie(pieData, {responsive : true 96 | }); 97 | 98 | }; 99 | -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/js/index.htm: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/js/jquery.easing.min.js: -------------------------------------------------------------------------------- 1 | (function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],function($){return factory($)})}else if(typeof module==="object"&&typeof module.exports==="object"){exports=factory(require("jquery"))}else{factory(jQuery)}})(function($){$.easing.jswing=$.easing.swing;var pow=Math.pow,sqrt=Math.sqrt,sin=Math.sin,cos=Math.cos,PI=Math.PI,c1=1.70158,c2=c1*1.525,c3=c1+1,c4=2*PI/3,c5=2*PI/4.5;function bounceOut(x){var n1=7.5625,d1=2.75;if(x<1/d1){return n1*x*x}else if(x<2/d1){return n1*(x-=1.5/d1)*x+.75}else if(x<2.5/d1){return n1*(x-=2.25/d1)*x+.9375}else{return n1*(x-=2.625/d1)*x+.984375}}$.extend($.easing,{def:"easeOutQuad",swing:function(x){return $.easing[$.easing.def](x)},easeInQuad:function(x){return x*x},easeOutQuad:function(x){return 1-(1-x)*(1-x)},easeInOutQuad:function(x){return x<.5?2*x*x:1-pow(-2*x+2,2)/2},easeInCubic:function(x){return x*x*x},easeOutCubic:function(x){return 1-pow(1-x,3)},easeInOutCubic:function(x){return x<.5?4*x*x*x:1-pow(-2*x+2,3)/2},easeInQuart:function(x){return x*x*x*x},easeOutQuart:function(x){return 1-pow(1-x,4)},easeInOutQuart:function(x){return x<.5?8*x*x*x*x:1-pow(-2*x+2,4)/2},easeInQuint:function(x){return x*x*x*x*x},easeOutQuint:function(x){return 1-pow(1-x,5)},easeInOutQuint:function(x){return x<.5?16*x*x*x*x*x:1-pow(-2*x+2,5)/2},easeInSine:function(x){return 1-cos(x*PI/2)},easeOutSine:function(x){return sin(x*PI/2)},easeInOutSine:function(x){return-(cos(PI*x)-1)/2},easeInExpo:function(x){return x===0?0:pow(2,10*x-10)},easeOutExpo:function(x){return x===1?1:1-pow(2,-10*x)},easeInOutExpo:function(x){return x===0?0:x===1?1:x<.5?pow(2,20*x-10)/2:(2-pow(2,-20*x+10))/2},easeInCirc:function(x){return 1-sqrt(1-pow(x,2))},easeOutCirc:function(x){return sqrt(1-pow(x-1,2))},easeInOutCirc:function(x){return x<.5?(1-sqrt(1-pow(2*x,2)))/2:(sqrt(1-pow(-2*x+2,2))+1)/2},easeInElastic:function(x){return x===0?0:x===1?1:-pow(2,10*x-10)*sin((x*10-10.75)*c4)},easeOutElastic:function(x){return x===0?0:x===1?1:pow(2,-10*x)*sin((x*10-.75)*c4)+1},easeInOutElastic:function(x){return x===0?0:x===1?1:x<.5?-(pow(2,20*x-10)*sin((20*x-11.125)*c5))/2:pow(2,-20*x+10)*sin((20*x-11.125)*c5)/2+1},easeInBack:function(x){return c3*x*x*x-c1*x*x},easeOutBack:function(x){return 1+c3*pow(x-1,3)+c1*pow(x-1,2)},easeInOutBack:function(x){return x<.5?pow(2*x,2)*((c2+1)*2*x-c2)/2:(pow(2*x-2,2)*((c2+1)*(x*2-2)+c2)+2)/2},easeInBounce:function(x){return 1-bounceOut(1-x)},easeOutBounce:bounceOut,easeInOutBounce:function(x){return x<.5?(1-bounceOut(1-2*x))/2:(1+bounceOut(2*x-1))/2}})}); 2 | -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Assets/js/sb-admin.min.js: -------------------------------------------------------------------------------- 1 | !function(e){"use strict";e('.navbar-sidenav [data-toggle="tooltip"]').tooltip({template:''}),e("#sidenavToggler").click(function(o){o.preventDefault(),e("body").toggleClass("sidenav-toggled"),e(".navbar-sidenav .nav-link-collapse").addClass("collapsed"),e(".navbar-sidenav .sidenav-second-level, .navbar-sidenav .sidenav-third-level").removeClass("show")}),e(".navbar-sidenav .nav-link-collapse").click(function(o){o.preventDefault(),e("body").removeClass("sidenav-toggled")}),e("body.fixed-nav .navbar-sidenav, body.fixed-nav .sidenav-toggler, body.fixed-nav .navbar-collapse").on("mousewheel DOMMouseScroll",function(e){var o=e.originalEvent,t=o.wheelDelta||-o.detail;this.scrollTop+=30*(t<0?1:-1),e.preventDefault()}),e(document).scroll(function(){e(this).scrollTop()>100?e(".scroll-to-top").fadeIn():e(".scroll-to-top").fadeOut()}),e('[data-toggle="tooltip"]').tooltip(),e(document).on("click","a.scroll-to-top",function(o){var t=e(this);e("html, body").stop().animate({scrollTop:e(t.attr("href")).offset().top},1e3,"easeInOutExpo"),o.preventDefault()})}(jQuery); 2 | -------------------------------------------------------------------------------- /app/Templates/AdminPanel/Footer.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Assets, Libs\Url; 11 | ?> 12 | 13 | 14 | 15 | 22 | 33 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/css/index.htm: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/css/style.css: -------------------------------------------------------------------------------- 1 | /* Your styles here */ 2 | footer a { 3 | color: black; 4 | } 5 | body { 6 | padding-top: 80px; 7 | /* Margin bottom by footer height */ 8 | margin-bottom: 60px; 9 | } 10 | footer { 11 | margin-top: 20px; 12 | margin-bottom: 0px; 13 | } 14 | .col-centered{ 15 | float: none; 16 | margin: 0 auto; 17 | } 18 | .navbar-login 19 | { 20 | width: 305px; 21 | padding: 10px; 22 | padding-bottom: 0px; 23 | } 24 | .navbar-login-text 25 | { 26 | color: #000000; 27 | } 28 | .navbar-login-session 29 | { 30 | padding: 10px; 31 | padding-bottom: 0px; 32 | padding-top: 0px; 33 | } 34 | .icon-size 35 | { 36 | font-size: 87px; 37 | } 38 | .forum{ 39 | white-space: pre-line; 40 | display: block; 41 | unicode-bidi: embed; 42 | } 43 | pre.code { 44 | font-family:Verdana, Geneva, sans-serif; 45 | font-size:11px; 46 | width:100%; 47 | overflow:auto; 48 | } 49 | .footer { 50 | bottom: 0; 51 | width: 100%; 52 | padding: 10px; 53 | background-color: #f5f5f5; 54 | } 55 | .hidden { 56 | display:none; 57 | visibility:hidden; 58 | } 59 | legend { 60 | opacity: 0.6; 61 | font-size: 12px; 62 | } 63 | .dot { 64 | height: 10px; 65 | width: 10px; 66 | border-radius: 50%; 67 | display: inline-block; 68 | } 69 | .comment-box { 70 | margin-top: 10px !important; 71 | } 72 | .comment-box img { 73 | width: 50px; 74 | height: 50px; 75 | } 76 | .comment-box .media-left { 77 | padding-right: 4px; 78 | width: 65px; 79 | } 80 | .comment-box .media-body p { 81 | padding: 2px; 82 | } 83 | .comment-box .media-body .media p { 84 | margin-bottom: 0; 85 | } 86 | .comment-box .media-heading { 87 | padding: 7px 10px; 88 | position: relative; 89 | margin-bottom: -1px; 90 | } 91 | .comment-box .media-heading:before { 92 | content: ""; 93 | width: 12px; 94 | height: 12px; 95 | border-width: 1px 0 0 1px; 96 | -webkit-transform: rotate(-45deg); 97 | transform: rotate(-45deg); 98 | position: absolute; 99 | top: 10px; 100 | left: -6px; 101 | } 102 | a.anchor { 103 | display: block; 104 | position: relative; 105 | top: -150px; 106 | visibility: hidden; 107 | } 108 | 109 | #myImg { 110 | border-radius: 5px; 111 | cursor: pointer; 112 | transition: 0.3s; 113 | } 114 | #myImg:hover {opacity: 0.5;} 115 | 116 | .photo-gallery { 117 | color:#313437; 118 | background-color:#fff; 119 | } 120 | 121 | .photo-gallery p { 122 | color:#7d8285; 123 | } 124 | 125 | .photo-gallery h2 { 126 | font-weight:bold; 127 | margin-bottom:40px; 128 | padding-top:40px; 129 | color:inherit; 130 | } 131 | 132 | @media (max-width:767px) { 133 | .photo-gallery h2 { 134 | margin-bottom:25px; 135 | padding-top:25px; 136 | font-size:24px; 137 | } 138 | } 139 | 140 | .photo-gallery .intro { 141 | font-size:16px; 142 | max-width:500px; 143 | margin:0 auto 40px; 144 | } 145 | 146 | .photo-gallery .intro p { 147 | margin-bottom:0; 148 | } 149 | 150 | .photo-gallery .photos { 151 | padding-bottom:20px; 152 | } 153 | 154 | .photo-gallery .item { 155 | padding-bottom:30px; 156 | } 157 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/Default/Assets/images/favicon.ico -------------------------------------------------------------------------------- /app/Templates/Default/Assets/images/index.htm: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/Default/Assets/images/logo.gif -------------------------------------------------------------------------------- /app/Templates/Default/Assets/images/uap3logolg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/Default/Assets/images/uap3logolg.gif -------------------------------------------------------------------------------- /app/Templates/Default/Assets/images/uap4logo_wait_animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/app/Templates/Default/Assets/images/uap4logo_wait_animation.gif -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/bbcode.js: -------------------------------------------------------------------------------- 1 | function wrapText(elementID, openTag, closeTag) { 2 | var textArea = document.getElementById('forum_content'); 3 | 4 | if (typeof(textArea.selectionStart) != "undefined") { 5 | var begin = textArea.value.substr(0, textArea.selectionStart); 6 | var selection = textArea.value.substr(textArea.selectionStart, textArea.selectionEnd - textArea.selectionStart); 7 | var end = textArea.value.substr(textArea.selectionEnd); 8 | textArea.value = begin + openTag + selection + closeTag + end; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/bbcode_status.js: -------------------------------------------------------------------------------- 1 | function wrapText(elementID, openTag, closeTag) { 2 | var textArea = document.getElementById('status_content'); 3 | 4 | if (typeof(textArea.selectionStart) != "undefined") { 5 | var begin = textArea.value.substr(0, textArea.selectionStart); 6 | var selection = textArea.value.substr(textArea.selectionStart, textArea.selectionEnd - textArea.selectionStart); 7 | var end = textArea.value.substr(textArea.selectionEnd); 8 | textArea.value = begin + openTag + selection + closeTag + end; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/form_check_all.js: -------------------------------------------------------------------------------- 1 | function checkAll(ele) { 2 | var checkboxes = document.getElementsByTagName('input'); 3 | if (ele.checked) { 4 | for (var i = 0; i < checkboxes.length; i++) { 5 | if (checkboxes[i].type == 'checkbox') { 6 | checkboxes[i].checked = true; 7 | } 8 | } 9 | } else { 10 | for (var i = 0; i < checkboxes.length; i++) { 11 | console.log(i) 12 | if (checkboxes[i].type == 'checkbox') { 13 | checkboxes[i].checked = false; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/forum_autosave_topic.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | var timer; 3 | $('#forum_content,#fourm_title').keyup(function(){ 4 | 5 | if(timer) { 6 | clearTimeout(timer); 7 | } 8 | timer = setTimeout(saveData, 1000); 9 | 10 | }); 11 | 12 | $('#submit').click(function(){ 13 | saveData(); 14 | }); 15 | }); 16 | 17 | // Save data 18 | function saveData(){ 19 | 20 | var forum_post_id = $('#forum_post_id').val(); 21 | var forum_cat_id = $('#forum_cat_id').val(); 22 | var forum_title = $('#forum_title').val().trim(); 23 | var forum_content = $('#forum_content').val().trim(); 24 | var token_forum = $('#token_forum').val(); 25 | var forum_topic_autosave = "autosave_topic"; 26 | 27 | if(forum_title != '' || forum_content != ''){ 28 | // AJAX request 29 | $.ajax({ 30 | url: forum_cat_id+'/', 31 | type: 'post', 32 | data: {forum_post_id:forum_post_id,forum_title:forum_title,forum_content:forum_content,token_forum:token_forum,forum_topic_autosave:forum_topic_autosave}, 33 | success: function(data){ 34 | if(data != '') 35 | { 36 | $('#forum_post_id').val(data); 37 | } 38 | $('#autoSave').html("Saved as draft..."); 39 | console.log("Save Data as Draft"); 40 | setInterval(function(){ 41 | $('#autoSave').text(''); 42 | }, 5000); 43 | } 44 | }); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/forum_autosave_topic_reply.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | var timer; 3 | $('#fpr_content').keyup(function(){ 4 | 5 | if(timer) { 6 | clearTimeout(timer); 7 | } 8 | timer = setTimeout(saveData, 1000); 9 | 10 | }); 11 | 12 | $('#submit').click(function(){ 13 | saveData(); 14 | }); 15 | }); 16 | 17 | // Save data 18 | function saveData(){ 19 | 20 | var fpr_post_id = $('#fpr_post_id').val(); 21 | var topic_id = $('#topic_id').val(); 22 | var fpr_content = $('#fpr_content').val().trim(); 23 | var token_forum = $('#token_forum').val(); 24 | var forum_topic_reply_autosave = "autosave_topic_reply"; 25 | 26 | if(fpr_content != ''){ 27 | // AJAX request 28 | $.ajax({ 29 | url: '/Topic/' + topic_id + "/", 30 | type: 'post', 31 | data: {fpr_post_id:fpr_post_id,topic_id:topic_id,fpr_content:fpr_content,token_forum:token_forum,forum_topic_reply_autosave:forum_topic_reply_autosave}, 32 | success: function(data){ 33 | if(data != '') 34 | { 35 | $('#fpr_post_id').val(data); 36 | } 37 | $('#autoSave').html("Saved as draft..."); 38 | console.log("Save Data as Draft"); 39 | setInterval(function(){ 40 | $('#autoSave').text(''); 41 | }, 5000); 42 | } 43 | }); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/index.htm: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/index.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/lang.En.js: -------------------------------------------------------------------------------- 1 | 2 | var lang = { 3 | pass_no_match: "Passwords Do Not Match!", 4 | pass_char_count: "Password must be " + char_limit.password_min + " to " + char_limit.password_max + " characters!", 5 | pass_good: "Good Password!", 6 | pass_weak: "Weak Password!", 7 | username_invalid: "User Name Invalid!", 8 | username_inuse: "User Name is already in use!", 9 | username_char_count: "User Name must be " + char_limit.username_min + " to " + char_limit.username_max + " characters!", 10 | email_invalid: "Email Address Invalid!", 11 | email_inuse: "Email is already in use!", 12 | email_char_count: "Email must be at least " + char_limit.email_min + " to " + char_limit.email_max + " characters!" 13 | }; 14 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/lang.Es.js: -------------------------------------------------------------------------------- 1 | 2 | var lang = { 3 | pass_no_match: "¡Las contraseñas no coinciden!", 4 | pass_char_count: "La contraseña debe tener " + char_limit.password_min + " a " + char_limit.password_max + " caracteres!", 5 | pass_good: "Buena contraseña !", 6 | pass_weak: "¡Contraseña debil!", 7 | username_invalid: "Nombre de usuario no válido !", 8 | username_inuse: "¡El nombre de usuario ya está en uso!", 9 | username_char_count: "Nombre de usuario debe ser " + char_limit.username_min + " a " + char_limit.username_max + " caracteres!", 10 | email_invalid: "Dirección de correo electrónico no válida !", 11 | email_inuse: "¡Correo electrónico ya está en uso!", 12 | email_char_count: "El email debe ser al menos " + char_limit.email_min + " a " + char_limit.email_max + " caracteres!" 13 | }; 14 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/live_email.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() 2 | { 3 | $("#email").keyup(function() 4 | { 5 | var name = $(this).val(); 6 | 7 | if(name.length >= char_limit.email_min && name.length <= char_limit.email_max) 8 | { 9 | $("#resultemail").html(''); 10 | 11 | $.ajax({ 12 | 13 | type : 'POST', 14 | url : 'LiveCheckEmail', 15 | data : $(this).serialize(), 16 | success : function(data) 17 | { 18 | /*$("#resultun").html(data);*/ 19 | if(data == 'OK') 20 | { 21 | $("#resultemail").html(""); 22 | $("#resultemail2").html(""); 23 | } 24 | if(data == 'BAD') 25 | { 26 | $("#resultemail").html(""); 27 | $("#resultemail2").html(""); 28 | } 29 | if(data == 'INUSE') 30 | { 31 | $("#resultemail").html(""); 32 | $("#resultemail2").html(""); 33 | } 34 | } 35 | }); 36 | return false; 37 | 38 | } 39 | else 40 | { 41 | $("#resultemail").html(""); 42 | $("#resultemail2").html(""); 43 | } 44 | }); 45 | 46 | }); 47 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/live_username_check.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() 2 | { 3 | $("#username").keyup(function() 4 | { 5 | var name = $(this).val(); 6 | 7 | if(name.length >= char_limit.username_min && name.length <= char_limit.username_max) 8 | { 9 | $("#resultun").html(''); 10 | 11 | /*$.post("username-check.php", $("#reg-form").serialize()) 12 | .done(function(data){ 13 | $("#result").html(data); 14 | });*/ 15 | 16 | $.ajax({ 17 | 18 | type : 'POST', 19 | url : 'LiveCheckUserName', 20 | data : $(this).serialize(), 21 | success : function(data) 22 | { 23 | /*$("#resultun").html(data);*/ 24 | if(data == 'OK') 25 | { 26 | $("#resultun").html(""); 27 | $("#resultun2").html(""); 28 | } 29 | if(data == 'CHAR') 30 | { 31 | $("#resultun").html(""); 32 | $("#resultun2").html(""); 33 | } 34 | if(data == 'INUSE') 35 | { 36 | $("#resultun").html(""); 37 | $("#resultun2").html(""); 38 | } 39 | } 40 | }); 41 | return false; 42 | 43 | } 44 | else 45 | { 46 | $("#resultun").html(""); 47 | $("#resultun2").html(""); 48 | } 49 | }); 50 | 51 | }); 52 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/loader.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | const loader = document.querySelector(".loader"); 3 | loader.className += " hidden"; // class "loader hidden" 4 | }); 5 | -------------------------------------------------------------------------------- /app/Templates/Default/Assets/js/password_strength_match.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | $('#passwordInput, #confirmPasswordInput').on('keyup', function(e) { 4 | 5 | if($('#passwordInput').val() != '' && $('#confirmPasswordInput').val() != '' && $('#passwordInput').val() != $('#confirmPasswordInput').val()) 6 | { 7 | $('#passwordStrength').html(''); 8 | $('#password01').html(""); 9 | $('#password02').html(""); 10 | 11 | return false; 12 | } 13 | 14 | var min_minus_one = char_limit.password_min - 1; 15 | var max_minus_one = char_limit.password_max - 1; 16 | 17 | // Must have capital letter, numbers and lowercase letters 18 | var strongRegex = new RegExp("^(?=.{" + char_limit.password_min + "," + char_limit.password_max + "})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g"); 19 | 20 | // Must have either capitals and lowercase letters or lowercase and numbers 21 | var mediumRegex = new RegExp("^(?=.{" + min_minus_one + "," + max_minus_one + "})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g"); 22 | 23 | // Must be at least 8 characters long 24 | var okRegex = new RegExp("(?=.{" + char_limit.password_min + "," + char_limit.password_max + "}).*", "g"); 25 | 26 | if (okRegex.test($(this).val()) === false) { 27 | // If ok regex doesn't match the password 28 | $('#passwordStrength').html(""); 29 | $('#password01').html(""); 30 | if($('#confirmPasswordInput').val()){ 31 | $('#password02').html(""); 32 | } 33 | } else if (strongRegex.test($(this).val())) { 34 | // If reg ex matches strong password 35 | $('#passwordStrength').html(""); 36 | $('#password01').html(""); 37 | if($('#confirmPasswordInput').val()){ 38 | $('#password02').html(""); 39 | } 40 | } else if (mediumRegex.test($(this).val())) { 41 | // If medium password matches the reg ex 42 | $('#passwordStrength').html(""); 43 | $('#password01').html(""); 44 | if($('#confirmPasswordInput').val()){ 45 | $('#password02').html(""); 46 | } 47 | } else { 48 | // If password is ok 49 | $('#passwordStrength').html(""); 50 | $('#password01').html(""); 51 | if($('#confirmPasswordInput').val()){ 52 | $('#password02').html(""); 53 | } 54 | } 55 | return true; 56 | }); 57 | 58 | }); 59 | -------------------------------------------------------------------------------- /app/Templates/Default/Footer.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Assets, 11 | Libs\Language, 12 | Libs\Url; 13 | ?> 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | UserApplePie v4 24 | | 25 | 26 | © . 27 | | 28 | 29 | 30 | 31 | | 32 | 33 | 34 | | 35 | 36 | $info) { 41 | /** List Lang Links **/ 42 | if($cur_lang_code == $code){ 43 | echo "".$info['name']." "; 44 | }else{ 45 | echo "".$info['name']." "; 46 | } 47 | } 48 | ?> 49 | 50 |
51 | 52 |
53 | 54 | 61 | 62 | 63 | 64 | 65 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /app/Update/Update.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | namespace App\Update; 11 | 12 | use PDO; 13 | 14 | class Update { 15 | 16 | public static function update421to430(){ 17 | /** Test The Database Settings and Make sure it works **/ 18 | try { 19 | $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS); 20 | // set the PDO error mode to exception 21 | $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 22 | $output .= "Database Connected Successfully!"; 23 | $database_working = true; 24 | } 25 | catch(PDOException $e){ 26 | $output .= "Database Connection failed: " . $e->getMessage(); 27 | $output .= "Go Back to Step 2 and Fix Database Settings"; 28 | } 29 | 30 | if(isset($database_working)){ 31 | /** Database Settings are working. Now Import Database Data **/ 32 | 33 | // Reconnect to Database for Import 34 | $link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 35 | if (!$link) { 36 | $output .= "Error: Unable to connect to MySQL." . PHP_EOL; 37 | $output .= "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 38 | $output .= "Debugging error: " . mysqli_connect_error() . PHP_EOL; 39 | exit; 40 | } 41 | 42 | // Location of SQL file 43 | $sqlfile = APPDIR.'Update/db_updates_421_to_430.sql'; 44 | 45 | // Temporary variable, used to store current query 46 | $templine = ''; 47 | // Read in entire file 48 | $lines = file($sqlfile); 49 | // Loop through each line 50 | foreach ($lines as $line) 51 | { 52 | // Skip it if it's a comment 53 | if (substr($line, 0, 2) == '--' || $line == '') 54 | continue; 55 | 56 | // Add this line to the current segment 57 | $templine .= $line; 58 | 59 | // If it has a semicolon at the end, it's the end of the query 60 | if (substr(trim($line), -1, 1) == ';') 61 | { 62 | // Change the prefix if not default 63 | $set_prefix = PREFIX; 64 | $default_prefix = "uap4_"; 65 | if($set_prefix != $default_prefix){ 66 | $templine = str_replace($default_prefix, $set_prefix, $templine); 67 | } 68 | // Perform the query 69 | if(!mysqli_query($link,$templine)){ 70 | $output .= "
Error performing query
" . $templine . "

" . mysqli_connect_error() . " "; 71 | $errors[] = "true"; 72 | } 73 | // Reset temp variable to empty 74 | $templine = ''; 75 | 76 | } 77 | } 78 | } 79 | if(!isset($errors)){ 80 | $output .= "
Database Updated Successfully!"; 81 | $database_import = true; 82 | }else{ 83 | $database_error = true; 84 | } 85 | 86 | return $output; 87 | 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /app/Views/Adds/AddsBottom.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Assets, Libs\Language, Libs\Adds; 11 | 12 | // Get Add Data 13 | $getAdds = Adds::getAdds('adds_bottom'); 14 | 15 | if(!empty($getAdds)){ 16 | echo "
"; 17 | echo "
"; 18 | echo "
"; 19 | echo $getAdds; 20 | echo "
"; 21 | echo "
"; 22 | echo "
"; 23 | } 24 | -------------------------------------------------------------------------------- /app/Views/Adds/AddsSidebarBottom.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Assets, Libs\Language, Libs\Adds; 11 | 12 | // Get Add Data 13 | $getAdds = Adds::getAdds('adds_sidebar_bottom'); 14 | 15 | if(!empty($getAdds)){ 16 | echo "
"; 17 | echo "
"; 18 | echo $getAdds; 19 | echo "
"; 20 | echo "
"; 21 | } 22 | -------------------------------------------------------------------------------- /app/Views/Adds/AddsSidebarTop.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Assets, Libs\Language, Libs\Adds; 11 | 12 | // Get Add Data 13 | $getAdds = Adds::getAdds('adds_sidebar_top'); 14 | 15 | if(!empty($getAdds)){ 16 | echo "
"; 17 | echo "
"; 18 | echo $getAdds; 19 | echo "
"; 20 | echo "
"; 21 | } 22 | -------------------------------------------------------------------------------- /app/Views/Adds/AddsTop.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Assets, Libs\Language, Libs\Adds; 11 | 12 | // Get Add Data 13 | $getAdds = Adds::getAdds('adds_top'); 14 | 15 | if(!empty($getAdds)){ 16 | echo "
"; 17 | echo "
"; 18 | echo "
"; 19 | echo $getAdds; 20 | echo "
"; 21 | echo "
"; 22 | echo "
"; 23 | } 24 | -------------------------------------------------------------------------------- /app/Views/AdminPanel/AuthLogs.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, 11 | Libs\PageFunctions; 12 | 13 | ?> 14 |
15 |
16 |
17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | "; 32 | echo ""; 33 | echo ""; 34 | echo ""; 35 | echo ""; 36 | echo ""; 37 | echo ""; 38 | } 39 | } 40 | ?> 41 |
DateUsernameActionInfoIP
$row->date$row->username$row->action$row->additionalinfo$row->ip
42 | "1"){ 45 | echo ""; 48 | } 49 | ?> 50 |
51 |
52 | -------------------------------------------------------------------------------- /app/Views/AdminPanel/MassEmail.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Form, 11 | Libs\PageFunctions; 12 | ?> 13 |
14 |
15 |
16 | 17 | 18 |
19 |
20 |

21 |
Users Will Be Sent This Email
22 | 23 | 'post')); ?> 24 | 25 | 26 |
27 |
28 | 29 |
30 | 'text', 'name' => 'subject', 'class' => 'form-control', 'value' => urldecode($data['subject']), 'placeholder' => 'Subject', 'maxlength' => '100')); ?> 31 |
32 | 33 | 34 |
35 |
36 | 37 |
38 | 'text', 'name' => 'content', 'class' => 'form-control', 'value' => $data['content'], 'placeholder' => 'Message Content', 'rows' => '6')); ?> 39 |
40 | 41 | 42 | 43 | 46 | 47 | 48 |
49 |
50 |
51 | -------------------------------------------------------------------------------- /app/Views/AdminPanel/SystemRoutes.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, 11 | Libs\Form, 12 | Libs\PageFunctions; 13 | 14 | ?> 15 | 16 | 17 |
18 |
19 |
20 | System Routes 21 | 22 |
23 |
24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | "; 39 | echo ""; 40 | echo ""; 41 | echo ""; 42 | echo ""; 43 | echo ""; 44 | echo ""; 47 | echo ""; 48 | } 49 | } 50 | ?> 51 |
ControllerMethodURL NameArgumentsEnabled
$row->controller$row->method$row->url$row->arguments$row->enable"; 45 | echo ""; 46 | echo "
52 |
53 |
54 | -------------------------------------------------------------------------------- /app/Views/AdminPanel/TermsPrivacy.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | use Libs\Form, 10 | Libs\ErrorMessages, 11 | Libs\SuccessMessages, 12 | Libs\Language, 13 | Libs\PageFunctions; 14 | 15 | ?> 16 |
17 |
18 |
19 |
20 |
21 | 22 | 23 |
24 |
25 |

26 | 27 | 'post')); ?> 28 | 29 | 30 |
31 |
32 | Site Terms Content 33 |
34 | 'text', 'name' => 'site_terms_content', 'class' => 'form-control', 'value' => $data['site_terms_content'], 'placeholder' => 'Site Terms and Conditions Content', 'rows' => '8')); ?> 35 |
36 | 37 | 38 |
39 |
40 | Site Privacy Content 41 |
42 | 'text', 'name' => 'site_privacy_content', 'class' => 'form-control', 'value' => $data['site_privacy_content'], 'placeholder' => 'Site Privacy Content', 'rows' => '8')); ?> 43 |
44 | 45 |
46 |
47 |
48 | 49 |
50 | 53 | 54 | 55 | 56 |

57 |
58 |
59 |
60 | -------------------------------------------------------------------------------- /app/Views/AdminPanel/Upgrade.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | use Libs\Form, 10 | Libs\ErrorMessages, 11 | Libs\SuccessMessages, 12 | Libs\Language; 13 | 14 | ?> 15 |
16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 |

24 | $uap_database_version){ 26 | echo "
"; 27 | echo "
"; 28 | echo "UAP Database is out of Date.
"; 29 | echo "New Version:
$uap_files_version
"; 30 | echo "Current Version: $uap_database_version
"; 31 | echo "
"; 32 | echo "
"; 33 | ?> 34 | 'post')); ?> 35 | 36 | 39 | 40 | 41 | "; 44 | } 45 | ?> 46 | 47 | 48 | 53 | 54 |
55 |
56 |
57 |
58 |
59 | -------------------------------------------------------------------------------- /app/Views/Error/404.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Core\Error; 11 | 12 | ?> 13 |
14 |
15 |
16 | 17 |

404

18 | 19 | 20 | 21 |
22 |
23 | 24 | 25 | 26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /app/Views/Home/About.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 |
13 |
14 |
15 | 16 |
17 |
18 |

19 |

20 |

21 |
22 |
23 |
24 | -------------------------------------------------------------------------------- /app/Views/Home/Contact.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 |
13 |
14 |
15 | 16 |
17 |
18 |

19 |

20 |

21 |
22 |
23 |
24 | -------------------------------------------------------------------------------- /app/Views/Home/Content.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | ?> 11 |
12 |
13 |
14 | 15 |
16 |
17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /app/Views/Home/Error.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | ?> 10 |
11 |
12 |
13 | Error! 14 |
15 |
16 |

17 | Admin: If you just added a Controller and Method to the site, check 19 | the system routes to make sure it has been added. Also make sure the URL is configured as well.
20 | Admin Panel - System Routes "; 21 | } ?> 22 |
23 |
24 |
25 | -------------------------------------------------------------------------------- /app/Views/Home/Home.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 | 22 | 23 |
24 |
25 |
26 |

27 | -------------------------------------------------------------------------------- /app/Views/Members/Account-Settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 |
21 |
22 | 23 |
24 |
25 | 26 |
27 |
28 | 29 |
30 |
31 | 32 |
33 |
34 | 35 | 36 |
37 |
38 |
39 | -------------------------------------------------------------------------------- /app/Views/Members/Activate.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 |
14 |
15 |
16 |

17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /app/Views/Members/Change-Email.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, Libs\Form; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 | 'post')); ?> 21 | 22 | 23 |
24 |
25 |
26 | 27 |
28 | 'password', 'name' => 'passwordemail', 'class' => 'form-control', 'placeholder' => Language::show('current_password', 'Members'))); ?> 29 |
30 |
31 | 32 | 33 |
34 |
35 |
36 | 37 |
38 | 'email', 'type' => 'text', 'name' => 'email', 'class' => 'form-control', 'placeholder' => $data['email'])); ?> 39 |
40 | 41 |
42 |
43 |
44 | 45 | 46 | 47 | 48 | 49 | 50 | 53 | 54 |
55 |
56 |
57 | -------------------------------------------------------------------------------- /app/Views/Members/Change-Password.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, Libs\Form; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 | 'post')); ?> 21 | 22 |
23 |
24 |
25 |
26 | 27 |
28 | 'password', 'name' => 'currpassword', 'class' => 'form-control', 'placeholder' => Language::show('current_password', 'Members'))); ?> 29 |
30 |
31 |
32 | 33 | 34 |
35 |
36 |
37 |
38 | 39 |
40 | 'passwordInput', 'type' => 'password', 'name' => 'password', 'class' => 'form-control', 'placeholder' => Language::show('new_password', 'Members'))); ?> 41 | 42 |
43 |
44 |
45 | 46 | 47 |
48 |
49 |
50 |
51 | 52 |
53 | 'confirmPasswordInput', 'type' => 'password', 'name' => 'passwordc', 'class' => 'form-control', 'placeholder' => Language::show('confirm_new_password', 'Members'))); ?> 54 | 55 |
56 |
57 |
58 | 59 | 60 | 61 | 62 | 63 | 64 | 67 | 68 |
69 |
70 |
71 | -------------------------------------------------------------------------------- /app/Views/Members/Edit-Profile-Images.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, Libs\Form; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |
20 |
21 |
22 |
23 | 24 |
25 |
26 | 27 | 28 |
29 |
30 | 31 | 32 | 33 |
34 |
35 |
36 |
37 | 38 | 39 | 40 |
41 |
42 | 43 |
44 |
45 | User Pic 46 |
47 |
48 | 49 | 50 |
51 |
52 | username; ?>'s Images 53 |
54 |
55 |
56 | "; 60 | echo ""; 61 | echo "
"; 62 | } 63 | } 64 | ?> 65 |
66 |
67 | "1"){ 70 | echo ""; 73 | } 74 | ?> 75 |
76 | 77 | -------------------------------------------------------------------------------- /app/Views/Members/Forgot-Password.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 | 28 | 29 |
30 | 31 |
32 |
33 | 34 | 35 |
36 |
37 | 38 |
39 |
40 |
41 | -------------------------------------------------------------------------------- /app/Views/Members/LiveCheck.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 | -------------------------------------------------------------------------------- /app/Views/Members/Login.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 | 28 | 29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 | 37 | 38 | 39 |
40 | 41 |
42 |
43 |
44 | 45 | 46 |
47 | 48 | 49 | 50 | 51 |
52 | 53 |
54 | 55 |
56 | 61 |
62 |
63 | -------------------------------------------------------------------------------- /app/Views/Members/Member-Account-Sidebar.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 |
14 |
15 | 16 |
17 |
    18 |
  • 19 |
  • 20 |
  • 21 |
  • 22 |
  • 23 |
24 |
25 | -------------------------------------------------------------------------------- /app/Views/Members/Member-Stats-Sidebar.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language; 11 | ?> 12 | 13 | 21 | 22 | 23 | 24 | 25 |
26 |
27 | 28 |
29 |
    30 |
  • :
  • 31 |
  • :
  • 32 |
33 |
34 | 35 | 39 |
40 |
41 |
42 | 43 |
44 |
45 |
46 | 47 |
48 | 49 |
50 |
51 |
52 | 53 | -------------------------------------------------------------------------------- /app/Views/Members/Members.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, 11 | Libs\CurrentUserData; 12 | ?> 13 | 14 |
15 |
16 |
17 |

18 |
19 | 20 | 21 | 22 | 23 | 47 | 48 | 69 | 70 | 71 | 72 | userID); 75 | echo " 76 | 77 | 78 | 79 | 80 | "; 81 | } 82 | ?> 83 | 84 |
24 | "; 31 | }else if($data['orderby'] == "UN-ASC"){ 32 | $obu_value = "UN-DESC"; 33 | $obu_icon = ""; 34 | }else{ 35 | $obu_value = "UN-ASC"; 36 | $obu_icon = ""; 37 | } 38 | if(isset($search)){ 39 | $search_url = "/$search"; 40 | }else{ 41 | $search_url = ""; 42 | } 43 | // Setup the order by id button 44 | echo "".Language::show('members_username', 'Members')." $obu_icon"; 45 | ?> 46 | 49 | "; 57 | } 58 | else if($data['orderby'] == "UG-ASC"){ 59 | $obg_value = "UG-DESC"; 60 | $obg_icon = ""; 61 | }else{ 62 | $obg_value = "UG-ASC"; 63 | $obg_icon = ""; 64 | } 65 | // Setup the order by id button 66 | echo "".Language::show('members_usergroup', 'Members')." $obg_icon"; 67 | ?> 68 |
$user_online {$member->username}{$member->firstName}{$member->groupName}
85 | "1"){ 88 | echo ""; 91 | } 92 | ?> 93 |
94 |
95 | -------------------------------------------------------------------------------- /app/Views/Members/Privacy-Settings.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, Libs\Form; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 |
21 |
22 | 23 |
24 | 'post')); ?> 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
>
>
36 |
37 |
38 |
39 | 40 |
41 |
42 |

43 |
44 |
45 |
46 |
47 | 52 |
53 |
54 |
55 |
56 |
57 |
58 | 59 | 60 | 61 |
62 |
63 |
64 | -------------------------------------------------------------------------------- /app/Views/Members/Resend-Activation.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, Libs\Form; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 | 28 | 29 |
30 | 31 |
32 |
33 | 34 | 35 |
36 |
37 | 38 |
39 |
40 |
41 | -------------------------------------------------------------------------------- /app/Views/Members/Reset-Password.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | use Libs\Language, Libs\Form; 11 | ?> 12 | 13 |
14 |
15 |
16 | 17 |
18 |
19 |

20 |
21 |
22 |
23 |
24 |
25 |
26 | 27 | 28 | 29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 | 37 | 38 | 39 |
40 | 41 |
42 |
43 | 44 | 45 | 46 |
47 | 48 |
49 |
50 |
51 |
52 |
53 | -------------------------------------------------------------------------------- /assets/images/forum-pics/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/assets/images/forum-pics/index.html -------------------------------------------------------------------------------- /assets/images/forum-pics/replies/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/images/forum-pics/topics/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/images/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/images/profile-pics/default-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/assets/images/profile-pics/default-1.jpg -------------------------------------------------------------------------------- /assets/images/profile-pics/default-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/assets/images/profile-pics/default-2.jpg -------------------------------------------------------------------------------- /assets/images/profile-pics/default-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/assets/images/profile-pics/default-3.jpg -------------------------------------------------------------------------------- /assets/images/profile-pics/default-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/assets/images/profile-pics/default-4.jpg -------------------------------------------------------------------------------- /assets/images/profile-pics/default-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/assets/images/profile-pics/default-5.jpg -------------------------------------------------------------------------------- /assets/images/profile-pics/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/themes/cerulean/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // Cerulean 4.2.1 2 | // Bootswatch 3 | 4 | 5 | @mixin btn-shadow($color){ 6 | @include gradient-y-three-colors(lighten($color, 8%), $color, 60%, darken($color, 4%)); 7 | } 8 | 9 | $text-shadow: 0 1px 0 rgba(0, 0, 0, 0.05) !default; 10 | 11 | // Navbar ====================================================================== 12 | 13 | .bg-primary { 14 | @include btn-shadow($primary); 15 | } 16 | 17 | .bg-dark { 18 | @include btn-shadow($blue); 19 | } 20 | 21 | .bg-light { 22 | @include gradient-y-three-colors(lighten($gray-200, 8%), $gray-200, 60%, darken($gray-200, 2%)); 23 | } 24 | 25 | .navbar-brand, 26 | .nav-link { 27 | text-shadow: $text-shadow 28 | } 29 | 30 | // Buttons ===================================================================== 31 | 32 | .btn { 33 | text-shadow: $text-shadow 34 | } 35 | 36 | .btn-primary { 37 | @include btn-shadow($primary); 38 | } 39 | 40 | .btn-secondary { 41 | @include btn-shadow($secondary); 42 | color: $gray-700; 43 | } 44 | 45 | .btn-success { 46 | @include btn-shadow($success); 47 | } 48 | 49 | .btn-info { 50 | @include btn-shadow($info); 51 | } 52 | 53 | .btn-warning { 54 | @include btn-shadow($warning); 55 | } 56 | 57 | .btn-danger { 58 | @include btn-shadow($danger); 59 | } 60 | 61 | .btn-light { 62 | @include btn-shadow($light); 63 | } 64 | 65 | .btn-dark { 66 | @include btn-shadow($dark); 67 | } 68 | 69 | 70 | // Typography ================================================================== 71 | 72 | .text-secondary { 73 | color: $gray-500 !important; 74 | } 75 | 76 | .bg-primary, 77 | .bg-success, 78 | .bg-info, 79 | .bg-warning, 80 | .bg-danger, 81 | .bg-dark { 82 | h1, h2, h3, h4, h5, h6 { 83 | color: $white; 84 | } 85 | } 86 | 87 | // Tables ====================================================================== 88 | 89 | // Forms ======================================================================= 90 | 91 | // Navs ======================================================================== 92 | 93 | .dropdown-menu { 94 | .dropdown-header { 95 | color: $gray-600; 96 | } 97 | } 98 | 99 | // Indicators ================================================================== 100 | 101 | // Progress bars =============================================================== 102 | 103 | // Containers ================================================================== 104 | -------------------------------------------------------------------------------- /assets/themes/cerulean/_variables.scss: -------------------------------------------------------------------------------- 1 | // Cerulean 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #e9ecef !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #868e96 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #343a40 !default; 17 | $gray-900: #212529 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #033C73 !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #C71C22 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #DD5600 !default; 27 | $green: #73A839 !default; 28 | $teal: #20c997 !default; 29 | $cyan: #2FA4E7 !default; 30 | 31 | $primary: $cyan !default; 32 | $secondary: $gray-200 !default; 33 | $success: $green !default; 34 | $info: $blue !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-100 !default; 38 | $dark: $gray-800 !default; 39 | 40 | // Body 41 | 42 | $body-color: $gray-700 !default; 43 | 44 | // Fonts 45 | 46 | $headings-color: $cyan !default; 47 | 48 | // Dropdowns 49 | 50 | $dropdown-link-color: $body-color !default; 51 | $dropdown-link-hover-color: $white !default; 52 | $dropdown-link-hover-bg: $primary !default; 53 | 54 | // Navbar 55 | 56 | $navbar-dark-color: rgba($white,.8) !default; 57 | $navbar-dark-hover-color: $white !default; 58 | -------------------------------------------------------------------------------- /assets/themes/cerulean/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/cosmo/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // Cosmo 4.2.1 2 | // Bootswatch 3 | 4 | 5 | // Variables =================================================================== 6 | 7 | $web-font-path: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700" !default; 8 | @import url($web-font-path); 9 | 10 | // Navbar ====================================================================== 11 | 12 | // Buttons ===================================================================== 13 | 14 | // Typography ================================================================== 15 | 16 | body { 17 | -webkit-font-smoothing: antialiased; 18 | } 19 | 20 | // Tables ====================================================================== 21 | 22 | // Forms ======================================================================= 23 | 24 | // Navs ======================================================================== 25 | 26 | // Indicators ================================================================== 27 | 28 | // Progress bars =============================================================== 29 | 30 | .progress { 31 | @include box-shadow(none); 32 | .progress-bar { 33 | font-size: 8px; 34 | line-height: 8px; 35 | } 36 | } 37 | 38 | // Containers ================================================================== 39 | -------------------------------------------------------------------------------- /assets/themes/cosmo/_variables.scss: -------------------------------------------------------------------------------- 1 | // Cosmo 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #e9ecef !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #868e96 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #373a3c !default; 17 | $gray-900: #212529 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #2780E3 !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #613d7c !default; 23 | $pink: #e83e8c !default; 24 | $red: #FF0039 !default; 25 | $orange: #f0ad4e !default; 26 | $yellow: #FF7518 !default; 27 | $green: #3FB618 !default; 28 | $teal: #20c997 !default; 29 | $cyan: #9954BB !default; 30 | 31 | $primary: $blue !default; 32 | $secondary: $gray-800 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-100 !default; 38 | $dark: $gray-800 !default; 39 | 40 | // Options 41 | 42 | $enable-rounded: false !default; 43 | 44 | // Body 45 | 46 | $body-color: $gray-800 !default; 47 | 48 | // Fonts 49 | 50 | $font-family-sans-serif: "Segoe UI", "Source Sans Pro", Calibri, Candara, Arial, sans-serif !default; 51 | 52 | $font-size-base: 0.9375rem !default; 53 | 54 | $headings-font-weight: 300 !default; 55 | 56 | // Navbar 57 | 58 | $navbar-dark-hover-color: rgba($white,1) !default; 59 | 60 | $navbar-light-hover-color: rgba($black,.9) !default; 61 | 62 | // Alerts 63 | 64 | $alert-border-width: 0 !default; 65 | 66 | // Progress bars 67 | 68 | $progress-height: 0.5rem !default; 69 | -------------------------------------------------------------------------------- /assets/themes/cosmo/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/cyborg/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #7c7b7b; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #7c7b7b; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #272727; 11 | border: 1px solid #7c7b7b; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #272727; 15 | border: 1px solid #7c7b7b; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/darkly/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #7c7b7b; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #7c7b7b; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #272727; 11 | border: 1px solid #7c7b7b; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #272727; 15 | border: 1px solid #7c7b7b; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/default/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/flatly/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/themes/journal/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // Journal 4.2.1 2 | // Bootswatch 3 | 4 | 5 | // Variables =================================================================== 6 | 7 | $web-font-path: "https://fonts.googleapis.com/css?family=News+Cycle:400,700" !default; 8 | @import url($web-font-path); 9 | 10 | // Navbar ====================================================================== 11 | 12 | .bg-dark { 13 | background-color: #000 !important; 14 | } 15 | 16 | .bg-light { 17 | background-color: $white !important; 18 | color: $black; 19 | border: 1px solid $gray-200; 20 | 21 | &.navbar-fixed-top { 22 | border-width: 0 0 1px 0; 23 | } 24 | 25 | &.navbar-fixed-bottom { 26 | border-width: 1px 0 0 0; 27 | } 28 | } 29 | 30 | .navbar { 31 | font-size: 18px; 32 | font-family: $headings-font-family; 33 | font-weight: $headings-font-weight; 34 | } 35 | 36 | .navbar-brand { 37 | padding-top: 0.5rem; 38 | font-size: inherit; 39 | font-weight: $headings-font-weight; 40 | text-transform: uppercase; 41 | } 42 | 43 | // Buttons ===================================================================== 44 | 45 | .btn { 46 | font-family: $headings-font-family; 47 | font-weight: $headings-font-weight; 48 | 49 | &-secondary, 50 | &-warning { 51 | color: $white; 52 | } 53 | } 54 | 55 | // Typography ================================================================== 56 | 57 | // Tables ====================================================================== 58 | 59 | // Forms ======================================================================= 60 | 61 | // Navs ======================================================================== 62 | 63 | .pagination { 64 | a:hover { 65 | text-decoration: none; 66 | } 67 | } 68 | 69 | // Indicators ================================================================== 70 | 71 | // Progress bars =============================================================== 72 | 73 | // Containers ================================================================== 74 | -------------------------------------------------------------------------------- /assets/themes/journal/_variables.scss: -------------------------------------------------------------------------------- 1 | // Journal 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #eee !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #aaa !default; 14 | $gray-600: #777 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #333 !default; 17 | $gray-900: #222 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #EB6864 !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #F57A00 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #F5E625 !default; 27 | $green: #22B24C !default; 28 | $teal: #20c997 !default; 29 | $cyan: #369 !default; 30 | 31 | $primary: $blue !default; 32 | $secondary: $gray-500 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-100 !default; 38 | $dark: $gray-900 !default; 39 | 40 | // Fonts 41 | 42 | $headings-font-family: "News Cycle", "Arial Narrow Bold", sans-serif !default; 43 | $headings-font-weight: 700 !default; 44 | $headings-line-height: 1.1 !default; 45 | 46 | // Buttons 47 | 48 | $input-btn-padding-x: 1rem !default; 49 | 50 | // Navbar 51 | 52 | $navbar-light-color: rgba($black,.7) !default; 53 | $navbar-light-hover-color: $black !default; 54 | $navbar-light-active-color: $black !default; 55 | 56 | // Pagination 57 | 58 | $pagination-hover-color: $white !default; 59 | $pagination-hover-bg: $primary !default; 60 | $pagination-hover-border-color: $primary !default; 61 | -------------------------------------------------------------------------------- /assets/themes/journal/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/litera/_variables.scss: -------------------------------------------------------------------------------- 1 | // Litera 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #e9ecef !default; 11 | $gray-300: #ddd !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #868e96 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #343a40 !default; 17 | $gray-900: #212529 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #4582EC !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #d9534f !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #f0ad4e !default; 27 | $green: #02B875 !default; 28 | $teal: #20c997 !default; 29 | $cyan: #17a2b8 !default; 30 | 31 | $primary: $blue !default; 32 | $secondary: $gray-500 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-100 !default; 38 | $dark: $gray-800 !default; 39 | 40 | // Body 41 | 42 | $body-color: $gray-800 !default; 43 | 44 | // Fonts 45 | 46 | $font-size-base: 1.063rem !default; 47 | 48 | $headings-font-weight: 700 !default; 49 | 50 | // Tables 51 | 52 | $table-border-color: rgba(0,0,0,0.1) !default; 53 | 54 | // Buttons 55 | 56 | $input-btn-padding-y: 0.5rem !default; 57 | $input-btn-padding-x: 1.1rem !default; 58 | 59 | // Forms 60 | 61 | $input-border-color: rgba(0,0,0,.1) !default; 62 | 63 | $input-group-addon-bg: $gray-200 !default !default; 64 | 65 | // Navbar 66 | 67 | $navbar-dark-color: rgba($white,.6) !default; 68 | $navbar-dark-hover-color: $white !default; 69 | 70 | $navbar-light-hover-color: $body-color !default; 71 | $navbar-light-active-color: $body-color !default; 72 | 73 | // Badges 74 | 75 | $badge-font-weight: normal !default; 76 | $badge-padding-y: 0.6em !default; 77 | $badge-padding-x: 1.2em !default; 78 | -------------------------------------------------------------------------------- /assets/themes/litera/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/lumen/_variables.scss: -------------------------------------------------------------------------------- 1 | // Lumen 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f6f6f6 !default; 10 | $gray-200: #f0f0f0 !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #999 !default; 15 | $gray-700: #555 !default; 16 | $gray-800: #333 !default; 17 | $gray-900: #222 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #158CBA !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #FF4136 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #FF851B !default; 27 | $green: #28B62C !default; 28 | $teal: #20c997 !default; 29 | $cyan: #75CAEB !default; 30 | 31 | $primary: $blue !default; 32 | $secondary: $gray-200 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-100 !default; 38 | $dark: $gray-700 !default; 39 | 40 | $yiq-contrasted-threshold: 200 !default; 41 | 42 | // Fonts 43 | 44 | $font-family-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; 45 | 46 | $font-size-base: 0.875rem !default; 47 | 48 | // Dropdowns 49 | 50 | $dropdown-link-color: rgba(0,0,0,.5) !default; 51 | 52 | // Navs 53 | 54 | $nav-tabs-border-color: $gray-200 !default; 55 | $nav-tabs-link-hover-border-color: $nav-tabs-border-color !default; 56 | $nav-tabs-link-active-color: $gray-900 !default; 57 | $nav-tabs-link-active-border-color: $nav-tabs-border-color !default; 58 | 59 | // Pagination 60 | 61 | $pagination-color: $gray-700 !default; 62 | $pagination-bg: $gray-200 !default; 63 | 64 | $pagination-hover-color: $pagination-color !default; 65 | $pagination-hover-bg: $pagination-bg !default; 66 | 67 | $pagination-active-border-color: darken($primary, 5%) !default; 68 | 69 | $pagination-disabled-color: $gray-600 !default; 70 | $pagination-disabled-bg: $pagination-bg !default; 71 | 72 | // Jumbotron 73 | 74 | $jumbotron-bg: #fafafa !default; 75 | 76 | // Modals 77 | 78 | $modal-content-border-color: rgba($black,.1) !default; 79 | 80 | // Close 81 | 82 | $close-color: $white !default; 83 | -------------------------------------------------------------------------------- /assets/themes/lumen/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/lux/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/materia/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/minty/_variables.scss: -------------------------------------------------------------------------------- 1 | // Minty 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #f7f7f9 !default; 11 | $gray-300: #eceeef !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #aaa !default; 14 | $gray-600: #888 !default; 15 | $gray-700: #5a5a5a !default; 16 | $gray-800: #343a40 !default; 17 | $gray-900: #212529 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #007bff !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #FF7851 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #FFCE67 !default; 27 | $green: #56CC9D !default; 28 | $teal: #20c997 !default; 29 | $cyan: #6CC3D5 !default; 30 | 31 | $primary: #78C2AD !default; 32 | $secondary: #F3969A !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-100 !default; 38 | $dark: $gray-800 !default; 39 | 40 | $yiq-contrasted-threshold: 250 !default; 41 | 42 | // Body 43 | 44 | $body-color: $gray-600 !default; 45 | 46 | // Components 47 | 48 | $border-radius: .4rem !default; 49 | $border-radius-lg: .6rem !default; 50 | $border-radius-sm: .3rem !default; 51 | 52 | // Fonts 53 | 54 | $headings-font-family: "Montserrat", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default; 55 | $headings-color: $gray-700 !default; 56 | 57 | // Tables 58 | 59 | $table-border-color: rgba(0,0,0,0.05) !default; 60 | 61 | // Dropdowns 62 | 63 | $dropdown-link-hover-color: $white !default; 64 | $dropdown-link-hover-bg: $secondary !default; 65 | 66 | // Navbar 67 | 68 | $navbar-dark-color: rgba($white,.6) !default; 69 | $navbar-dark-hover-color: $white !default; 70 | 71 | $navbar-light-color: rgba($black,.3) !default; 72 | $navbar-light-hover-color: $gray-700 !default; 73 | $navbar-light-active-color: $gray-700 !default; 74 | $navbar-light-disabled-color: rgba($black,.1) !default; 75 | 76 | // Pagination 77 | 78 | $pagination-color: $white !default; 79 | $pagination-bg: $primary !default; 80 | $pagination-border-color: $primary !default; 81 | 82 | $pagination-hover-color: $white !default; 83 | $pagination-hover-bg: $secondary !default; 84 | $pagination-hover-border-color: $pagination-hover-bg !default; 85 | 86 | $pagination-active-bg: $secondary !default; 87 | $pagination-active-border-color: $pagination-active-bg !default; 88 | 89 | $pagination-disabled-color: $white !default; 90 | $pagination-disabled-bg: #CCE8E0 !default; 91 | $pagination-disabled-border-color: $pagination-disabled-bg !default; 92 | 93 | // Breadcrumbs 94 | 95 | $breadcrumb-bg: $primary !default; 96 | $breadcrumb-divider-color: $white !default; 97 | $breadcrumb-active-color: $breadcrumb-divider-color !default; 98 | -------------------------------------------------------------------------------- /assets/themes/minty/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/pulse/_variables.scss: -------------------------------------------------------------------------------- 1 | // Pulse 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #fafafa !default; 10 | $gray-200: #F9F8FC !default; 11 | $gray-300: #EDEDED !default; 12 | $gray-400: #cbc8d0 !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #868e96 !default; 15 | $gray-700: #444 !default; 16 | $gray-800: #343a40 !default; 17 | $gray-900: #17141F !default; 18 | $black: #000 !default; 19 | 20 | $blue: #007bff !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #593196 !default; 23 | $pink: #e83e8c !default; 24 | $red: #FC3939 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #EFA31D !default; 27 | $green: #13B955 !default; 28 | $teal: #20c997 !default; 29 | $cyan: #009CDC !default; 30 | 31 | $primary: $purple !default; 32 | $secondary: #A991D4 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-200 !default; 38 | $dark: $gray-900 !default; 39 | 40 | // Options 41 | 42 | $enable-rounded: false !default; 43 | 44 | // Body 45 | 46 | $body-color: $gray-700 !default; 47 | 48 | // Links 49 | 50 | $link-hover-color: $primary !default; 51 | 52 | // Fonts 53 | 54 | $font-size-base: 0.875rem !default; 55 | 56 | // Tables 57 | 58 | $table-border-color: rgba(0, 0, 0, 0.05) !default; 59 | 60 | // Forms 61 | 62 | $input-focus-border-color: $primary !default; 63 | 64 | // Dropdowns 65 | 66 | $dropdown-link-color: $gray-700 !default; 67 | $dropdown-link-hover-color: $white !default; 68 | $dropdown-link-hover-bg: $primary !default; 69 | 70 | // Navs 71 | 72 | $nav-tabs-border-color: $gray-300 !default; 73 | $nav-tabs-link-hover-border-color: $primary !default; 74 | 75 | // Navbar 76 | 77 | $navbar-padding-y: 1.2rem !default; 78 | 79 | $navbar-dark-hover-color: rgba($white,.9) !default; 80 | $navbar-dark-active-color: rgba($white,.9) !default; 81 | 82 | $navbar-light-color: rgba($black,.4) !default; 83 | $navbar-light-active-color: rgba($black,.7) !default; 84 | $navbar-light-disabled-color: rgba($black,.2) !default; 85 | 86 | // Progress bars 87 | 88 | $progress-bg: $gray-300 !default; 89 | $progress-bar-bg: $primary !default; 90 | 91 | // List group 92 | 93 | $list-group-bg: $gray-900 !default; 94 | $list-group-border-color: transparent !default; 95 | 96 | $list-group-hover-bg: lighten($list-group-bg, 10%) !default; 97 | $list-group-active-color: $white !default; 98 | $list-group-active-bg: $list-group-bg !default; 99 | 100 | $list-group-disabled-color: lighten($list-group-bg, 30%) !default; 101 | -------------------------------------------------------------------------------- /assets/themes/pulse/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/sandstone/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/simplex/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // Simplex 4.2.1 2 | // Bootswatch 3 | 4 | 5 | // Variables =================================================================== 6 | 7 | $web-font-path: "https://fonts.googleapis.com/css?family=Open+Sans:400,700" !default; 8 | @import url($web-font-path); 9 | 10 | @mixin btn-shadow($color){ 11 | @include gradient-y-three-colors(lighten($color, 3%), $color, 6%, darken($color, 3%)); 12 | filter: none; 13 | border: 1px solid darken($color, 6.5%); 14 | } 15 | 16 | // Navbar ====================================================================== 17 | 18 | .navbar { 19 | border-width: 1px; 20 | border-style: solid; 21 | 22 | &-fixed-top { 23 | border-width: 0 0 1px 0; 24 | } 25 | 26 | &-fixed-bottom { 27 | border-top-width: 1px 0 0 0; 28 | border-style: solid; 29 | } 30 | } 31 | 32 | .bg-primary { 33 | background-color: $primary !important; 34 | border-color: darken($primary, 6.5%) !important; 35 | } 36 | 37 | .bg-dark { 38 | border-color: darken($dark, 6.5%) !important; 39 | } 40 | 41 | .bg-light { 42 | border-color: darken(#fff, 6.5%); 43 | } 44 | 45 | // Buttons ===================================================================== 46 | 47 | .btn-primary, 48 | .btn-primary:hover { 49 | @include btn-shadow($primary); 50 | } 51 | 52 | .btn-secondary, 53 | .btn-secondary:hover { 54 | @include btn-shadow($secondary); 55 | } 56 | 57 | .btn-secondary:focus, 58 | .btn-secondary:not([disabled]):not(.disabled):active, 59 | .btn-secondary:not([disabled]):not(.disabled).active { 60 | box-shadow: 0 0 0 0.2rem rgba($gray-200, 0.5); 61 | } 62 | 63 | .btn-success, 64 | .btn-success:hover { 65 | @include btn-shadow($success); 66 | } 67 | 68 | .btn-info, 69 | .btn-info:hover { 70 | @include btn-shadow($info); 71 | } 72 | 73 | .btn-warning, 74 | .btn-warning:hover { 75 | @include btn-shadow($warning); 76 | } 77 | 78 | .btn-danger, 79 | .btn-danger:hover { 80 | @include btn-shadow($danger); 81 | } 82 | 83 | .btn-dark, 84 | .btn-dark:hover { 85 | @include btn-shadow($dark); 86 | } 87 | 88 | .btn-light, 89 | .btn-light:hover { 90 | @include btn-shadow($light); 91 | } 92 | 93 | .btn-outline-secondary { 94 | border-color: $gray-400; 95 | color: $gray-400; 96 | 97 | &:hover { 98 | background-color: $gray-400; 99 | color: $white; 100 | } 101 | } 102 | 103 | // Typography ================================================================== 104 | 105 | .text-secondary { 106 | color: $gray-700 !important; 107 | } 108 | 109 | // Tables ====================================================================== 110 | 111 | // Forms ======================================================================= 112 | 113 | legend, 114 | label { 115 | color: $headings-color; 116 | } 117 | 118 | // Navs ======================================================================= 119 | 120 | .breadcrumb { 121 | border: 1px solid darken(#fff, 6.5%); 122 | } 123 | 124 | .pagination { 125 | .page-link:hover { 126 | text-decoration: none; 127 | } 128 | } 129 | 130 | // Indicators ================================================================== 131 | 132 | // Progress bars =============================================================== 133 | 134 | // Containers ================================================================== 135 | -------------------------------------------------------------------------------- /assets/themes/simplex/_variables.scss: -------------------------------------------------------------------------------- 1 | // Simplex 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #ddd !default; 11 | $gray-300: #ccc !default; 12 | $gray-400: #bbb !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #777 !default; 15 | $gray-700: #444 !default; 16 | $gray-800: #373a3c !default; 17 | $gray-900: #212529 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #007bff !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #9B479F !default; 23 | $pink: #e83e8c !default; 24 | $red: #D9230F !default; 25 | $orange: #D9831F !default; 26 | $yellow: #ffc107 !default; 27 | $green: #469408 !default; 28 | $teal: #20c997 !default; 29 | $cyan: #029ACF !default; 30 | 31 | $primary: $red !default; 32 | $secondary: $white !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $purple !default; 36 | $danger: $orange !default; 37 | $light: $white !default; 38 | $dark: $gray-800 !default; 39 | 40 | // Body 41 | 42 | $body-bg: #FCFCFC !default; 43 | 44 | // Fonts 45 | 46 | $font-family-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; 47 | 48 | $font-size-base: 0.8125rem !default; 49 | 50 | // Dropdowns 51 | 52 | $dropdown-link-hover-color: $white !default; 53 | $dropdown-link-hover-bg: $primary !default; 54 | 55 | // Navs 56 | 57 | $nav-link-padding-y: .9rem !default; 58 | $nav-link-disabled-color: $gray-400 !default; 59 | 60 | $nav-tabs-border-color: darken(#fff, 6.5%) !default; 61 | 62 | // Navbar 63 | 64 | $navbar-dark-color: rgba($white,.75) !default; 65 | $navbar-dark-hover-color: $white !default; 66 | 67 | // Pagination 68 | 69 | $pagination-border-color: $nav-tabs-border-color !default; 70 | 71 | $pagination-hover-color: $white !default; 72 | $pagination-hover-bg: $primary !default; 73 | $pagination-hover-border-color: $primary !default; 74 | 75 | $pagination-disabled-color: $gray-400 !default; 76 | $pagination-disabled-border-color: $pagination-border-color !default; 77 | 78 | // Jumbotron 79 | 80 | $jumbotron-bg: $nav-tabs-border-color !default; 81 | 82 | // Cards 83 | 84 | $card-border-color: $nav-tabs-border-color !default; 85 | 86 | // Popovers 87 | 88 | $popover-border-color: $nav-tabs-border-color !default; 89 | 90 | // Modals 91 | 92 | $modal-content-border-color: $nav-tabs-border-color !default; 93 | 94 | $modal-header-border-color: $nav-tabs-border-color !default; 95 | 96 | // Progress bars 97 | 98 | $progress-bar-color: $primary !default; 99 | 100 | // List group 101 | 102 | $list-group-border-color: $nav-tabs-border-color !default; 103 | 104 | $list-group-disabled-bg: $nav-tabs-border-color !default; 105 | 106 | // Breadcrumbs 107 | 108 | $breadcrumb-bg: $white !default; 109 | -------------------------------------------------------------------------------- /assets/themes/simplex/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/sketchy/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/slate/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #7c7b7b; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #7c7b7b; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #272727; 11 | border: 1px solid #7c7b7b; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #272727; 15 | border: 1px solid #7c7b7b; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/solar/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #7c7b7b; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #7c7b7b; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #272727; 11 | border: 1px solid #7c7b7b; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #272727; 15 | border: 1px solid #7c7b7b; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/spacelab/_variables.scss: -------------------------------------------------------------------------------- 1 | // Spacelab 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #eee !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #999 !default; 14 | $gray-600: #777 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #333 !default; 17 | $gray-900: #2d2d2d !default; 18 | $black: #000 !default; 19 | 20 | $blue: #446E9B !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #CD0200 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #D47500 !default; 27 | $green: #3CB521 !default; 28 | $teal: #20c997 !default; 29 | $cyan: #3399F3 !default; 30 | 31 | $primary: $blue !default; 32 | $secondary: $gray-500 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-200 !default; 38 | $dark: $gray-800 !default; 39 | 40 | $yiq-contrasted-threshold: 200 !default; 41 | 42 | // Body 43 | 44 | $body-color: $gray-600 !default; 45 | 46 | // Links 47 | 48 | $link-color: $info !default; 49 | 50 | // Fonts 51 | 52 | $font-family-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; 53 | 54 | $headings-color: $gray-900 !default; 55 | 56 | // Navbar 57 | 58 | $navbar-dark-color: rgba($white,.75) !default; 59 | $navbar-dark-hover-color: $white !default; 60 | 61 | $navbar-light-color: rgba($black,.4) !default; 62 | $navbar-light-hover-color: $info !default; 63 | $navbar-light-active-color: $info !default; 64 | -------------------------------------------------------------------------------- /assets/themes/spacelab/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/superhero/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #7c7b7b; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #7c7b7b; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #272727; 11 | border: 1px solid #7c7b7b; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #272727; 15 | border: 1px solid #7c7b7b; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/united/_bootswatch.scss: -------------------------------------------------------------------------------- 1 | // United 4.2.1 2 | // Bootswatch 3 | 4 | 5 | // Variables =================================================================== 6 | 7 | $web-font-path: "https://fonts.googleapis.com/css?family=Ubuntu:400,700" !default; 8 | @import url($web-font-path); 9 | 10 | // Navbar ====================================================================== 11 | 12 | // Buttons ===================================================================== 13 | 14 | // Typography ================================================================== 15 | 16 | // Tables ====================================================================== 17 | 18 | // Forms ======================================================================= 19 | 20 | // Navs ======================================================================== 21 | 22 | // Indicators ================================================================== 23 | 24 | // Progress bars =============================================================== 25 | 26 | // Containers ================================================================== 27 | -------------------------------------------------------------------------------- /assets/themes/united/_variables.scss: -------------------------------------------------------------------------------- 1 | // United 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #e9ecef !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ced4da !default; 13 | $gray-500: #AEA79F !default; 14 | $gray-600: #868e96 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #333 !default; 17 | $gray-900: #212529 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #007bff !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #772953 !default; 23 | $pink: #e83e8c !default; 24 | $red: #DF382C !default; 25 | $orange: #E95420 !default; 26 | $yellow: #EFB73E !default; 27 | $green: #38B44A !default; 28 | $teal: #20c997 !default; 29 | $cyan: #17a2b8 !default; 30 | 31 | $primary: $orange !default; 32 | $secondary: $gray-500 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-200 !default; 38 | $dark: $purple !default; 39 | 40 | $yiq-contrasted-threshold: 200 !default; 41 | 42 | // Body 43 | 44 | $body-color: $gray-800 !default; 45 | 46 | // Fonts 47 | 48 | $font-family-sans-serif: "Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; 49 | 50 | // Tables 51 | 52 | $table-dark-bg: $dark !default; 53 | $table-dark-border-color: darken($dark, 5%) !default; 54 | -------------------------------------------------------------------------------- /assets/themes/united/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /assets/themes/yeti/_variables.scss: -------------------------------------------------------------------------------- 1 | // Yeti 4.2.1 2 | // Bootswatch 3 | 4 | // 5 | // Color system 6 | // 7 | 8 | $white: #fff !default; 9 | $gray-100: #f8f9fa !default; 10 | $gray-200: #eee !default; 11 | $gray-300: #dee2e6 !default; 12 | $gray-400: #ccc !default; 13 | $gray-500: #adb5bd !default; 14 | $gray-600: #888 !default; 15 | $gray-700: #495057 !default; 16 | $gray-800: #333 !default; 17 | $gray-900: #222 !default; 18 | $black: #000 !default; 19 | 20 | $blue: #008cba !default; 21 | $indigo: #6610f2 !default; 22 | $purple: #6f42c1 !default; 23 | $pink: #e83e8c !default; 24 | $red: #F04124 !default; 25 | $orange: #fd7e14 !default; 26 | $yellow: #E99002 !default; 27 | $green: #43ac6a !default; 28 | $teal: #20c997 !default; 29 | $cyan: #5bc0de !default; 30 | 31 | $primary: $blue !default; 32 | $secondary: $gray-200 !default; 33 | $success: $green !default; 34 | $info: $cyan !default; 35 | $warning: $yellow !default; 36 | $danger: $red !default; 37 | $light: $gray-200 !default; 38 | $dark: $gray-900 !default; 39 | 40 | $yiq-contrasted-threshold: 200 !default; 41 | 42 | // Components 43 | 44 | $border-radius: 0 !default; 45 | $border-radius-lg: 0 !default; 46 | $border-radius-sm: 0 !default; 47 | 48 | // Fonts 49 | 50 | $font-family-sans-serif: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default; 51 | 52 | $font-size-base: 0.9375rem !default; 53 | 54 | $headings-font-weight: 300 !default; 55 | 56 | // Buttons 57 | 58 | $input-btn-padding-x: 0.5rem !default; 59 | 60 | $btn-font-weight: 300 !default; 61 | 62 | // Dropdowns 63 | 64 | $dropdown-border-color: rgba($black,.1) !default; 65 | $dropdown-divider-bg: rgba($black,.1) !default; 66 | 67 | // Navs 68 | 69 | $nav-link-disabled-color: $gray-400 !default; 70 | 71 | $nav-tabs-border-color: $dropdown-border-color !default; 72 | $nav-tabs-link-hover-border-color: $nav-tabs-border-color !default; 73 | $nav-tabs-link-active-border-color: $nav-tabs-border-color !default; 74 | 75 | // Navbar 76 | 77 | $navbar-dark-color: rgba($white,.7) !default; 78 | $navbar-dark-hover-color: $white !default; 79 | 80 | // Pagination 81 | 82 | $pagination-color: $gray-600 !default; 83 | $pagination-border-color: $nav-tabs-border-color !default; 84 | 85 | $pagination-active-border-color: darken($primary, 5%) !default; 86 | 87 | $pagination-disabled-color: $gray-200 !default; 88 | 89 | // Jumbotron 90 | 91 | $jumbotron-padding: 4rem !default; 92 | 93 | // Badges 94 | 95 | $badge-font-weight: 300 !default; 96 | $badge-padding-x: 1rem !default; 97 | 98 | // Progress bars 99 | 100 | $progress-bg: $gray-400 !default; 101 | $progress-bar-color: $white !default; 102 | 103 | // List group 104 | 105 | $list-group-disabled-bg: $gray-200 !default; 106 | 107 | // Close 108 | 109 | $close-color: $gray-600 !default; 110 | $close-text-shadow: none !default; 111 | -------------------------------------------------------------------------------- /assets/themes/yeti/uap-custom.css: -------------------------------------------------------------------------------- 1 | .comment-box .media-body p { 2 | border: 1px solid #ddd; 3 | padding: 2px; 4 | } 5 | .comment-box .media-content { 6 | border: 1px solid #ddd; 7 | padding: 2px; 8 | } 9 | .comment-box .media-heading { 10 | background-color: #f5f5f5; 11 | border: 1px solid #ddd; 12 | } 13 | .comment-box .media-heading:before { 14 | background-color: #f5f5f5; 15 | border: 1px solid #ddd; 16 | } 17 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "userapplepie/uap-user-management", 3 | "type": "project", 4 | "description": "User Management Framework for PHP 7.1.3+", 5 | "homepage": "https://github.com/UserApplePie/UserApplePie-v4", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "David DaVaR Sargent", 10 | "email": "davar@thedavar.net", 11 | "homepage": "http://www.userapplepie.com", 12 | "role": "Developer" 13 | } 14 | ], 15 | "require": { 16 | "php": ">=7.1.3", 17 | "symfony/console": "~4.1", 18 | "doctrine/inflector": "~1.3", 19 | "google/recaptcha": "^1.2" 20 | }, 21 | "autoload": { 22 | "psr-4": { 23 | "App\\" : "app/", 24 | "Libs\\" : "app/System/Libraries/" 25 | } 26 | }, 27 | "minimum-stability": "dev" 28 | } 29 | -------------------------------------------------------------------------------- /errors/missing-lang.log: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /errors/php-error.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/errors/php-error.log -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 7 | * @version 4.3.0 8 | */ 9 | 10 | /* Define the absolute paths for configured directories */ 11 | define('APPDIR', realpath(__DIR__.'/../app/').'/'); 12 | define('SYSTEMDIR', realpath(__DIR__.'/../system/').'/'); 13 | define('PUBLICDIR', realpath(__DIR__).'/'); 14 | define('ROOTDIR', realpath(__DIR__.'/../').'/'); 15 | 16 | /** Define Current Version of UAP **/ 17 | define('UAPVersion', '4.3.0'); 18 | 19 | /* load Composer Autoloader */ 20 | if (file_exists(ROOTDIR.'vendor/autoload.php')) { 21 | require ROOTDIR.'vendor/autoload.php'; 22 | } else { 23 | echo "

Please install via composer.json

"; 24 | echo "

Install Composer instructions: https://getcomposer.org/doc/00-intro.md#globally

"; 25 | echo "

Once composer is installed navigate to the working directory in your terminal/command promt and enter 'composer install'

"; 26 | exit; 27 | } 28 | 29 | /* Start the Session */ 30 | session_start(); 31 | 32 | /* Error Settings */ 33 | error_reporting(E_ALL); 34 | 35 | /* Make sure Config File Exists */ 36 | if (is_readable(APPDIR.'Config.php')) { 37 | 38 | /* Load the Site Config */ 39 | new \App\Config(); 40 | 41 | /* Load Site Settings From Database */ 42 | new \App\System\LoadSiteSettings(); 43 | 44 | /* Load the Page Router */ 45 | new \App\System\Router(); 46 | 47 | } else { 48 | /** No Config Setup, Start Install */ 49 | if (file_exists(APPDIR.'Install/Install.php')) { 50 | require APPDIR.'Install/Install.php'; 51 | } else { 52 | echo "

Update and Rename Example-Config.php to Config.php

"; 53 | echo "

Make sure to rename /app/Example-Config.php to /app/Config.php for this application to start working.

"; 54 | echo "

Read the README for details.

"; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /public/uap4logo_wait_animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UserApplePie/UserApplePie-v4/f01447efa190e953c7d097ba0275008ccbeb07ff/public/uap4logo_wait_animation.gif --------------------------------------------------------------------------------