Drupal Planet

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 3 hours 35 min ago

a-fro.com: Multiple MailChimp Accounts with Drupal

Tue, 12/20/2016 - 11:33am
span property=schema:name data-quickedit-field-id=node/9/title/en/rss class=field field--name-title field--type-string field--label-hiddenMultiple MailChimp Accounts with Drupal/span div property=schema:text data-quickedit-field-id=node/9/body/en/rss class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempA couple of months ago, a href=https://github.com/thinkshout/team ThinkShout/a quietly introduced a feature to the a href=https://www.drupal.org/project/mailchimpMailChimp module/a that some of us have really wanted for a long time—the ability to support multiple MailChimp accounts from a single Drupal installation. This happened, in part, after I reached out to them on behalf of the stakeholders at Cornell University's ILR School, where I work./p/div span data-quickedit-field-id=node/9/uid/en/rss rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddenspan lang= about=/user/2 typeof=schema:Person property=schema:name datatype=aaron/span/span span property=schema:dateCreated content=2016-12-20T17:33:14+00:00 data-quickedit-field-id=node/9/created/en/rss class=field field--name-created field--type-created field--label-hiddenTue, 12/20/2016 - 11:33/span
Categories: Drupal Feeds

Mediacurrent: Migrating Content References in Drupal 8

Tue, 12/20/2016 - 11:18am
img typeof=foaf:Image src=https://www.mediacurrent.com/sites/default/files/styles/thumb_blog_spotlight/public/drupal-bits-bytes.png?itok=RnuV7DHd width=200 height=152 alt=Drupal bits and bytes title=Drupal bits and bytes / h3 dir=ltrspanAn Introduction to Stubs/span/h3 p dir=ltrspanA common need in our projects is the ability to migrate data that references other content. This can be in the form of taxonomy hierarchy (i.e. parent gt; child relationship) or content that is attached such as images, videos, or other nodes that exist as standalone entities in the system./span/p
Categories: Drupal Feeds

CU Boulder - Webcentral: Adding Performance Metrics to Your Behat Test Runs

Tue, 12/20/2016 - 9:00am
div class=field field-name-field-image field-type-image field-label-hidden img class=image-medium src=http://www.colorado.edu/webcentral/sites/default/files/styles/medium/public/article-image/screen_shot_2016-12-15_at_6.17.48_pm_0.png?itok=lN2C5JUH width=600 height=357 alt=Performance Log / /div div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpAdding behaviouralnbsp;testing to your project can do wonders for catching regressions, and even if you don't start out your development writing tests in true Behavioralnbsp;Driven Developmentnbsp;style, you'll greatly benefit from having this type of test coverage.nbsp;/p pWithin my team, we use an external service to run the tests automatically when pull requests are made to our development branch. The results that come back are immensely helpful when looking over a pull request and no code is merged into the codebase until the test run is green. We have caught several bugs and regressions using this method, but we'd like to add more test coverage to better catch future regressions.nbsp;/p h2Additional Feedback/h2 pWhile developing and finessing the testing stack, we started thinking about what other feedback we could gain from our tests runs. After all, we build a whole site to test out site creation from our profile and then make requests to a bunch of pages on the built test site./p pWhy not try and get some performance metrics from the test run? You might immediately be concerned that adding code and database queries to a test run might negatively impact the test run, but we haven't seen an increase in the time of the test runs or any failing tests related to added performance-related code. You might also question turning on modules that won't be on in production while you're trying to test sites as if they are in production. That concern is a very legitimate one, but in my experience, you'll run into something you have to change for setup on a hosted test runner service. We weren't concerned with either potential issue.nbsp;/p h2Drupalnbsp;Modules/h2 pAfter we had come up with the idea of adding performance metrics to our test runs and weighed the potential drawbacks, we needed to write some code to complete our fantastic and awesome idea. Luckily in the Drupal world, there's usually a module for that.nbsp;/p pWe decided to use the a href=https://www.drupal.org/project/performancePerformance Logging and Monitoring module/a for our use case. The module provides performance statistics logging for a site, such as page generation times, and memory usage, for each page load. That description is exactly what we werenbsp;looking for. Contrib for the win!/p h2Module Setup/h2 pOnce you enable the module, you'll have to first grant yourself the role to administer the performancenbsp;loggingnbsp;before you can do anything. Not having this permission on my developer role threw me for a loop for a couple of minutes, so don't let it get you too!/p pThe module's configuration page lies under the Development subsection of the Admin Configurationnbsp;menu. You can choose from summary, detailed, and/or query logging as well as exclude certain paths from logging and set an access threshold for displaying only the most accessed pages in your summary report./p pWe have a test setup where we change a few settings from how our production sites are configured. In a testing core module, we list the performance module as a dependency and setup some initial performance logging variables for the test run./p pre code class=hljs php// Setting performance logging variables. variable_set('performance_detail', 1); variable_set('performance_nodrush', 1); variable_set('performance_threshold_accesses', '2'); variable_set('performance_query', 1); variable_set('performance_summary', 1);/code/pre h2Performance Logging...Caused Performance Problems/h2 pInitially, I thought I had picked a good configuration for what we wanted to get out of the report. The problem was that our test runs were no longer passing on the feature branch I had put the code in. The tests were erroring on memory exhaustion when trying to save nodes or beans.nbsp;/p pWe started to think something we added to the codebase had caused a regression and that this coding error might eat up all the memory on our production servers. Needless to say, we focused a lot on our memory exhaustion error.nbsp;/p pI had a face palm moment when I realised that the databasenbsp;query logging was causing the issue. It was even written on the configuration page, Enabling this will incurr some memory overhead as query times and the actual query strings are cached in memory as arrays for each page, hence skewing the overall page memory reported. But I didn't notice the memory warning while initially setting up the module./p pre code class=hljs php // Setting performance logging variables. variable_set('performance_detail', 1); variable_set('performance_nodrush', 1); variable_set('performance_threshold_accesses', '2'); // Don't check for summary detail since not using in report. // variable_set('performance_summary', 1); // Don't add query logging since it adds memory overhead. // variable_set('performance_query', 1); /code /pre pOur variable sets on module install were modified to reflect the code above. Unfortunately, we had to axe the query performance due to our memory issue, and we also disabled the performance logging summary since that table is used to create a display for the module UI and wenbsp;were creating our own report and display./p h2Adding the Performance Logging to Our Travis CI Test Runs/h2 pNow that we could see the module logged the stats we wanted and what configuration we could use log performance and still allow the test runs to pass. Adding the logging setup to our Travis CI script was fairly straightforward. nbsp;/p pre code class=hljs php - drush si express express_profile_configure_form.express_core_version=cu_testing_core /code /pre pWe build our sites using a custom distribution profile, and to modify how our Drupal site is installed for the test run, we added a step in the Drupal installation phase for choosing which core module you want to use for site creation. We enable the testing core module to setup some variables just for the Travis test runs.nbsp;/p pre code class=hljs php // Turn on error reporting only for serious errors. // Warnings were causing dumb exceptions in Behat and the messages don't // interfere with the tests. error_reporting(E_ERROR | E_PARSE); /code /pre pOne important thing to note is that PHP warnings and notices end up causing Behat test runs to fail on Travis CI exiting with an error, non-zero, code. Because we know we have a lot of warnings and notices, hey nobody's perfect, we decided to turn off reporting and only enable for the most serious of PHP errors. Other than that, we mainly turned off things like Varnish and Memcache which are hard and resource intensive to test out on Travis./p h2Displaying the Results at the End of the Test Run/h2 pInstead of doing some fancy posting of our test results to an external URL, we decided to just print the logging after our verbose Behat test run output./p pre code class=hljs php # Run Behat tests. - ./bin/behat --config behat.yml --verbose # Output performance logging data. - drush scr profiles/express/tests/travis-ci/log-express-performance.php /code /pre pBehat simply installs a site, runs the test suite, and then we print our logging results out at the end of the Travis test run log. We decided to print out four data points for our display output.nbsp;/p pre code class=hljs php print_r('Path: ' . $path['path'] . \n); print_r('Accessed: ' . $count . \n); print_r('Memory Consumption: ' . $memory_average . MB\n); print_r('Load Time: ' . $load_average . Milliseconds\n); /code /pre pWe limited our report to the top 15 pages by the number of requests. Our top three pages were the front page, the user dashboard, and the node/add form./p img alt=Performance Report src=http://www.colorado.edu/webcentral/sites/default/files/article-image/screen_shot_2016-12-15_at_6.17.48_pm_0.png / pnbsp;/p pThat about wraps it up. We do intend to add more data to our report and gain more insight into code performance by doing memory intensive things and adding Behat tests solely for performance logging issues. Visiting the Features page and reverting features are a good example of performance tests we could add./p pAlso, while having the performance metrics displayed at the end of the test run report is nice, you can't really get a quick sense of trends in the data unless you would manually add up all the reports. We use the ELK stack for displaying other logs, and we plan to POST data back to that instance for better trend monitoring in the future./p pI highly encourage you to try getting more feedback data from your automated test runs. While they made impact your test runs and add memory overhead, you can always use the reports for marking general trends over time even if the results aren't perfectly accurate. nbsp;/p /div/div/div Developer Blog
Categories: Drupal Feeds

OSTraining: Fixing Drupal 8 Xampp cURL error 60: SSL certificate

Tue, 12/20/2016 - 7:18am
pRecently, we wrote a href=https://www.ostraining.com/blog/drupal/drupal-xampp-windows/a guide on using Xampp with Drupal 8/a for local development./p pAfter reading the guide, one of our users asked, blockquoteHow do you fix the cURL 60 SSL error that I keep getting?/blockquote pThe cURL SSL 60 error occurs when you're trying to install Drupal module by copying the FTPnbsp;link from drupal.org into the Add modules screen./p p class=StepImageimg src=https://www.ostraining.com/images/drupal8/D8-xampp-windows-curl-60/1edited.png alt=1edited style=font-size: 1em; //p pThis error is caused by the default SSL certificate provided by Xampp.nbsp;/p
Categories: Drupal Feeds

ComputerMinds.co.uk: Commands I use when creating a patch for drupal.org

Tue, 12/20/2016 - 7:00am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-items id=md1div class=field-item even itemprop=articleBodypI have honed a selection of commands that I regularly use in the creation and application of patches. Here is a run-down of my most useful commands./p /div/div/div
Categories: Drupal Feeds

CTI Digital: WarChild new MMP site in Drupal launched

Tue, 12/20/2016 - 5:43am
div class=hs-featured-image-wrapper a href=https://www.ctidigital.com/blog/warchild-new-site-in-drupal title= class=hs-featured-image-link img src=https://www.ctidigital.com/hubfs/CTI_Clients/blog-header.jpg?t=1482239738714 alt=blog-header.jpg class=hs-featured-image style=width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0; /a /div pWar Child UK describes itself as “a small charity that protects children living in some of the world's most dangerous war zones”. Founded in 1993, the charity works with vulnerable children and communities in war torn areas; providing safe spaces, access to education, skills training and much more to ensure that children’s lives are not torn apart by war./p pspan style=font-weight: 400;War Child International has multiple offices all over the world, protecting, educating, and empowering marginalised children./span/p img src=http://track.hubspot.com/__ptq.gif?a=375563amp;k=14amp;r=https%3A%2F%2Fwww.ctidigital.com%2Fblog%2Fwarchild-new-site-in-drupalamp;bu=https%253A%252F%252Fwww.ctidigital.com%252Fblogamp;bvt=rss alt= width=1 height=1 style=min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important;
Categories: Drupal Feeds

Platform.sh: This week in new features - Build-time variables

Tue, 12/20/2016 - 5:00am
pAs we a href=https://platform.sh/2016/12/repeatable-deployments/wrote about recently/a, all of the inputs to an application running on Platform.sh are clearly defined, predictable, and with one exception entirely under your control as a user. We’re happy to announce that we’ve added one more input, and it’s also under user control: Project-level variables available at build time./p
Categories: Drupal Feeds

Lullabot: Building Views Query Plugins for Drupal 8, Part 1

Mon, 12/19/2016 - 7:58pm
div class=rich-textdiv class=rich-text__contentpThree years ago a href=https://www.lullabot.com/about/greg-dunlapGreg Dunlap/a wrote a a href=/articles/building-views-query-pluginsseries of articles/a about building Views query plugins in Drupal 7. A lot has changed since then. Drupal 8 has been out for a year now and Views is in core. I recently had an opportunity to write a Views query plugin for a Drupal 8 project, and it worked out surprisingly well. So, how has the process of implementing a Views query plugin changed? As in the original series, we#x2019;ll take a look at how you build one from scratch./p pThe original article series used Flickr as an example of a remote service you could expose to Views via a query plugin. The Flickr API module that was used does not have a Drupal 8 port, so I needed to port something for the series. We#x2019;re big Fitbit users at Lullabot, myself included, so I thought it might be fun to use the Fitbit API as an example of what can be done with Views query plugins. We#x2019;ll use the Fitbit API, exposed via a Views query plugin, to a href=http://drupal.org/project/fitbitbuild our own custom leader board for our Drupal site/a./p h2What#x2019;s a Views query plugin?/h2 pSince Views 3 in Drupal 7, you could write your own plugin to replace Views#x2019; built-in SQL-query engine. This means that you can make Views query against any kind of data source, using the same Views UI your site administrators are accustomed to. The most common use case is to create views that query a remote web service./p pThe big picture of how you write a Views query plugin hasn#x2019;t changed much. You#x2019;ll still go through the same steps as in Drupal 7, so we#x2019;ll follow the original article series and divide it into three parts:/p olliPlanning and modeling your data/li liCreating a basic query plugin/li liExposing configuration options and handling arguments and filters/li /ol pProbably the biggest change in writing Views query plugins in Drupal 8 is the use of Drupal 8#x2019;s plugin system. It#x2019;s helpful to have a general understanding of Drupal 8 plugins as we#x2019;ll skip over some of those details. The a href=https://drupalize.me/series/module-development-guideDrupalize.me Drupal 8 Module Development Guide/a is an excellent source for general information about Drupal 8 plugins./p pLet#x2019;s do it!/p h2Modeling your plugin data/h2 pOne of the first things you need to do before coding your plugin is sit down and think about how the data being returned from your API maps to the data that Views expects. There are a lot of moving parts when writing a Views query plugin, so it#x2019;s good to resist the temptation to dive right into code. Letapos;s first#xA0;figure out the nature of the remote API and what we need to do to transform the data into a#xA0;Views-friendly format./p pViews is designed to represent tabular data, the basis of which is a row of fields. Many API endpoints do not follow this model. For example, a single request may contain a lot of nested data. The query plugin I wrote on a recent project wrapped a Search endpoint that returned faculty member search results. The results contained arrays of research interests and degrees. It was easy enough to flatten these arrays into comma separated lists and present to Views a single field, but it#x2019;s not difficult to imagine more complex data. Perhaps the results should include details about the Department the faculty member belongs to. Complex nested data may necessitate a Views relationship plugin./p pThe a href=https://dev.fitbit.com/docs/Fitbit API/a exposes a number of endpoints. We#x2019;ll first hone in on the a href=https://dev.fitbit.com/docs/user/User endpoint/a. It#x2019;s pretty straightforward in that it returns nearly tabular data. Issue a request and you get back a list of key-value pairs. It#x2019;s also got just enough data in the response to put together a simple leader board based on users#x2019; average daily steps. Here is an example of what it returns (clipped for brevity):/p div class=codepre code{ quot;span class=code__attributeuser/spanquot;: span class=code__value{ quot;span class=code__attributeage/spanquot;: span class=code__valuespan class=code__number32/span/span, quot;span class=code__attributeavatar/spanquot;: span class=code__valuespan class=code__stringquot;https://d6y8zfzc2qfsl.cloudfront.net/B8395E1F-346C-1E31-E74C-0AE2512A38BD_profile_100_square.jpgquot;/span/span, quot;span class=code__attributeavatar150/spanquot;: span class=code__valuespan class=code__stringquot;https://d6y8zfzc2qfsl.cloudfront.net/B8395E1F-346C-1E31-E74C-0AE2512A38BD_profile_150_square.jpgquot;/span/span, quot;span class=code__attributeaverageDailySteps/spanquot;: span class=code__valuespan class=code__number7334/span/span, quot;span class=code__attributedisplayName/spanquot;: span class=code__valuespan class=code__stringquot;Matthew O.quot;/span/span, quot;span class=code__attributetopBadges/spanquot;: span class=code__value[ { quot;span class=code__attributeimage100px/spanquot;: span class=code__valuespan class=code__stringquot;https://static0.fitbit.com/images/badges_new/100px/badge_daily_steps30k.pngquot;/span/span, quot;span class=code__attributename/spanquot;: span class=code__valuespan class=code__stringquot;Trail Shoe (30,000 steps in a day)quot;/span/span, }, { quot;span class=code__attributeimage100px/spanquot;: span class=code__valuespan class=code__stringquot;https://static0.fitbit.com/images/badges_new/100px/badge_lifetime_miles1997.pngquot;/span/span, quot;span class=code__attributename/spanquot;: span class=code__valuespan class=code__stringquot;India (3,213 lifetime kilometers)quot;/span/span, } ]/span, } /span}/code/pre/div pThere are a few values with nested data, in particular codetopBadges/code, but we#x2019;ll see that it#x2019;s not that difficult to mange these. From a Views standpoint, we want to expose each of these pieces of data as a field./p pThere is a wrinkle when it comes to the Fitibit API and our ability to translate it for Views, perhaps you#x2019;ve already noticed it. Each response contains only a single user. The API does not allow for multiple users#x2019; data to be returned by#xA0;a single request. This is because the data can be very personal; values like gender, height, and weight are included in some responses, but only with the individual userapos;s explicit permission. Fitbit#x2019;s API follows the OAuth 2.0 Authorization Code Grant. Under the OAuth 2.0 Authorization Code Grant scheme, your application, in this case our Drupal module, has to be registered with Fitbit. Then, in order to query the API on behalf of users, each user must grant access to the application. When a user grants access, they have the option of selectively granting a href=https://dev.fitbit.com/docs/oauth2/#scopescope/a, for example they can choose to share activity data, such as steps, distance, calories burned, and active minutes but choose to omit profile data, which includes values like height and weight. Authentication is outside the scope of this article#xA0;but take a look at the a href=https://www.drupal.org/project/fitbitFitbit base module/a#xA0;if you#x2019;re interested./p pWhat does this mean for our Views implementation? Well unlike a SQL-query backend which can receive multiple rows in a single request, we#x2019;ll need to write our Views query plugin such that we loop over all of our authenticated users and make a single API request per user to aggregate the #x201C;table#x201D; we give back to Views. This kind of complexity is the trickiest part of writing a Views query plugin. Remember, Views deals in tabular data, so you have to analyze your remote data source and, anywhere it doesn#x2019;t fit the bill, you need to translate it for Views./p pData spread across more than one API request represents another common hang up. Here too you have to aggregate the data and then translate into a tabular format. There are a couple ways you can do this, you can either hit each endpoint in turn and present the aggregate fields to Views as a single #x201C;table,#x201D;#xA0;or you can implement a Views relationship plugin. By implementing a Views relationship plugin you can defer#xA0;the decision of which API endpoints are hit to the site administrator./p pTake our Fitbit module for example. The Fitbit API has an endpoint to retrieve a href=https://dev.fitbit.com/docs/user/user profile data/a, and a separate endpoint to retrieve a href=https://dev.fitbit.com/docs/activity/daily activity summary data/a. To surface data from both endpoints to Views, we could just hit both endpoints all the time and give the aggregate result back to Views, however, that could be wasteful. The site administrator may have no interest in daily activity summary data. Instead, we can use Views relationships to give the site administrator the option to opt in to daily activity summary data. When the relationship is present, our Views query plugin will know to hit both endpoints./p h2Other considerations/h2 pIf the number of authenticated Fitbit users on our site grew, we#x2019;d reach a point where performance and a href=https://dev.fitbit.com/docs/basics/#rate-limitsrate limiting/a would become a concern. We will probably want to investigate a caching strategy to reduce the number of round trips. Another concern I had at the beginning of the project was that I preferred not to interact directly with the API, but to instead use a module or library that abstracted a lot of that work away for me. In particular, I thought it would be nice to not have to write the Fitbit authentication code myself./p pThere wasn#x2019;t any module available for Drupal 8, but I did find a Composer library that I could use to do a lot of that work for me. The a href=https://packagist.org/packages/league/oauth2-clientOAuth 2.0 Client Library/a together with the a href=https://packagist.org/packages/djchen/oauth2-fitbitFitbit provider/a provided a great stepping stone. So in true Drupal 8 fashion, I stepped off the island and harnessed the power of these external dependencies to take care of the heavy lifting around authentication. The author of the Fitbit provider was even open to pull requests, making the experience much more fun./p h2Conclusion/h2 pWhen writing any piece of sufficiently complex code, taking the time to think about your problem and the best way to solve it will pay dividends down the road. Writing a set of Views plugins is no exception. You need to think about the data you have, the data Views expects, and how to deal with the complications that arise when the two don#x2019;t fit together perfectly. If you#x2019;re designing your own system from scratch, you have the luxury of building the APIs apos;just soapos; to fit your desired use case. Sadly, life is rarely so neat. Resist the temptation to dive straight into code, and first figure out what it is you need to build./p pIn part 2 of this series, we#x2019;ll go through the steps of building our plugin, ending up with the simple use case of having a Fitbit leaderboard. Until next time!/p /div/div
Categories: Drupal Feeds

Evolving Web: 5 tips for choosing the right company to move your site to Drupal 8

Mon, 12/19/2016 - 7:03pm
a href=https://evolvingweb.ca/%20%20___ img src=https://evolvingweb.ca/sites/default/files/styles/medium/public/2016-12/cd2qniku6dk-nicolas-cool_0.jpg?itok=cMa6DXlr width=220 height=133 alt=5 tips for choosing the right company to move your site to Drupal 8 typeof=Image class=img-responsive //apAs of December 4th, 2016, a href=https://www.drupal.org/project/usage/drupalat least 82,000+ sites/a are running Drupal 6. Since a href=//www.drupal.org/drupal-6-eolDrupal 6 is no longer actively supported/a by the Drupal community, a lot of people urgently need to migrate to a newer version! So, what if you have of those sites and want to move to the most recent Drupal version?/pa href=https://evolvingweb.ca/blog/5-tips-choosing-right-company-move-your-site-drupal-8 hreflang=enread more/a
Categories: Drupal Feeds

Palantir: Palantir.net's Guide to Digital Governance: eCommerce

Mon, 12/19/2016 - 3:26pm
spanPalantir.net's Guide to Digital Governance: eCommerce/span a href=https://www.palantir.net/blog-series/palantirnets-guide-digital-governance hreflang=enPalantir.net's Guide to Digital Governance/a spanspan lang= about=https://www.palantir.net/people/alex-brandt typeof=schema:Person property=schema:name datatype= xml:lang=brandt/span/span spanMon, 12/19/2016 - 15:26/span Scott DiPerna time datetime=2016-12-20T12:00:00ZDec 20, 2016/timeimg src=https://www.palantir.net/files/styles/hero/public/hero/2016-12/governance-3.jpg?itok=_icPtL9D width=1300 height=731 alt=Illustrated collage of website icons typeof=foaf:Image /div class=lede pThis is the thirteenth installment of Palantir.net’s Guide to Digital Governance, a comprehensive guide intended to help get you started when developing a governance plan for your institution’s digital communications./p /div In this post we will cover... ulliWhy it's extremely important to handle eCommerce appropriately/li liThe minimum requirements for collecting online payments/li liOther things you need to consider when creating a payment collection policy/li /ulpStrict federal laws govern the transmission, collection, and retention of credit and debit card data, whether those interactions occur through the web, by phone, or in person. Any organization involved in collecting payments via credit or debit cards should ensure that all staff involved in a payment collection process are appropriately trained and fluent in the organization’s policies regarding the collection and retention of credit and debit card data. And obviously, those policies should adhere to federal and state laws (and international laws, if your reach extends that far)./p h3Minimum Requirements for Collecting Online Payments/h3 pemBank Account /embr / Any organization intending to collect credit or debit card payments first needs a bank account in order to receive those payments. The bank account is where the money goes once a payment transaction is completed./p pemeMerchant Payment Gateway /embr / Once you have a bank account where money can be deposited, you will then need to establish accounts with an eMerchant and Payment Gateway provider. Some eMerchant and Payment Gateway services are provided by the same organization. For example, PayPal will handle both the eMerchant and Payment Gateway functions of eCommerce, so all you need to use a service like PayPal is a bank account./p pSome organizations have existing payment relationships with companies that serve as eMerchants. It may be more cost-effective to use a company with whom you already have a relationship, in which case there are various Payment Gateway providers that could be used to facilitate the transaction between purchaser and the banks involved in the payment process./p pemSecure (Encrypted) Online Form /embr / In order to collect the payment details from users, you then will need a secure (meaning encrypted) online form for your website. This is the registration form users will complete with their credit or debit card information to make a payment. The form must be served over a secure and encrypted protocol (i.e. https)./p pemSecure Data Storage /embr / Encryption on the online form is not the last step in security, however. Payment transactions also create customer data, specifically their credit card data, which is highly sensitive and must be handled carefully. Using a reliable payment gateway service eliminates this concern because the entire payment transaction is handled on their secure servers./p pOrganizations that want to store custom credit card and financial data must undergo a PCI compliance audit and certification. This process is lengthy and expensive, and requires yearly renewals and constant monitoring. We don’t recommend doing this yourself, unless the volume of payments are so large that the cost of PCI compliance is less than the fees you will pay a gateway for the service, which is exceedingly rare for the majority of eCommerce websites./p pFor complex transactions, such as recurring payments, using a reliable gateway service is the only cost-effective option. But even for simple transactions, the general rule is to never store customer payment data. For most organizations, the risks are too high and the costs too great./p h3Creating a Policy/h3 pThe minimum requirements for collecting payments online only scratches at the surface of the issues you may need to consider in terms of governing the use of online payment collection for your organization. Here are some additional things to consider:/p ulliWho may have eCommerce capabilities?/li liWhat is the process for initiating eCommerce on the site?/li liWhat is the process for being added to the existing eCommerce solution?/li liHow many parts of your organization need to collect payments online?/li liDo they each need their own implementation of an eCommerce solution? Or can they share?/li liDo they each need their own bank account? (This is often the case when reporting of online payments, especially charitable contributions, requires separation between departments or budget lines for accounting purposes.)/li liWho is responsible for ensuring that federal and organizational guidelines are followed?/li liWhere will credit card and user data be saved or stored throughout the payment process?/li liWho will have access to any credit card and user data?/li liWhat security practices need to be followed to protect credit card information?/li /ulpDecisions surrounding eCommerce will invariably involve key decision-makers, stakeholders, and gatekeepers within the Finance department (or correlated function) and IT department within your organization. You are likely to need their cooperation in determining a governance plan for eCommerce./p p /p blockquote pThis post is part of a larger series of posts, which make up a Guide to Digital Governance Planning. The sections follow a specific order intended to help you start at a high-level of thinking and then focus on greater and greater levels of detail. The sections of the guide are as follows:/p /blockquote ollia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-introduction-and-starting-10000ft-viewStarting at the 10,000ft View/a – Define the digital ecosystem your governance planning will encompass./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-properties-and-platformsProperties and Platforms/a – Define all the sites, applications and tools that live in your digital ecosystem./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-ownershipOwnership/a – Consider who ultimately owns and is responsible for each site, application and tool./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-intended-useIntended Use/a – Establish the fundamental purpose for the use of each site, application and tool./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-roles-and-permissionsRoles and Permissions/a – Define who should be able to do what in each system./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-contentContent/a – Understand how ownership and permissions should apply to content./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-organizationOrganization/a – Establish how the content in your digital properties should be organized and structured./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-url-naming-conventionsURL Naming Conventions/a – Define how URL patterns should be structured in your websites./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-designDesign/a – Determine who owns and is responsible for the many aspects design plays in digital communications and properties./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-personal-websitesPersonal Websites/a – Consider the relationship your organization should have with personal websites of members of your organization./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-private-websites-intranets-and-portalsPrivate Websites, Intranets and Portals/a – Determine the policies that should govern site which are not available to the public./li lia href=https://www.palantir.net/blog/palantirnets-guide-digital-governance-web-based-applicationsWeb-Based Applications/a – Consider use and ownership of web-based tools and applications./li liE-Commerce – Determine the role of e-commerce in your website./li liBroadcast Email – Establish guidelines for the use of broadcast email to constituents and customers./li liSocial Media – Set standards for the establishment and use of social media tools within the organization./li liDigital Communications Governance – Keep the guidelines you create updated and relevant./li /olul class=list--simpleli class=taga href=https://www.palantir.net/topics/strategy hreflang=enStrategy/a/li /ul
Categories: Drupal Feeds

CiviCRM Blog: The quest for performance improvements - 3rd sprint

Mon, 12/19/2016 - 11:14am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encoded pLast week we had our third sprint at the socialist party to improve the performance.  In the previous blogs I have explained what we have done so far. You can read them a href=https://civicrm.org/blog/jaapjansma/the-quest-for-performance-improvementshere/a and a href=https://civicrm.org/blog/jaapjansma/the-quest-for-performance-improvements-2nd-sprinthere./a/p pSince the previous sprint a guy with a lot of database knowledge has done some analysis of the queries and he came up with the following observations. Most queries are build in a href=https://github.com/civicrm/civicrm-core/blob/4.6.22/CRM/Contact/BAO/Query.phpCRM_Contact_BAO_Query/a class and that class adds a join on the tables civicrm_group_contact and civicrm_group_contact_cache and a where clause with an or on both tables.  See example query below./p pre SELECT contact_a.id AS contact_id FROM civicrm_contact contact_a LEFT JOIN civicrm_group_contact `civicrm_group_contact-2304` ON (contact_a.id = `civicrm_group_contact-2304`.contact_id AND `civicrm_group_contact-2304`.status IN (Added)) LEFT JOIN civicrm_group_contact_cache `civicrm_group_contact_cache_2304` ON contact_a.id = `civicrm_group_contact_cache_2304`.contact_id WHERE ( ( ( `civicrm_group_contact-2304`.group_id IN ( 2304 ) ) OR ( `civicrm_group_contact_cache_2304`.group_id IN (2304) ) ) ) GROUP BY contact_a.id; /pre pSuch a query is performing slow because it is looking up all records in civicrm_contact, all records in civicrm_group_contact_cache and all records civicrm_group_contact. Rebuilding the query to use an IN statement will increase the performance. See the query below:/p pre SELECT contact_a.id AS contact_id FROM civicrm_contact contact_a WHERE contact_a.id IN (SELECT contact_id FROM civicrm_group_contact WHERE group_id IN (2304) AND status IN (Added)) OR contact_a.id IN (SELECT contact_id FROM civicrm_group_contact_cache ON groupId IN (2304)) GROUP BY contact_a.id;/pre pLuckily we could do this in an extension because CRM_Contact_BAO_Query provides functionality to change and tweak the query.  The extension we have developed could be found on github (a href=https://github.com/CiviCooP/org.civicoop.groupperformancehttps://github.com/CiviCooP/org.civicoop.groupperformance/a)/p pIn our test environment the extension has a visible effect on the performance. Searching for contact went down from 15 seconds to 3 seconds. We have also installed the extension in the production environment and we are waiting on feedback from end users whether they experience a noticble increase in performance./p pstrongRead more/strong/p ulli a href=https://civicrm.org/blog/jaapjansma/the-quest-for-performance-improvementshttps://civicrm.org/blog/jaapjansma/the-quest-for-performance-improvements/a/li li a href=https://civicrm.org/blog/jaapjansma/the-quest-for-performance-improvements-2nd-sprinthttps://civicrm.org/blog/jaapjansma/the-quest-for-performance-improvements-2nd-sprint/a/li /ulp /p /div/div/divdiv class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/blog/tags/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/div/div/div
Categories: Drupal Feeds

Drop Guard: ​​​​​​​#DugMuc16 - closing time!

Mon, 12/19/2016 - 7:00am
div class=view-mode-rss ds-1col clearfix div class=field field--name-display-rss-image field--type-ds field--label-hidden field__itemimg src=http://www.drop-guard.net/blog/sites/default/files/styles/medium/public/2016-11/20161028_HHMMSS_bergerSchmidt_news_drupalCampMunich_detail.png?itok=a_eAK05q //div div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempOur CEO Manuel and Joe, Marcel and Serkan from our team visited the last Drupal event of this year in our calendar: a href=http://dcmuc16.drupalcamp.de/DrupalCamp Munich/a alias #dugmuc. It's been a pleasure to support this event as Silver Sponsor! With the 4th of December, we closed the Drupal season with great “a href=http://www.drop-guard.net/blog/johanna-meets-the-drupal-communityDays/a”, “Camps” and “a href=http://www.drop-guard.net/blog/drop-guard-at-the-drupalcon-dublinCons/a” in 2016./p/div div class=field field--name-field-blog-post-tags field--type-entity-reference field--label-hidden field__items div class=field__itema href=http://www.drop-guard.net/blog/taxonomy/term/2 hreflang=enDrupal/a/div div class=field__itema href=http://www.drop-guard.net/blog/taxonomy/term/37 hreflang=enDrupal Community/a/div div class=field__itema href=http://www.drop-guard.net/blog/taxonomy/term/3 hreflang=enDrupal Planet/a/div div class=field__itema href=http://www.drop-guard.net/blog/taxonomy/term/73 hreflang=enDrupal Camp/a/div div class=field__itema href=http://www.drop-guard.net/blog/taxonomy/term/67 hreflang=enEvents/a/div /div /div
Categories: Drupal Feeds

MD Systems blog: Let’s collaborate for Paragraphs

Mon, 12/19/2016 - 5:10am
Paragraphs is a popular Drupal project to empower content creators to build rich content experiences. Thunder provided a great example how to start collaboration while otherwise most related work is done in isolation. We need true collaboration to get to the next level.
Categories: Drupal Feeds

Agiledrop.com Blog: AGILEDROP: Janez Urevc: »If you are not involved in the community, you are leaving the choices about your future in the hands of the others«

Mon, 12/19/2016 - 3:02am
a href=http://www.agiledrop.com/blog/janez-urevc-if-you-are-not-involved-community-you-are-leaving-choices-about-your-future-handsimg src=https://www.agiledrop.com/sites/default/files/2016-12/chair-1866784_1920.jpg //a Janez Urevc is a Slovenian mastermind when it comes to Drupal and its connection with media. Online, he is found under the name of ‘slashrsm’ and currently works in MD Systems. Before answering he takes a deep breath, like he would like to speak without a single pause. But he does it to carefully gather his thoughts, who come out as a clear opinion about a variety of topics. We talked about Drupal events, Drupal community and media management, which is considered as the main weakness in Drupal’s core. Together with Iztok Smolic you have organized a first user group meetup in Slovenia back in… a href=http://www.agiledrop.com/blog/janez-urevc-if-you-are-not-involved-community-you-are-leaving-choices-about-your-future-handsREAD MORE/a
Categories: Drupal Feeds

Valuebound: Drupal 8: How to create a custom block programatically

Mon, 12/19/2016 - 1:33am
span property=schema:name data-quickedit-field-id=node/212/title/en/rss class=field field--name-title field--type-string field--label-hiddenDrupal 8: How to create a custom block programatically/span span data-quickedit-field-id=node/212/uid/en/rss rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddena title=View user profile. href=/user/9 lang= about=/user/9 typeof=schema:Person property=schema:name datatype= class=usernameJaywant.Topno/a/span span property=schema:dateCreated content=2016-12-19T07:33:52+00:00 data-quickedit-field-id=node/212/created/en/rss class=field field--name-created field--type-created field--label-hiddenMon, 12/19/2016 - 02:33/span
Categories: Drupal Feeds

Valuebound: Drupal 8: Custom Block Creation programmatically

Mon, 12/19/2016 - 1:33am
span property=schema:name data-quickedit-field-id=node/211/title/en/rss class=field field--name-title field--type-string field--label-hiddenDrupal 8: Custom Block Creation programmatically /span span data-quickedit-field-id=node/211/uid/en/rss rel=schema:author class=field field--name-uid field--type-entity-reference field--label-hiddena title=View user profile. href=/user/9 lang= about=/user/9 typeof=schema:Person property=schema:name datatype= class=usernameJaywant.Topno/a/span span property=schema:dateCreated content=2016-12-19T07:33:52+00:00 data-quickedit-field-id=node/211/created/en/rss class=field field--name-created field--type-created field--label-hiddenMon, 12/19/2016 - 02:33/span
Categories: Drupal Feeds

Enzolutions: My 2016 Recap

Sun, 12/18/2016 - 6:00pm
pI don't usually evaluate what happen in my life at the end of Year, but this year was different in many good ways/p pI am publishing this recap today because today is my birthdate number 40th, I know, I know a significant number./p pBut, beyond that number, I want to remember a lot of great things I accomplished this year, pursuing a dream I had from my childhood./p pMy dream came after reading the first book I bought with my money Around the world in eighty days written by Jules Verne; As you can imagine my dream was travel around the world./p pFortunately, This year that dream became real and I could combine with other passion, contributing to Open Source and more specifically to Drupal Community./p pHere you could see a map of my voyage./p pimg style=margin-right: 20px; src=http://enzolutions.com/assets/img/enzotour16-map.gif//p pMap details a href=http://www.gcmap.com/mapui?P=SJO-MIA-EWR%2CEWR-BOM%2CBOM-SIN%2CSIN-HAN%2CHAN-SEL%2CSEL-TYO%2CTYO-OSA%2COSA-SHA%2CSHA-BJS%2CBJS-CKG%2CCKG-CTU%2CCTU-BKK%2CBKK-HKG%2CHKG-TPE%2CTPE-MNL%2CMNL-JKT%2CJKT-JOG%2CJOG-DPS%2CDPS-MEL%2CMEL-HBA%2CHBA-MEL%2CMEL-SYD%2CSYD-HNL%2CHNL-LAX%2CLAX-SAN%2CSAN-MXL%2CMXL-MEX%2CMEX-SJO%2CSJO-PTY%2CPTY-SAO%2CSAO-POA%2C+POA-SAO%2C+SAO-PTY%2C+PTY-IAD%2CIAD-HOU%2CHOU-SJO%2CSJO-MIA%2CMIA-CLT%2CCLT-DUB%2CDUB-DUB-CDG%2CCDG-MIA%2CMIA-SJO%2CSJO-PTY%2CPTY-BOG%2CBOG-BGA%2CBGA-BOG%2CBOG-PTY%2CPTY-SJO%2CSJO-PTY%2CPTY-SFO%2CSFO-AKL%2CAKL-OOL%2COOL-MEL%2C+MEL-AKL%2CAKL-LAX%2CLAX-MEX%2CMEX-SJOamp;MS=wls2amp;MP=ramp;MC=BERamp;DU=mihere/a/p pLet me summary my dream with some stats./p h1Distance/h1 pAs you can imagine making a trip around the world, involve a lot of travel and just to put some context the a href=https://en.wikipedia.org/wiki/EquatorEquator/a is about 40,075 kilometers around the world./p pWhen I started my trip wasn't planned in about 75% of the route, mostly because I need to resolve some pending visas and I switch some countries in the process./p pBut the reality was that by the time I was about to complete one round around the world I got some invitations to participate in others, events combines with some events that I was to participate./p pAs results, I flu 146.671 kilometers which mean 3.5 times the extension of the Equator line, and that was only by flu. Becuase I did more that to millions step and other kilometers by bus and train. I also did some leagues by boat, but I didn't have records about that distance./p pCheck the distances in detail in the following chart./p pimg style=margin-right: 20px; src=http://enzolutions.com/assets/img/enzotour16-distances.jpg//p h1Numbers/h1 pA lot of things happens on this trip, most of them good and nothing awful, only time to time I get lost in translation and sometimes actually lost, you know the wrong bus or wrong subway line, and you end on the other side of the city./p pTalking about scary situations, well I got two haircuts one in Hanoi, Vietnam and other in Bangkok, Thailand; I have to recognize could be worst, but I always got something between what I want and between what the hair stylist want. But still with two ears and my honor intact./p pAlso, I have the opportunity to read two books of my favorite write of black novel a href=https://en.wikipedia.org/wiki/Henning_MankellHenning Mankell/a/p pI wrote a daily blog post to try to document all that I live, but to be honest only until my first round around the world, after that I was so tired, and I cheat, and after that, I wrote an entry by country, sorry about that./p pOne frightening moment was when a border officer report to me than I didn't have space for more stamps and maybe in my next destination I could be deported back to home./p pThat moment was discouraging for me because I still have to visit four more countries before the end of my tour in next five weeks. So my solution was to include another country in the tour, Colombia, maybe you don't know, but I am Colombian. So I visited Colombia, get my passport and participate in a Drupal Meetup in Bogota. Also, I visited my family in a href=https://en.wikipedia.org/wiki/BucaramangaBucaramanga/a quite a trip inside my journey./p pTalking about numbers, I collect thousands of pictures and more valuable dozens of new friend around the world./p pCheck the figures in detail in the following chart./p pimg style=margin-right: 20px; src=http://enzolutions.com/assets/img/enzotour16-numbers.jpg//p h1Locations/h1 pWhen I plan my trip, I want to maximize the number of countries regarding Drupal communities I could visit on my route. I could visit Africa or the Middle East; Europe was skipped deliberately because their communities are healthy and one of my goals was to visit emerging communities regarding Drupal./p pEven that I could visit more than 30 cities in 18 countries spread over four continents./p pA lot of friends said all my trip was a huge vacation and maybe it was. But only in 3 cities, this adventure was totally tourist; those places were:/p ul liTasmania in Australia/li liHonolulu in Hawaii /li liBucaramanga in Colombia./li /ul pI could say that enjoy all the towns I visited, but I especially love Asian food, I guess that in a previous life I have to be born in some place between Hong Kong and Tokio./p pCheck the locations in detail in the following chart./p pimg style=margin-right: 20px; src=http://enzolutions.com/assets/img/enzotour16-locations.jpg//p h1Events/h1 pThis this was all about Drupal community, and I could participate in 32 events around the world, participating as a speaker in all of them./p pI had the honor of being Keynote in 3 DrupalCamps/p pMaybe the most remarkable participation was during my Community Keynote at a href=https://events.drupal.org/dublin2016DrupalCon Dublin/a./p pIn all those events I always tried to share what I know about Drupal 8 and Drupal Console projects, trying to promote in all of them the importance of contributing and remark the importance of contributing using their language to try to enforce their community./p pCheck the events in detail in the following chart./p pimg style=margin-right: 20px; src=http://enzolutions.com/assets/img/enzotour16-events.jpg//p h1weKnow/h1 pimg style=margin-right: 20px; src=http://enzolutions.com/assets/img/logo-weknow-highres.png//p pOne of the biggest achievements in this journey was the creation of a new company named weKnow, this new company will be dedicated to Drupal 8+ and Symfony 2+ Training and Consulting./p pThe companions on this trip are/p pa href=http://jmolivas.comJesus Manuel Olivas/a an old friend and co-maintainer with me inside a href=http://drupalconsole.comDrupal Console/a project./p pa href=https://www.linkedin.com/in/kabarcaKenny Abarca/a an old friend and co-founder with me of a href=http://anexusit.comAnexus/a company./p h1Thank you/h1 pLast, but not least I want to express a huge strongTHANK/strong YOU to my family, why? Well, let me elaborate./p pa href=http://yersika.comYersika/a, my wife my companion in all my adventures physically and a great remote supporter./p pAxel amp; Zoe: My children, who may pay the big price in all my travels, accepting that is father is abroad is the best way that I could Imagine./p pMy Mom, who take care her grandson, filling out all the love we could provide in person, meanwhile we were out of the home./p pMy siblings Katherine and Mario, who provide aunt and uncle supervision to my children and why not spoil them a little bit./p h1Summary/h1 pIn general was a great year and now I am looking for my next adventure/challenge for 2017 in my 40's/p pThank you for reading this very long blog post./p
Categories: Drupal Feeds

Drupal Association News: Many thanks to the Drupal Association’s Supporting Partners! - Q4

Fri, 12/16/2016 - 4:26pm
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenblockquote h4 em“We cannot do what we do, especially for Drupal.org, without your funding support. Thank you!” - Megan Sanicki, Executive Director/em/h4 /blockquote pThere are many ways you can contribute to the Drupal Community. One way is being a part of the a href=https://www.drupal.org/supportersSupporting Partner Program/a. Supporting Partners fund Drupal.org and the engineering team who make the improvements you continuously see on Drupal.org - the home of the Drupal community and Project./p pThe engineering team has been hard at work in Q4 on several things from the a href=https://www.drupal.org/drupalorg/roadmaproadmap/a./p ulli Worked with the Technical Advisory Committee on the a href=https://www.drupal.org/drupalorg/blog/technical-advisory-committee-formed-to-modernize-developer-toolsdeveloper tooling study/a/li li Provided stable release of Composer facade/li li Expanded issue credit system algorithm to reward code and non-code contributions in 2017/li li a href=https://www.drupal.org/node/2682083Documentation Migration/a/li li a href=https://www.drupal.org/node/2757921Drupal 8 User Guide/a/li li Coming soon: Industry pages/li li Launched the a href=https://events.drupal.org/vienna2017DrupalCon Vienna 2017/a website/li li More flexible a href=https://www.drupal.org/node/2816683DrupalCI testing options/a for contributed module maintainers/li li Better database cluster/li /ulpFor more details, follow the a href=https://www.drupal.org/drupalorg/blogDrupal.org blog/a and feel free to watch the latest a href=https://www.youtube.com/watch?v=86SKyxe29r0Public Board Meeting/a./p h2 Big Thank You/h2 pDrupal Association Supporting Partners help keep Drupal.org future-ready. We would like to thank our new and renewing Supporting Partners from this quarter./p olli a href=https://www.drupal.org/adyaxAdyax/a/li li a href=https://www.drupal.org/anexus-itAnexus IT/a/li li a href=https://www.drupal.org/ashday-interactive-systemsAshday/a/li li a href=https://www.drupal.org/node/2542932Avalara/a/li li a href=https://www.drupal.org/node/2084313Bellcom/a/li li a href=https://www.drupal.org/berger-schmidtBerger Schmidt/a/li li a href=https://www.drupal.org/breakthrough-technologies-llcBreakthrough Technologies/a/li li a href=https://www.drupal.org/capgemini/Capgemini/a/li li a href=https://www.drupal.org/node/2442925Celebrate Drupal/a/li li a href=https://www.drupal.org/chapter-threeChapter Three/a/li li a href=https://www.drupal.org/chromaticChromatic/a/li li a href=https://www.drupal.org/comm-pressComm-press/a/li li a href=https://www.drupal.org/crewCrew.co/a/li li a href=https://www.drupal.org/davyin-internet-solutionsDavyin Internet Solutions/a/li li a href=https://www.drupal.org/dropsolidDropsolid/a/li li a href=https://www.drupal.org/druidDruid/a/li li a href=https://www.drupal.org/node/1121090Duo Consulting/a/li li a href=https://www.drupal.org/exove-ltdExove/a/li li a href=https://www.drupal.org/faichi-solutions-pvt-ltdFaichi Solutions/a/li li a href=https://www.drupal.org/node/2540942GoDaddy/a/li li a href=https://www.drupal.org/inclind-incInclind/a/li li a href=https://www.drupal.org/node/2355013Innoppl Inc./a/li li a href=https://www.drupal.org/inviqa-uk-ltdInviqa/a/li li a href=https://www.drupal.org/node/1142418Koriolis/a/li li a href=https://www.drupal.org/node/2365249Lightcrest/a/li li a href=https://www.drupal.org/microserveMicroserve/a/li li a href=https://www.drupal.org/mobomoMobomo/a/li li a href=https://www.drupal.org/node/1708434New Target/a/li li a href=https://www.drupal.org/northpoint-digitalNorthPoint Digital/a/li li a href=https://www.drupal.org/one-shoeOne Shoe Interactive/a/li li a href=https://www.drupal.org/optasyOPTASY/a/li li a href=https://www.drupal.org/node/2425781Osforce/a/li li a href=https://www.drupal.org/outsourcing-technology-incOutsourcing Technology Inc./a/li li a href=https://www.drupal.org/previousnextPrevious Next/a/li li a href=https://www.drupal.org/node/2360233Softescu/a/li li a href=https://www.drupal.org/spry-digital-llcSpry Digital/a/li li a href=https://www.drupal.org/node/2354477SymSoft Solutions/a/li li a href=https://www.drupal.org/technocratTechnocrat/a/li li a href=https://www.drupal.org/brick-factoryThe Brick Factory/a/li li a href=https://www.drupal.org/undpaulundpaul/a/li li a href=https://www.drupal.org/vector-media-groupVector Media Group/a/li /olpOur a href=https://www.drupal.org/supporters/partnersSupporting Partners/a, a href=https://www.drupal.org/supporters/technologyTechnology Supporters/a, and a href=https://www.drupal.org/supporters/hostingHosting Supporters/a help us make Drupal.org  a great site for our community and Drupal evaluators. They also become some of the best-known Drupal contributors. a href=https://www.drupal.org/supportersRead about the program benefits/a. If you are not yet a Supporting Partner and want to give back to Drupal while receiving benefits, please contact our Executive Director, a href=https://www.drupal.org/u/megansanickiMegan Sanicki/a, for details./p /div/div/div
Categories: Drupal Feeds

Drupal Aid: Protect Your Webforms From New Malware Injection Method

Fri, 12/16/2016 - 9:26am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpa href=/blog/protect-your-webforms-from-new-malware-injection-methodimg alt=Drupal Aid: Protect Your Webforms from This Clever Malware Injection Method class=img-responsive src=https://www.drupalaid.com/sites/default/files/styles/project_760_394/public/Protect-Your-Webform.png style=width: 1660px; height: 788px; //aHackers are always looking for ways to sneak malicious files onto other people’s websites. Recently we discovered a new technique they are using – actually, Google’s Webmaster tools detected it and warned about a Malware issue. It's a clever tactic involving the Webform module and PDF files, and it's really easy to defend against./p pa href=/blog/protect-your-webforms-from-new-malware-injection-methodRead more about it/a/p /div/div/div
Categories: Drupal Feeds

Mark Shropshire: DrupalCamp Atlanta 2016: The Story of an Insecure Module

Fri, 12/16/2016 - 7:30am
div class=field field-name-body field-type-text-with-summary field-label-hidden view-mode-rssdiv class=field-itemsdiv class=field-item even property=content:encodedpI had the pleasure of attending a href=http://drupalcampatlanta.com/2016/DrupalCamp Atlanta 2016/a in October. It was great to catch up with old friends, meet new people, and checkout some excellent presentations. I would like to thank the a href=https://www.meetup.com/drupalatlanta/organizers/a and a href=http://drupalcampatlanta.com/2016/sponsorssponsors/a for making this event happen./p pIf you missed the event, I encourage you to checkout the session a href=http://drupalcampatlanta.com/session-videos/2016videos/a that were just posted. I also want to mention my presentation a href=http://drupalcampatlanta.com/2016/sessions/story-insecure-moduleThe Story of an Insecure Module/a. I have included the abstract, video, and slide deck below. I am especially excited about the sandbox project a href=https://www.drupal.org/sandbox/shrop/2821723Security Examples/a, which I hope will be something that the community can develop to show good and bad Drupal secure coding practices./p h2Abstract/h2 pThere once was a Drupal module who wanted so badly to have a stable release, but they were insecure. As a useful and promising module to the Drupal community, they were so afraid that poor coding standards and lack of community reviews could lead to XSS, information disclosure, sql injection, and other vulnerabilities for their users./p pThe Drupal community is one of sharing and support. As a result, the module in this story takes the opportunity to learn and grow from the lessons of other modules and contributors to become much more secure and confident. The module becomes capable of being promoted to a full project and having a stable release. The community rejoices!/p pCome take a journey through this module's security audit and how their developer resolved each and every finding, following Drupal best practices for writing secure code./p pRelated drupal.org Security Examples sandbox a href=https://www.drupal.org/sandbox/shrop/2821723https://www.drupal.org/sandbox/shrop/2821723/a !--break--/p h2Video/h2 iframe width=560 height=315 src=https://www.youtube.com/embed/ajaWKtxz6hI frameborder=0 allowfullscreen/iframe h2Slide deck/h2 script async class=speakerdeck-embed data-id=a190d2588e7a4faaa68f33ecf1ab84a3 data-ratio=1.77777777777778 src=//speakerdeck.com/assets/embed.js/script /div/div/divsection class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above view-mode-rssh2 class=field-labelBlog Category:nbsp;/h2ul class=field-itemsli class=field-item evena href=/taxonomy/term/13 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/lili class=field-item odda href=/taxonomy/term/58 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Security/a/li/ul/section
Categories: Drupal Feeds