Tuesday, December 6, 2011

Database Module in Joomla 1.7




Create a folder mod_userdatas above
1. Helper.php

<?php

defined('_JEXEC') or die;

class modUserDataHelper
{
  function getData( &$params )
  {
  
   // Database query  
   $list = array();   
   $query = " SELECT id, name, username "    
   ." FROM #__users "
   ." WHERE block=0 "    
   ." ORDER BY id DESC "
   ." LIMIT " . $params->get( 'limit' );    
   $db =& JFactory::getDBO();
   $db->setQuery( $query );  
   $rows = $db->loadObjectList();
     
   // Get list items
   if ($rows!=null)
   {
    $i=0;
    foreach ($rows as $row) 
    {    
     $list["users"][$i]["id"]=$row->id;
     $list["users"][$i]["name"]=$row->name;
     $list["users"][$i]["username"]=$row->username;
     $i++;  
    }
    return $list;
   }
     
  }
}

2. mod_userdata.xml
<?xml version="1.0" encoding="UTF-8"?>
<extension type="module" version="1.7" client="site" method="upgrade">
 <name>User Data Module</name>
 <author>Minitek.gr</author>
 <creationDate>03/08/2011</creationDate>
 <copyright>Copyright (C) 2011. All rights reserved.</copyright>
 <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
 <authorEmail>your_email</authorEmail>
 <authorUrl>www.minitek.gr</authorUrl>
 <version>1.7.1</version>
 <description>Users Data Module</description>
 <languages>
 </languages>
 <files>
  <filename module="mod_userdata">mod_userdata.php</filename>
  <filename>mod_userdata.xml</filename>
  <filename>helper.php</filename>
  <filename>index.html</filename>
  <folder>tmpl</folder>
 </files>
 <config>
  <fields name="params">
   <fieldset name="basic">
    <field name="moduleclass_sfx" type="text" 
     default="" label="Module Class Suffix" 
     description="Suffix for individual css styling" />
    <field name="limit" type="text" default="10" 
       label="Limit Displayed Users" description="Limit Displayed Users" />
    <field name="user_id" type="radio" default="1" 
      label="Display user ID" description="Display user ID">
     <option value="0">JNO</option>
     <option value="1">JYES</option>
    </field>
    <field name="user_name" type="radio" default="1" 
      label="Display Name" description="Display Name">
     <option value="0">JNO</option>
     <option value="1">JYES</option>
    </field>
    <field name="user_username" type="radio" default="1" 
     label="Display Username" description="Display Username">
     <option value="0">JNO</option>
     <option value="1">JYES</option>
    </field>
   </fieldset>
  </fields>
 </config>
</extension>

3.mod_userdata.php
<?php

defined('_JEXEC') or die;

// Include the syndicate functions only once
require_once dirname(__FILE__).'/helper.php';

// Get the user data
$list = modUserDataHelper::getData($params);

// Get the layout
require JModuleHelper::getLayoutPath('mod_userdata', $params->get('layout', 'default'));
 
4. tmpl/default.php place the default.php in tmpl folder
 
<?php
s
defined('_JEXEC') or die; ?>

<div class="moduletable<?php echo $params->get( 'moduleclass_sfx' ) ?>">

 <ul>
  <?php for ($i=0;$i< sizeof($list["users"]); $i++) { ?> 
 
  <li>
   <?php if ($params->get( 'user_id' )) { ?>
   <span><?php echo $list["users"][$i]["id"];?></span>
  <?php } ?>
  <?php if ($params->get( 'user_name' )) { ?>
   <span><?php echo $list["users"][$i]["name"];?></span>
  <?php } ?>
  <?php if ($params->get( 'user_username' )) { ?>
   <span><?php echo $list["users"][$i]["username"];?></span>
  <?php } ?>
  </li>
 
 <?php } ?>
 </ul>

</div>
 
5. Place index.html under tmpl folder
 
<html><body bgcolor="#FFFFFF"></body></html>
 
Now zip the mod_userdata folder  and upload the module from 
adminstrator/extension and upload 
Activate and place the module 

Joomla 1.7 - Create a Hello World Simple Module

  1. Create a folder called mod_helloworld in modules
  2. Create a mod_helloworld.php file
  3. Create a mod_helloworld.xml file
  4. Create a helper.php file
  5. Create a template file tmpl/default.php
  6. Discover new modules by going to “Extension Manager” -> “Discover”

The code for mod_helloworld.php

<?php
defined('_JEXEC') or die; // no direct access allowed
 
require_once dirname(__FILE__).DS.'helper.php'; // get helper files
 
$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_helloworld');
?>

The helper.php file

<?php
 class modHelloWorldHelper
 {
     /**
      * Retrieves the hello message
      *
      * @param array $params An object containing the module parameters
      * @access public
      */    
     function getHello( $params )
     {
         return 'Hello, World!';
     }
 }
?>

Include the template file for the default view

<?php
defined('_JEXEC') or die;
echo $hello; 
?>

The mod_helloworld.xml file

 <?xml version="1.0" encoding="utf-8"?>
 <extension type="module" version="1.7.0" client="site" method="upgrade">
     <name>Hello World!</name>
     <author>Harshal Shah </author>
     <version>1.7.0</version>
     <description>Reinholds simple Hello World module.</description>
     <files>
    <filename module="mod_helloworld">mod_helloworld.php</filename>
         <filename>mod_helloworld.xml</filename>
         <filename>index.html</filename>
         <filename>helper.php</filename>
         <filename>tmpl/default.php</filename>
         <filename>tmpl/index.html</filename>
     </files>
     <params>
     </params>
 </extension>

Create both index.html files to prevent direct directory browsing

<html><body></body></html>