I have two modules that I have created that work together: Products & Categories. They work wonderfully when developing locally, but when I deployed them to my Network Solutions hosting I now get "internal error or misconfiguration" errors. All other pages on the site work fine except for the modules. I'm pretty clueless as to what is causing this, any ideas. Screenshot Below:
--categories_model.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once(FUEL_PATH.'models/base_module_model.php');
class Categories_model extends Base_module_model {
public $record_class = 'Category';
function __construct()
{
parent::__construct('categories');
}
// cleanup category to products
function on_after_delete($where)
{
$this->delete_related('categories_to_products_model', 'category_id', $where);
}
// add unique name validation
function on_before_validate($values)
{
if (!empty($values['id']))
{
$this->add_validation('name', array(&$this, 'is_editable'), lang('error_val_empty_or_already_exists', lang('form_label_name')), array('name', $values['id']));
}
else
{
$this->add_validation('name', array(&$this, 'is_new'), lang('error_val_empty_or_already_exists', lang('form_label_name')), 'name');
}
return $values;
}
function does_category_match($category) {
$categories = $this->find_all();
foreach($categories as $cat){
if ($cat->name == $category)
{
return true;
}
}
//If none returned true, then return false
return false;
}
}
class Category_model extends Base_module_record {
function get_products()
{
$this->_CI->load->model('categories_to_products_model');
$where = array('category_id' => $this->id, 'products.published' => 'yes');
$products = $this->_CI->categories_to_products_model->find_all($where, "precedence asc");
return $products;
}
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
--categories_to_products_model.php
class Categories_to_products_model extends MY_Model {
public $record_class = 'Category_to_product';
public $foreign_keys = array('category_id' => 'categories_model', 'product_id' => 'products_model');
function __construct()
{
parent::__construct('categories_to_products');
}
function _common_query()
{
$this->db->select('categories_to_products.*, products.*');
$this->db->join('products', 'categories_to_products.product_id = products.id', 'left');
$this->db->join('categories', 'categories_to_products.category_id = categories.id', 'left');
}
}
class Category_to_product_model extends Data_record {
public $category_name = '';
public $title = '';
}
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once(FUEL_PATH.'models/base_module_model.php');
--products_model.php
class Products_model extends Base_module_model {
public $required = array();
function __construct()
{
parent::__construct('products'); // table name
}
function list_items($limit = NULL, $offset = NULL, $col = '', $order = 'desc')
{
$this->db->select('products.id, title, SUBSTRING(description, 1, 50) AS description, products.published, products.precedence', FALSE);
$data = parent::list_items($limit, $offset, $col, $order);
return $data;
}
function tree()
{
$CI =& get_instance();
$CI->load->model('categories_model');
$CI->load->model('categories_to_products_model');
$return = array();
$categories = $CI->categories_model->find_all(array(), 'id asc');
$categories_to_products = $CI->categories_to_products_model->find_all('', 'categories.name asc');
foreach($categories as $category)
{
$cat_id = $category->id;
$return[] = array('id' => $category->id, 'label' => $category->name, 'parent_id' => 0, 'location' => fuel_url('categories/edit/'.$category->id));
}
$i = $cat_id +1;
foreach($categories_to_products as $val)
{
$attributes = ($val->published == 'no') ? array('class' => 'unpublished', 'title' => 'unpublished') : NULL;
$return[$i] = array('id' => $i, 'label' => $val->title, 'parent_id' => $val->category_id, 'location' => fuel_url('products/edit/'.$val->product_id), 'attributes' => $attributes);
$i++;
}
return $return;
}
function form_fields($values = array())
{
$fields = parent::form_fields();
$CI =& get_instance();
$CI->load->model('categories_model');
$CI->load->model('categories_to_products_model');
$category_options = $CI->categories_model->options_list('id', 'name', array('published' => 'yes'), 'name');
$category_values = (!empty($values['id'])) ? array_keys($CI->categories_to_products_model->find_all_array_assoc('category_id', array('product_id' => $values['id'], 'categories.published' => 'yes'))) : array();
$fields['categories'] = array('label' => 'Categories', 'type' => 'array', 'class' => 'add_edit categories', 'options' => $category_options, 'value' => $category_values, 'mode' => 'multi');
$fields['product_image_upload']['upload_path'] = assets_server_path('products/', 'images');
$fields['nutrition_label_image_upload']['upload_path'] = assets_server_path('nutrition/', 'images');
return $fields;
}
// add categories
function on_after_save($values)
{
$data = (!empty($this->normalized_save_data['categories'])) ? $this->normalized_save_data['categories'] : array();
$this->save_related('categories_to_products_model', array('product_id' => $values['id']), array('category_id' => $data));
}
// cleanup products from categories to products table
function on_after_delete($where)
{
$this->delete_related('categories_to_products_model', 'product_id', $where);
}
function on_after_post($values)
{
$CI =& get_instance();
$CI->load->library('image_lib');
// resize if an image is uploaded
if (!empty($CI->upload))
{
$data = $CI->upload->data();
if (!empty($data['full_path']))
{
// resize to proper dimensions
$config = array();
$config['source_image'] = $data['full_path'];
$config['create_thumb'] = FALSE;
//$config['new_image'] = $thumb_img;
$config['width'] = 960;
$config['height'] = 100000;
$config['master_dim'] = 'width';
$config['maintain_ratio'] = TRUE;
$CI->image_lib->clear();
$CI->image_lib->initialize($config);
if (!$CI->image_lib->resize())
{
$this->add_error($CI->image_lib->display_errors());
}
}
}
return $values;
}
}
class Product_model extends Data_record {
}
?>
Thank you for your help,
Brandon Boswell
Comments
http://www.mainelydesign.com/blog/view/network-solutions-htaccess-mod_rewrite-rewriterule-flawed