Login   Register  
PHP Classes
elePHPant
Icontem

File: giglabel.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Karl Holz  >  Gig Cable Label  >  giglabel.php  >  Download  
File: giglabel.php
Role: Example script
Content type: text/plain
Description: Gig Cable label as web service, Accepts GET,POST,PUT and DELETE HTTP methods on select resources
Class: Gig Cable Label
Generate label images in resistors code colours
Author: By
Last change:
Date: 2012-07-12 22:59
Size: 8,924 bytes
 

Contents

Class file image Download
<?php

/*
Gig Cable Label Class demo

 */
/***************************************************************************************************************  
 * HTTP/1.0 2XX Success Pages
*************************************************************************************************************     */
function success_201($url) {
  
header("HTTP/1.0 201 Created");
  
header("Location: ".$url);
}

/***************************************************************************************************************  
 * HTTP/1.0 4XX Error Pages
*************************************************************************************************************     */
function error_400() {
 
header("HTTP/1.0 400 Bad Request");
 echo 
"<h1>HTTP/1.0 400 Bad Request</h1>";
 echo 
"This request failed to load this resource<br />";
 echo 
"Bad Request: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
  exit();
}

function 
error_403() {
 
header("HTTP/1.0 403 Forbidden");
 echo 
"<h1>HTTP/1.0 403 Forbidden</h1>";
 echo 
"You're not allowed to request this resource this way <br />";
 echo 
"Bad Request: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
  exit();
}

function 
error_404() {
 
header("HTTP/1.0 404 Not Found");
 echo 
"<h1>HTTP/1.0 404 Not Found</h1>";
 echo 
"Couldn't find the requested resource<br />";
 echo 
"Requested Resource: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
  exit();
}

function 
error_405() {
 
header("HTTP/1.0 405 Method Not Allowed");
 echo 
"<h1>HTTP/1.0 405 Method Not Allowed</h1>";
 echo 
"You're not allowed to do this type of request on this resource<br />";
 echo 
"Requested Resource: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
  exit();
}

function 
error_410() {
 
header("HTTP/1.0 410 Gone");
 echo 
"<h1>HTTP/1.0 410 Gone</h1>";
 echo 
"This Resource is gone<br />";
 echo 
"Requested Resource: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
  exit();
}

function 
error_412() {
 
header("HTTP/1.0 412 Precondition Failed");
 echo 
"<h1>HTTP/1.0 412 Precondition Failed</h1>";
 echo 
"couldn't create/update the resource, try again<br />";
 echo 
"Requested Resource: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
  exit();
}

function 
error_413() {
 
header("HTTP/1.0 413 Request Entity Too Large");
 echo 
"<h1>HTTP/1.0 413 Request Entity Too Large</h1>";
 echo 
"You're discription is too large for this resource<br />- Consider lowering the Error Correction Capability <br />";
 echo 
"Requested Resource: ".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."<br />";
 echo 
"Go back to the <a href='".'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']."' >Main</a> page";
 exit();
}
/***************************************************************************************************************  
 * HTTP application/json header
*************************************************************************************************************     */
function json_header() {
      
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
      
header("Last-Modified: " gmdate"D, d M Y H:i:s" ) . "GMT"); 
      
header("Cache-Control: no-cache, must-revalidate"); 
      
header("Pragma: no-cache");
      
header("Content-type: application/json");
}
/**   *************************************************************************************************************     */
  /**
  * Genarates an UUID
  * 
  * @author     Anis uddin Ahmad <admin@ajaxray.com>
  * @link       http://www.phpclasses.org/package/4427-PHP-Generate-feeds-in-RSS-1-0-2-0-an-Atom-formats.html ref
  * @param      string  an optional prefix
  * @return     string  the formated uuid
  */
 
function uuid($key null$prefix ='QR') {
    
$key = ($key == null)? 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] : $key;
    
$chars md5($key);
    
$uuid  substr($chars,0,8) . '-';
    
$uuid .= substr($chars,8,4) . '-';
    
$uuid .= substr($chars,12,4) . '-';
    
$uuid .= substr($chars,16,4) . '-';
    
$uuid .= substr($chars,20,12);
    return 
$prefix .'-'$uuid;
  }

require_once 
'gigcablelabel.class.php';
// view switcher
if     (array_key_exists('ORIG_PATH_INFO'$_SERVER)) { $rest=$_SERVER['ORIG_PATH_INFO']; }
elseif (
array_key_exists('PATH_INFO'$_SERVER))      { $rest=$_SERVER['PATH_INFO']; } else { $rest=''; }
// imgdata
if  (array_key_exists('QUERY_STRING'$_SERVER)) { $imgdata=$_SERVER['QUERY_STRING']; } else { $imgdata=''; }
// RESTful CRUD access switcher
if  (array_key_exists('REQUEST_METHOD'$_SERVER)) { $method=$_SERVER['REQUEST_METHOD']; } else { $method=''; }

//
$webdir=str_replace($_SERVER['DOCUMENT_ROOT'], ''dirname(__FILE__));
       
//

if ($rest) {
 
$r=explode('/'$rest);
 
array_shift($r); // drop blank before /
 
$page=array_shift($r);
 switch (
$page) {
    case 
'feed':
     
// Make dir
     
if($method == 'POST') {
      
$p=file_get_contents("php://input");
      
$post=json_decode($ptrue);
      
$dir=GigCableLabel::dir().'/'.$post['project'];
      if (!
is_dir($dir)) mkdir($dir0750true);
      
success_201('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
     } else {
      
$p=array_shift($r);
      if  (
$p == '' ) { error_400(); }
      
$dir=GigCableLabel::dir().'/'.$p;
      if (!
is_dir($dir)) error_404();
     }

     if(
$method == 'DELETE') {
       
$d=glob($dir.'/*.json');
       
$f=$dir.'/'.$imgdata.'.json';
       if (
in_array($f$d)) {
        if (
is_file($f)) {
         
unlink($f);
        } else { 
error_410(); }
       } else { 
error_404(); }
       unset(
$d);
     }
     
     if (
$method == 'PUT') {
      
$j=file_get_contents("php://input");
      
$file=json_decode($jtrue);
      if (! 
array_key_exists('code',$file) && !ctype_alnum ($file['code'])) error_404();
      if (! 
array_key_exists('width',$file) && !ctype_alnum ($file['width'])) error_404();
      if (! 
array_key_exists('height',$file) && !ctype_alnum ($file['height'])) error_404();
      if (! 
array_key_exists('x',$file) && !is_numeric($file['x'])) error_404();
      if (! 
array_key_exists('y',$file) && !is_numeric($file['y'])) error_404();

      
$file['published']=gmdate(DATE_ATOM,time());
      
$name=$dir."/".str_replace(':''|'$file['published']).".json";
      
$file['file']=$name;
      
$file['url']='http://'.$_SERVER['HTTP_HOST'].$webdir.trim($name'.');
      
$file['id']=uuid($name$file['code']);
      
$file['put']='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
      
$file['project']=$p;
      
$json=json_encode($fileJSON_ERROR_SYNTAX);
      if (! 
file_put_contents$name$json)) { error_412(); }
      
json_header();
      echo 
$json;
      exit();
    
     } elseif(
$method == 'DELETE' || $method == 'GET' || $method == 'POST') {
      
$uri='http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
      
$id=uuid($uri'atom');
      
$date=gmdate(DATE_ATOM,time());
      
json_header();
      
$j=glob($dir."/*.json");
      
$proj=array();      
      foreach (
$j as $c) {
       
$link='http://'.$_SERVER['HTTP_HOST'].$webdir.trim($c'.');
       
$f=file_get_contents($c);
       
$json=json_decode($ftrue);
       
$proj[]=$json;
     }
     echo 
json_encode($proj);
     exit();
     } else { 
error_405(); }
    break;
    case 
'ui.json'GigCableLabel::load_ui(); break;
    case 
'print':
        
$width=array_shift($r);
        
$height=array_shift($r);
        
$x=array_shift($r);
        
$y=array_shift($r);
        
$img_style=array_shift($r);
        
GigCableLabel::print_page($width$height,$x,$y,$img_style,$imgdata) || error_404();    
    break;
    case 
'label':
        
$code=array_shift($r);
        if (!
ctype_alnum ($code)) error_404();
        
$label=new GigCableLabel($code);
        
$label->make_label();    
    break;
    case 
'QR':
        
$lvl=array_shift($r);
        if (! 
ctype_upper($lvl)) error_404();
        
$code=array_shift($r);
        if (!
ctype_alnum ($code)) error_404();
        
$desc=trim(implode('//'$r), '/');
        
$label=new GigCableLabel($code);
        
$label->qr=TRUE;
        
$label->errorCorrectionLevel=$lvl;
        if (
$label->desc=trim($desc)) {
          
$label->make_label();
        } else { 
error_413(); }
    break;
 }
 exit();
}
//$label=new GigCableLabel();       
//exit();
?>