Codeigniter Recusrsive Category List

Conside categories table with structure is id, name, parent_id.  A category can have many subcategories and a subcategory can have many sub-sub categories.

This is the code to get all categories and their subcategories.


$tree = $this->get_category_by_parent(0);

public function get_category_by_parent($parent_id = 0) {
		  $categories = array();
		  $this->db->from('categories');
		  $this->db->where('parent_id', $parent_id);
		  $result = $this->db->get()->result();
		  foreach ($result as $mainCategory) {
		    $category = array();
		    $category['id'] = $mainCategory->id;
		    $category['name'] = $mainCategory->name;
		    $category['parent_id'] = $mainCategory->parent_id;
		    $category['sub_categories'] = $this->get_category_by_parent($category['id']);
		    $categories[$mainCategory->id] = $category;
		  }
		  return $categories;
}

Category-subcategory Dropdownlist,
category_model.php:


public function fetchCategoryTree($parent_id = 0, $spacing = '', $user_tree_array = '') {
 
      if (!is_array($user_tree_array))
        $user_tree_array = array();

      $this->db->where('parent_id', $parent_id);
      $query = $this->db->get('categories');
      $result = $query->result();
      foreach ($result as $mainCategory) {
        $user_tree_array[] = array("id" => $mainCategory->id, "name" => $spacing . $mainCategory->name);
          $user_tree_array = $this->fetchCategoryTree($mainCategory->id, $spacing . '  ', $user_tree_array);
      }
      return $user_tree_array;
    }

views/category/index.php:

<?php
$this->load->model(‘category_model’);

$categoryList = $this->category_model->fetchCategoryTree();
?>
<select>
<?php foreach($categoryList as $cl) { ?>
<option value=”<?php echo $cl[“id”] ?>”><?php echo $cl[“name”]; ?></option>
<?php } ?>
</select>

Category-SubCategory Listing,
category_model.php:

function fetchCategoryTreeList($parent_id = 0, $user_tree_array = ”) {
if (!is_array($user_tree_array))
$user_tree_array = array();

$this->db->where(‘parent_id’, $parent_id);
$query = $this->db->get(‘categories’);
$result = $query->result();
$user_tree_array[] = “<ul>”;
foreach ($result as $mainCategory) {
$user_tree_array[] = “<li>”. $mainCategory->name.”</li>”;
$user_tree_array = $this->fetchCategoryTreeList($mainCategory->id, $user_tree_array);
}
$user_tree_array[] = “</ul>”;

return $user_tree_array;
}

views/category/index.php:

<?php
$this->load->model(‘category_model’);

$res = $this->category_model->fetchCategoryTreeList();
foreach ($res as $r) {
echo $r;
}

?>

PHP CodeSniffer – Coding Standard Tool

Install PHP-Coding-Standards

> pear install PHP_CodeSniffer-2.8.1

Install WordPress-Coding-Standards

> cd /var/www/html
> git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git wpcs
> phpcs –config-set installed_paths /var/www/html/wpcs

Install Codeigniter-Coding-Standards

> git clone https://github.com/thomas-ernest/CodeIgniter-for-PHP_CodeSniffer.git
> ant

or

> ant -Dphpcs.dir=”/usr/share/php/PHP/CodeSniffer”

Check Supported standards

> phpcs -i

Uninstall PHP-Coding-Standards

> pear uninstall PHP_CodeSniffer-2.8.1

Check Errors and Warnings

> phpcs file.php

Autofix Errors

> phpcbf file.php

Multiple applications with codeigniter from same framework directory

you can do this folder structure:

system
website-1 (your application)
----application
----index.php
website-2  (your application)
----application
----index.php
website-3  (your application)
----application
----index.php

move the ‘codeigniter application folder’ from the system and put it in one of you application folders.
copy the index.php file and paste inside your application folder.
In the index.php file:
You should have the following:

$system_folder = "../system";
$application_folder = "application";