@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 57 lines 1.7 kB view raw
1<?php 2 3final class PhabricatorSystemSelectEncodingController 4 extends PhabricatorController { 5 6 public function shouldRequireLogin() { 7 return false; 8 } 9 10 public function processRequest() { 11 $request = $this->getRequest(); 12 13 if (!function_exists('mb_list_encodings')) { 14 return $this->newDialog() 15 ->setTitle(pht('No Encoding Support')) 16 ->appendParagraph( 17 pht( 18 'This system does not have the "%s" extension installed, '. 19 'so character encodings are not supported. Install "%s" to '. 20 'enable support.', 21 'mbstring', 22 'mbstring')) 23 ->addCancelButton('/'); 24 } 25 26 if ($request->isFormPost()) { 27 $result = array('encoding' => $request->getStr('encoding')); 28 return id(new AphrontAjaxResponse())->setContent($result); 29 } 30 31 $encodings = mb_list_encodings(); 32 $encodings = array_fuse($encodings); 33 asort($encodings); 34 unset($encodings['pass']); 35 unset($encodings['auto']); 36 37 $encodings = array( 38 '' => pht('(Use Default)'), 39 ) + $encodings; 40 41 $form = id(new AphrontFormView()) 42 ->setUser($this->getRequest()->getUser()) 43 ->appendRemarkupInstructions(pht('Choose a text encoding to use.')) 44 ->appendChild( 45 id(new AphrontFormSelectControl()) 46 ->setLabel(pht('Encoding')) 47 ->setName('encoding') 48 ->setValue($request->getStr('encoding')) 49 ->setOptions($encodings)); 50 51 return $this->newDialog() 52 ->setTitle(pht('Select Character Encoding')) 53 ->appendChild($form->buildLayoutView()) 54 ->addSubmitButton(pht('Choose Encoding')) 55 ->addCancelButton('/'); 56 } 57}