ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ iB^c@`s"ddlmZddlmZddlmZddlZddlZddlmZddlm Z ddl Z ddl m Z mZddlmZdd lmZmZmZdd lmZdd lmZmZmZmZdd lmZdd lmZde fdYZ!dS(i(tprint_function(tdivision(tabsolute_importN(tgetpwuid(t iteritems(t get_paramt replace_param(tUIConfig(tformat_summarytparse_extensionstAPI_1(tClSelect(t ClUserSelectt ClExtSelecttClUserExtSelecttClUserOptSelect(tBaseSelectorError(tClSelectExceptt PhpManagercB`seZdZdZdZdZdddZedZ e j dZ edZ dZ d Z d Zd Zd Zd ZdZRS(s:Responsible for actual PhpSelector selector high-level APItphps6/usr/local/directadmin/plugins/phpselector/plugin.conftactivecC`satj}|dk|_t|j|_|jrKt|j|_nt |j|_dS(Ni( tostgeteuidt is_root_userRtpw_namet user_nameR t interpretert cl_select_libR (tselftcfgtpkgteuid((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pyt__init__$s   cC`s=tjr%t|j|jdkStjdd SdS(sD Get current status for panel :return: bool tyest hidePhpAppt uiSettingsN(tdetecttis_daRtDA_PATHtDA_PARAMR(R((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pytselector_enabled.s cC`stjry&t|j|j|r*dndWn8ttfk rl}td|jt|fnXt j ii| d6d6nt j ii| d6d6dS(se Enable/disable selector for each panel :param status: bool :return: R!tnos.Can not process config file %s with reason: %sR"R#N( R$R%RR&R'tOSErrortIOErrorRtstrRt set_config(Rtstatuste((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pyR(:s &"cC`stjddtkS(sF Extensions was hidden by admin :return: bool thidePHPextensionsR#(RRtTrue(R((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pytextensions_is_hiddenLscC`sW|jrtdnt|j}|j|jt||j|jgdS(si Set current version for user :param version: str :return: None (succes) sNot supported as root userN(RRR Rt set_versionRR,tclean_crui_images(Rtversiontc((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pytswitch_current_versionTs  cC`sj|jrtdntjt|j}|j|jt|}|j |jgi|d6S(s Reset extension for selected version :param version: str :return: List of enabled extensions after reset sNot supported as root usert extensions( RRR t%check_multiphp_system_default_versionRRtreset_extensionsRR,R4(RR5R6R8((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pyR:`s  c C`szg}xQt|D]C\}}|dkr;|j|q|dkrid|d6SqW|jrt|jjt||iS|jrtdnt |j}|j |j t||\}}}|j |j g|rg|D]} dj | ^q}n|r'dj|nd} |re| rF| d } n| d j dj|} n| rvi| d 6SiS( s Set extensions for php version for admin and user :param version: str :param extensions: list :return: response for user. Error or warning list or no error tenabledtdisableds.ERROR: %s is not a valid state of an extensionR.s Extensions was disabled by admins{} enabled as dependency ({})s, ts. s{} skipped as conflicting.twarning(RtappendRR Rtreplace_extensionsR,R2RRt#replace_extensions_with_dependensesRR4tformattjoin( RR5R8t to_enabletktvR6tresolved_dependenciestconflict_dependenciestexttwarnings((sQ/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectphp/php_manager.pytset_extensionsns2    !%  cC`sUd}|jr$|jjt}ny|jj|jt}Wn8tjk rzt idd6i|jd6d6nXx3|D]+}|\}\}}}|r|}PqqWt |dddt }t j |} |j| d<|j| d <|r|| d s   "