From The Compiler, 5 Years ago, written in PHP.
Embed
  1. <?php
  2.         //last Update 2012-01-26
  3.        
  4.         //File Download
  5.         $filename = 'newsletter.html';
  6.        
  7.         if(isset($_GET['download'])){
  8.                 $datei = basename($_GET['download']);
  9.                 if(file_exists('temp/'.$datei)){
  10.                         header("Expires: 0");
  11.                         header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  12.                         header("Content-Type: application/force-download");
  13.                         header("Content-Description: File Transfer");
  14.                         header("Content-Disposition: attachment; filename=".$datei);
  15.                         header("Content-Transfer-Encoding: binary");
  16.                         readfile('temp/'.$datei);
  17.                 }else{
  18.                         header("HTTP/1.0 404 Not Found");
  19.                         echo 'File not Found';
  20.                 }
  21.                 exit;
  22.         }
  23.        
  24.         //No AJAX Request? Output some Infos about the Server
  25.         if(!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
  26.                 check();
  27.                 exit();
  28.         }
  29.         if (function_exists ('ini_set')){
  30.                 //prevent display errors
  31.           ini_set("display_errors", 0);
  32.                 //but log them
  33.           ini_set('log_errors', 1 );
  34.                 //in the document root
  35.           ini_set('error_log', getcwd().'/php_error.log' );
  36.         }
  37.        
  38.         //only this methods are allowed
  39.         $allowedMethod =
  40. array('check','ping_mc','ping_cm','download','upload_mc','upload_cm','examplehtml');
  41.        
  42.         $method = $_REQUEST['method'];
  43.        
  44.        
  45.         $return = array();
  46.         $return['success'] = false;
  47.        
  48.         if(!in_array($method, $allowedMethod)){
  49.                 $return['response'] = 'Method '+$method+' is not allowed';
  50.                 echo json_encode($return);
  51.                 exit;
  52.         }
  53.        
  54.         switch($method){
  55.                
  56.                
  57.                 //Check Server configuration
  58.                 case 'check':
  59.                
  60.                         $return['response'] = '';
  61.                         if (version_compare(PHP_VERSION, '5.2.0') <= 0) {
  62.                                 $return['response'] .= 'You need at least PHP version 5.2.0! (you have
  63. '.PHP_VERSION.")<br>";
  64.                         }
  65.                         if(!function_exists('curl_init')){
  66.                                 $return['response'] .= 'You need the CURL extension to upload data to a
  67. service'."<br>";
  68.                         }
  69.                         if(!isWriteAble('temp/',$filename)){
  70.                                 $return['response'] .= 'The upload folder isn\'t writeable'."<br>";
  71.                         }
  72.                         if(empty($return['response'])){
  73.                                 $return['success'] = true;
  74.                                 $return['response'] = 'Your server is good! Everything should work as
  75. expected!';
  76.                         }
  77.                         break;
  78.                        
  79.                        
  80.                 //Check Mailchimp Connection
  81.                 case 'ping_mc':
  82.                
  83.                         $return['response'] = mcRequest($_POST['apikey'],'ping');
  84.                        
  85.                         //An error occurred
  86.                         if(isset($return['response']->error)){
  87.                                 $return['response'] = $return['response']->error;
  88.                         //Timeout or something else
  89.                         }else if(!isset($return['response'])){
  90.                                 $return['response'] = 'Mailchimp API isn\'t available at the moment';
  91.                         //Everything is Chimpy!
  92.                         }else{
  93.                                 $return['success'] = true;
  94.                         }
  95.                         break;
  96.                        
  97.                        
  98.                 //Check Campaign Monitor Connection
  99.                 case 'ping_cm':
  100.                
  101.                         $return['response'] =
  102. cmRequest($_POST['apikey'],'http://api.createsend.com/api/v3/clients.json');
  103.                        
  104.                         //An error occurred
  105.                         if(isset($return['response']->Code)){
  106.                                 $return['response'] = $return['response']->Message;
  107.                         //Everything is good, return the clients
  108.                         }else{
  109.                                 $return['success'] = true;
  110.                                 $return['clients'] = $return['response'];
  111.                                 $return['response'] = 'API key is good. Clients found:
  112. '.count($return['response']);
  113.                         }
  114.                         break;
  115.                        
  116.                        
  117.                 //prepare download because it's not possible to start download via ajax
  118.                 case 'download':
  119.                
  120.                         //write file in the temp directory
  121.                         if(write('temp/'.$filename,stripslashes($_POST['data']))){
  122.                                 $return['success'] = true;
  123.                                 $return['response'] = 'Downloading...Please allow Popup blocker or click <a
  124. href="proxy.php?download='.$filename.'">here</a>!';
  125.                                 $return['file'] = $filename;
  126.                         //shouldn't happen
  127.                         }else{
  128.                                 $return['response'] = 'Couldn\'t save HTML!';
  129.                         }
  130.                         break;
  131.                        
  132.                        
  133.                 //Upload to Mailchimp
  134.                 case 'upload_mc':
  135.                
  136.                                 //save subdomain
  137.                                 $dc = substr($_POST['apikey'],strrpos($_POST['apikey'],'-')+1);
  138.                
  139.                                 //Try to upload to Mailchimnp
  140.                                 $return['response'] = mcRequest($_POST['apikey'],'templateAdd',array('name'
  141. => $_POST['templatename'], 'html' => stripslashes($_POST['data'])));
  142.                                
  143.                                 //Oooohh, an error occurs!
  144.                                 if(isset($return['response']->code)){
  145.                                        
  146.                                         //This is the "Template name does exist error - we can handle that
  147.                                         if($return['response']->code == 506){
  148.                                                
  149.                                                 //get all templates ever made
  150.                                                 $usertemplates = mcRequest($_POST['apikey'], 'templates',
  151. array('inactives' => array('include' => true)));
  152.                                                 foreach($usertemplates->user as $template){
  153.                                                        
  154.                                                         //this is our template which isn't unique
  155.                                                         if(strtolower($template->name) == strtolower($_POST['templatename'])){
  156.                                                                
  157.                                                                 //try to update this template
  158.                                                                 $return['response'] =
  159. mcRequest($_POST['apikey'],'templateUpdate',array('id' => $template->id,
  160. 'values' => array('name' => $_POST['templatename'], 'html' =>
  161. stripslashes($_POST['data']))));
  162.                                                                
  163.                                                                 //Update was good!
  164.                                                                 if($return['response']){
  165.                                                                        
  166.                                                                         //if the Template is inactive (deleted) we have to reactivate it
  167. (undelete)
  168.                                                                         if($template->active == 'N'){
  169.                                                                                
  170.                                                                                 //Undelete it
  171.                                                                                 $return['response'] =
  172. mcRequest($_POST['apikey'],'templateUndel',array('id' => $template->id));
  173.                                                                                
  174.                                                                                 //wohoo!
  175.                                                                                 if($return['response']){
  176.                                                                                         $return['success'] = true;
  177.                                                                                         $return['templateid'] = $template->id;
  178.                                                                                         $return['response'] = 'Template upload complete. <a
  179. href="https://'.$dc.'.admin.mailchimp.com/templates/edit?id='.$template->id.'">Edit
  180. it on mailchimp</a>';
  181.                                                                                 //error here
  182.                                                                                 }else{
  183.                                                                                         $return['code'] = $return['response']->code;
  184.                                                                                         $return['response'] = $return['response']->error;
  185.                                                                                 }
  186.                                                                         //wohoo!
  187.                                                                         }else{
  188.                                                                                 $return['success'] = true;
  189.                                                                                 $return['templateid'] = $template->id;
  190.                                                                                 $return['response'] = 'Template upload complete. <a
  191. href="https://'.$dc.'.admin.mailchimp.com/templates/edit?id='.$template->id.'">Edit
  192. it on mailchimp</a>';
  193.                                                                         }
  194.                                                                 //error here
  195.                                                                 }else{
  196.                                                                         $return['code'] = $return['response']->code;
  197.                                                                         $return['response'] = $return['response']->error;
  198.                                                                 }
  199.                                                         }
  200.                                                 }
  201.                                         //error here
  202.                                         }else{
  203.                                                 $return['code'] = $return['response']->code;
  204.                                                 $return['response'] = $return['response']->error;
  205.                                 }
  206.                                
  207.                                 //upload successfull!
  208.                                 }else{
  209.                                         $return['success'] = true;
  210.                                         $return['templateid'] = $return['response'];
  211.                                         $return['response'] = 'Template upload complete. <a
  212. href="https://'.$dc.'.admin.mailchimp.com/templates/edit?id='.$return['templateid'].'">Edit
  213. it on mailchimp</a>';
  214.                                 }
  215.                         break;
  216.                        
  217.                        
  218.                 //Upload to Campaignmonitor
  219.                 case 'upload_cm':
  220.                
  221.                         //CM needs needs a data on the Server to fetch HTML
  222.                         if(write('temp/'.$filename,stripslashes($_POST['data']))){
  223.                                 $template =
  224. '{"Name":"'.$_POST['templatename'].'","HtmlPageURL":"'.getURL().'/temp/'.$filename.'","ZipFileURL":null}';
  225.                                
  226.                                 //Create the template, same name is allowed!
  227.                                 $return['response'] =
  228. cmRequest($_POST['apikey'],'http://api.createsend.com/api/v3/templates/'.$_POST['clientid'].'.json',$template);
  229.                                
  230.                                 //We get an error
  231.                                 if(isset($return['response']->Code)){
  232.                                         $return['code'] = $return['response']->Code;
  233.                                         $return['response'] = $return['response']->Message;
  234.                                
  235.                                 //Template upload complete!
  236.                                 }else{
  237.                                         $return['success'] = true;
  238.                                         $return['templateid'] = $return['response'];
  239.                                         $return['response'] = 'Template upload complete. Template ID: <a
  240. href="https://login.createsend.com/loginForm.aspx">'.$return['response'].'</a>';
  241.                                 }
  242.                        
  243.                         //should never happen
  244.                         }else{
  245.                                 $return['response'] = 'Couldn\'t save temporary template file';
  246.                         }
  247.                         break;
  248.                        
  249.                        
  250.                 //If you didn't upload the template files correctly you get this demo from my
  251. server
  252.                 case 'examplehtml':
  253.                
  254.                                 $html = request('http://revaxarts-themes.com/newsletter.html');
  255.                                 //replace colors
  256.                                 $html = str_replace('bada55',$_GET['color'],$html);
  257.                                 echo $html;
  258.                                 exit;
  259.                                
  260.                         break;
  261.                        
  262.                 default:       
  263.         }
  264.         echo json_encode($return);
  265.         exit;
  266.        
  267.        
  268.        
  269.         //prepare request for Mailchimp
  270.         function mcRequest($apikey, $method, $data = NULL){
  271.                
  272.                 $dc = substr($apikey,strrpos($apikey,'-')+1);
  273.                 //building the url
  274.                 $url =
  275. 'http://'.$dc.'.api.mailchimp.com/1.3/?apikey='.$apikey.'&method='.$method.'&rand='.time();
  276.                 if(isset($data)){
  277.                         foreach($data as $k => $v){
  278.                                 //html is to long so we don't add it to the url
  279.                                 if($k != 'html'){
  280.                                         if(is_array($v)){
  281.                                                 foreach($v as $k2 => $v2){
  282.                                                         if($k2 != 'html'){
  283.                                                                 $url .= '&'.$k.'['.$k2.']='.urlencode($v2).'';
  284.                                                         }else{
  285.                                                                 $data['html'] = $v2;   
  286.                                                         }
  287.                                                 }
  288.                                         }else{
  289.                                                 $url .= '&'.$k.'='.urlencode($v);      
  290.                                         }
  291.                                         unset($data[$k]);
  292.                                 }
  293.                         }
  294.                         //special hack for templateUpdate
  295.                         if($method == 'templateUpdate'){
  296.                                 $data = 'values[html]='.urlencode($data['html']);
  297.                         }
  298.                 }
  299.                 $request = request($url, $data);
  300.                 return json_decode($request);
  301.         }
  302.        
  303.         //prepare request for Campaign Monitor
  304.         function cmRequest($apikey, $url, $data = NULL){
  305.                
  306.                 $request = request($url, $data, $apikey);
  307.                 return json_decode($request);
  308.         }
  309.        
  310.        
  311.         //the request function
  312.         function request($url, $data = NULL, $username = NULL, $pwd = ''){
  313.                 $ch = curl_init();
  314.                
  315.                 curl_setopt($ch, CURLOPT_URL, $url);
  316.                 curl_setopt($ch, CURLOPT_HEADER, 0);
  317.                 curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  318.                 if($data){
  319.                         curl_setopt($ch, CURLOPT_POST, true);
  320.                         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  321.                 }else{
  322.                         curl_setopt($ch, CURLOPT_POST, false);
  323.                 }
  324.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  325.                 if($username){
  326.                         curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  327.                         curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$pwd);
  328.                 }
  329.                
  330.                 $return = curl_exec($ch);
  331.                 curl_close($ch);
  332.                 return $return;
  333.         }
  334.        
  335.         //checks is the folder is writeable
  336.         function isWriteAble($folder = '', $filename = 'test.txt'){
  337.                 $file = $folder.$filename;
  338.                 write($file,'writetest');
  339.                 if(read($file) == 'writetest'){
  340.                         return delete($file);
  341.                 }
  342.                 return false;
  343.         }
  344.        
  345.         //deletes a file
  346.         function delete($file){
  347.                 if(file_exists($file)){
  348.                         unlink($file);
  349.                 }
  350.                 return !file_exists($file);
  351.         }
  352.        
  353.         //write a file
  354.         function write($filename, $data = ''){
  355.                 if (!$handle = fopen($filename, "w+")) {
  356.                         return false;
  357.                         exit;
  358.                 }
  359.                 if (!fwrite($handle, $data)) {
  360.                         return false;
  361.                         exit;
  362.                 }
  363.        
  364.                 fclose($handle);
  365.                 return true;
  366.         }
  367.        
  368.         //read a file
  369.         function read($filename){
  370.                 if (!$handle = fopen($filename, "r")) {
  371.                         return false;
  372.                         exit;
  373.                 }
  374.                 $contents = fread($handle, filesize($filename));
  375.                 fclose($handle);
  376.                 return $contents;
  377.         }
  378.        
  379.         //get the URL from the location bar
  380.         function getURL(){
  381.                 //return 'http://revaxarts.com/asdasd';
  382.                 return dirname((!empty($_SERVER['HTTPS'])) ?
  383. "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] :
  384. "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
  385.         }
  386.        
  387.        
  388.         //get the URL from the location bar
  389.         function check(){
  390.                 $goodnews = array();
  391.                 $badnews = array();
  392.                
  393.                 if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
  394.                         $goodnews[] = 'Your PHP Version is '.PHP_VERSION.' which is good';
  395.                 }else{
  396.                         $badnews[] = 'Your PHP Version is '.PHP_VERSION.' which is to low (required
  397. 5.2+)';
  398.                 }
  399.                
  400.                 if(function_exists('curl_init')){
  401.                         $goodnews[] = 'You have the CURL Extension which is good';     
  402.                 }else{
  403.                         $badnews[] = 'You don\'t have the CURL Extension which is bad';
  404.                 }
  405.                
  406.                 if(isWriteAble('temp/')){
  407.                         $goodnews[] = 'The temporary folder is writeable';     
  408.                 }else{
  409.                         $badnews[] = 'The temporary folder is not writeable';
  410.                 }
  411.                
  412.                 if(empty($badnews)){
  413.                         $msg = "Everything should work as expected!";  
  414.                 }else{
  415.                         $msg = "Sorry, you have to update your Server!";       
  416.                 }
  417. ?>
  418. <!doctype html>  
  419. <html lang="en-us"><!--<![endif]-->
  420. <head>
  421.         <meta charset="utf-8">
  422.        
  423.         <title>Server Check for the Template Builder</title>
  424.        
  425.         <meta name="author" content="revaxarts.com">
  426.         <meta name="robots" content="noindex, nofollow, nocache">
  427.        
  428.         <link rel="stylesheet" href="_css/style.css">
  429. <style>
  430. html{
  431.         background-color:#f4f4f4;
  432. }
  433. body{
  434.         padding:20px;
  435.         margin:50px auto;
  436.         width:600px;
  437.         background: #FFFFFF;
  438.         border: 1px solid #D9D9D7;
  439.         border-radius:3px;
  440.         -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1), 0 0 0 3px #F9F9F9 inset;
  441.         -moz-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1), 0 0 0 3px #F9F9F9 inset;
  442.         box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1), 0 0 0 3px #F9F9F9 inset;
  443.         font-size:101%;
  444.         font-family: 'Varela Round', sans-serif;
  445.         font-size:12px;
  446.         -webkit-text-size-adjust:none;
  447. }
  448. h1{
  449.         font-size:22px;
  450.         width:auto;
  451. }
  452. bad li, .good li{
  453.         line-height:1.8em;
  454.         list-style-type:square;
  455.         margin-left:20px;
  456. }
  457. bad li{
  458.         color:#900;
  459. }
  460. good li{
  461.         color:#090;
  462. }
  463. footer{
  464.         height:auto;
  465. }
  466. </style>
  467. </head>
  468. <body>
  469. <h1><?php echo $msg?></h1>
  470. <hr>
  471.  
  472. <?php
  473. if(!empty($goodnews)){
  474.         echo '<ul class="good">';      
  475.         foreach($goodnews as $news){
  476.                 echo '<li>'.$news.'</li>';     
  477.         }
  478.         echo '</ul>';  
  479. }
  480. ?>
  481. <?php
  482. if(!empty($badnews)){
  483.         echo '<ul class="bad">';       
  484.         foreach($badnews as $news){
  485.                 echo '<li>'.$news.'</li>';     
  486.         }
  487.         echo '</ul>';  
  488. }
  489. ?>
  490. <hr>
  491. <footer>Template Builder © revaxarts.com</footer>
  492. </body>
  493. </html>
  494.  
  495. <?php
  496.                
  497.                
  498.  
  499.         }
  500.        
  501. ?>
  502.  
  503.  
  504. --
  505.  
  506. To unsubscribe, visit: http://news.inct.co.uk/_act/get_rcr.php?AO9279993852830305622430276542112
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513. {~AO9279993852830305622430276542112~}
  514.