PageRenderTime 45ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Powershell/GetPHPExtensionCmdlet.cs

#
C# | 59 lines | 42 code | 9 blank | 8 comment | 7 complexity | 398a27db6a294b6bbfb36fa9fe9e4e30 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. //-----------------------------------------------------------------------
  2. // <copyright>
  3. // Copyright (C) Ruslan Yakushev for the PHP Manager for IIS project.
  4. //
  5. // This file is subject to the terms and conditions of the Microsoft Public License (MS-PL).
  6. // See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL for more details.
  7. // </copyright>
  8. //-----------------------------------------------------------------------
  9. using System.Management.Automation;
  10. using Microsoft.Web.Administration;
  11. using Web.Management.PHP.Config;
  12. namespace Web.Management.PHP.Powershell
  13. {
  14. [Cmdlet(VerbsCommon.Get, "PHPExtension")]
  15. [OutputType(typeof(PHPExtensionItem))]
  16. public sealed class GetPHPExtensionCmdlet : BaseCmdlet
  17. {
  18. [Parameter(ValueFromPipelineByPropertyName = true, Position = 0)]
  19. public string Name { get; set; }
  20. [Parameter(ValueFromPipeline = false, Position = 1)]
  21. public PHPExtensionStatus Status { get; set; }
  22. protected override void DoProcessing()
  23. {
  24. using (var serverManager = new ServerManager())
  25. {
  26. var serverManagerWrapper = new ServerManagerWrapper(serverManager, SiteName, VirtualPath);
  27. var configHelper = new PHPConfigHelper(serverManagerWrapper);
  28. var phpIniFile = configHelper.GetPHPIniFile();
  29. WildcardPattern wildcard = PrepareWildcardPattern(Name);
  30. foreach (var extension in phpIniFile.Extensions)
  31. {
  32. if (!wildcard.IsMatch(extension.Name))
  33. {
  34. continue;
  35. }
  36. if (Status == PHPExtensionStatus.Disabled && extension.Enabled)
  37. {
  38. continue;
  39. }
  40. if (Status == PHPExtensionStatus.Enabled && !extension.Enabled)
  41. {
  42. continue;
  43. }
  44. var extensionItem = new PHPExtensionItem(extension);
  45. WriteObject(extensionItem);
  46. }
  47. }
  48. }
  49. }
  50. }