Pages

Sunday, January 15, 2012

Blogspot Code Syntax Highlighter

Here is the code to highlight syntax of the code hosted on the blogspot.
<script src="http://yandex.st/highlightjs/6.1/highlight.min.js"></script>
<link rel="stylesheet" href="http://yandex.st/highlightjs/6.1/styles/default.min.css">
<link rel="stylesheet" href="http://yandex.st/highlightjs/6.1/styles/idea.min.css">
<script>
  hljs.initHighlightingOnLoad();
</script>
<br />
<!-- Here will be the description -->
<pre style="border: 1px dashed #CCCCCC; overflow: auto;"><code style="word-wrap: normal;">
<!-- Here will be the source code -->
</code></pre>

PHP: Session based RAM

Here is a session based RAM.
<?
/**
 * @Class: CContainerManager.class.php
 * @Author: Abhishek Kumar (c) 2008.
**/ 

class ContainerManager 
{
 function __construct()
 {
  session_start();
  Get();  
 }
 
 function Get()
 {
  global $Container;
  $Container = array(); 
   
  if (isset($_SESSION['RAM'])) 
  {
   $Container = unserialize($_SESSION['RAM']); 
  }
 }
 
 function Set()
 {
  $_SESSION['RAM'] = serialize($GLOBALS['Container']); 
 }
 
 function Clean()
 {
  if (isset($_SESSION['RAM'])) 
  {
   unset($_SESSION['RAM']);
   unset($GLOBALS['Container']);
  }
 }
 
 function Add($Associate, $Value)
 {
  global $Container;
  if (!isset($Container[$Associate])) 
  {
   $Container[$Associate] = $Value;
   return true;
  }
  else
  {
   return false;
  }  
 }
 
 function Modify($Associate, $Value)
 {
  global $Container;
  if (isset($Container[$Associate])) 
  {
   $Container[$Associate] = $Value;
   return true;
  }
  else
  {
   return false;
  }  
 }
 
 function Delete($Associate)
 {
  global $Container;
  if (isset($Container[$Associate])) 
  {
   unset($Container[$Associate]);
   return true;
  }
  else
  {
   return false;
  }  
 }
}

/*
$V002O = new CContainerManager();

$V002O->Add('kid','hello');
$V002O->Add('kid1','hello1');
$V002O->Add('kid2','hello2');

//$V002O->Clean();
print_r($Container);
//$V002O->Sync();
*/

?>

AS3: Data Transporter

A data tansporter class.
package engine
{
 
 /**
  * @file CTransporter.as
  * @author Abhishek Kumar
  */
 
 import engine.CCommunicator;
 import engine.CTemplate;
 
 import engine.CQuery;
 import engine.CUrl;
 
 public class CTransporter 
 {
  private var oCommunicator:Object;
  private var oTemplate:Object;
  
  /* Ex: 
   * private var oTransporter:Object = new CTransporter();
   */ 
  public function CTransporter():void
  {
   oCommunicator = new CCommunicator();
   oTemplate = new CTemplate();
  }
  
  /* Ex:
   * oTransporter.deliver('URL01', true, 'QT001', { Username:'admin', Password:'pass' }, this.receiver);
   */ 
  public function deliver(iWebService:String, iReturn:Boolean, iQueryName:String, iQueryElement:Object, iReceiver:Function):void
  {
   oCommunicator.setUrl(CUrl.WebAppRoot + CUrl[iWebService]);
   oCommunicator.initialize();
   
   oCommunicator.setProceed(iReceiver);
   
   var queryString:String = oTemplate.setInTemplate(CQuery[iQueryName], iQueryElement);
   oCommunicator.sendDataToServer(iReturn, queryString);   
  }
 }
 
}
package engine
{ 
 import flash.net.navigateToURL;
 import flash.net.URLRequest;
 
 /**
  * @file CUrl.as
  * @author Abhishek Kumar
  */
 
 public class CUrl
 {
  public static var WebAppRoot:String;
  public static var UserAssetPath:String;
  
  public static const WS01:String = "_guru.php";
  
  public static function openUrl(iUrl:String, iWindowType:String):void
  {
   var request:URLRequest = new URLRequest(iUrl);
   try { navigateToURL(request, iWindowType); } catch (e:Error) { };
  }
 }
 
}

AS3: Form Verifier

A form verifier class.
package engine
{ 
 
 /**
  * @file CFormVerifier.as
  * @author Abhishek Kumar
  */
 
 import mx.controls.Alert;
 
 public class CFormVerifier
 {
  private var formItems:Array;
  
  public function CFormVerifier()
  {
   formItems = [];
  }
  
  public function push(itemId:int):void
  {
   formItems[itemId] = 1;
  }
  
  public function pop(itemId:int):void
  {
   formItems[itemId] = 0;
  }
  
  public function check(filledItems:int):Boolean
  {
   for (var i:int = 0, sum:int = 0; i < formItems.length; i++)
   {
    sum += formItems[i];
   }
   return ((sum == filledItems) ? true : false);
  }
  
  public function alert():void
  {   
   Alert.show('Please fill-up all the required fields!', 'Alert');
  }
 }
 
}

AS3: Form Validator

A form validator class
package engine
{ 
 
 /**
  * @file CFormValidator.as
  * @author Abhishek Kumar
  */
 
 import mx.controls.Alert;
 
 public class CFormValidator 
 {
  private var formItems:Array;
  
  public function CFormValidator()
  {
   formItems = [];
  }
  
  private function checkFormId(formId:String):void
  {
   if (formItems[formId] == null)
    formItems[formId] = [];
  }
  
  public function push(formId:String, elementId:Number):void
  {
   checkFormId(formId);
   formItems[formId][elementId] = 1;
  }
  
  public function pop(formId:String, elementId:Number):void
  {
   checkFormId(formId);
   formItems[formId][elementId] = 0;
  }
  
  public function check(formId:String, elementId:Number):Boolean
  {
   checkFormId(formId);
   for (var i:Number = 0, sum:Number = 0; i < formItems[formId].length; i++)
   {
    sum += formItems[formId][i];
   }
   return ((sum == elementId) ? true : false);
  }
  
  public function alert():void
  {   
   Alert.show('Please fill-up all the required fields!', 'Alert');
  }
 }
 
}

AS3: Date-Time Query

A Date-time query methods.
package engine 
{
 /**
  * @file CDateTimeQuery.as
  * @author Abhishek Kumar
  */
 public class CDateTimeQuery
 {
  
  public function CDateTimeQuery() 
  {
   
  }
  
  public static function isExpired(yyyy:Number, mm:Number, dd:Number):Boolean
  {
   var today:Date = new Date();
   var expiry:Date = new Date(yyyy, mm - 1, dd);
   var decision:Boolean = (today > expiry) ? true : false;
   return (decision);
  }
  
  public static function isValid(year:Number, month:Number, date:Number):Boolean
  {
   if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
   {
    return ((date >= 1 && date <= 31)?true:false);
   }
   else if (month == 4 || month == 6 || month == 9 || month == 11)
   {
    return ((date >= 1 && date <= 30)?true:false);
   }
   else if (month == 2)
   {
    if (year%100 == 0)
    {
     return ((year % 400 == 0) ? ((date >= 1 && date <= 29)?true:false) : ((date >= 1 && date <= 28)?true:false));
    }
    else if (year%4 == 0)
    {
     return ((date >= 1 && date <= 29)?true:false);
    }
    else
    {
     return ((date >= 1 && date <= 28)?true:false);
    }
   }
   return false;
  }
 }

}

AS3: Data-tube ... an evolved concept

A data-tube concept based class.
package engine 
{
 /**
  * @file CDataTube.as
  * @author Abhishek Kumar
  */
 public class CDataTube
 {
  
  public function CDataTube() 
  {
   
  }
  
  public function manageItem(iCommand:Boolean, iItem:*, iList:*):Array
  {
   if (iList == undefined)
   {
    iList = [];
    iList = addItem(iItem, iList);
   }
   else
    iList = (iCommand)? addItem(iItem, iList) : deleteItem(isPresent(iItem, iList), iList);
   return iList;
  }
  
  private function addItem(iItem:*, iList:Array):Array
  {
   iList.push(iItem);
   return iList;
  }
  
  private function deleteItem(iIndex:int, iList:Array):Array
  {
   for (var j:int = iIndex; j < iList.length; j++)
    iList[j] = iList[j + 1];
   iList.length--;
   return iList;
  }
  
  private function isPresent(iItem:*, iList:Array):int
  {
   for (var i:int = 0; i < iList.length; i++ )
    if (iList[i] == iItem)
     return i;
   return -1;
  }
  
 }

}

AS3: Cryptography Methods

Few cryptography methods.
package engine 
{
 /**
  * @file CCryptography.as
  * @author Abhishek Kumar
  */
 
 import com.hurlant.util.Hex;
 import com.hurlant.util.Base64;
 
 public class CCryptography
 {
  
  public function CCryptography() 
  {
   
  }
  
  public static function encrypt(iMsg:String):String
  {
   return Hex.fromString(Base64.encode(XOR(iMsg)));
  }
  
  public static function decrypt(iMsg:String):String
  {
   return XOR(Base64.decode(Hex.toString(iMsg)));
  }
  
  private static function XOR(source:String):String 
  {
      var key:String = "HjRUPxRjRUPxRdVDYFdVDFS0HjRUPxRdVDYF6PkFBK3YlXjc";
      var result:String = new String();
      for (var i:Number = 0; i < source.length; i++) 
      {
   if (i > (key.length - 1)) 
   {
       key += key;
   }
   result += String.fromCharCode(source.charCodeAt(i) ^ key.charCodeAt(i));
      }
      return result;
  }
  
 }

}

AS3: Flex to Web-service Communicator

Here is a flex to web-service communicator. It dispatches a package of data to the server and receives the result in response from the server.
package engine
{ 
 
 /**
  * @file CCommunicator.as
  * @author Abhishek Kumar
  */
 
 import mx.rpc.http.HTTPService;
 import com.sephiroth.Serializer;
 import mx.rpc.events.ResultEvent;
 import mx.rpc.events.FaultEvent;
 import mx.controls.Alert;
 import engine.CUtility;
 
 public class CCommunicator
 {  
  private var communicationAgent:HTTPService;
  private var communicationUrl:String;
  private var communicationProceed:Function;
  
  /* Ex:
   * public var oCommunicator:Object = new CCommunicator();
   */
  public function CCommunicator():void
  {
   //trace('CCommunicator');
  }
  
  /* Ex:
   * <mx:HTTPService id="transmittingAgent" url="<url-link>" result="oCommunicator.receiveDataFromServer(event);" fault="oCommunicator.handleCommunicationFault(event);" useProxy="false" method="POST" resultFormat="text" />
   * oCommunicator.setCommunicator(transmittingAgent);
   */
  public function setCommunicator(iEntity:HTTPService):void
  {
   communicationAgent = iEntity;   
  }
  
  /* Ex:
   * oCommunicator.setUrl();
   */
  public function setUrl(iUrl:String):void
  {
   communicationUrl = iUrl;
  }
  
  /* Ex:
   * oCommunicator.setProceed();
   */
  public function setProceed(iProcedure:Function):void
  {
   communicationProceed = iProcedure;
  }
  
  /* Ex:
   * oCommunicator.initialize();
   */
  public function initialize():void 
  {
      communicationAgent = new HTTPService();
      communicationAgent.url = communicationUrl; 
      communicationAgent.method = "POST";
      communicationAgent.addEventListener("result", receiveDataFromServer);
      communicationAgent.addEventListener("fault", handleCommunicationFault);
  }
  
  private function receiveDataFromServer(event:ResultEvent):void
  {
   var receivedDataFromServer:String = CUtility.filter(event.result.toString());
   var extractedInformationFromReceivedData:Object = Serializer.unserialize(unescape(receivedDataFromServer));
   communicationProceed(extractedInformationFromReceivedData);
  }
  
  private function handleCommunicationFault(event:FaultEvent):void
  {
   Alert.show(event.fault.faultString, 'Error');
  }
  
  public function sendDataToServer(iReturn:Boolean, iQuery:String):void
  {
   var packagedData:Object = {COMMAND:iReturn, QUERY:iQuery};
   var transmittingDataToServer:String = Serializer.serialize(packagedData);
   communicationAgent.send({message:transmittingDataToServer});
  } 
 }  
}

package engine
{
 /**
  * @file CUtility.as
  * @author Abhishek Kumar
  */
 public class CUtility
 {  
  public function CUtility() 
  {   
  }  
  public static function filter(iMsg:String):String
  {
   return iMsg.split('+').join(' ');
  }  
 }
}

PHP: Webpage Publisher

A webpage publishing class.
<?php

/**
 * @Class: CPublisher.class.php
 * @Author: Abhishek Kumar
**/

require_once("CTemplate.class.php");
require_once("CFile.class.php");

class CPublisher
{
 private static $oTemplate;

 public static function initialize()
 {
  self::$oTemplate = new CTemplate();
  self::$oTemplate->setTemplatePath('asset/template');
 }

 public static function Publish($iContent, $iInclude)
 {
  self::initialize();

  $Output = 
   self::$oTemplate->ModifyAndDump('Container.dt', 
    array(
    'Header'=>self::getHeader($iInclude),
    'Content'=>self::$oTemplate->ModifyAndDump('ContainerBody.dt', 
      array(
      'Header'=>self::$oTemplate->Dump('Header.st'), 
      'Content'=>$iContent,
      'Footer'=>self::$oTemplate->Dump('Footer.st')
      )
     ),
    )
   );

  return $Output;
 }

 private static function getHeader($iInclude)
 {
  $Output = '';
  if($iInclude != null)
  {
   $oFile = new CFile();
   for($i=0; $igetFileExtension($iInclude[$i]))
    {
     case '.js':  $template = 'JavaScript.dt'; break;
     case '.css': $template = 'StyleSheet.dt'; break;
    }
    $Output .= self::$oTemplate->ModifyAndDump($template, array('FileName'=>$iInclude[$i]));
   }
  }
  return $Output;
 }

 public static function PublishWithoutFooter($iContent, $iInclude)
 {
  self::initialize();

  $Output = 
   self::$oTemplate->ModifyAndDump('Container.dt', 
    array(
    'Header'=>self::getHeader($iInclude),
    'Content'=>self::$oTemplate->ModifyAndDump('ContainerBody.dt', 
      array(
      'Header'=>self::$oTemplate->Dump('Header.st'), 
      'Content'=>$iContent,
      'Footer'=>''
      )
     ),
    )
   );

  return $Output;
 }

}

?>
Example 1:
<?php
// Template#1
require_once('_config.php');

require_once('engine/CPublisher.class.php');
require_once('engine/CTemplate.class.php');

$oTemplate = new CTemplate();
$oTemplate->setTemplatePath('asset/template');

$Output = $oTemplate->ModifyAndDump('foExit.dt', 
 array(
  'ProceedAfterLogout'=>'Login.php'
 ));

echo CPublisher::Publish($Output, array('HojaDeEstilo.css'));

?>
Example 2:
<?php
// Template#2
require_once('_config.php');

require_once('engine/CPublisher.class.php');
require_once('engine/CTemplate.class.php');

$oTemplate = new CTemplate();
$oTemplate->setTemplatePath('asset/content');

$Output = $oTemplate->Dump('CertifiedSeller.st');

echo CPublisher::Publish($Output, array('HojaDeEstilo.css'));

?>

PHP: Image Uploader

Here is an image uploader with re-sizing methods
<?php

/**
 * @file ImageUploader.php
 * @author Abhishek Kumar
**/

$tempFile = $_FILES['Filedata']['tmp_name'];
$fileName = $_FILES['Filedata']['name'];
$fileSize = $_FILES['Filedata']['size'];

$timestamp = date("YmdHis");
$new_fileName = "IMG".$timestamp.strtolower(getFileExtension($fileName));
move_uploaded_file($tempFile, "warehouse/" . $new_fileName);

echo $new_fileName;
 
function getFileExtension($iFile)
{
 $iExtension = strrpos($iFile, ".");
 $oExtension = substr($iFile, $iExtension, strlen($iFile));
 $oString = strtolower($oExtension);
 return $oString;
}

function imageResizer($image)
{
 //$image = "Database/Foto/IMG_001.jpg"; // Name of the source image
 list($PictureWidth, $PictureHeight) = getimagesize($image); // Get original size of source image
 
 $PictureAspectRatio = $PictureWidth/$PictureHeight;

 $Width = 160;
 $Height = 120;
 $AspectRatio = $Width/$Height;
 
 if ($PictureAspectRatio > $AspectRatio)
 {
  $NewWidth = $Width;
  $NewHeight = $Width/$PictureWidth * $PictureHeight;
 }
 else if ($PictureAspectRatio < $AspectRatio)
 {
  $NewWidth = $Height/$PictureHeight * $PictureWidth;
  $NewHeight = $Height;
 }
 else if ($PictureAspectRatio == $AspectRatio)
 {
  $NewWidth = $Width;
  $NewHeight = $Height;
 }
 
 # Generate the resources
 $thumb = imagecreatetruecolor($NewWidth, $NewHeight); // Create resource for thumbnail
 $source = imagecreatefromjpeg($image); // Set the resource for the source image
 
 # Generate the actual thumbnail
 imagecopyresized($thumb, $source, 0,0,0,0, $NewWidth, $NewHeight, $PictureWidth, $PictureHeight); // Generate thumbnail data
 
 # Stream the data to a filename
 imagejpeg($thumb,$image,50); // Stream image to file 'original_thumbnail.jpg'
 
 # Release the memory
 imagedestroy($thumb); // Always remember to clear your resources!
 imagedestroy($source); // Otherwise, you get a "memory leak" 
}

?>

PHP: Directory Handlers

Directory handling methods.
<?php

/**
 * @Class: CDirectory.class.php
 * @Author: Abhishek Kumar
**/

require_once("CTemplate.class.php");
require_once("CFile.class.php");

class CDirectory
{
 private $VoTemplate;
 private $VoCFile;
 private $Avoid;

 public function __construct()
 {
  $this->VoTemplate = new CTemplate();
  $this->VoCFile = new CFile();
  
  $this->Avoid = array();
  $this->Avoid['Directory'] = array();
  $this->Avoid['File'] = array(".", "..");
  $this->Avoid['Extension'] = array();
 }

 public function Directory($iCommand, $iDir) 
 { 
  switch($iCommand)
  {
   case 'CREATE': 
    mkdir($iDir, 0700);
    $oStatus = true;
    break;
   case 'REMOVE': 
    rmdir($iDir);
    $oStatus = true;
    break;
   case 'DELETE': 
    $this->deleteDir($iDir);
    $oStatus = true;
    break;
   default:
    $oStatus = false;
  }
  
  return $oStatus;
 }

 private function deleteDir($dir) 
 { 
  if (substr($dir, strlen($dir)-1, 1) != '/') 
   $dir .= '/'; 
  
  if ($handle = opendir($dir)) 
  { 
   while ($obj = readdir($handle)) 
   { 
    if ($obj != '.' && $obj != '..') 
    { 
     if (is_dir($dir.$obj)) 
     { 
        if (!$this->deleteDir($dir.$obj)) 
         return false; 
     } 
     elseif (is_file($dir.$obj)) 
     { 
        if (!unlink($dir.$obj)) 
         return false; 
     } 
    } 
   } 
   
   closedir($handle); 
  
   if (!@rmdir($dir))
    return false; 
  
   return true; 
  }
  
  return false; 
 }
 
 public function setAvoid($Command, $List)
 {
  switch($Command)
  {
   case 'Directory':
    $this->Avoid['Directory'] = $List;
    break;
   case 'File':
    $this->Avoid['File'] = array_merge($this->Avoid['File'], $List);
    break;
   case 'Extension':
    $this->Avoid['Extension'] = $List;
    break;
  }
 }
 
 public function Explore($iFolder, $iLevel)
 {
  $Directory = opendir("./$iFolder"); 
  
  $TFolderArg = array();
  
  $fileLevelPrefix = $folderLevelPrefix = "\n";
  
  for($i=0; $i<$iLevel; $i++)
  {
   if($i < $iLevel-1)
   {
    $folderLevelPrefix .= "\t";
   }
   $fileLevelPrefix .= "\t";
  }
  
  while (false !== ($Entry = readdir($Directory)))
  {
   $fileExtension = $this->VoCFile->getFileExtensionAlt($Entry);

   if($this->isPresent($Entry, $this->Avoid['File']) == 0 && $this->isPresent($fileExtension, $this->Avoid['Extension']) == 0)
   {
    if($fileExtension == NULL)
    {
     $DiveIn = $iFolder.'/'.$Entry;

     if($this->isPresent($DiveIn, $this->Avoid['Directory']) == 0)
     {
      $TFolderArg['Content'] .= $this->Explore($DiveIn, $iLevel+1);
     }     
    }
    else
    {
     $TFileArg = array();
     $TFileArg['filepath'] = $iFolder.'/'.$Entry;
     $TFileArg['filetype'] = $fileExtension;
     $TFileArg['filename'] = $this->VoCFile->getFileNameAlt($Entry);
     
     $fileTemplate = $fileLevelPrefix.'';
     $TFolderArg['Content'] .= $this->VoTemplate->FitIn($fileTemplate, $TFileArg);
    } 
   }
  }

  closedir();
  
  $TFolderArg['folderpath'] = ($iFolder == "") ? "/." : $iFolder;
  $TFolderArg['foldername'] = $this->getFolderName($TFolderArg['folderpath']);
  $TFolderArg['Content'] = ($TFolderArg['Content'] == NULL) ? "" : $TFolderArg['Content'];
  
  $folderTemplate = $folderLevelPrefix.'[Content]'.$folderLevelPrefix.'';
  $Output = $this->VoTemplate->FitIn($folderTemplate, $TFolderArg);
  
  return $Output;
 }
 
 private function isPresent($sItem, $aDatabase)
 {
  $nOutput = 0;
  for ($i = 0; $i < count($aDatabase); $i++)
  {
   if ($aDatabase[$i] == $sItem)
   {
    $nOutput = 1;
   }
  }
  return ($nOutput);
 }
 
 private function getFolderName($iPath) 
 {
  $oPath = explode("/", $iPath);
  return $oPath[count($oPath)-1];
 }
}
  
/* EXAMPLE:

$handleDir = new CDirectory();
$handleDir->Directory('CREATE','e:/dirname');
$handleDir->Directory('DELETE','e:/dirname');

*/

?>

PHP: File Utilities Methods

Utility methods for file handling.
<?php

/**
 * @Class: CFile.class.php
 * @Author: Abhishek Kumar
**/

class CFile
{
 public function getFileExtension($iFile)
 {
  $iExtension = strrpos($iFile, ".");
  $oExtension = substr($iFile, $iExtension, strlen($iFile));
  $oString = strtolower($oExtension);
  return $oString;
 }

 public function getFileName($iFile)
 {
  $iExtension = strrpos($iFile, ".");
  $oFileName = substr($iFile, 0, $iExtension);
  return $oFileName;
 }

 public function getFileExtensionAlt($str) 
 {
  $i = strrpos($str,".");
  if (!$i) { return ""; }
 
  $l = strlen($str) - $i;
  $ext = substr($str,$i+1,$l);
 
  return $ext;
 }
 
 public function getFileNameAlt($str) 
 {
  $i = strrpos($str,".");
  if (!$i) { return ""; }
 
  $filename = substr($str,0,$i);
 
  return $filename;
 }

 public function CreateFile($iFileName)
 {
  if (!$handle = fopen($iFileName, 'w+'))
  {
   return "Error: Cannot creat file ($iFileName).";
  }
  else
  {
   fclose($handle);
  }
 }

 public function WriteOnFile($iFileName, $iContent)
 {
  // Make sure the file exists and is writable first.
  if (is_writable($iFileName))
  {
    if (!$handle = fopen($iFileName, 'w'))
    {
     $output = "Error: Cannot open file ($iFileName).";
    }
    else
    {
     // Write $iContent to this opened file.
     if (fwrite($handle, $iContent) === false)
     {
      $output = "Error: Cannot write to file ($iFileName).";
     }
     else
     {
      $output = true;     
      fclose($handle);
     }
    }
  }
  else
  {
     $output = "Error: The file ($iFileName) is not writable.";
  }
  
  return $output;
 }  
 
 public function ReadFromFile($iFileName)
 {
  // Make sure the file exists and is readable.
  if (is_readable($iFileName)) 
  {
   if (!$handle = fopen($iFileName, "r"))
   {
      $output = "Error: Cannot open file ($iFileName).";
   }
   else
   {
    $output = fread($handle, filesize($iFileName));
    if ($output === false)
    {
       $output = "Error: Cannot read from file ($iFileName).";
    }
    else
    {
       fclose($handle);
    }
   }
  } 
  else 
  {
   $output = "Error: The file ($iFileName) is not readable.";
  }

  return $output;
 }
 
 public function ReadFromRemoteFile($iFileUrl, $iMethod)
 {
  switch($iMethod)
  {
   case 'OLD':
    $handle = fopen($iFileUrl, "rb");
    $contents = '';
    while (!feof($handle)) 
    {
     $contents .= fread($handle, 8192);
    }
    fclose($handle);
    break;
   default:
    $handle = fopen($iFileUrl, "rb");
    $contents = stream_get_contents($handle);
    fclose($handle);
    break;
  }
 }

 public function AppendInFile($iFileName, $iContent)
 {
  // Make sure the file exists and is writable first.
  if (is_writable($iFileName))
  {
    if (!$handle = fopen($iFileName, 'a'))
    {
     $output = "Error: Cannot open file ($iFileName).";
    }
    else
    {
     // Write $iContent to this opened file.
     if (fwrite($handle, $iContent) === false)
     {
      $output = "Error: Cannot write to file ($iFileName).";
     }
     else
     {
      $output = true;     
      fclose($handle);
     }
    }
  }
  else
  {
     $output = "Error: The file ($iFileName) is not writable.";
  }
  
  return $output;
 }  
}
  
/* EXAMPLE:

$obj = new CFile();
echo $obj->ReadFromFile('config.xml');

*/

?>

PHP: Template Setter

A template setting class for a webpage.
<?php

/**
 * @Class: CTemplate.class.php
 * @Author: Abhishek Kumar
**/

require_once("CFile.class.php");
  
class CTemplate
{
 private $HandleFile;
 private $Template;
 private $TemplatePath;
 
 public function __construct()
 {
  $this->HandleFile = new CFile();
 }
 
 public function __destruct()
 {
  unset($this->HandleFile);
 }

 public function FitIn($iTemplate, $iTemplateArgument)
 {
  $this->Template = $iTemplate;
  $this->Template = $this->setTemplate($iTemplateArgument);
  return $this->Template;
 }

 public function ModifyAndDump($iTemplateName, $iTemplateArgument)
 {
  $this->Template = $this->getTemplate($iTemplateName);
  $this->Template = $this->setTemplate($iTemplateArgument);
  return $this->Template;
 }
 
 public function Dump($iTemplateName)
 {
  $this->Template = $this->getTemplate($iTemplateName);
  return $this->Template;
 }
 
 public function setTemplatePath($iPath)
 {
  $this->TemplatePath = $iPath;
 }

 private function getTemplate($iTemplateName)
 {
  return $this->HandleFile->ReadFromFile($this->TemplatePath.'/'.$iTemplateName); 
 }

 private function setTemplate($iTemplateArgument)
 {
  $iCache = $this->Template;
  foreach($iTemplateArgument as $iKey => $iValue)
  {
   $iTag = $this->createTag($iKey);
   $iCache = str_replace($iTag, $iValue, $iCache);
  }
  return $iCache;
 }
 
 private function createTag($iTagName)
 {
  return '['.$iTagName.']';
 }
}

/* EXAMPLE:

$handleTemplate = new CTemplate();
echo $handleTemplate->ModifyAndDump('Template001', array('Title'=>'Wow', 'Content'=>'What an idea!'));

*/

?>

Saturday, January 14, 2012

PHP: Web-service for communicating with MySQL database

Here is a php to mysql communication gateway packaged as a web-service.

Gateway.php
<?php

require_once('Config.php');
require_once('engine/CMySqlManager.class.php');

$VoCMySqlManager = new CMySqlManager();
$VoCMySqlManager->Connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_SCHEMA);

$_POST['message'] = (!isset($_POST['message']))? null : $_POST['message'];
$_GET['message'] = (!isset($_GET['message']))? null : $_GET['message'];

$C2S_message = ($_POST['message'] == null)? $_GET['message'] : $_POST['message'];
$S2S_information = unserialize(stripslashes(urldecode($C2S_message)));

if(isset($S2S_information->COMMAND) && isset($S2S_information->QUERY))
{
 $S2C_output = array();
 
 $S2C_output = $VoCMySqlManager->Process($S2S_information->QUERY, $S2S_information->COMMAND);
 
 if($S2S_information->COMMAND)
  array_pop($S2C_output);

 echo urlencode(serialize($S2C_output));
 //echo urlencode(serialize($S2S_information->QUERY));
}

?>

Config.php
<?php

$parentDir = dirname(__FILE__);
define('APPROOT',$parentDir.'/');

$serverName = $_SERVER['SERVER_NAME'];
define('WEBROOT','http://'.$serverName.'/test/');

define('DB_HOST', $serverName);
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_SCHEMA', 'test_db');

?>

CMySqlManager.class.php
<?php

/**
 * @Class: CMySqlManager
 * @Author: Abhishek Kumar
**/

class CMySqlManager
{
 public $mysql_host;
 public $mysql_user;
 public $mysql_password;
 public $mysql_database;

 public function Connect($iHost, $iUser, $iPassword, $iDatabase)
 {
  $this->mysql_host = $iHost;
  $this->mysql_user = $iUser;
  $this->mysql_password = $iPassword;
  $this->mysql_database = $iDatabase;
 }

 public function Process($iQuery, $iReturn)
 {
  if($Connection = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_password))
   if($Database = mysql_select_db($this->mysql_database))
    if($Result = mysql_query($iQuery))
    {
     if($iReturn)
     {
      while ($Data[] = mysql_fetch_array($Result, MYSQL_ASSOC));
      mysql_free_result($Result);
     }
     mysql_close($Connection);
     return $Data;
    }
    else
     return 'Error# '.mysql_error();  
   else
    return 'Error# '.mysql_error();
  else
   return 'Error# '.mysql_error();
 }
 // deprecated
 public function Execute($iQuery)
 {
  if($Connection = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_password))
   if($Database = mysql_select_db($this->mysql_database))
    if($Result = mysql_query($iQuery))
     mysql_close($Connection);
    else
     return 'Error# '.mysql_error();  
   else
    return 'Error# '.mysql_error();
  else
   return 'Error# '.mysql_error();
 }
 // deprecated
 public function Query($iQuery)
 {
  if($Connection = mysql_connect($this->mysql_host, $this->mysql_user, $this->mysql_password))
   if($Database = mysql_select_db($this->mysql_database))
    if($Result = mysql_query($iQuery))
    {
     while ($Data[] = mysql_fetch_array($Result, MYSQL_ASSOC));
     mysql_free_result($Result);
     mysql_close($Connection);
     return $Data;
    }
    else
     return 'Error# '.mysql_error();  
   else
    return 'Error# '.mysql_error();
  else
   return 'Error# '.mysql_error();
 }
}
/*
// Example
require_once('CMySqlManager.php');

$VoCMySqlManager = new CMySqlManager();
$VoCMySqlManager->Connect('localhost','root','password','test');
//$query = "INSERT INTO names VALUES('','Sonali','','Sharma','sonali@gmail.com')";
//$output = $VoCMySqlManager->Execute($query);
$query = 'SELECT * FROM names';
$output = $VoCMySqlManager->Query($query);
//$query = 'SELECT * FROM names';
//$output = $VoCMySqlManager->Process($query, true);

print_r($output);
*/
?>

Thursday, January 12, 2012

Android: Country's ISD Code

Recently, I got a very short missed call from an unknown foreign number. I traced back the location of that number via ISD code. From this, I got the idea of creating a program to detect this on the go (offline). So I'd created the application in flex for android platform.

Below is the snapshot of that application:

Here is a link to download the file:

Link: CountryISDCode.apk

Download it either directly on your mobile-device or transfer it from computer to the device. Then, install it via Application Installer of the device.

Wednesday, January 4, 2012

AS3: Swf Communicator

This class could be used for two-way communication in between parent swf and child swf; where the child swf is loaded inside the parent swf.

SOURCE CODE
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package
{
 import CEvent;
 
 import flash.events.Event;
 import flash.events.IEventDispatcher;
 
 import mx.events.FlexEvent;
 import mx.managers.SystemManager;
 
 import spark.components.Application;
 
 /**
  * @file CSwfCommunicator.as
  * @author Abhishek Kumar
  */
 public class CSwfCommunicator
 {
  public var prepare:Function;
  public var procedure:Function;
  public var proceed:Function;
  
  private var holder:SystemManager;
  
  private var childApp:Application;
  private var childFunc:Function;
  
  public function CSwfCommunicator()
  {
   trace("CSwfCommunicator -> constructor");
  }
  
  public function instantiate(data:*):void
  {
   trace("CSwfCommunicator -> instantiate");
   holder = data as SystemManager;    
   attachListeners(holder);
  }
  
  public function terminate():void
  {
   trace("CSwfCommunicator -> terminate");
   terminateChildApp();
   holder = null;
  }
  
  private function attachListeners(dispatcher:IEventDispatcher):void
  {
   trace("CSwfCommunicator -> attachListeners");
   dispatcher.addEventListener(FlexEvent.APPLICATION_COMPLETE, applicationCompleteHandler);
  }
  
  private function detachListeners(dispatcher:IEventDispatcher):void
  {
   trace("CSwfCommunicator -> detachListeners");
   dispatcher.removeEventListener(FlexEvent.APPLICATION_COMPLETE, applicationCompleteHandler);
  }
  
  private function applicationCompleteHandler(event:FlexEvent):void
  {
   trace("CSwfCommunicator -> applicationCompleteHandler:", event);
   detachListeners(holder);
   initializeChildApp(holder.application);
   if(prepare != null) 
    prepare(holder.application);
  }
  
  // Child App
  
  public function initializeChildApp(data:*):void
  {
   trace("CSwfCommunicator -> initializeChildApp");
   childApp = Application(data);
   attachListeners_childApp(childApp);
  }
  
  public function terminateChildApp():void
  {
   trace("CSwfCommunicator -> terminateChildApp");
   detachListeners_childApp(childApp);
   childApp = null;
  }
  
  private function attachListeners_childApp(dispatcher:IEventDispatcher):void
  {
   trace("CSwfCommunicator -> attachListeners_childApp");
   dispatcher.addEventListener(CEvent.CALL_PARENT_METHOD, callParentMethodHandler);
  }
  
  private function detachListeners_childApp(dispatcher:IEventDispatcher):void
  {
   trace("CSwfCommunicator -> detachListeners_childApp");
   dispatcher.removeEventListener(CEvent.CALL_PARENT_METHOD, callParentMethodHandler);
  }
  
  // Comunicators ... for parent
  
  private function callParentMethodHandler(e:CEvent):void
  {
   trace("CSwfCommunicator -> callParentMethodHandler:", e);
   var o:Object = e.data;
   //trace("CSwfCommunicator -> callParentMethodHandler:", o.method, o.args, o.revert);   
   if(o.revert != null)
   {
    if(procedure != null) 
     callChildMethod(o.revert, procedure(o.method, o.args));
   }
   else
   {
    if(proceed != null) 
     proceed(o.method, o.args);
   }
  }
  
  public function callChildMethod(method:String, args:Object):Object
  {  
   trace("CSwfCommunicator -> callChildMethod:", method, args);
   if (childApp.hasOwnProperty(method))
   {
    childFunc = childApp[method] as Function;
    return childFunc(args);
   }
   return null;
  }
  
  /*
  // Comunicators ... for child
  public function callParentMethod(method:String, param:Object, ack:String):void
  {
   trace("CSwfCommunicator -> callParentMethod:", method, param, ack);
   var o:Object = {
    method: method, 
    args: param, 
    revert: ack
   };
   dispatchEvent(new CEvent(CEvent.CALL_PARENT_METHOD, o));
  }
  */
 }
}

USAGE (Parent)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private function onLoad_ChildSwf():void
{
 var sc:CSwfCommunicator = new CSwfCommunicator();
 sc.procedure = commander1;
 sc.proceed = commander2;
 sc.instantiate(swfholder_sl.content);
}

private function commander1(method:String, o:Object):Object
{
 trace('commander1', method, o);
 var ack:Object = {};
 switch(method)
 {
  case 'foo': ack.text = JSON.encode(o);
   break;
 }
 return ack;
}

private function commander2(method:String, o:Object):void
{
 trace('commander2', method, o);
 switch(method)
 {
  case 'foo': display_lbl.text = JSON.encode(o);
   break;
 }
}

USAGE (Child)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import CEvent;
import CSwfCommunicator;

// Important Method
public function callParentMethod(method:String, param:Object, ack:String):void
{
 trace("callParentMethod:", method, param, ack);
 var o:Object = {
  method: method, 
  args: param, 
  revert: ack
 };
 dispatchEvent(new CEvent(CEvent.CALL_PARENT_METHOD, o));
}

protected function btn_clickHandler(event:MouseEvent):void
{
 callParentMethod('foo', {a:1, b:2}, 'acknowledge');
}

public function acknowledge(o:Object):void
{
 display_tb.text = o.text;
}

Tuesday, January 3, 2012

AS3: Swf Loader

A new class for loading swf files with events.

SOURCE CODE
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package
{
 import flash.events.Event;
 import flash.events.HTTPStatusEvent;
 import flash.events.IEventDispatcher;
 import flash.events.IOErrorEvent;
 import flash.events.ProgressEvent;
 import flash.events.SecurityErrorEvent;
 
 /**
  * @file CSwfLoader.as
  * @author Abhishek Kumar
  */
 public class CSwfLoader
 {
  public var prepare:Function;
  public var progress:Function;
  public var proceed:Function;
  
  public var instance:*;
  
  public function CSwfLoader()
  {
   trace("CSwfLoader -> constructor");
  }
  
  public function retrieve(src:String):void
  {
   instance.unloadAndStop(true);
   instance.load(src);
   attachListeners(instance);
  }
  
  private function attachListeners(dispatcher:IEventDispatcher):void
  {
   trace("CSwfLoader -> attachListeners");
   dispatcher.addEventListener(Event.COMPLETE, completeHandler);
   dispatcher.addEventListener(Event.OPEN, openHandler);
   dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
   dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
   dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
   dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  }
  
  private function detachListeners(dispatcher:IEventDispatcher):void
  {
   trace("CSwfLoader -> detachListeners");
   dispatcher.removeEventListener(Event.COMPLETE, completeHandler);
   dispatcher.removeEventListener(Event.OPEN, openHandler);
   dispatcher.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
   dispatcher.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
   dispatcher.removeEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
   dispatcher.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  }
  
  private function completeHandler(event:Event):void
  {
   trace("CSwfLoader -> completeHandler:", event);
   detachListeners(instance);
   if(proceed != null) 
    proceed();
  }
  
  private function openHandler(event:Event):void
  {
   trace("CSwfLoader -> openHandler:", event);
   if(prepare != null) 
    prepare();
  }
  
  private function progressHandler(event:ProgressEvent):void
  {
   trace("CSwfLoader -> progressHandler loaded:", event.bytesLoaded, "total:", event.bytesTotal);
   if(progress != null)
    progress(event.bytesLoaded, event.bytesTotal);
  }
  
  private function securityErrorHandler(event:SecurityErrorEvent):void
  {
   trace("CSwfLoader -> securityErrorHandler:", event);
  }
  
  private function httpStatusHandler(event:HTTPStatusEvent):void
  {
   trace("CSwfLoader -> httpStatusHandler:", event);
  }
  
  private function ioErrorHandler(event:IOErrorEvent):void
  {
   trace("CSwfLoader -> ioErrorHandler:", event);
  }
 }
}

AS3: Xml Stack Loader

The class is used to load multiple xml/text files in a queue.

SOURCE CODE
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package
{
 import CSingleFileLoader;
 
 /**
  * @file CXmlStackLoader.as
  * @author Abhishek Kumar
  */
 public class CXmlStackLoader
 {
  public var prepare:Function;
  public var progress:Function;
  public var proceed:Function;
  
  public function CXmlStackLoader()
  {
   trace ("CXmlStackLoader -> constructor");
  }
  
  public function retrieve(src:String):void
  {
   trace ("CXmlStackLoader -> retrieve src", src);
   var oSingleFileLoader:CSingleFileLoader = new CSingleFileLoader();
   oSingleFileLoader.prepare = prepare;
   oSingleFileLoader.progress = progress;
   oSingleFileLoader.proceed = onLoad_XmlStack;
   oSingleFileLoader.retrieve(src);
  }  
  
  private function onLoad_XmlStack(data:String):void
  {
   trace ("CXmlStackLoader -> onLoad_XmlStack");
   var list:XMLList = new XMLList(data);
   var elenco:Array = [];
   
   for(var i:int=0, len:int=list.length(); i<len; i++)
    if(String(list.file[i].@enabled).toLowerCase() == 'true')
     elenco.push(list.file[i].@src);
   
   var oMultipleFileLoader:CMultipleFileLoader = new CMultipleFileLoader();
   oMultipleFileLoader.prepare = prepare;
   oMultipleFileLoader.progress = progress;
   oMultipleFileLoader.proceed = onComplete_XmlStack;
   oMultipleFileLoader.retrieve(elenco);
  }
  
  private function onComplete_XmlStack(list:Array):void
  {
   trace ("CXmlStackLoader -> onComplete_XmlStack");
   proceed(list);
  }  
 }
}

AS3: Multiple File Loader

Single file loader for type like txt, xml, etc.

SOURCE CODE
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package
{
 import CSingleFileLoader;
 
 /**
  * @file CMultipleFileLoader.as
  * @author Abhishek Kumar
  */
 public class CMultipleFileLoader
 {
  public var prepare:Function;
  public var progress:Function;
  public var proceed:Function;
  
  private var filelist:Array;
  private var stack:Array;
  private var count:int;
  private var limit:int;
  
  public function CMultipleFileLoader()
  {
   trace ("CMultipleFileLoader -> constructor");
  }
  
  public function retrieve(list:Array):void
  {
   trace ("CMultipleFileLoader -> retrieve");
   // initialize
   filelist = list;
   stack = [];
   count = 0;
   limit = filelist.length;
   // start loading
   loadAllXml();
  } 
  
  private function loadAllXml():void
  {
   trace ("CMultipleFileLoader -> loadAllXml");
   if(count < limit)
    loadXml(filelist[count]);
   else
    proceed(stack);
  }
  
  private function loadXml(src:String):void
  {
   trace ("CMultipleFileLoader -> loadXml src:", src);
   var oSingleFileLoader:CSingleFileLoader = new CSingleFileLoader();
   oSingleFileLoader.prepare = prepare;
   oSingleFileLoader.progress = progress;
   oSingleFileLoader.proceed = onLoad_Xml;
   oSingleFileLoader.retrieve(src);
  }
  
  private function onLoad_Xml(data:String):void
  {
   trace ("CMultipleFileLoader -> onLoad_Xml data");
   stack.push(new XMLList(data));
   count++;
   loadAllXml();
  } 
 }
}