public function activate($module_directory)
{
if (!$this->exists($module_directory)) {
return FALSE;
}
$this->db->from('modules')->where('module_directory', $module_directory);
$query = $this->db->get();
if ($query->num_rows() > 0) {
return FALSE;
}
if (!($data = $this->_get_config($module_directory))) {
return FALSE;
}
// Check required
if (isset($data['required']) && !empty($data['required'])) {
$fail = FALSE;
$required = lang('lang_dependencies') . '<br />';
foreach ($data['required'] as $item) {
if (!$this->events->active(strtolower($item))) {
$required .= $item . '<br />';
$fail = TRUE;
}
}
if ($fail) {
$this->session->set_flashdata('error', $required);
return FALSE;
}
}
// Check optionals
if (isset($data['optional']) && !empty($data['optional'])) {
$show_message = FALSE;
$optional = lang('lang_optional_dependencies') . '<br />';
foreach ($data['optional'] as $item) {
if (!$this->events->active(strtolower($item))) {
$optional .= $item . '<br />';
$show_message = TRUE;
}
}
if ($show_message) {
$this->session->set_flashdata('info', $optional);
}
}
// Module doesn't exist
$module_data = array('module_name' => $data['module_name'], 'module_display_name' => $data['module_display_name'], 'module_description' => $data['module_description'], 'module_directory' => $data['module_name'], 'module_version' => $data['module_version'], 'module_order' => $data['module_order'], 'module_active' => 'yes');
$this->db->insert('modules', $module_data);
if ($this->db->affected_rows() == 0) {
return FALSE;
}
// Delete any cache
$this->cache->delete('load_addons');
$module_id = $this->db->insert_id();
return $this->init_module($module_directory, 'install');
}