Jeet Gill Jagjeet Singh Gill

Hi, i'm Jeet Gill!

Web Designer & Developer


Director, Co-founder of Esteplogic IT Solutions Pvt. Ltd.
Professional PHP developer. Expert in CSCart / Magento / Yii.

info@jeetgill.com   |   +91 998 849 3052   |   gill.tech

About

Full Name

Jagjeet Singh Gill

Birthdate

23 June,1987

About Me

Hi! I live and work in Chandigarh, beautifull city of India. Programming is part of my life. I like how the usual standard tasks and complex when you need to look out of the situation, find solutions to key problems of unusual. I always try to explain the concept in an easy way relating it with real world examples. A skillful reverse engineer with lots of experience in this field.

I am developing web applications over 7+ years. Using HTML, jQuery, AJAX, PHP6, OOP, WordPress, CSCart, Magento, Yii, CakePHP and MySQL. I participated in the development of highly systems with large amounts of data. I also engaged in the development of parsers sites, collecting and structuring information for databases, software and storage.

I am interested to work with different people around the world to share experiences and to learn useful skills. This resource is for me-not just the possibility of earning, but also the chance to productively use my high skill.

Resume

  Experience

Esteplogic IT Solutions Pvt. Ltd.

Director, Co-Founder - Jan, 2014 - PRESENT

* Design websites using XHTML, CSS3(DIV), WML, Web 2.0 standards
* Develop websites using ASP, PHP5, AJAX, JavaScript, J-Query, Mysql, MS SQL Server, Yii, CakePHP, Zend Framework, Shopping carts, Paypal Integration
* Custom CMS Development like Wordpress, Joomla
* Social Network Development
* Provide E-commerce Solution (Magento, CS-Cart, OpenCart, Prestashop)
* Redesign and Redevelop Websites
* Provide Web Promotion and Marketing Service like SEO, SMO, SEM, SMM, PPC, Advertising
* Server Support, Hosting & Database Administration

Orion eSolutions Private Limited

Team Lead (PHP) - July, 2012 - Apr, 2014

Expert in PHP6, MYSQL, Wordpress, Magento, CSCart, Paypal Integration, Shopping Carts, XML, Logic Building, Design Integration, Responsive Websites, Jquery Frameworks, AJAX

BIS Institute of Sciences & Technology, Moga

Sr. Computer Instructor - Aug, 2009 - June, 2012

Teach Web Design(HTML,CSS, JS), Programming(C, C++, C# ,Java, ASP, VB, XML, WAP, OPS),

  Certification

Computer Hardware & Networking Course

NICT, Chandigarh - 2005-2006

  Education

M.Sc. (Information Technology)

Punjab Technical University - 2009-2011

Web Design(HTML,CSS, JS), Programming(PHP, C, C++, C# ,Java, ASP, VB, XML, WAP, OPS), eCommrece, Database Administation (DBA), Software Development Life Circle, System Analysis Design (SAD), Operating Systems (WIndow, Linux, Unix), MIS

B.Sc. (Information Technology)

Punjab Technical University - 2006-2009

Web Design(HTML,CSS, JS), Programming(C, C++, Java, ASP, VB, XML, OPS), SQL, Software Development Life Circle, System Analysis Design (SAD)

12th, (Non Medical)

PSEB, Mohali 2004-2005

Math, Chemistry, Physics

Skills

   Core Skills

  • 100%
    HTML5
  • 96%
    CSS/Bootstrap
  • 97%
    PHP6
  • 95%
    MySQL
  • 92%
    JavaScript
  • 91%
    jQuery
  • 94%
    AJAX
  • 95%
    XML

   eCommerce

  • 97%
    CSCart
  • 85%
    Magento
  • 87%
    OpenCart
  • 80%
    Prestashop

   CMS

  • 90%
    Wordpress
  • 80%
    Joomla

   Framework

  • 80%
    CakePHP
  • 92%
    Yii
  • 85%
    CodeIgniter
  • 97%
    Smarty

   API Integrations

  • 96%
    Payment Gateways
  • 95%
    SMS
  • 95%
    Social Login
  • 87%
    Twilio API

Testimonials

Blog

If you have a blog for your online business, many congratulations ! If used wisely, blogs are one of the best tools to drive traffic and increase sales. Unfortunately, many business bloggers are ...

Dec 30, 2012 Read More

It is possible to use the header() function to send an "Authentication Required" message to the client browser causing it to pop up a Username/Password input window. Once the user has filled in a u ...

PHP 15229
Dec 30, 2012 Read More

I received many tutorial requests from clients that asked how to generate watermark image using PHP. In this post, I coded two functions such as watermark_text() and watermark_image() to generate ...

PHP 53853
Dec 30, 2012 Read More

In the spirit of the optimization wave this post is about CSS optimization. There are some simple rules that you can apply. I’m pretty sure most of us have already been familiar with that lis ...

PHP 5549
Dec 30, 2012 Read More

Base64 is an encoding format that represent binary data. Google new feature instant previews are in text format, here Google requesting images(screen shots) are in string format to reduce server ...

PHP 20712
Dec 30, 2012 Read More

When web applications like basecamp started appearing, a lot of attention started turning to Ruby on Rails. Suddenly small groups of technically driven people could release powerful applications in ...

Dec 30, 2012 Read More

I have developed these based on my freelancing experience. Though I have discontinued freelancing, but would like to share my practices with you. These are basic practices and have been developed o ...

Dec 30, 2012 Read More

The answer is very simple… added cash!!! But that was not the reason that I was referring to. Though earning cash is important and I don’t discount that fact. In addition to earning c ...

Freelance Tips 22221
Dec 30, 2012 Read More

validation.php Contains PHP code. eregi — Case insensitive regular expression match. <?php if($_POST) { $name = $_POST['name']; $email = $_POST['email']; $username = $_POST['user ...

PHP 17469
Dec 30, 2012 Read More

This article is intended for readers who have experience using PHP and MySQL. You should also have a general understanding of databases and programming (both procedural and object-oriented) as well ...

PHP 8439
Dec 30, 2012 Read More

How to use .htaccess file inside the folder. I'm using two .htaccess files in my hosting, one for labs.abc and another for touch.abc. Just take a look at this post how I had implemented. (domain: a ...

PHP 13403
Dec 30, 2012 Read More

Install Zend Framework (Debian way) $ apt-get install zendframework pop3filter.php {code} $ su - john $ mkdir -p bin/pop3filter $ touch bin/pop3filter/pop3filter.php {/code} {code}< ...

Dec 29, 2012 Read More

As CSS files are first downloaded to the client and then executed, the main optimization is to make those files smaller. But that doesn’tmean only minifing! The Minification Process While ...

CSS 5380
Dec 29, 2012 Read More

My HyperText Markup Language (HTML) skills are rusty for certain, but perhaps that qualifies me for this article. Back in the day when Friends was still on TV and AOL was sending out free coasters ...

Dec 29, 2012 Read More

A ZF project would not run out of the box on a fresh installation of WAMP. The purpose of this guide is to act as a checklist for the experienced, and a step by step guide for the more inexperience ...

Dec 27, 2012 Read More

Zend_Mail supports the use of SMTP authentication, which can be enabled be passing the 'auth' parameter to the configuration array in the Zend_Mail_Transport_Smtp constructor. The available built-i ...

Dec 27, 2012 Read More

I have always been a believer of the fact that to be successful in a business the only skills you need is spotting talent, convincing those with the talent to work with you and then managing them. ...

Freelance Tips 12342
Dec 26, 2012 Read More

I published the first post on jeetGill.com on 25 Dec, 2011. Nice date to start something, isn’t it. That also makes sure that I would never forget its birthday. So, one might ask why the hel ...

Tips 12490
Dec 26, 2012 Read More

Zend Framework supports modules, but in my opinion, not in a modular way. I have been trying to set up self-containing modules with their own configuration. The objective is to have an architecture ...

Dec 23, 2012 Read More

Firstally define the directory structure of zend framework. Create index.php file inside the project/ directory and write the following code: {code type="php"} define('ROOT_DIR', dirname(_ ...

Dec 18, 2012 Read More

Contact Me

 

  Address

Esteplogic IT Solutions Ptv Ltd
F29, First Floor, Phase 8 Industrial Area
Sector 73, Sahibzada Ajit Singh Nagar
Punjab 140308 [india]

  Phone

+91 998 849 3052

  Email

info@jeetgill.com

  Skype

gill.tech

  Send Me a Message

Zend Framework: module config

Zend Framework supports modules, but in my opinion, not in a modular way. I have been trying to set up self-containing modules with their own configuration. The objective is to have an architecture where I can just drop a module in the modules directory, and it will work immediately without further configuration.

Now that there is Zend Application with the Modules Resource, that is almost possible. There is one problem. The module specific config still has to be put in application.ini. On the Zend Framework mailinglists, many people are clamoring for module specific configuration files. In this article I will explain how to set up modules with their own config files.
Of course as a good developer should, I first started searching for a solution by someone else. I found lots of complaints, but no solutions, until I happened upon Jeroen Keppens’ blog. He has been busy creating a solution to this problem as can be read in this post.

In a nutshell, his solution is this: he has extended Zend_Application_Module_Bootstrap to automatically register and execute a bootstrap resource called Moduleconfig, that searches for ini files in the configs directory of the module. These ini settings are then used as the options for the module bootstrap. This way, a module can set up its own resources.

This is a valid approach and it works, but I had a few problems with it.

    • I found it impossible to load a frontcontroller plugin in the module config. The frontcontroller resource would get called by the module bootstrap, but the frontcontroller bootstrap resource looks at the application options for plugins and ignores module options so it would do nothing.

    • A nitpick: the settings from the module ini files don’t become part of the main application options. This makes them harder to get at in your controllers. Instead of


      $this->getInvokeArg('bootstrap')->getOptions();

      you need to do this:


      $this->getInvokeArg('bootstrap')->getResource('modules')
      
      ->offsetGet('modulenamehere')->getOptions();



I have come up with a solution that is strongly based on Jeroen’s solution, but with an important difference. Instead of letting each module bootstrap get its own config when it is bootstrapped, I chose to create a resource for the main bootstrap that looks for config files in all module config directories and merges them with the application options. This way, the application options array looks the same as if you would have put the ini settings directly in the application.ini.

First, I will show you how to use this solution. Then I’ll share my code with you so you can use it for yourself.

Usage


In your application.ini, you set the resources to be loaded. Note that the resources are loaded in the order you provide them. The Bootstrap resource that is going to do the module setup for us is called Modulesetup. It needs to be loaded as the very first resource, so put it at the top of you [production] segment:



resources.modulesetup[] =


Directly after that I set the modules resource, so that all module-specific resources are loaded first:



resources.modules[] =


Then we create a module.ini in /path/to/application/modules/modulename/configs/module.ini. In that file you can set anything you want, just as if you set it in application.ini. There is one difference: in application.ini you would set it like so:



modulename.resources.frontcontroller.plugins.foo = bar


In your module.ini, you don’t have to set the module prefix, this is done for you:



resources.frontcontroller.plugins.foo = bar


You can now get at your module specific settings in the following ways:



$this->getInvokeArg('bootstrap')->getOption('modulenamehere');


the same but longer:



$this->getInvokeArg('bootstrap')->getResource('modules')

->offsetGet('modulenamehere')->getOptions();


And to get your module specific loaded resources:



$this->getInvokeArg('bootstrap')->getResource('modules')

->offsetGet('modulenamehere')->getResource('resourcenamehere');

Code


All you need is the following class:



class Rexus_Application_Resource_Modulesetup

extends Zend_Application_Resource_ResourceAbstract
{
public function init()
{
$this->_getModuleSetup();
}

/**
* Load the module's ini files
*
* @return void
*/
protected function _getModuleSetup()
{
$bootstrap = $this->getBootstrap();

if (!($bootstrap instanceof Zend_Application_Bootstrap_Bootstrap)) {
throw new Zend_Application_Exception('Invalid bootstrap class');
}

$bootstrap->bootstrap('frontcontroller');
$front = $bootstrap->getResource('frontcontroller');
$modules = $front->getControllerDirectory();

foreach (array_keys($modules) as $module) {
$configPath = $front->getModuleDirectory($module)
. DIRECTORY_SEPARATOR . 'configs';
if (file_exists($configPath)) {
$cfgdir = new DirectoryIterator($configPath);
$appOptions = $this->getBootstrap()->getOptions();

foreach ($cfgdir as $file) {
if ($file->isFile()) {
$filename = $file->getFilename();
$options = $this->_loadOptions($configPath
. DIRECTORY_SEPARATOR . $filename);
if (($len = strpos($filename, '.')) !== false) {
$cfgtype = substr($filename, 0, $len);
} else {
$cfgtype = $filename;
}

if (strtolower($cfgtype) == 'module') {
if (array_key_exists($module, $appOptions)) {
if (is_array($appOptions[$module])) {
$appOptions[$module] =
array_merge($appOptions[$module], $options);
} else {
$appOptions[$module] = $options;
}
} else {
$appOptions[$module] = $options;
}
} else {
$appOptions[$module]['resources'][$cfgtype] = $options;
}
}
}
$this->getBootstrap()->setOptions($appOptions);
} else {
continue;
}
}
}

/**
* Load the config file
*
* @param string $fullpath
* @return array
*/
protected function _loadOptions($fullpath)
{
if (file_exists($fullpath)) {
switch(substr(trim(strtolower($fullpath)), -3))
{
case 'ini':
$cfg = new Zend_Config_Ini($fullpath, $this->getBootstrap()
->getEnvironment());
break;
case 'xml':
$cfg = new Zend_Config_Xml($fullpath, $this->getBootstrap()
->getEnvironment());
break;
default:
throw new Zend_Config_Exception('Invalid format for config file');
break;
}
} else {
throw new Zend_Application_Resource_Exception('File does not exist');
}
return $cfg->toArray();
}
}


Put it in your library directory and don’t forget to set the prefix for your own resources in your application.ini like so:



pluginPaths.Rexus_Application_Resource = "Rexus/Application/Resource"


I use Rexus as the prefix for all my own stuff, but you can change this of course.

I am curious what you think.