Easy PHP Error Debug for Joomla – System Plugin – CBX PHP Debug

I don’t see any easy way to debug or see php error log for Joomla, If I am not wrong. While working with WordPress I just put some constant in wp-config.php file to enable debug and display , log errors.

define('WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', true);
define( 'WP_DEBUG_LOG', true);

Then WordPress creates a debug.log file in wp-content folder. I don’t need to go to php error log file in the server to check the error. I know we can configure local domain so that the log file is generated in the joomla local site folder but that is also not native joomla solution ! I was thinking to enable something for Joomla but didn’t find. So, I created a system plugin for Joomla to make this easy. The idea for “System Plugin – CBX PHP Debug” comes here. Just install the system plugin, enable and configure as need “Enable Debug, Display Errors, Log Error in debug file”, save and you are done. This plugin will create a file debug.log inside Joomla’s logs folder as configured in the configuration.php file.

BTW, I copied the debug init function from WordPress 🙂

Download the plugin from here

Version 1.0.0 direct download here.

https://gist.github.com/manchumahara/977e85fede164cb2d26579f59896129d

Introduction to Joomla! – Event invitiation – Joomla User Group Dhaka, Bangaldesh

From Joomla User Group Dhaka we are trying to introduce Joomla! to the community. As part of this initiative, we started a series of Joomla introduction events at different universities. This first event venue is selected as Joomshaper office, we hope next events will be arranged at any university if we get venue permission.

Venue: JoomShaper
Date: 27 January, 2018
Time: 3.00 PM – 6.00 PM

Join the event and let’s talk, discuss, learn about Joomla!

A letter to our bengali community of joomla and wordpress

to whom it may concern or not concern

āĻ¨ā§‹āĻŸāĻƒ āĻāĻ•āĻžāĻ¨ā§āĻ¤ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŽāĻ¤āĻžāĻŽāĻ¤, āĻĒāĻœā§‡āĻŸāĻŋāĻ­ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻžāĻ“ āĻ†āĻ›ā§‡ āĻ•āĻŋāĻ›ā§ āĻœāĻžā§ŸāĻ—āĻžā§Ÿ, āĻ•āĻžāĻ°ā§‹ āĻ•āĻžāĻ°ā§‹ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ­āĻžāĻŦā§‡ āĻ˛āĻžāĻ—āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻ¤ā§āĻ¯ āĻ¸āĻŦ āĻ¸āĻŽā§Ÿ āĻ•āĻ āĻŋāĻ¨ āĻšāĻŦā§‡ āĻāĻŸāĻž āĻŽā§‡āĻ¨ā§‡āĻ‡ āĻŦāĻžāĻ•ā§€āĻŸā§āĻ•ā§ āĻĒā§œāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

// āĻĻā§‡āĻļā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŸā§‡āĻ• āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻ†āĻŽāĻžāĻ° āĻ…āĻ‚āĻļ āĻ—ā§āĻ°āĻšāĻ¨ āĻāĻ‡ āĻ°āĻ•āĻŽ āĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨ā§‡āĻ° ā§Ļ ā§Ļ ā§Ļ ā§§ ā§Ļ ā§Ļ ā§§ā§Ļā§§ā§Ļā§Ļā§Ļā§§ āĻŽāĻžāĻ¨ā§‡āĻ‡ āĻŦā§āĻāĻ¤ āĻĒāĻžāĻ°āĻ¤ā§‡ ā§Š/ā§ĒāĻŸāĻž āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡āĻ° (āĻ¯āĻž āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ ) āĻ—ā§œā§‡ āĻāĻ•āĻŸāĻŋāĻ¤ā§‡ āĻ¯āĻžāĻ“ā§ŸāĻž āĻĒā§œā§‡āĨ¤ āĻļā§‡āĻˇ āĻĻā§āĻ‡āĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻ¨ āĻ›āĻŋāĻ˛ āĻāĻ•/ āĻ†āĻœāĻ•ā§‡ āĻœā§āĻŽāĻ˛āĻž ā§Š.x āĻŦāĻžāĻ‚āĻ˛āĻž āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻĻā§āĻ‡/ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸āĻŋā§ŸāĻžāĻ¨ āĻ—ā§āĻ°ā§āĻĒ āĻāĻ° āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ ā§ŦāĻˇā§āĻ  āĻŦāĻž ā§­āĻŽ āĻŽāĻŋāĻŸāĻžāĻĒāĨ¤ āĻ¨āĻŋāĻœā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•āĻžāĻ°āĻŖ āĻ¯ā§‡āĻŽāĻ¨, āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻĻāĻŋāĻ¨ āĻ¸āĻŽā§Ÿ āĻŦā§‡āĻ° āĻ•āĻ°āĻž , āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻœ āĻ¯āĻĻāĻŋ āĻšā§Ÿ āĻļā§āĻ§ā§ āĻŦāĻ¸ā§‡ āĻŦāĻ¸ā§‡ āĻļā§‹āĻ¨āĻž (āĻāĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻ• āĻŸāĻžāĻ¨āĻž āĻ•āĻŋāĻ›ā§āĻ•ā§āĻˇāĻ¨ āĻŦāĻ¸ā§‡ āĻĨāĻžāĻ•āĻžāĻ° āĻĒāĻ° āĻ†āĻŦāĻžāĻ° āĻļāĻžāĻ°ā§€āĻ°āĻŋāĻ• āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§‡āĻ–āĻž āĻĻā§‡ā§Ÿ āĻ¯ā§‡āĻŸāĻž āĻ¸ā§āĻ¨āĻžā§Ÿā§āĻŦāĻŋāĻ•)

// āĻĻā§‡āĻļā§‡ āĻ¯āĻžāĻ°āĻž āĻĒā§āĻ°āĻĄāĻžāĻ•ā§āĻŸ āĻŦāĻŋāĻ•ā§āĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻŦāĻžāĻ‡ āĻāĻ¨āĻ­āĻžāĻŸā§‹ āĻ—āĻŋā§Ÿā§‡ āĻŦāĻŋāĻ•ā§āĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻ…āĻ¨ā§‡āĻ•ā§‡āĻ‡ āĻ¨āĻŋāĻœāĻĻā§‡āĻ° āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸ āĻĒā§āĻ˛ā§‡āĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻŦāĻŋāĻ•ā§āĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻĻāĻžā§œāĻžāĻšā§āĻ›ā§‡ āĻāĻ¨āĻ­āĻžāĻŸā§‹āĻ° āĻĻā§‡āĻļā§‡āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ…āĻ¨ā§‡āĻ• āĻ…āĻĨāĻ° āĻ¯āĻ–āĻ¨ āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸāĻĒā§āĻ˛ā§‡āĻ¸ āĻ•āĻŋ āĻāĻŸāĻžāĻ‡ āĻœāĻžāĻ¨āĻ¤ā§‹ āĻ¨āĻž āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻ•ā§Ÿā§‡āĻ• āĻœāĻ¨ āĻ›ā§‹āĻŸ āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸ āĻ†āĻĒ āĻĻāĻžā§œ āĻ•āĻ°āĻŋā§Ÿā§‡ āĻ•ā§‡āĻ‰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ¸āĻŋāĻāĻŽāĻāĻ¸ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ†āĻŦāĻžāĻ° āĻ•ā§‡āĻ‰ āĻĨā§€āĻŽ āĻŦāĻž āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻŦāĻžāĻ¨āĻŋā§Ÿā§‡ āĻŦāĻŋāĻ•ā§āĻ°āĻŋ āĻ•āĻ°āĻ¤āĻžāĻŽāĨ¤ āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§‡ āĻĻāĻžā§œāĻžāĻšā§āĻ›ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§‡āĻ‰ āĻ•ā§‡āĻ‰ āĻāĻ–āĻ¨ā§‹ āĻŦā§œ āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸ āĻĒā§āĻ˛ā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻžāĻ˛ā§āĻ˛āĻž āĻĻāĻŋā§Ÿā§‡ āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻĒā§āĻ°āĻĄāĻžāĻ•ā§āĻŸ āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸāĻĒā§āĻ˛ā§‡āĻ¸ā§‡ āĻŦāĻŋāĻ•ā§āĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¯āĻžāĻšā§āĻ›āĻŋ āĻāĻ–āĻ¨ā§‹āĨ¤

//āĻ†āĻŽāĻžāĻ° āĻļā§‡āĻˇ āĻĨā§‡āĻ•ā§‡ āĻ…āĻ‚āĻļāĻ—āĻšāĻ¨ āĻ•āĻ°āĻž ā§¨ā§Ÿ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻ›āĻŋāĻ˛ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸āĻŋā§ŸāĻžāĻ¨ āĻāĻ° ā§ŦāĻˇā§āĻ  āĻŦāĻž ā§­āĻŽ āĻŽāĻŋāĻŸāĻžāĻĒ, āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻ° āĻœā§āĻŽāĻļā§‡āĻĒāĻžāĻ° āĻāĻ° āĻ•āĻžāĻ‰āĻ›āĻžāĻ° āĻ­āĻžāĻ‡ āĻ—āĻŋā§Ÿā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻ•āĻœāĻ¨ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻ¨āĻ•āĻžāĻ°ā§€ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ—āĻŋā§Ÿā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻāĻŦāĻ‚ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ§ā§ˆāĻ°ā§āĻ¯ āĻ§āĻ°ā§‡ āĻĒā§āĻ°āĻžā§Ÿ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°ā§‡āĻœā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻāĻ° āĻ•āĻŽ āĻŦā§‡āĻļāĻŋ āĻļā§āĻ¨ā§‡āĻ›āĻŋ āĻŽāĻžāĻ āĻ–āĻžāĻ¨ā§‡ āĻŸā§āĻ• āĻŸāĻžāĻ• āĻ†āĻĄā§āĻĄāĻž āĻ›āĻžā§œāĻžāĨ¤ āĻļā§‡āĻˇā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¯āĻ–āĻ¨ āĻ•āĻžāĻ‰āĻ›āĻžāĻ° āĻ­āĻžāĻ‡āĻ•ā§‡ āĻœā§āĻŽāĻ˛āĻžāĻ° āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒāĻ°āĻŋāĻšā§Ÿ āĻ•āĻ°āĻžā§Ÿā§‡ āĻĻā§‡āĻ“ā§ŸāĻž āĻšāĻ˛ āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻāĻ•āĻ¸āĻŽā§Ÿ āĻŦā§‡āĻ° āĻšā§Ÿā§‡ āĻ†āĻ¸āĻ›āĻŋāĨ¤ āĻ†āĻŽāĻžāĻ° āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻ˛ā§‡āĻ—ā§‡āĻ›āĻŋāĻ˛, āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻ°āĻž āĻĻā§āĻ‡āĻœāĻ¨āĻ‡ āĻœā§āĻŽāĻ˛āĻž āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻŦā§‡āĻļāĻŋ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤, āĻ‰āĻ¨āĻŋ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻŦāĻžāĻ¨āĻžāĻ¨, āĻ†āĻŽāĻŋ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĨ¤ āĻ•āĻžāĻ‰āĻ›āĻžāĻ° āĻ­āĻžāĻ‡ā§Ÿā§‡āĻ° āĻ‰āĻĒāĻ° āĻ•ā§‹āĻ¨ āĻ°āĻžāĻ— āĻ¨ā§‡āĻ‡, āĻ¸ā§‡ āĻ¤āĻžāĻ° āĻ•āĻžāĻ›ā§‡āĻ° āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸āĻŽā§āĻŽāĻžāĻ¨ āĻĒāĻžāĻŦā§‡, āĻ¤āĻžāĻ° āĻ•āĻžāĻœāĻ•ā§‡ āĻ†āĻŽāĻŋāĻ“ āĻ¸āĻŽā§āĻŽāĻžāĻ¨ āĻ•āĻ°āĻŋāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡, āĻ•āĻŋāĻ›ā§ āĻŽāĻžāĻ¨ā§āĻˇ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻāĻ° āĻ‰āĻĒāĻ° āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒ āĻ•āĻ°ā§‡ āĻĢāĻžāĻŸāĻŋā§Ÿā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡āĻ›ā§‡ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻœā§āĻŽāĻ˛āĻžāĻ° āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ā§‡āĻ° āĻ¨āĻžāĻŽ āĻļā§āĻ¨ā§‡ āĻ¨āĻžāĻ‡ āĻ•āĻ–āĻ¨ā§‹ ? āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻœā§āĻŽāĻ˛āĻž āĻŦāĻžāĻ‚āĻ˛āĻžāĻĻā§‡āĻļ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻāĻĄāĻŽāĻŋāĻ¨āĻĻā§‡āĻ° āĻāĻ•āĻœāĻ¨ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻœā§āĻŽāĻ˛āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ¸āĻžā§āĻšāĻžāĻ˛āĻ• āĻĨāĻžāĻ•āĻŋ āĻ†āĻ° āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻāĻ° āĻ•ā§‹āĻ¨ āĻ¨ā§‹āĻŸā§‡āĻŦāĻ˛ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻĨāĻžāĻ•ā§‡ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻŋ āĻ¤āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĄā§‡āĻ•ā§‡ āĻ¨āĻŋāĻŦāĨ¤ āĻ•āĻžāĻ°ā§‹ āĻ¸āĻžāĻĨā§‡ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻžāĻ° āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ•ā§‹āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ“ āĻĨāĻžāĻ•ā§‡ āĻ•āĻŽāĻŋāĻ‰āĻ¨āĻŋāĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡ āĻ¸ā§‡āĻŸāĻž āĻ†āĻŽāĻŋ āĻ•ā§‹āĻ¨ āĻ­āĻžāĻŦā§‡āĻ‡ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻŦ āĻ¨āĻžāĨ¤

//āĻĄāĻŋāĻœāĻŋāĻŸāĻžāĻ˛ āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻāĻ° āĻ¸āĻŋāĻāĻŽāĻāĻ¸ āĻ•āĻ¨āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ā§‡ āĻ¯āĻžāĻ“ā§ŸāĻžāĻ° āĻ¸āĻŽā§Ÿ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻžāĻ‡āĨ¤ āĻ¤āĻŦā§‡ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻĒāĻžāĻ°āĻ˛āĻžāĻŽ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻāĻŽāĻ¨ āĻ¸ā§āĻĒāĻŋāĻ•āĻžāĻ°āĻ“ āĻ¸āĻŋāĻ˛ā§‡āĻ•ā§āĻŸ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡ āĻ¯ā§‡, āĻœā§āĻŽāĻ˛āĻž āĻĢāĻžāĻ˛āĻ¤ā§ āĻŦāĻž āĻœā§āĻŽāĻ˛āĻž ā§Ēā§¨ā§Ļ āĻāĻŽāĻ¨ āĻ•āĻĨāĻžāĻ“ āĻŦāĻ˛ā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻžāĻ° āĻŽāĻ¨ā§‡ āĻšā§Ÿ āĻœā§‡āĻ¨ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻž āĻ‰āĻšāĻŋā§ŽāĨ¤ āĻ¯ā§‡ āĻœā§āĻŽāĻ˛āĻž āĻāĻŦāĻ‚ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻŦāĻž āĻ†āĻ°ā§‹ āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŋāĻāĻŽāĻāĻ¸ āĻ¨āĻŋā§Ÿā§‡ āĻœāĻžāĻ¨ā§‡ āĻ¸ā§‡ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡ āĻāĻ• āĻāĻ•āĻŸāĻž āĻ¸āĻŋāĻāĻŽāĻāĻ¸ āĻāĻ° āĻĢāĻŋāĻ˛ā§‹āĻ¸āĻĢāĻŋ, āĻ˛āĻžāĻ°ā§āĻ¨āĻŋāĻ‚ āĻ•āĻžāĻ°ā§āĻ­, āĻŽāĻžāĻ°ā§āĻ•ā§‡āĻŸ āĻĒā§āĻ˛ā§‡āĻ¸, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ°ā§‡āĻŸā§‡āĻ° āĻ†āĻĒā§āĻ¸ -āĻĄāĻžāĻ‰āĻ¨, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻāĻ• āĻāĻ• āĻ°āĻ•āĻŽāĨ¤ āĻāĻŸāĻž āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ­āĻ™ā§āĻ—āĻŋāĻ° āĻ‰āĻĒāĻ° āĨ¤ āĻāĻ•āĻŸāĻž āĻ›ā§‹āĻŸ āĻ‰āĻĻāĻžāĻšāĻ°āĻ¨ āĻĻāĻŋāĻ˛ā§‡ āĻ¸āĻšāĻœ āĻšāĻŦā§‡ āĻŦā§āĻāĻ¤ā§‡, āĻāĻ•āĻŦāĻžāĻ° āĻœā§āĻŽāĻ˛āĻžāĻ° āĻāĻ•āĻŸāĻž āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻļā§‡āĻˇā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŦāĻžāĻ‡ āĻ–ā§‡ā§ŸāĻžāĻ˛ āĻ•āĻ°āĻ˛āĻžāĻŽ, āĻ•āĻžāĻ‰āĻ›āĻžāĻ° āĻ­āĻžāĻ‡ āĻāĻ° āĻ˛ā§‡āĻ•āĻšāĻžāĻ° āĻ›āĻŋāĻ˛ āĻœā§āĻŽāĻ˛āĻž āĻĻāĻŋā§Ÿā§‡ āĻ¸āĻžāĻ‡āĻŸ āĻŦāĻžāĻ¨āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž āĻ†āĻ° āĻ†āĻŽāĻžāĻ° āĻ˛ā§‡āĻ•āĻšāĻžāĻ° āĻ›āĻŋāĻ˛ āĻ•ā§‹āĻĄāĻŋāĻ‚ āĻœāĻžāĻ¨āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ‰āĻ¨āĻŋ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻ¨āĻŋā§Ÿā§‡ āĻŦāĻ˛ā§‡āĻ›ā§‡āĻ¨ āĻ‰āĻ¨āĻžāĻ° āĻĒāĻžāĻ°āĻ¸āĻĒāĻŋāĻ•ā§āĻŸāĻŋāĻ­ āĻĨā§‡āĻ•ā§‡, āĻ†āĻŽāĻŋ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ¨āĻŋā§Ÿā§‡ āĻŦāĻ˛ā§‡āĻ›āĻŋ āĻ†āĻŽāĻžāĻ° āĻĒāĻžāĻ°āĻ¸ā§āĻĒāĻŋāĻ•ā§āĻŸāĻŋāĻ­ āĻĨā§‡āĻ•ā§‡āĨ¤ āĻĻā§āĻ‡āĻœāĻ¨āĻ‡ āĻ¸āĻ āĻŋāĻ•āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻĻāĻžā§œāĻžāĻšā§āĻ›ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻœā§āĻŽāĻ˛āĻž āĻ¨āĻŋā§Ÿā§‡ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°ā§‡āĻ¨ āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻŸāĻž āĻœā§‡āĻ¨ā§‡ āĻ•āĻ°ā§‡āĻ¨āĨ¤ āĻĄāĻŋāĻœāĻŋāĻŸāĻžāĻ˛ āĻ“ā§ŸāĻžāĻ°ā§āĻ˛ā§āĻĄā§‡ āĻœā§āĻŽāĻ˛āĻžāĻ° āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒ āĻ¨āĻŋā§Ÿā§‡ āĻāĻ•āĻŸāĻž āĻ˛ā§‡āĻ•āĻšāĻžāĻ°/āĻ¸ā§āĻĒāĻŋāĻ• āĻĨāĻžāĻ•āĻ¤ā§‡āĻ‡ āĻĒāĻžāĻ°āĻ¤āĨ¤ āĻ•āĻŽāĻŋāĻ‰āĻ¨āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻĒā§‹āĻ¸ā§āĻŸ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°āĻ¤ āĻ†āĻ—ā§āĻ°āĻšā§€ āĻ¸ā§āĻĒā§€āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻŸāĻĒāĻŋāĻ• āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ¨āĻŋā§Ÿā§‡āĨ¤ āĻšā§ŸāĻ¤ā§‹ āĻŦā§‡āĻ¸āĻŋāĻ¸ āĻāĻŸāĻž āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœ āĻ•āĻ°ā§‡, āĻ¸ā§‡āĻŸāĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°āĨ¤ āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻāĻ•āĻžāĻ¨ā§āĻ¤ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŽāĻ¤āĻžāĻŽāĻ¤ āĻĻāĻŋāĻšā§āĻ›āĻŋāĨ¤

// āĻāĻ•āĻ‡ āĻŦāĻŋāĻˇā§Ÿ āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻ—ā§āĻ˛ā§‹ āĻ—ā§āĻ°ā§āĻĒ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻœāĻžāĻ¤ā§€ā§Ÿ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸā§‡ āĻ¸āĻŦāĻžāĻ‡āĻ•ā§‡ āĻāĻ•ā§āĻŸāĻŋāĻ­ āĻ—ā§āĻ°ā§āĻĒāĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻ¸āĻŽāĻ¨ā§āĻŦā§Ÿ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋā§Ž, āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻ•ā§‡āĻ¨ā§āĻĻā§āĻ°āĻŋāĻ• āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻž āĻ¨āĻŋā§Ÿā§‡āĨ¤

//āĻ•ā§‹āĻ¨ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›āĻŋ āĻ¸ā§‡āĻŸāĻž āĻ†āĻŽāĻ°āĻž āĻœāĻ¨ā§āĻ¯ āĻāĻ¤ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻž, āĻ¸ā§‡āĻ‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ†āĻŽāĻŋ āĻ¸ā§āĻŦāĻžāĻšā§āĻ›āĻ¨ā§āĻĻā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋ āĻĒāĻžāĻ°āĻ›āĻŋ āĻ•āĻŋāĻ¨āĻž āĻ¸ā§‡āĻŸāĻžāĻ•ā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦ āĻĻā§‡ā§ŸāĨ¤

//āĻœā§āĻŽāĻ˛āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻœāĻžāĻ¨āĻžāĻ° āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻāĻ° āĻĒā§āĻ°ā§‡āĻŽā§‡ āĻĒā§œā§‡āĻ›āĻŋāĨ¤ āĻĒāĻ°ā§‡ āĻšāĻžāĻ•āĻ°ā§€ āĻ•āĻ°āĻ¤ā§‡ āĻ—āĻŋā§Ÿā§‡ āĻœā§āĻŽāĻ˛āĻžāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŸāĻžāĻ¤ā§‡āĻ“ āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋāĨ¤ āĻœā§āĻŽāĻ˛āĻž, āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻ•āĻŋāĻ‚āĻŦāĻž āĻŽā§āĻĄāĻ˛ āĻāĻ—ā§āĻ˛ā§‹āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ›āĻŋ āĻĒā§āĻ¯āĻžāĻļāĻ¨ āĻĨā§‡āĻ•ā§‡, āĻŸāĻžāĻ•āĻž āĻ†ā§Ÿ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻžāĨ¤ āĻŸāĻžāĻ•āĻž āĻ†ā§Ÿ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ•āĻŸāĻŋāĻ•ā§āĻ¯āĻžāĻ˛ āĻ§āĻžāĻĒ āĻ•āĻžāĻ°āĻŖ āĻ•āĻžāĻœ āĻ•āĻ°āĻ˛ā§‡ āĻŸāĻžāĻ•āĻž āĻ†āĻ¸āĻŦā§‡āĨ¤

// āĻ†āĻŽāĻŋ āĻšāĻ¨ā§ āĻŦāĻ˛ā§‡ āĻ†āĻŽāĻžāĻ° āĻ†āĻļā§‡ āĻĒāĻžāĻļā§‡āĻ° āĻŦāĻžāĻ—āĻžāĻ¨ā§‡ āĻ†āĻ° āĻ•ā§‹āĻ¨ āĻšāĻ¨ā§āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡ āĻ¨āĻž āĻŦāĻž āĻ†āĻ° āĻ•ā§‡āĻ‰ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡ āĻ¨āĻž āĻāĻŽāĻ¨ āĻ­āĻžāĻŦāĻžāĻ° āĻ•āĻžāĻ°āĻŖ āĻ¨āĻžāĻ‡āĨ¤ āĻ†āĻŽāĻŋ ‘x’ āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ› āĻŦāĻ˛ā§‡ āĻ†āĻļā§‡ āĻĒāĻžāĻļā§‡āĻ° āĻ¸āĻŦāĻžāĻ‡ ‘x’ āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻāĻŽāĻ¨ āĻ­āĻžāĻŦāĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨āĻžāĻ‡āĨ¤ āĻ¸āĻšāĻœ āĻ•āĻžāĻœ āĻ¸āĻŦāĻžāĻ‡ āĻ•āĻ°ā§‡, āĻ•āĻ āĻŋāĻ¨ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ˛ā§‹āĻ•ā§‡āĻ° āĻ…āĻ­āĻžāĻŦāĨ¤ ‘āĻ•’ āĻĒā§āĻ°āĻ¤āĻŋāĻˇā§āĻ āĻžāĻ¨ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻ¨āĻŋā§Ÿā§‡ āĻ•ā§‹āĻ°ā§āĻ¸ āĻ•āĻ°āĻžāĻ˛ā§‡ ‘āĻ–’ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ—āĻžāĻ¤ā§āĻ° āĻĻāĻžāĻš āĻšāĻŦāĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨āĻžāĻ‡āĨ¤ ‘āĻ—’ āĻœā§āĻŽāĻ˛āĻžāĻ° āĻāĻ•āĻŸāĻž āĻ­āĻžāĻ˛ā§‹ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸā§‡ āĻŦāĻžāĻ¨āĻžāĻ˛ā§‡ ‘āĻ˜’ āĻ•āĻŽā§āĻĒāĻžāĻ¨ā§€āĻ° āĻāĻŸāĻž āĻ¨āĻŋā§Ÿā§‡ āĻ˜āĻˇāĻžāĻ˜āĻˇāĻŋāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨āĻžāĻ‡āĨ¤ āĻĒāĻžāĻ°āĻ˛ā§‡ āĻ­āĻžāĻ˛ā§‹ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°, āĻĒāĻžāĻ°āĻ˛ā§‡ āĻ­āĻžāĻ˛ā§‹ āĻ•āĻžāĻœā§‡āĻ° āĻĒā§āĻ°āĻļāĻ‚āĻ¸āĻž āĻ•āĻ°, āĻ–āĻžāĻ°āĻžāĻĒ āĻ•āĻžāĻœā§‡āĻ° āĻĒāĻœā§‡āĻŸāĻŋāĻ­ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĨ¤ āĻ•āĻŋāĻ›ā§āĻĻāĻŋāĻ¨ āĻ†āĻ—ā§‡ āĻ°āĻžāĻ—ā§€āĻŦ āĻ­āĻžāĻ‡ā§Ÿā§‡āĻ° āĻļāĻŋāĻ•ā§āĻˇāĻ• āĻ¸āĻžāĻ‡āĻŸā§‡āĻ° āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻāĻ° āĻāĻ•āĻŸāĻž āĻ•ā§‹āĻ°ā§āĻ¸ āĻ¨āĻŋā§Ÿā§‡ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸āĻŋā§ŸāĻžāĻ¨ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻĻāĻ¸ā§āĻ¯ā§‡āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻĄāĻŽāĻŋāĻ¨āĻĻā§‡āĻ° āĻĒāĻ•ā§āĻˇ āĻĨā§‡āĻ•ā§‡ āĻ•ā§ā§ŽāĻļāĻŋāĻ¤ āĻ­āĻžāĻ˛ā§‹ āĻ¨ā§‡āĻ—ā§‡āĻŸāĻŋāĻ­ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ–ā§‡āĻ›āĻŋāĨ¤ āĻĻā§āĻŦāĻžā§ŸāĻŋāĻ¤ā§āĻŦāĻļā§€āĻ˛āĻ¤āĻž āĻ†āĻ° āĻŦāĻžāĻ˛āĻ–āĻŋāĻ˛ā§āĻ¯āĻ¤āĻž āĻāĻ• āĻ¨ā§ŸāĨ¤ āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻœā§‡āĻ“ āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸āĻŋā§ŸāĻžāĻ¨ āĻ—ā§āĻ°ā§āĻĒā§‡āĻ° āĻ¨āĻŋā§ŸāĻŽāĻŋāĻ¤ āĻ¸āĻĻāĻ¸ā§āĻ¯, āĻ¸āĻŽā§Ÿ āĻĒā§‡āĻ˛ā§‡āĻ‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻŋ āĻ…āĻ¨ā§āĻ¯āĻĻā§‡āĻ° āĻ¯ā§‡āĻŽāĻ¨āĻŸāĻž āĻœā§āĻŽāĻ˛āĻž āĻŦāĻžāĻ‚āĻ˛āĻžāĻĻā§‡āĻļ āĻ—ā§āĻ°ā§āĻĒā§‡āĨ¤ āĻ¨āĻ¤ā§āĻ¨āĻ°āĻž āĻ‰āĻĻā§āĻ­ā§ā§Ž āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ•āĻ°āĻ˛ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻžāĻĨāĻž āĻ āĻžāĻ¨ā§āĻĄāĻž āĻ•āĻ°ā§‡ āĻ•ā§‹āĻ¨ āĻ¸āĻŽā§Ÿ āĻŽāĻœāĻž āĻ•āĻ°ā§‡ āĻŦāĻž āĻ•ā§‹āĻ¨ āĻ¸āĻŽā§Ÿ āĻŦāĻ•āĻž āĻĻāĻŋā§Ÿā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻ¸ā§āĻŸāĻž āĻ•āĻ°āĻŋāĨ¤

//āĻ•āĻžāĻ‰āĻ•ā§‡ āĻĢāĻ˛ā§‹ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻœā§‡āĻ° āĻŽāĻ¤ āĻ¨āĻŋāĻœā§‡āĻ° āĻŸā§āĻ°ā§‡āĻ¨ā§āĻĄ āĻ¨āĻŋā§Ÿā§‡ āĻšāĻ˛āĻ¤ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋāĨ¤ āĻ•ā§‡āĻ‰ āĻ†āĻŽāĻžāĻ•ā§‡ āĻĢāĻ˛ā§‹ āĻ•āĻ°ā§āĻ• āĻ¨āĻž āĻ•āĻ°ā§āĻ• āĻ¤āĻž āĻ¨āĻŋā§Ÿā§‡ āĻ†āĻŽāĻžāĻ° āĻ•ā§‹āĻ¨ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ¨āĻžāĻ‡āĨ¤ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ‰āĻ•ā§‡ āĻĢāĻ˛ā§‹ āĻ•āĻ°āĻ¤ā§‡āĻ‡ āĻšāĻŦā§‡ āĻāĻŽāĻ¨ āĻ­āĻžāĻŦāĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨āĻžāĻ‡āĨ¤ āĻ¤āĻŦā§‡ āĻ•āĻŽāĻŋāĻ‰āĻ¨āĻŋāĻŸāĻŋ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ āĻ—ā§āĻ˛ā§‹āĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻ¸āĻŦāĻžāĻ‡āĻ•ā§‡ āĻ¸āĻŽā§āĻŽāĻžāĻ¨ āĻĻā§‡āĻ“ā§ŸāĻžāĻ° āĻšā§‡āĻ¸ā§āĻŸāĻž āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻžāĻ° āĻŽāĻ¤āĻžāĻŽāĻ¤ āĻ—ā§āĻ°āĻšāĻ¨ āĻ•āĻ°ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋ, āĻĻāĻŋāĻ¨ āĻļā§‡āĻˇā§‡ āĻ•āĻžāĻœāĻ—ā§āĻ˛ā§‹ āĻļā§‡āĻˇ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋāĨ¤

// āĻšā§āĻŸ āĻœā§āĻŽāĻ˛āĻž āĻŦāĻž āĻ“ā§ŸāĻžāĻ°ā§āĻĄāĻĒā§āĻ°ā§‡āĻ¸ āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻŸāĻžāĻ•āĻž āĻ•āĻ°āĻž āĻŸāĻžāĻ‡āĻĒ āĻ˛ā§‹āĻ• āĻ†āĻŽāĻŋ āĻ¨āĻ‡, āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻ¯āĻžāĻ°āĻŋā§ŸāĻžāĻ° āĻāĻ° āĻļā§āĻ°ā§ āĻĨā§‡āĻ•ā§‡ āĻāĻ—ā§āĻ˛ā§‹ āĻ¨āĻŋā§Ÿā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŋ, āĻ¯āĻ¤āĻĻā§‚āĻ° āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻŽāĻŋāĻ‰āĻ¨āĻŋāĻŸāĻŋāĻ¤ā§‡ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻ¸ā§āĻŸāĻž āĻ•āĻ°āĻŋāĨ¤ āĻĒā§āĻ¯āĻžāĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ•āĻ°āĻŋāĨ¤

āĻ¨ā§‹āĻŸāĻƒ āĻāĻ•āĻžāĻ¨ā§āĻ¤ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻŽāĻ¤āĻžāĻŽāĻ¤, āĻĒāĻœā§‡āĻŸāĻŋāĻ­ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻžāĻ“ āĻ†āĻ›ā§‡ āĻ•āĻŋāĻ›ā§ āĻœāĻžā§ŸāĻ—āĻžā§Ÿ, āĻ•āĻžāĻ°ā§‹ āĻ•āĻžāĻ°ā§‹ āĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ­āĻžāĻŦā§‡ āĻ˛āĻžāĻ—āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻ¤ā§āĻ¯ āĻ¸āĻŦ āĻ¸āĻŽā§Ÿ āĻ•āĻ āĻŋāĻ¨ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻšā§ŸāĻ¤ā§‹ āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ , āĻ†āĻŽāĻžāĻ° āĻāĻ‡ āĻ˛ā§‡āĻ–āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĒāĻžāĻ¤ā§āĻ¤āĻž āĻĻā§‡āĻ¨ āĻ¨āĻž āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŽā§Ÿ āĻ¨āĻŋā§Ÿā§‡ āĻ§ā§ˆāĻ°ā§āĻ¯ā§āĻ¯ āĻ§āĻ°ā§‡ āĻĒā§œāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ

āĻĒā§‹āĻ¸ā§āĻŸāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ¨ā§Ÿ āĻāĻŽāĻ¨ āĻ•ā§Ÿā§‡āĻ•āĻœāĻ¨āĻ•ā§‡ āĻŸā§āĻ¯āĻžāĻ— āĻ•āĻ°āĻ˛āĻžāĻŽāĨ¤ āĻ•ā§‡āĻ‰ āĻšāĻžāĻ‡āĻ˛ā§‡ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ†āĻ¨ āĻŸā§āĻ¯āĻžāĻ— āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

Adding custom fields to ‘any’ joomla component’s any view

I was finding is there any way to add custom fields to joomla core component (please don’t start discussing about other 3rd party has those options built in as I know them and I wanted this with core joomla, btw, I didn’t check the tables for j3.2 yet)

Found this in joomla docs http://docs.joomla.org/Adding_custom_fields_to_the_article_component

where they showed an example how to use the #__user_profiles table where custom or extra user fields are stored.

This seems funny to me what will happen when someone add custom field for user id suppose 321 and same way article id 321 ? !

Current structure of the #__user_profiles table is https://gist.github.com/manchumahara/7427002

I think we need something like
https://gist.github.com/manchumahara/7426784


CREATE TABLE IF NOT EXISTS `#__cbcustompostmeta` (
  `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `post_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `component` varchar(255) DEFAULT NULL,
  `meta_key` varchar(255) DEFAULT NULL,
  `meta_value` longtext,
  PRIMARY KEY (`meta_id`),
  KEY `post_id` (`post_id`),
  KEY `meta_key` (`meta_key`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

This table sql is little modified from wordpress meta table. I added the extra col ‘component’.

The good use of this table structure is post_id can be used to store any component’s any single view (article , category, event, contact etc) id (means article id, event id, or category id)

for ‘component’ col value should be inserted following this convension “com_content.article” , we need to use the view name with component as for same component we may need to add custom fields for different view like for event component event and venue both are treated as single article .

What do you think ?

Jomsocial auth Controller callback fix to allow other application

I was working with a new extension for jomsocial for auto update any jomsocial status update to linkedin. Please note that jomsocial has a packaged apps for twitter for such purpose and that’s why I was trying to go with same thing for linkedin and tried to use the jomsocial library etc. After authentication callback it was trying to access a method of jomsocial default twitter plugin. That means a hardcode class and it’s method.

Let me share the controller class
[code language=”php”]
class CommunityOauthController extends CommunityBaseController
{
public function callback()
{
$mainframe =& JFactory::getApplication();
$my = CFactory::getUser();
$denied = JRequest::getVar( ‘denied’ , ” );
$app = JRequest::getVar( ‘app’ , ” );
$url = CRoute::_(‘index.php?option=com_community&view=profile&userid=’ . $my->id , false );

if( empty($app) )
{
echo JText::_(‘COM_COMMUNITY_INVALID_APPLICATION’);
return;
}

if( $my->id == 0 )
{
echo JText::_(‘COM_COMMUNITY_INVALID_ACCESS’);
return;
}

if( !empty( $denied ) )
{
$mainframe->redirect( $url , JText::_( ‘COM_COMMUNITY_OAUTH_APPLICATION_ACCESS_DENIED_WARNING’ ) );
}

$oauth =& JTable::getInstance( ‘Oauth’ , ‘CTable’ );
if( $oauth->load( $my->id , $app ) )
{
$consumer = plgCommunityTwitter::getConsumer();
$oauth->userid = $my->id;
$oauth->app = $app;
$getData = JRequest::get(‘get’);

try
{
$oauth->accesstoken = serialize( $consumer->getAccessToken( $getData , unserialize( $oauth->requesttoken ) ) );
}
catch( Exception $error )
{
$mainframe->redirect( $url , $error->getMessage() );
}

if( !empty($oauth->accesstoken) )
{
$oauth->store();
}
$msg = JText::_( ‘COM_COMMUNITY_OAUTH_AUTHENTICATION_SUCCESS’ );
$mainframe->redirect( $url , $msg );
}
}
[/code]

Check line number 31
$consumer = plgCommunityTwitter::getConsumer();

Suppose if we take the getConsumer() method is a standard practice to get the configuration for the authentication method for jomsocial application for social network then we can make the plgCommunityTwitter class name here dynamic depending on the variable found from
$app = JRequest::getVar( ‘app’ , ” );

for twitter we get $app = ‘twitter’ and as I was developing another apps plugin and it’s application name is “cblinkedin” it will get $app = ‘cblinkedin’

So just modifying the line 31 will give other extension developer use this controller and this will be more practical and my suggestion here is modifying the code like

[code language=”php”]
//$consumer = plgCommunityTwitter::getConsumer();
//$consumer = plgCommunityCBLinkedin::getConsumer();
$appclassname = strtolower(‘plgCommunity’.$app);
$consumer = call_user_func( array($appclassname,’getConsumer’) );
[/code]

What do you think ?

BTW, we are close to develop an jomsocial extension that will allow users to update their jomsocial status update to linkedin as the core twitter apps does. Let me show my screenshot of current work.

I am testing here

Update: 12.08.2012
I have a new update for the above issue and that can be solved using adding an extra method in the plugin.

Solution is using onSystemStart method and check if the app is your plugin app and task is call back.
[code language=”php”]
function onSystemStart(){
$mainframe =& JFactory::getApplication();
$my = CFactory::getUser();
$denied = JRequest::getVar( ‘denied’ , ” );
$app = JRequest::getVar( ‘app’ , ” );
$task = JRequest::getVar( ‘task’ , ” );
$url = CRoute::_(‘index.php?option=com_community&view=profile&userid=’ . $my->id , false );
if($app == ‘cblinkedin’ && $task == ‘callback’){
if( $my->id == 0 )
{
echo JText::_(‘COM_COMMUNITY_INVALID_ACCESS’);
return;
}

if( !empty( $denied ) )
{
$mainframe->redirect( $url , JText::_( ‘COM_COMMUNITY_OAUTH_APPLICATION_ACCESS_DENIED_WARNING’ ) );
}

$oauth =& JTable::getInstance( ‘Oauth’ , ‘CTable’ );
if( $oauth->load( $my->id , $app ) )
{

$consumer = plgCommunityCBLinkedin::getConsumer();
$oauth->userid = $my->id;
$oauth->app = $app;
$getData = JRequest::get(‘get’);

try
{
$oauth->accesstoken = serialize( $consumer->getAccessToken( $getData , unserialize( $oauth->requesttoken ) ) );
}
catch( Exception $error )
{
$mainframe->redirect( $url , $error->getMessage() );
}

if( !empty($oauth->accesstoken) )
{
$oauth->store();
}
$msg = JText::_( ‘COM_COMMUNITY_OAUTH_AUTHENTICATION_SUCCESS’ );
$mainframe->redirect( $url , $msg );
}
}

}
[/code]

But still I think if jomsocial gives 3rd party plugins execution for it’s built in Controller.

Quick tips to work with joomla caching in different joomla versions

Here just some quick tips about how to use joomla caching in joomla extensions , here for module and component.

For joomla 1.5 module caching:

[code language=”php”]

//$params, $module are global parameter here , can be used in default.php or have to pass in helper method.
$enable_cache = $params->get(‘cache’,0);
$cachetime = $params->get(‘cache_time’,0);
//for 1.5
if($enable_cache == 1) {
$conf =& JFactory::getConfig();
$cache = &JFactory::getCache($module->module);
$cache->setLifeTime( $params->get( ‘cache_time’, $conf->getValue( ‘config.cachetime’ ) * 60 ) );
$cache->setCaching(true);
$cache->setCacheValidation(true);
$output = $cache->get( array(‘modClassname’, ‘getMethod’), array($params, $module));
} else {
$output = modClassname::getMethod($params,$module);
}

[/code]

For joomla 1.6 we do the same thing in following way

[code language=”php”]
$cacheparams = new stdClass;
$cacheparams->cachemode = ‘safeuri’;
$cacheparams->class = ‘modClassname’;
$cacheparams->method = ‘getMethod’;
$cacheparams->methodparams = array($params,$module);
$cacheparams->modeparams = array(‘id’=>’int’,’Itemid’=>’int’);
$output = JModuleHelper::moduleCache ($module, $params, $cacheparams);
[/code]

For joomla 1.5 and 1.6 compatibility we can code like this which will work for both joomla version

[code language=”php”]
$enable_cache = $params->get(‘cache’,0);
$cachetime = $params->get(‘cache_time’,0);
if(version_compare(JVERSION,’1.6.0′,’ge’)) {
$cacheparams = new stdClass;
$cacheparams->cachemode = ‘safeuri’;
$cacheparams->class = ‘modClassname’;
$cacheparams->method = ‘getMethod’;
$cacheparams->methodparams = array($params,$module);
$cacheparams->modeparams = array(‘id’=>’int’,’Itemid’=>’int’);
$output = JModuleHelper::moduleCache ($module, $params, $cacheparams);
}
else{
//for 1.5
if($enable_cache == 1) {
$conf =& JFactory::getConfig();
$cache = &JFactory::getCache($module->module);
$cache->setLifeTime( $params->get( ‘cache_time’, $conf->getValue( ‘config.cachetime’ ) * 60 ) );
$cache->setCaching(true);
$cache->setCacheValidation(true);
$output = $cache->get( array(‘modClassname’, ‘getMethod’), array($params, $module));
} else {
$output = modClassname::getMethod($params,$module);
}
}
[/code]

Note: here I assumed the modClassname is the class name of the helper and modMethod is the method used to handle the caching part. In next post I will write something about the component caching and in 3rd one post about how to caching when we are not doing any function call or how about handle caching in plugin. Let me have time for the next post.

Detect User type in joomla 1.6 or later

In Joomla1.5.x we can detect user type easily or check if a user is admin type.
[code language=”php”]
$isadmin = false;
$user =&JFactory::getUser();
if($user->usertype == "Super Administrator" || $user->usertype == "Administrator"){
$isadmin = true;
}
[/code]

But from joomla 1.6 as the user group architecture is changed the above way will not work.
From j1.6 we can do this in this way, here actually I was trying to detect if the user is super user or not like admin user in j1.5

[code language=”php”]
$isadmin = false;
$user =&JFactory::getUser();
$db = JFactory::getDbo();
//var_dump($user->getAuthorisedGroups());
$userid = intval($user->get( ‘id’ ));
if($userid > 0){
$query = $db->getQuery(true);
$query->select(‘g.title AS group_name’)
->from(‘#__usergroups AS g’)
->leftJoin(‘#__user_usergroup_map AS map ON map.group_id = g.id’)
->where(‘map.user_id = ‘.(int) $userid);
$db->setQuery($query);
$ugp = $db->loadObject();
$usertype = $ugp->group_name;
if(is_string($usertype)) $usertype = array($usertype);
if(in_array(‘Super Users’, $usertype)){
$isadmin = true;
}
//var_dump($usertype);
}
[/code]

thanks

My trouble story about ‘onContentPrepare’ hook for joomla

1. I was developing a content plugin for joomla, currently I was working with joomla1.6 or earlier.
2. My target was skip some specific or used defined category for the plugin execution as this is very useful feature.
3. It works in article details page but doesn’t work in other view of com_content component. Why
4. Here is the function that get’s hooked in content plugin for onContentPrepare
Continue reading