Fix WordPress Files & Folders Permission Massively On cPanel Server

$users = glob('*');
foreach($users as $user)
echo "Performing on /home/$user/public_html\n";
system("find /home/$user/public_html/ -type d -exec chmod 755 {} \; ");
system("find /home/$user/public_html/ -type f -exec chmod 644 {} \; ");

Save the file as fix.php on /root
Then execute it

/usr/local/cpanel/3rdparty/bin/php /root/fix.php

PHP MySQLi Wrapper Class Complex WHERE

If you have ever had a chance to use a PHP active record class for MySQL, you would notice that most of them don’t support complex where statements. I’ve had a chance today to address this feature request that I was received from a user of my PHP MySQLi wrapper class.

Adding a complex WHERE clause is now simple.

$db->where('foo', 15);
$db->or_where('foo <', 15); $db->where('bar >=', 15);
// Produces SELECT `column` FROM `table` WHERE `foo` = 15 OR (`foo` < 15 AND `bar` >= 15)

For more information on this class and download it, visit the repository on Bitbucket.

PHP MySQLi Wrapper Class Update

Last December, I wrote a simple and easy to use PHP MySQLi wrapper class inspired from the simplicity of Code Igniter Active Record pattern and hosted on BitBucket. Over an year, I’ve been using this class and continuously improving it based on my requirements and other users requests. Over a dozen of bug fixes and improvements made based on user reporting so far.

The latest version has been released ( 1.4.6 ). This includes new methods FIND_IN_SET to find a value from a comma separated string and BETWEEN condition.

find_in_set('503', 'orders')->from('tblinvoices')->fetch();
// Produces: SELECT * FROM tblinvoices WHERE FIND_IN_SET ('305', orders)
$db->where('id', 5)->find_in_set('503', 'orders')->from('tblinvoices')->fetch();
// Produces: SELECT * FROM tblinvoices WHERE id='5' AND FIND_IN_SET ('305', orders)
$db->where('id', 5)->find_in_set('503', 'orders', 'OR')->from('tblinvoices')->fetch();
// Produces: SELECT * FROM tblinvoices WHERE id='5' OR FIND_IN_SET ('305', orders)

between('created', '2014-05-05', '2014-05-10');

// Produces: created BETWEEN '2014-05-05' AND '2014-05-10'

$db->from('tblinvoices')->where('clientid', '12')->between('created', '2014-05-05' , '2014-05-10')->fetch();

// Produces: SELECT * FROM tblinvoices WHERE clientid = '12' AND created BETWEEN '2014-05-05' AND '2014-05-10'

Download the latest version

View Documentation

I welcome comments and suggestions on this wrapper class and hope you will find it useful.

Passing Zend Certification Exam, Here is the tip!


Yesterday, December 8th, 2014 I took the Zend Certification exam and passed. The latest version of the Zend exam is based on PHP version 5.5. They have updated their syllabus to reflect this change. And also, Zend made their official study materiel available to buy from their website for $19.95. It was available free of cost before.

I took the decision to write the Zend certification about 2 years back. But things have changed so quick in my life that I couldn’t even prepare for the exam. I’ve seen a lot of posts on the internet about the tricks and tips to pass this exam, and a bunch of sample questions. So I am not going to write similar post. If you would like to pass the exam, here is my suggestion

Study Strings and Arrays thoroughly. Don’t just read those pages, write the code and try to execute. Use a pen and paper if you need. If you study almost all functions mentioned on those pages, you will certainly get 50% of the pass mark.

In addition to those, here is what I found, will give you additional points.
Continue reading “Passing Zend Certification Exam, Here is the tip!”

PHP Snippt to get the changes caused by the UPDATE query

This is a simple trick to get the changes caused by the UPDATE query.

The trick is to get a copy of the row before and after UPDATE query and compare those rows to get the changes. If you would like to go for something complicated than this one, then you should check the MySQL TRIGGER.