Browse Source

Reworked About page

Content is rendered from Markdown instead of HTML and has links for the headers
pull/1/head
parent
commit
c2ba484e22
468 changed files with 151 additions and 41386 deletions
  1. +3
    -0
      .gitignore
  2. +3
    -0
      .gitmodules
  3. +8
    -0
      .idea/php.xml
  4. +4
    -0
      .idea/website.iml
  5. +57
    -0
      about/content.md
  6. +0
    -173
      about/index.html
  7. +54
    -0
      about/index.php
  8. +2
    -2
      canary/index.php
  9. +0
    -8
      composer/composer.json
  10. +0
    -975
      composer/composer.lock
  11. +0
    -7
      composer/vendor/autoload.php
  12. +0
    -26
      composer/vendor/clue/stream-filter/.travis.yml
  13. +0
    -54
      composer/vendor/clue/stream-filter/CHANGELOG.md
  14. +0
    -21
      composer/vendor/clue/stream-filter/LICENSE
  15. +0
    -297
      composer/vendor/clue/stream-filter/README.md
  16. +0
    -23
      composer/vendor/clue/stream-filter/composer.json
  17. +0
    -29
      composer/vendor/clue/stream-filter/examples/base64_decode.php
  18. +0
    -21
      composer/vendor/clue/stream-filter/examples/base64_encode.php
  19. +0
    -9
      composer/vendor/clue/stream-filter/examples/uppercase.php
  20. +0
    -19
      composer/vendor/clue/stream-filter/phpunit.xml.dist
  21. +0
    -120
      composer/vendor/clue/stream-filter/src/CallbackFilter.php
  22. +0
    -146
      composer/vendor/clue/stream-filter/src/functions.php
  23. +0
    -386
      composer/vendor/clue/stream-filter/tests/FilterTest.php
  24. +0
    -44
      composer/vendor/clue/stream-filter/tests/FunTest.php
  25. +0
    -79
      composer/vendor/clue/stream-filter/tests/FunZlibTest.php
  26. +0
    -441
      composer/vendor/composer/ClassLoader.php
  27. +0
    -21
      composer/vendor/composer/LICENSE
  28. +0
    -9
      composer/vendor/composer/autoload_classmap.php
  29. +0
    -12
      composer/vendor/composer/autoload_files.php
  30. +0
    -10
      composer/vendor/composer/autoload_namespaces.php
  31. +0
    -23
      composer/vendor/composer/autoload_psr4.php
  32. +0
    -70
      composer/vendor/composer/autoload_real.php
  33. +0
    -133
      composer/vendor/composer/autoload_static.php
  34. +0
    -993
      composer/vendor/composer/installed.json
  35. +0
    -21
      composer/vendor/kriswallsmith/buzz/.php_cs
  36. +0
    -9
      composer/vendor/kriswallsmith/buzz/.scrutinizer.yml
  37. +0
    -12
      composer/vendor/kriswallsmith/buzz/Dockerfile
  38. +0
    -19
      composer/vendor/kriswallsmith/buzz/LICENSE
  39. +0
    -57
      composer/vendor/kriswallsmith/buzz/composer.json
  40. +0
    -96
      composer/vendor/kriswallsmith/buzz/doc/Readme.md
  41. +0
    -152
      composer/vendor/kriswallsmith/buzz/doc/client.md
  42. +0
    -87
      composer/vendor/kriswallsmith/buzz/doc/middleware.md
  43. +0
    -47
      composer/vendor/kriswallsmith/buzz/doc/symfony.md
  44. +0
    -261
      composer/vendor/kriswallsmith/buzz/lib/Browser.php
  45. +0
    -101
      composer/vendor/kriswallsmith/buzz/lib/Client/AbstractClient.php
  46. +0
    -249
      composer/vendor/kriswallsmith/buzz/lib/Client/AbstractCurl.php
  47. +0
    -32
      composer/vendor/kriswallsmith/buzz/lib/Client/BatchClientInterface.php
  48. +0
    -21
      composer/vendor/kriswallsmith/buzz/lib/Client/BuzzClientInterface.php
  49. +0
    -40
      composer/vendor/kriswallsmith/buzz/lib/Client/Curl.php
  50. +0
    -92
      composer/vendor/kriswallsmith/buzz/lib/Client/FileGetContents.php
  51. +0
    -368
      composer/vendor/kriswallsmith/buzz/lib/Client/MultiCurl.php
  52. +0
    -110
      composer/vendor/kriswallsmith/buzz/lib/Configuration/ParameterBag.php
  53. +0
    -27
      composer/vendor/kriswallsmith/buzz/lib/Exception/CallbackException.php
  54. +0
    -14
      composer/vendor/kriswallsmith/buzz/lib/Exception/ClientException.php
  55. +0
    -12
      composer/vendor/kriswallsmith/buzz/lib/Exception/ExceptionInterface.php
  56. +0
    -12
      composer/vendor/kriswallsmith/buzz/lib/Exception/InvalidArgumentException.php
  57. +0
    -12
      composer/vendor/kriswallsmith/buzz/lib/Exception/LogicException.php
  58. +0
    -30
      composer/vendor/kriswallsmith/buzz/lib/Exception/NetworkException.php
  59. +0
    -30
      composer/vendor/kriswallsmith/buzz/lib/Exception/RequestException.php
  60. +0
    -58
      composer/vendor/kriswallsmith/buzz/lib/Message/FormRequestBuilder.php
  61. +0
    -57
      composer/vendor/kriswallsmith/buzz/lib/Message/HeaderConverter.php
  62. +0
    -126
      composer/vendor/kriswallsmith/buzz/lib/Message/ResponseBuilder.php
  63. +0
    -32
      composer/vendor/kriswallsmith/buzz/lib/Middleware/BasicAuthMiddleware.php
  64. +0
    -35
      composer/vendor/kriswallsmith/buzz/lib/Middleware/BearerAuthMiddleware.php
  65. +0
    -56
      composer/vendor/kriswallsmith/buzz/lib/Middleware/CallbackMiddleware.php
  66. +0
    -27
      composer/vendor/kriswallsmith/buzz/lib/Middleware/ContentLengthMiddleware.php
  67. +0
    -104
      composer/vendor/kriswallsmith/buzz/lib/Middleware/ContentTypeMiddleware.php
  68. +0
    -226
      composer/vendor/kriswallsmith/buzz/lib/Middleware/Cookie/Cookie.php
  69. +0
    -87
      composer/vendor/kriswallsmith/buzz/lib/Middleware/Cookie/CookieJar.php
  70. +0
    -58
      composer/vendor/kriswallsmith/buzz/lib/Middleware/CookieMiddleware.php
  71. +0
    -832
      composer/vendor/kriswallsmith/buzz/lib/Middleware/DigestAuthMiddleware.php
  72. +0
    -40
      composer/vendor/kriswallsmith/buzz/lib/Middleware/History/Entry.php
  73. +0
    -98
      composer/vendor/kriswallsmith/buzz/lib/Middleware/History/Journal.php
  74. +0
    -40
      composer/vendor/kriswallsmith/buzz/lib/Middleware/HistoryMiddleware.php
  75. +0
    -48
      composer/vendor/kriswallsmith/buzz/lib/Middleware/LoggerMiddleware.php
  76. +0
    -42
      composer/vendor/kriswallsmith/buzz/lib/Middleware/MiddlewareInterface.php
  77. +0
    -46
      composer/vendor/kriswallsmith/buzz/lib/Middleware/WsseAuthMiddleware.php
  78. +0
    -16
      composer/vendor/kriswallsmith/buzz/phpstan.neon.dist
  79. +0
    -274
      composer/vendor/mailgun/mailgun-php/CHANGELOG.md
  80. +0
    -17
      composer/vendor/mailgun/mailgun-php/LICENSE
  81. +0
    -197
      composer/vendor/mailgun/mailgun-php/README.md
  82. +0
    -46
      composer/vendor/mailgun/mailgun-php/composer.json
  83. +0
    -47
      composer/vendor/mailgun/mailgun-php/doc/attachments.md
  84. +0
    -336
      composer/vendor/mailgun/mailgun-php/doc/index.md
  85. +0
    -17
      composer/vendor/mailgun/mailgun-php/doc/pagination.md
  86. +0
    -35
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Attachment.php
  87. +0
    -286
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Domain.php
  88. +0
    -38
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Event.php
  89. +0
    -237
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/HttpApi.php
  90. +0
    -116
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Ip.php
  91. +0
    -154
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/MailingList.php
  92. +0
    -233
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/MailingList/Member.php
  93. +0
    -198
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Message.php
  94. +0
    -83
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Pagination.php
  95. +0
    -157
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Route.php
  96. +0
    -52
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Stats.php
  97. +0
    -76
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Suppression.php
  98. +0
    -113
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Suppression/Bounce.php
  99. +0
    -116
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Suppression/Complaint.php
  100. +0
    -113
      composer/vendor/mailgun/mailgun-php/src/Mailgun/Api/Suppression/Unsubscribe.php

+ 3
- 0
.gitignore View File

@ -20,4 +20,7 @@ sustainer/data
voting/data
store_old/
#PHP composer
composer/vendor
contact/contact-log.txt

+ 3
- 0
.gitmodules View File

@ -0,0 +1,3 @@
[submodule "res/php/thirdparty/parsedown"]
path = res/php/thirdparty/parsedown
url = https://github.com/erusev/parsedown.git

+ 8
- 0
.idea/php.xml View File

@ -20,6 +20,14 @@
<path value="$PROJECT_DIR$/composer/vendor/nyholm/psr7" />
<path value="$PROJECT_DIR$/composer/vendor/symfony/options-resolver" />
<path value="$PROJECT_DIR$/composer/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/composer/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/composer/vendor/symfony/polyfill-php80" />
<path value="$PROJECT_DIR$/composer/vendor/erusev/parsedown" />
</include_path>
</component>
<component name="PhpUnit">
<phpunit_settings>
<PhpUnitSettings custom_loader_path="$PROJECT_DIR$/composer/vendor/autoload.php" />
</phpunit_settings>
</component>
</project>

+ 4
- 0
.idea/website.iml View File

@ -5,6 +5,8 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/clue/stream-filter" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/erusev" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/erusev/parsedown" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/kriswallsmith/buzz" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/mailgun/mailgun-php" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/nyholm/psr7" />
@ -18,8 +20,10 @@
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/psr/http-client" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/psr/http-factory" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/psr/http-message" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/symfony/deprecation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/symfony/options-resolver" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/symfony/polyfill-php80" />
<excludeFolder url="file://$MODULE_DIR$/composer/vendor/webmozart/assert" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
</content>


+ 57
- 0
about/content.md View File

@ -0,0 +1,57 @@
# We Keep Us Safe
The Socialist Rifle Association is a not-for-profit organization, incorporated in Wichita Kansas and filing as a 501(c)(4) social welfare organization federally. We are an organization dedicated to educating on and advocating for all aspects of self and community defense. Article Two of our Bylaws states our purpose clearly:
>...We recognize all aspects of self and community defense to include topics such as firearms, disaster relief, medicine, logistics, agriculture, general survival skills, and other pursuits necessary to unify and strengthen communities against the hardships of life under capitalism. We seek, advocate for, and advance an inclusive, safe, and healthy firearms culture in America to combat the toxic, right-wing, and exclusionary firearm culture in place today. We work to create a platform, environment, and community of members and like-minded individuals that are free of reactionary influences and prejudices, such as racism, sexism, ableism, homophobia, transphobia, and other discriminatory ideologies. We maintain the necessity of and work towards the implementation of an anti-capitalist platform for protecting and promoting the inherent human right to defend oneself and one’s community.”
#How Did We Get Here?
Various communities, on and offline, have for years rallied around the idea of inclusive, left-oriented firearm use and mutual aid activities. Chapters organizing under the name “Socialist Rifle Association” came together in late 2017 to begin discussing an alliance with each other, to better spread their mission.
This culminated in March 2018, when the SRA incorporated in its first form as a nonprofit LLC in New Mexico. This initial band of organizers worked hard to begin growing the organization, and garnered the attention of a few hundred members in those early days.
The first major mutual aid action took place in September of the same year: the North Georgia chapter responded to the arrival of Hurricane Florence, delivering supplies to shelters before and after portions of the storm hit South Carolina. This set the trend for one of the most significant aspects of the SRA today, its dedication to responding to natural and manmade disasters.
Shortly thereafter in October 2018 the SRA reincorporated into its current form, a not-for-profit corporation in Kansas. The organization obtained its tax exempt status shortly there after, even as membership began to surge from greater notoriety stemming from the SRA’s mutual aid efforts.
Since then, the SRA has continued to grow and expand. We now count nearly six thousand members and over sixty ratified chapters nationwide with members in every state & Puerto Rico. We are training firearms instructors to provide services to our members and to the public, and our chapters engage in regular mutual aid activities, most recently in response to the ongoing COVID-19 crisis.
#What Do We Do Now?
The chapters of the SRA perform a wide variety of activities under our expansive mission statement. Range days, social get togethers, mutual aid, community gardens, instruction, and more are just some of the things our chapters have organized. Ultimately, the goal of all of these events is to foster a supportive and inclusive community that can work together to achieve its common goals and rebuff against reactionary right wing firearms culture.
#Frequently Asked Questions:
##Are you a militia?
We are not a militia. As a social welfare organization, we work to educate and advocate. While the organization and its chapters do at times sanction presence at protests, we forbid armed protests under the SRA banner, as this is not the goal of the SRA. We encourage members who wish to participate in armed demonstrations to investigate organizations that have been established for that purpose. Opposing fascism and reactionary ideologies is a multifront struggle, and we fulfill the education portion of that struggle.
##So who owns the SRA?
As a not-for-profit corporation registered under the 501(c)(4) section of the tax code, the SRA is “owned” by no one. We are ultimately answerable to our members, and our governing bodies have a fiduciary duty to act in the best interests of the organization.
##How can I join?
Head over to our membership page here!
##Do I have to use my legal name to sign up?
Nope! You may use any preferred or chosen name. **We do not need to know your deadname if that’s your situation.**
##What if there’s no chapter near me?
You’re welcome to join and begin the interviewing process to start your own! No chapter simply springs into existence, so we’re always eager to get more folks onboard to help us expand as an organization.
##What does the organization spend its money on?
A variety of expenses: administrative costs to operate the organization, mutual aid efforts, payroll for staff who help coordinate actions and projects, member packages, and more. A breakdown of our expenses is regularly provided to our members to help ensure financial transparency.
##Can I deduct donations to the SRA?
Unfortunately, no. As a 501(c)(4) contributions to the SRA are not tax deductible.
##Do you keep my credit card secure?
The SRA does not see your financial information at any point in the membership process. All financial transactions are handled by Stripe, a commercial online payment processor. Your credit card information is sent to Stripe using an encrypted tokenized system, and the only information visible to us is the last 4 digits of your credit card number. If you're still concerned, you can pay using a one-time-use prepaid debit card.
##Do you have a warrant canary?
Yes! We have one located [here](/canary).

+ 0
- 173
about/index.html View File

@ -1,173 +0,0 @@
<!--
Site Developer: J. L. Hamilton
Contact: jason.sx
-->
<!DOCTYPE html>
<html>
<head>
<title>Socialist Rifle Association</title>
<link rel="icon" href="../img/favicon.png">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<link rel="stylesheet" type="text/css" href="../css/material-display.min.css">
<link href="https://fonts.googleapis.com/css?family=Heebo" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/material-display.js" type="text/javascript"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-140312147-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-140312147-1');
</script>
</head>
<style type="text/css">
p {
font-weight: 200;
font-family: 'Heebo', sans-serif;
}
</style>
<body>
<div id="menu-cont">
<div id="bar">
<div id="logo"><a href="/"><img class="page-logo" src="../img/new-logo1.png"></a></div>
<div id="ham-toggle"><i class="fa fa-bars" aria-hidden="true"></i></div>
<div id="cart-icon"><a href="../store/"><i class="fas fa-store" aria-hidden="true" style="font-size: 0.85em;"></i></a></div>
</div>
<div id="menu">
<div class="section section-menu group">
<a href="/about/">
<div class="col span_1_of_5 btnrnd">
About
</div>
</a>
<a href="/edu/">
<div class="col span_1_of_5 btnrnd">
Education
</div>
</a>
<a href="/resources/">
<div class="col span_1_of_5 btnrnd">
Resources
</div>
</a>
<a href="/membership/">
<div class="col span_1_of_5 btnrnd">
Become A Member
</div>
</a>
<a href="/contact/">
<div class="col span_1_of_5 btnrnd">
Contact Us
</div>
</a>
</div>
</div>
</div>
<div id="material-container" class="zmd-hierarchical-display" data-animation="hierarchical-display">
<div id="first">
<div id="section-title">We Keep Us Safe</div>
<hr>
<p>The Socialist Rifle Association is a not-for-profit organization, incorporated in Wichita Kansas and filing as a 501(c)(4) social welfare organization federally. We are an organization dedicated to educating on and advocating for all aspects of self and community defense. Article Two of our Bylaws states our purpose clearly:</p>
<p>&ldquo;...We recognize all aspects of self and community defense to include topics such as firearms, disaster relief, medicine, logistics, agriculture, general survival skills, and other pursuits necessary to unify and strengthen communities against the hardships of life under capitalism. We seek, advocate for, and advance an inclusive, safe, and healthy firearms culture in America to combat the toxic, right-wing, and exclusionary firearm culture in place today. We work to create a platform, environment, and community of members and like-minded individuals that are free of reactionary influences and prejudices, such as racism, sexism, ableism, homophobia, transphobia, and other discriminatory ideologies. We maintain the necessity of and work towards the implementation of an anti-capitalist platform for protecting and promoting the inherent human right to defend oneself and one&rsquo;s community.&rdquo;</p>
<div id="section-title">How Did We Get Here?</div>
<p>Various communities, on and offline, have for years rallied around the idea of inclusive, left-oriented firearm use and mutual aid activities. Chapters organizing under the name &ldquo;Socialist Rifle Association&rdquo; came together in late 2017 to begin discussing an alliance with each other, to better spread their mission.&nbsp;</p>
<p>This culminated in March 2018, when the SRA incorporated in its first form as a nonprofit LLC in New Mexico. This initial band of organizers worked hard to begin growing the organization, and garnered the attention of a few hundred members in those early days.</p>
<p>The first major mutual aid action took place in September of the same year: the North Georgia chapter responded to the arrival of Hurricane Florence, delivering supplies to shelters before and after portions of the storm hit South Carolina. This set the trend for one of the most significant aspects of the SRA today, its dedication to responding to natural and manmade disasters.</p>
<p>Shortly thereafter in October 2018 the SRA reincorporated into its current form, a not-for-profit corporation in Kansas. The organization obtained its tax exempt status shortly there after, even as membership began to surge from greater notoriety stemming from the SRA&rsquo;s mutual aid efforts.&nbsp;</p>
<p>Since then, the SRA has continued to grow and expand. We now count nearly six thousand members and over sixty ratified chapters nationwide with members in every state &amp; Puerto Rico. We are training firearms instructors to provide services to our members and to the public, and our chapters engage in regular mutual aid activities, most recently in response to the ongoing COVID-19 crisis.</p>
<div id="section-title">What Do We Do Now?</div>
<p>The chapters of the SRA perform a wide variety of activities under our expansive mission statement. Range days, social get togethers, mutual aid, community gardens, instruction, and more are just some of the things our chapters have organized. Ultimately, the goal of all of these events is to foster a supportive and inclusive community that can work together to achieve its common goals and rebuff against reactionary right wing firearms culture.</p>
<div id="section-title">Frequently Asked Questions:</div>
<p><strong>Are you a militia?</strong></p>
<p>We are not a militia. As a social welfare organization, we work to educate and advocate. While the organization and its chapters do at times sanction presence at protests, we forbid armed protests under the SRA banner, as this is not the goal of the SRA. We encourage members who wish to participate in armed demonstrations to investigate organizations that have been established for that purpose. Opposing fascism and reactionary ideologies is a multifront struggle, and we fulfill the education portion of that struggle.</p><br>
<p><strong>So who owns the SRA?</strong></p>
<p>As a not-for-profit corporation registered under the 501(c)(4) section of the tax code, the SRA is &ldquo;owned&rdquo; by no one. We are ultimately answerable to our members, and our governing bodies have a fiduciary duty to act in the best interests of the organization.</p><br>
<p><strong>How can I join?</strong></p>
<p><a href="https://socialistra.org/membership/">Head over to our membership page here!</a></p><br>
<p><strong>Do I have to use my legal name to sign up?</strong></p>
<p>Nope! You may use any preferred or chosen name. We do not need to know your deadname if that&rsquo;s your situation.</p><br>
<p><strong>What if there&rsquo;s no chapter near me?</strong></p>
<p>You&rsquo;re welcome to join and begin the interviewing process to start your own! No chapter simply springs into existence, so we&rsquo;re always eager to get more folks onboard to help us expand as an organization.</p><br>
<p><strong>What does the organization spend its money on?</strong></p>
<p>A variety of expenses: administrative costs to operate the organization, mutual aid efforts, payroll for staff who help coordinate actions and projects, member packages, and more. A breakdown of our expenses is regularly provided to our members to help ensure financial transparency.</p><br>
<p><strong>Can I deduct donations to the SRA?</strong></p>
<p>Unfortunately, no. As a 501(c)(4) contributions to the SRA are not tax deductible.</p><br>
<p><strong>Do you keep my credit card secure?</strong></p>
<p>The SRA does not see your financial information at any point in the membership process. All financial transactions are handled by Stripe, a commercial online payment processor. Your credit card information is sent to Stripe using an encrypted tokenized system, and the only information visible to us is the last 4 digits of your credit card number. If you're still concerned, you can pay using a one-time-use prepaid debit card.</p><br>
<p><strong>Do you have a warrant canary?</strong></p>
<p><a href="https://socialistra.org/canary/">Yes! We have one located here.</a></p><br>
</div>
</div>
<footer>
<div class="section group">
<div class="col footer_1_of_4">
<img src="../img/footer.png"><br>
<p class="footer">The Socialist Rifle Association's mission is to uphold the right of the working class to keep and bear arms and maintain the skills necessary for self and community defense.</p>
</div>
<div class="col footer_1_of_4">
<ul class="footer-ul">
<li><a href="../leadership/">Central Committee</a></li>
<hr class="footer-hr">
<li><a href="../sustainer/">Become a Sustainer</a></li>
<hr class="footer-hr">
<li><a href="../resolutions/">Policy Resolutions</a></li>
<hr class="footer-hr">
<li><a href="../chapters/">Local Chapters</a></li>
<hr class="footer-hr">
</ul>
</div>
<div class="col footer_1_of_4">
</div>
<div class="col footer_1_of_4">
<span class="follow">Follow Us</span><br>
<ul>
<a href="https://twitter.com/socialistra">
<li class="fab fa-twitter-square" aria-hidden="true"></li>
</a>
<a href="https://www.youtube.com/channel/UCEJzdCNfDMUz5GZDIRGgZaw">
<li class="fab fa-youtube-square" aria-hidden="true"></li>
</a>
<a href="https://www.facebook.com/SocialistRifle/">
<li class="fab fa-facebook-square" aria-hidden="true"></li>
</a>
<a href="https://www.reddit.com/r/SocialistRA/">
<li class="fab fa-reddit-square" aria-hidden="true"></li>
</a>
</ul>
</div>
</div>
</footer>
<script src="../js/page-menu.js" type="text/javascript"></script>
</body>
</html>

+ 54
- 0
about/index.php View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Socialist Rifle Association - About</title>
<?php include("../res/php/headtags.php") ?>
<style>
blockquote {
display: block;
background: rgba(222,222,222,.25);
border-radius: 8px;
border: 1px solid #ddd;
font-family: "Courier New", monospace;
font-size: 0.9em;
padding: 1em 1.5em;
overflow-x: auto;
text-align: left;
}
</style>
</head>
<body>
<?php include("../res/php/top.php") ?>
<div id="section-title">About</div>
<?php
// Code to add id's for linking FAQ answers
function sanitize_title($string) {
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string)));
}
function auto_id_headings( $content ) {
$content = preg_replace_callback( '/(\<h[1-6](.*?))\>(.*)(<\/h[1-6]>)/i', function( $matches ) {
if ( ! stripos( $matches[0], 'id=' ) ) :
$heading_link = ' <a href="#' . sanitize_title( $matches[3] ) . '" class="heading-link"><i class="fas fa-link fa-xs"></i></a>';
$matches[0] = $matches[1] . $matches[2] . ' id="' . sanitize_title( $matches[3] ) . '">' . $matches[3] . $heading_link . $matches[4];
endif;
return $matches[0];
}, $content );
return $content;
}
include_once("../res/php/thirdparty/parsedown/Parsedown.php");
$Parsedown = new Parsedown();
// Load and render content.md
$md = file_get_contents("content.md");
$html = $Parsedown -> text($md);
$htmlWithID = auto_id_headings($html);
echo($htmlWithID);
include("../res/php/bottom.php")
?>
</body>
</html>

+ 2
- 2
canary/index.php View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Socialist Rifle Association Warrant Canary</title>
<title>Socialist Rifle Association - Warrant Canary</title>
<?php include("../res/php/headtags.php") ?>
<style>
@ -41,7 +41,7 @@
// Load most recent canary
$canary = array_values($canaries)[0];
$canary = file_get_contents("./dl/$canary/canary$canary");
echo("<section><pre><code>$canary</code></pre></section><br></div>");
echo("<section><pre><code>$canary</code></pre></section><br></div><hr>");
// List the canaries
foreach ($canaries as $canary) {
echo("


+ 0
- 8
composer/composer.json View File

@ -1,8 +0,0 @@
{
"require": {
"mailgun/mailgun-php": "^2.8",
"kriswallsmith/buzz": "^1.0",
"nyholm/psr7": "^1.1",
"ext-json": "*"
}
}

+ 0
- 975
composer/composer.lock View File

@ -1,975 +0,0 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "44419b85689a6784aa140cb144dfeb28",
"packages": [
{
"name": "clue/stream-filter",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/clue/php-stream-filter.git",
"reference": "d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/clue/php-stream-filter/zipball/d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0",
"reference": "d80fdee9b3a7e0d16fc330a22f41f3ad0eeb09d0",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "^5.0 || ^4.8"
},
"type": "library",
"autoload": {
"psr-4": {
"Clue\\StreamFilter\\": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "[email protected]"
}
],
"description": "A simple and modern approach to stream filtering in PHP",
"homepage": "https://github.com/clue/php-stream-filter",
"keywords": [
"bucket brigade",
"callback",
"filter",
"php_user_filter",
"stream",
"stream_filter_append",
"stream_filter_register"
],
"time": "2017-08-18T09:54:01+00:00"
},
{
"name": "kriswallsmith/buzz",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/kriswallsmith/Buzz.git",
"reference": "d545bc841dca63a6fc7a5ca02b5a17c62add16df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kriswallsmith/Buzz/zipball/d545bc841dca63a6fc7a5ca02b5a17c62add16df",
"reference": "d545bc841dca63a6fc7a5ca02b5a17c62add16df",
"shasum": ""
},
"require": {
"php": "^7.1",
"php-http/httplug": "^1.1 || ^2.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0",
"symfony/options-resolver": "^3.4 || ^4.0"
},
"provide": {
"php-http/client-implementation": "1.0",
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"nyholm/psr7": "^1.0",
"php-http/client-integration-tests": "^2.0.1",
"phpunit/phpunit": "^6.5.7",
"psr/log": "^1.0",
"symfony/phpunit-bridge": "^4.2.3"
},
"suggest": {
"ext-curl": "To use our cUrl clients",
"nyholm/psr7": "For PSR-7 and PSR-17 implementation"
},
"type": "library",
"autoload": {
"psr-4": {
"Buzz\\": "lib"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "[email protected]",
"homepage": "http://kriswallsmith.net/"
},
{
"name": "Tobias Nyholm",
"email": "[email protected]",
"homepage": "http://tnyholm.se/"
}
],
"description": "Lightweight HTTP client",
"homepage": "https://github.com/kriswallsmith/Buzz",
"keywords": [
"curl",
"http client"
],
"time": "2019-02-14T07:20:15+00:00"
},
{
"name": "mailgun/mailgun-php",
"version": "2.8.1",
"source": {
"type": "git",
"url": "https://github.com/mailgun/mailgun-php.git",
"reference": "4af0346851914ae0d9a58bf9ddf17eb48f6498c8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mailgun/mailgun-php/zipball/4af0346851914ae0d9a58bf9ddf17eb48f6498c8",
"reference": "4af0346851914ae0d9a58bf9ddf17eb48f6498c8",
"shasum": ""
},
"require": {
"php": "^5.5 || ^7.0",
"php-http/client-common": "^1.1",
"php-http/discovery": "^1.0",
"php-http/httplug": "^1.0 || ^2.0",
"php-http/message": "^1.0",
"php-http/multipart-stream-builder": "^1.0",
"webmozart/assert": "^1.2"
},
"require-dev": {
"guzzlehttp/psr7": "^1.4",
"nyholm/nsa": "^1.1",
"php-http/guzzle6-adapter": "^1.0",
"phpunit/phpunit": "~4.8"
},
"suggest": {
"guzzlehttp/psr7": "PSR-7 message implementation that also provides common utility methods",
"php-http/curl-client": "cURL client for PHP-HTTP"
},
"type": "library",
"autoload": {
"psr-0": {
"Mailgun": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Travis Swientek",
"email": "[email protected]"
}
],
"description": "The Mailgun SDK provides methods for all API functions.",
"time": "2019-02-02T07:14:32+00:00"
},
{
"name": "nyholm/psr7",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/Nyholm/psr7.git",
"reference": "701fe7ea8c12c07b985b156d589134d328160cf7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Nyholm/psr7/zipball/701fe7ea8c12c07b985b156d589134d328160cf7",
"reference": "701fe7ea8c12c07b985b156d589134d328160cf7",
"shasum": ""
},
"require": {
"php": "^7.1",
"php-http/message-factory": "^1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0"
},
"provide": {
"psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"http-interop/http-factory-tests": "dev-master",
"php-http/psr7-integration-tests": "dev-master",
"phpunit/phpunit": "^7.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Nyholm\\Psr7\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tobias Nyholm",
"email": "[email protected]"
},
{
"name": "Martijn van der Ven",
"email": "[email protected]"
}
],
"description": "A fast PHP7 implementation of PSR-7",
"homepage": "http://tnyholm.se",
"keywords": [
"psr-17",
"psr-7"
],
"time": "2019-02-16T17:20:43+00:00"
},
{
"name": "php-http/client-common",
"version": "1.9.1",
"source": {
"type": "git",
"url": "https://github.com/php-http/client-common.git",
"reference": "0e156a12cc3e46f590c73bf57592a2252fc3dc48"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/client-common/zipball/0e156a12cc3e46f590c73bf57592a2252fc3dc48",
"reference": "0e156a12cc3e46f590c73bf57592a2252fc3dc48",
"shasum": ""
},
"require": {
"php": "^5.4 || ^7.0",
"php-http/httplug": "^1.1",
"php-http/message": "^1.6",
"php-http/message-factory": "^1.0",
"symfony/options-resolver": "^2.6 || ^3.0 || ^4.0"
},
"require-dev": {
"guzzlehttp/psr7": "^1.4",
"phpspec/phpspec": "^2.5 || ^3.4 || ^4.2"
},
"suggest": {
"php-http/cache-plugin": "PSR-6 Cache plugin",
"php-http/logger-plugin": "PSR-3 Logger plugin",
"php-http/stopwatch-plugin": "Symfony Stopwatch plugin"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9.x-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Client\\Common\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "[email protected]"
}
],
"description": "Common HTTP Client implementations and tools for HTTPlug",
"homepage": "http://httplug.io",
"keywords": [
"client",
"common",
"http",
"httplug"
],
"time": "2019-02-02T07:03:15+00:00"
},
{
"name": "php-http/discovery",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/php-http/discovery.git",
"reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/discovery/zipball/684855f2c2e9d0a61868b8f8d6bd0295c8a4b651",
"reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651",
"shasum": ""
},
"require": {
"php": "^5.5 || ^7.0"
},
"conflict": {
"nyholm/psr7": "<1.0"
},
"require-dev": {
"php-http/httplug": "^1.0 || ^2.0",
"php-http/message-factory": "^1.0",
"phpspec/phpspec": "^2.4",
"puli/composer-plugin": "1.0.0-beta10"
},
"suggest": {
"php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories",
"puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.5-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Discovery\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "[email protected]"
}
],
"description": "Finds installed HTTPlug implementations and PSR-7 message factories",
"homepage": "http://php-http.org",
"keywords": [
"adapter",
"client",
"discovery",
"factory",
"http",
"message",
"psr7"
],
"time": "2019-02-23T07:42:53+00:00"
},
{
"name": "php-http/httplug",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/httplug.git",
"reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018",
"reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018",
"shasum": ""
},
"require": {
"php": ">=5.4",
"php-http/promise": "^1.0",
"psr/http-message": "^1.0"
},
"require-dev": {
"henrikbjorn/phpspec-code-coverage": "^1.0",
"phpspec/phpspec": "^2.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "[email protected]"
},
{
"name": "Márk Sági-Kazár",
"email": "[email protected]"
}
],
"description": "HTTPlug, the HTTP client abstraction for PHP",
"homepage": "http://httplug.io",
"keywords": [
"client",
"http"
],
"time": "2016-08-31T08:30:17+00:00"
},
{
"name": "php-http/message",
"version": "1.7.2",
"source": {
"type": "git",
"url": "https://github.com/php-http/message.git",
"reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1",
"reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1",
"shasum": ""
},
"require": {
"clue/stream-filter": "^1.4",
"php": "^5.4 || ^7.0",
"php-http/message-factory": "^1.0.2",
"psr/http-message": "^1.0"
},
"provide": {
"php-http/message-factory-implementation": "1.0"
},
"require-dev": {
"akeneo/phpspec-skip-example-extension": "^1.0",
"coduo/phpspec-data-provider-extension": "^1.0",
"ext-zlib": "*",
"guzzlehttp/psr7": "^1.0",
"henrikbjorn/phpspec-code-coverage": "^1.0",
"phpspec/phpspec": "^2.4",
"slim/slim": "^3.0",
"zendframework/zend-diactoros": "^1.0"
},
"suggest": {
"ext-zlib": "Used with compressor/decompressor streams",
"guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
"slim/slim": "Used with Slim Framework PSR-7 implementation",
"zendframework/zend-diactoros": "Used with Diactoros Factories"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Message\\": "src/"
},
"files": [
"src/filters.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "[email protected]"
}
],
"description": "HTTP Message related tools",
"homepage": "http://php-http.org",
"keywords": [
"http",
"message",
"psr-7"
],
"time": "2018-11-01T09:32:41+00:00"
},
{
"name": "php-http/message-factory",
"version": "v1.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-http/message-factory.git",
"reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
"reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
"shasum": ""
},
"require": {
"php": ">=5.4",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "[email protected]"
}
],
"description": "Factory interfaces for PSR-7 HTTP Message",
"homepage": "http://php-http.org",
"keywords": [
"factory",
"http",
"message",
"stream",
"uri"
],
"time": "2015-12-19T14:08:53+00:00"
},
{
"name": "php-http/multipart-stream-builder",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/multipart-stream-builder.git",
"reference": "1fa3c623fc813a43b39494b2a1612174e36e0fb0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/1fa3c623fc813a43b39494b2a1612174e36e0fb0",
"reference": "1fa3c623fc813a43b39494b2a1612174e36e0fb0",
"shasum": ""
},
"require": {
"php": "^5.5 || ^7.0",
"php-http/discovery": "^1.0",
"php-http/message-factory": "^1.0.2",
"psr/http-message": "^1.0"
},
"require-dev": {
"php-http/message": "^1.5",
"phpunit/phpunit": "^4.8 || ^5.4",
"zendframework/zend-diactoros": "^1.3.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.3-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Message\\MultipartStream\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tobias Nyholm",
"email": "[email protected]"
}
],
"description": "A builder class that help you create a multipart stream",
"homepage": "http://php-http.org",
"keywords": [
"factory",
"http",
"message",
"multipart stream",
"stream"
],
"time": "2017-05-21T17:45:25+00:00"
},
{
"name": "php-http/promise",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/promise.git",
"reference": "dc494cdc9d7160b9a09bd5573272195242ce7980"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980",
"reference": "dc494cdc9d7160b9a09bd5573272195242ce7980",
"shasum": ""
},
"require-dev": {
"henrikbjorn/phpspec-code-coverage": "^1.0",
"phpspec/phpspec": "^2.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Promise\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "[email protected]"
},
{
"name": "Joel Wurtz",
"email": "[email protected]"
}
],
"description": "Promise used for asynchronous HTTP requests",
"homepage": "http://httplug.io",
"keywords": [
"promise"
],
"time": "2016-01-26T13:27:02+00:00"
},
{
"name": "psr/http-client",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "496a823ef742b632934724bf769560c2a5c7c44e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e",
"reference": "496a823ef742b632934724bf769560c2a5c7c44e",
"shasum": ""
},
"require": {
"php": "^7.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
"homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
"http-client",
"psr",
"psr-18"
],
"time": "2018-10-30T23:29:13+00:00"
},
{
"name": "psr/http-factory",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
"reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/378bfe27931ecc54ff824a20d6f6bfc303bbd04c",
"reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c",
"shasum": ""
},
"require": {
"php": ">=7.0.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
"message",
"psr",
"psr-17",
"psr-7",
"request",
"response"
],
"time": "2018-07-30T21:54:04+00:00"
},
{
"name": "psr/http-message",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "symfony/options-resolver",
"version": "v4.2.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
"reference": "3896e5a7d06fd15fa4947694c8dcdd371ff147d1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/3896e5a7d06fd15fa4947694c8dcdd371ff147d1",
"reference": "3896e5a7d06fd15fa4947694c8dcdd371ff147d1",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.2-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "[email protected]"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony OptionsResolver Component",
"homepage": "https://symfony.com",
"keywords": [
"config",
"configuration",
"options"
],
"time": "2019-02-23T15:17:42+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
"reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Gert de Pagter",
"email": "[email protected]"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2018-08-06T14:22:27+00:00"
},
{
"name": "webmozart/assert",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Bernhard Schussek",
"email": "[email protected]"
}
],
"description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
"assert",
"check",
"validate"
],
"time": "2018-12-25T11:19:39+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

+ 0
- 7
composer/vendor/autoload.php View File

@ -1,7 +0,0 @@
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit858870eb722e6c629b9e4dd337753d2e::getLoader();

+ 0
- 26
composer/vendor/clue/stream-filter/.travis.yml View File

@ -1,26 +0,0 @@
language: php
php:
# - 5.3 # requires old distro, see below
- 5.4
- 5.5
- 5.6
- 7.0
- 7.1
- hhvm # ignore errors, see below
# lock distro so new future defaults will not break the build
dist: trusty
matrix:
include:
- php: 5.3
dist: precise
allow_failures:
- php: hhvm
install:
- composer install --no-interaction
script:
- vendor/bin/phpunit --coverage-text

+ 0
- 54
composer/vendor/clue/stream-filter/CHANGELOG.md View File

@ -1,54 +0,0 @@
# Changelog
## 1.4.0 (2017-08-18)
* Feature / Fix: The `fun()` function does not pass filter parameter `null`
to underlying `stream_filter_append()` by default
(#15 by @Nyholm)
Certain filters (such as `convert.quoted-printable-encode`) do not accept
a filter parameter at all. If no explicit filter parameter is given, we no
longer pass a default `null` value.
```php
$encode = Filter\fun('convert.quoted-printable-encode');
assert('t=C3=A4st' === $encode('täst'));
```
* Add examples and improve documentation
(#13 and #20 by @clue and #18 by @Nyholm)
* Improve test suite by adding PHPUnit to require-dev,
fix HHVM build for now again and ignore future HHVM build errors,
lock Travis distro so new future defaults will not break the build
and test on PHP 7.1
(#12, #14 and #19 by @clue and #16 by @Nyholm)
## 1.3.0 (2015-11-08)
* Feature: Support accessing built-in filters as callbacks
(#5 by @clue)
```php
$fun = Filter\fun('zlib.deflate');
$ret = $fun('hello') . $fun('world') . $fun();
assert('helloworld' === gzinflate($ret));
```
## 1.2.0 (2015-10-23)
* Feature: Invoke close event when closing filter (flush buffer)
(#9 by @clue)
## 1.1.0 (2015-10-22)
* Feature: Abort filter operation when catching an Exception
(#10 by @clue)
* Feature: Additional safeguards to prevent filter state corruption
(#7 by @clue)
## 1.0.0 (2015-10-18)
* First tagged release

+ 0
- 21
composer/vendor/clue/stream-filter/LICENSE View File

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2015 Christian Lück
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

+ 0
- 297
composer/vendor/clue/stream-filter/README.md View File

@ -1,297 +0,0 @@
# clue/stream-filter [![Build Status](https://travis-ci.org/clue/php-stream-filter.svg?branch=master)](https://travis-ci.org/clue/php-stream-filter)
A simple and modern approach to stream filtering in PHP
**Table of contents**
* [Why?](#why)
* [Usage](#usage)
* [append()](#append)
* [prepend()](#prepend)
* [fun()](#fun)
* [remove()](#remove)
* [Install](#install)
* [Tests](#tests)
* [License](#license)
## Why?
PHP's stream filtering system is great!
It offers very powerful stream filtering options and comes with a useful set of built-in filters.
These filters can be used to easily and efficiently perform various transformations on-the-fly, such as:
* read from a gzip'ed input file,
* transcode from ISO-8859-1 (Latin1) to UTF-8,
* write to a bzip output file
* and much more.
But let's face it:
Its API is [*difficult to work with*](http://php.net/manual/en/php-user-filter.filter.php)
and its documentation is [*subpar*](http://stackoverflow.com/questions/27103269/what-is-a-bucket-brigade).
This combined means its powerful features are often neglected.
This project aims to make these features more accessible to a broader audience.
* **Lightweight, SOLID design** -
Provides a thin abstraction that is [*just good enough*](http://en.wikipedia.org/wiki/Principle_of_good_enough)
and does not get in your way.
Custom filters require trivial effort.
* **Good test coverage** -
Comes with an automated tests suite and is regularly tested in the *real world*
## Usage
This lightweight library consists only of a few simple functions.
All functions reside under the `Clue\StreamFilter` namespace.
The below examples assume you use an import statement similar to this:
```php
use Clue\StreamFilter as Filter;
Filter\append(…);
```
Alternatively, you can also refer to them with their fully-qualified name:
```php
\Clue\StreamFilter\append(…);
```
### append()
The `append($stream, $callback, $read_write = STREAM_FILTER_ALL)` function can be used to
append a filter callback to the given stream.
Each stream can have a list of filters attached.
This function appends a filter to the end of this list.
This function returns a filter resource which can be passed to [`remove()`](#remove).
If the given filter can not be added, it throws an `Exception`.
The `$stream` can be any valid stream resource, such as:
```php
$stream = fopen('demo.txt', 'w+');
```
The `$callback` should be a valid callable function which accepts an individual chunk of data
and should return the updated chunk:
```php
$filter = Filter\append($stream, function ($chunk) {
// will be called each time you read or write a $chunk to/from the stream
return $chunk;
});
```
As such, you can also use native PHP functions or any other `callable`:
```php
Filter\append($stream, 'strtoupper');
// will write "HELLO" to the underlying stream
fwrite($stream, 'hello');
```
If the `$callback` accepts invocation without parameters, then this signature
will be invoked once ending (flushing) the filter:
```php
Filter\append($stream, function ($chunk = null) {
if ($chunk === null) {
// will be called once ending the filter
return 'end';
}
// will be called each time you read or write a $chunk to/from the stream
return $chunk;
});
fclose($stream);
```
> Note: Legacy PHP versions (PHP < 5.4) do not support passing additional data
from the end signal handler if the stream is being closed.
If your callback throws an `Exception`, then the filter process will be aborted.
In order to play nice with PHP's stream handling, the `Exception` will be
transformed to a PHP warning instead:
```php
Filter\append($stream, function ($chunk) {
throw new \RuntimeException('Unexpected chunk');
});
// raises an E_USER_WARNING with "Error invoking filter: Unexpected chunk"
fwrite($stream, 'hello');
```
The optional `$read_write` parameter can be used to only invoke the `$callback` when either writing to the stream or only when reading from the stream:
```php
Filter\append($stream, function ($chunk) {
// will be called each time you write to the stream
return $chunk;
}, STREAM_FILTER_WRITE);
Filter\append($stream, function ($chunk) {
// will be called each time you read from the stream
return $chunk;
}, STREAM_FILTER_READ);
```
> Note that once a filter has been added to stream, the stream can no longer be passed to
> [`stream_select()`](http://php.net/manual/en/function.stream-select.php)
> (and family).
>
> > Warning: stream_select(): cannot cast a filtered stream on this system in {file} on line {line}
>
> This is due to limitations of PHP's stream filter support, as it can no longer reliably
> tell when the underlying stream resource is actually ready.
> As an alternative, consider calling `stream_select()` on the unfiltered stream and
> then pass the unfiltered data through the [`fun()`](#fun) function.
### prepend()
The `prepend($stream, $callback, $read_write = STREAM_FILTER_ALL)` function can be used to
prepend a filter callback to the given stream.
Each stream can have a list of filters attached.
This function prepends a filter to the start of this list.
This function returns a filter resource which can be passed to [`remove()`](#remove).
If the given filter can not be added, it throws an `Exception`.
```php
$filter = Filter\prepend($stream, function ($chunk) {
// will be called each time you read or write a $chunk to/from the stream
return $chunk;
});
```
Except for the position in the list of filters, this function behaves exactly
like the [`append()`](#append) function.
For more details about its behavior, see also the [`append()`](#append) function.
### fun()
The `fun($filter, $parameters = null)` function can be used to
create a filter function which uses the given built-in `$filter`.
PHP comes with a useful set of [built-in filters](http://php.net/manual/en/filters.php).
Using `fun()` makes accessing these as easy as passing an input string to filter
and getting the filtered output string.
```php
$fun = Filter\fun('string.rot13');
assert('grfg' === $fun('test'));
assert('test' === $fun($fun('test'));
```
Please note that not all filter functions may be available depending on installed
PHP extensions and the PHP version in use.
In particular, [HHVM](http://hhvm.com/) may not offer the same filter functions
or parameters as Zend PHP.
Accessing an unknown filter function will result in a `RuntimeException`:
```php
Filter\fun('unknown'); // throws RuntimeException
```
Some filters may accept or require additional filter parameters – most
filters do not require filter parameters.
If given, the optional `$parameters` argument will be passed to the
underlying filter handler as-is.
In particular, note how *not passing* this parameter at all differs from
explicitly passing a `null` value (which many filters do not accept).
Please refer to the individual filter definition for more details.
For example, the `string.strip_tags` filter can be invoked like this:
```php
$fun = Filter\fun('string.strip_tags', '<a><b>');
$ret = $fun('<b>h<br>i</b>');
assert('<b>hi</b>' === $ret);
```
Under the hood, this function allocates a temporary memory stream, so it's
recommended to clean up the filter function after use.
Also, some filter functions (in particular the
[zlib compression filters](http://php.net/manual/en/filters.compression.php))
may use internal buffers and may emit a final data chunk on close.
The filter function can be closed by invoking without any arguments:
```php
$fun = Filter\fun('zlib.deflate');
$ret = $fun('hello') . $fun('world') . $fun();
assert('helloworld' === gzinflate($ret));
```
The filter function must not be used anymore after it has been closed.
Doing so will result in a `RuntimeException`:
```php
$fun = Filter\fun('string.rot13');
$fun();
$fun('test'); // throws RuntimeException
```
> Note: If you're using the zlib compression filters, then you should be wary
about engine inconsistencies between different PHP versions and HHVM.
These inconsistencies exist in the underlying PHP engines and there's little we
can do about this in this library.
[Our test suite](tests/) contains several test cases that exhibit these issues.
If you feel some test case is missing or outdated, we're happy to accept PRs! :)
### remove()
The `remove($filter)` function can be used to
remove a filter previously added via [`append()`](#append) or [`prepend()`](#prepend).
```php
$filter = Filter\append($stream, function () {
// …
});
Filter\remove($filter);
```
## Install
The recommended way to install this library is [through Composer](https://getcomposer.org).
[New to Composer?](https://getcomposer.org/doc/00-intro.md)
This will install the latest supported version:
```bash
$ composer require clue/stream-filter:^1.4
```
See also the [CHANGELOG](CHANGELOG.md) for details about version upgrades.
This project aims to run on any platform and thus does not require any PHP
extensions and supports running on legacy PHP 5.3 through current PHP 7+ and
HHVM.
It's *highly recommended to use PHP 7+* for this project.
Older PHP versions may suffer from a number of inconsistencies documented above.
## Tests
To run the test suite, you first need to clone this repo and then install all
dependencies [through Composer](http://getcomposer.org):
```bash
$ composer install
```
To run the test suite, go to the project root and run:
```bash
$ php vendor/bin/phpunit
```
## License
MIT

+ 0
- 23
composer/vendor/clue/stream-filter/composer.json View File

@ -1,23 +0,0 @@
{
"name": "clue/stream-filter",
"description": "A simple and modern approach to stream filtering in PHP",
"keywords": ["stream", "callback", "filter", "php_user_filter", "stream_filter_append", "stream_filter_register", "bucket brigade"],
"homepage": "https://github.com/clue/php-stream-filter",
"license": "MIT",
"authors": [
{
"name": "Christian Lück",
"email": "[email protected]"
}
],
"require": {
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "^5.0 || ^4.8"
},
"autoload": {
"psr-4": { "Clue\\StreamFilter\\": "src/" },
"files": [ "src/functions.php" ]
}
}

+ 0
- 29
composer/vendor/clue/stream-filter/examples/base64_decode.php View File

@ -1,29 +0,0 @@
<?php
// $ echo test | php examples/base64_encode.php | php examples/base64_decode.php
require __DIR__ . '/../vendor/autoload.php';
// decoding requires buffering in chunks of 4 bytes each
$buffer = '';
Clue\StreamFilter\append(STDIN, function ($chunk = null) use (&$buffer) {
if ($chunk === null) {
if (strlen($buffer) % 4 !== 0) {
throw new \UnexpectedValueException('Invalid length');
}
$chunk = $buffer;
} else {
$buffer .= $chunk;
$len = strlen($buffer) - (strlen($buffer) % 4);
$chunk = (string)substr($buffer, 0, $len);
$buffer = (string)substr($buffer, $len);
}
$ret = base64_decode($chunk, true);
if ($ret === false) {
throw new \UnexpectedValueException('Not a valid base64 encoded chunk');
}
return $ret;
}, STREAM_FILTER_READ);
fpassthru(STDIN);

+ 0
- 21
composer/vendor/clue/stream-filter/examples/base64_encode.php View File

@ -1,21 +0,0 @@
<?php
// $ echo test | php examples/base64_encode.php | base64 --decode
require __DIR__ . '/../vendor/autoload.php';
// encoding requires buffering in chunks of 3 bytes each
$buffer = '';
Clue\StreamFilter\append(STDIN, function ($chunk = null) use (&$buffer) {
if ($chunk === null) {
return base64_encode($buffer);
}
$buffer .= $chunk;
$len = strlen($buffer) - (strlen($buffer) % 3);
$chunk = substr($buffer, 0, $len);
$buffer = substr($buffer, $len);
return base64_encode($chunk);
}, STREAM_FILTER_READ);
fpassthru(STDIN);

+ 0
- 9
composer/vendor/clue/stream-filter/examples/uppercase.php View File

@ -1,9 +0,0 @@
<?php
// $ echo test | php examples/uppercase.php
require __DIR__ . '/../vendor/autoload.php';
Clue\StreamFilter\append(STDIN, 'strtoupper');
fpassthru(STDIN);

+ 0
- 19
composer/vendor/clue/stream-filter/phpunit.xml.dist View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
>
<testsuites>
<testsuite>
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>./src/</directory>
</whitelist>
</filter>
</phpunit>

+ 0
- 120
composer/vendor/clue/stream-filter/src/CallbackFilter.php View File

@ -1,120 +0,0 @@
<?php
namespace Clue\StreamFilter;
use php_user_filter;
use InvalidArgumentException;
use ReflectionFunction;
use Exception;
/**
*
* @internal
* @see append()
* @see prepend()
*/
class CallbackFilter extends php_user_filter
{
private $callback;
private $closed = true;
private $supportsClose = false;
public function onCreate()
{
$this->closed = false;
if (!is_callable($this->params)) {
throw new InvalidArgumentException('No valid callback parameter given to stream_filter_(append|prepend)');
}
$this->callback = $this->params;
// callback supports end event if it accepts invocation without arguments
$ref = new ReflectionFunction($this->callback);
$this->supportsClose = ($ref->getNumberOfRequiredParameters() === 0);
return true;
}
public function onClose()
{
$this->closed = true;
// callback supports closing and is not already closed
if ($this->supportsClose) {
$this->supportsClose = false;
// invoke without argument to signal end and discard resulting buffer
try {
call_user_func($this->callback);
} catch (Exception $ignored) {
// this might be called during engine shutdown, so it's not safe
// to raise any errors or exceptions here
// trigger_error('Error closing filter: ' . $ignored->getMessage(), E_USER_WARNING);
}
}
$this->callback = null;
}
public function filter($in, $out, &$consumed, $closing)
{
// concatenate whole buffer from input brigade
$data = '';
while ($bucket = stream_bucket_make_writeable($in)) {
$consumed += $bucket->datalen;
$data .= $bucket->data;
}
// skip processing callback that already ended
if ($this->closed) {
return PSFS_FEED_ME;
}
// only invoke filter function if buffer is not empty
// this may skip flushing a closing filter
if ($data !== '') {
try {
$data = call_user_func($this->callback, $data);
} catch (Exception $e) {
// exception should mark filter as closed
$this->onClose();
trigger_error('Error invoking filter: ' . $e->getMessage(), E_USER_WARNING);
return PSFS_ERR_FATAL;
}
}
// mark filter as closed after processing closing chunk
if ($closing) {
$this->closed = true;
// callback supports closing and is not already closed
if ($this->supportsClose) {
$this->supportsClose = false;
// invoke without argument to signal end and append resulting buffer
try {
$data .= call_user_func($this->callback);
} catch (Exception $e) {
trigger_error('Error ending filter: ' . $e->getMessage(), E_USER_WARNING);
return PSFS_ERR_FATAL;
}
}
}
if ($data !== '') {
// create a new bucket for writing the resulting buffer to the output brigade
// reusing an existing bucket turned out to be bugged in some environments (ancient PHP versions and HHVM)
$bucket = @stream_bucket_new($this->stream, $data);
// legacy PHP versions (PHP < 5.4) do not support passing data from the event signal handler
// because closing the stream invalidates the stream and its stream bucket brigade before
// invoking the filter close handler.
if ($bucket !== false) {
stream_bucket_append($out, $bucket);
}
}
return PSFS_PASS_ON;
}
}

+ 0
- 146
composer/vendor/clue/stream-filter/src/functions.php View File

@ -1,146 +0,0 @@
<?php
namespace Clue\StreamFilter;
use RuntimeException;
/**
* append a callback filter to the given stream
*
* @param resource $stream