function _installfix() { // Load fields model App::import('Model', 'field', 'jreviews'); $FieldModel = new FieldModel(); $task = Sanitize::getString($this->data, 'task'); $msg = ''; $mambot_error = 0; switch ($task) { case 'fix_install_jreviews': if (!$this->_installPlugin()) { $msg = "There was a problem updating the database or copying the plugin files. Make sure the Joomla plugins/content folder is writable."; } break; case 'fix_content_fields': $output = ''; $rows = $this->_db->getTableFields(array('#__jreviews_content')); $columns = array_keys($rows['#__jreviews_content']); $sql = "SELECT name,type FROM #__jreviews_fields WHERE location = 'content'"; $this->_db->setQuery($sql); $fields = $this->_db->loadObjectList('name'); $missing = array(); foreach ($fields as $field) { if (!in_array($field->name, $columns)) { $output = $FieldModel->addTableColumn($field->name, $field->type, 'content'); } } $query = "DELETE FROM #__jreviews_fields WHERE name = ''"; $this->_db->setQuery($query); $output = $this->_db->query(); if ($output != '') { $msg = "There was a problem fixing one or more of the content fields"; } break; case 'fix_review_fields': $output = ''; $rows = $this->_db->getTableFields(array('#__jreviews_review_fields')); $columns = array_keys($rows['#__jreviews_review_fields']); $sql = "SELECT name,type FROM #__jreviews_fields WHERE location = 'review'"; $this->_db->setQuery($sql); $fields = $this->_db->loadObjectList('name'); $missing = array(); foreach ($fields as $field) { if (!in_array($field->name, $columns)) { $output = $FieldModel->addTableColumn($field->name, $field->type, 'review'); } } $query = "DELETE FROM #__jreviews_fields WHERE name = ''"; $this->_db->setQuery($query); $output = $this->_db->query(); if ($output != '') { $msg = "There was a problem fixing one or more of the review fields"; } break; default: break; } cmsFramework::redirect("index.php?option=com_jreviews", $msg); }
function _installfix() { // Load fields model App::import('Model', 'field', 'jreviews'); $FieldModel = new FieldModel(); $task = Sanitize::getString($this->data, 'task'); $msg = ''; $mambot_error = 0; switch ($task) { case 'fix_install_jreviews': $query = "SELECT id,published FROM #__" . _PLUGIN_DIR_NAME . " WHERE element = 'jreviews' AND folder = 'content'"; $this->_db->setQuery($query); $jReviewsMambot = $this->_db->loadObjectList(); if (!$jReviewsMambot || empty($jReviewsMambot)) { // Install in DB $this->_db->setQuery("INSERT INTO #__" . _PLUGIN_DIR_NAME . " (`name`, `element`, `folder`, `access`, `ordering`, `published`, `iscore`, `client_id`, `checked_out`, `checked_out_time`, `params`) VALUES ('jReviews Comment Plugin', 'jreviews', 'content', 0, 0, 1, 0, 0, 0, '0000-00-00 00:00:00', '');"); $this->_db->query(); } else { // Publish $jReviewsMambot = $jReviewsMambot[0]; if (!$jReviewsMambot->published) { $this->_db->setQuery("UPDATE #__" . _PLUGIN_DIR_NAME . " SET published = '1' WHERE id='{$jReviewsMambot->id}'"); $this->_db->query(); } } if (!file_exists(PATH_ROOT . _PLUGIN_DIR_NAME . DS . 'content' . DS . 'jreviews.php')) { $package = PATH_ROOT . 'administrator' . DS . 'components' . DS . 'com_jreviews' . DS . 'jreviews.plugin.s2'; $target = PATH_ROOT . _PLUGIN_DIR_NAME . DS . 'content'; $target_file = $target . DS . 'jreviews.php'; if (getCmsVersion() == CMS_JOOMLA15) { jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.archive'); jimport('joomla.filesystem.path'); $adapter =& JArchive::getAdapter('zip'); $result = $adapter->extract($package, $target); } if (!file_exists($target_file)) { require_once PATH_ROOT . 'administrator' . DS . 'includes' . DS . 'pcl' . DS . 'pclzip.lib.php'; require_once PATH_ROOT . 'administrator' . DS . 'includes' . DS . 'pcl' . DS . 'pclerror.lib.php'; $extract = new PclZip($package); if (substr(PHP_OS, 0, 3) == 'WIN') { if (!defined('OS_WINDOWS')) { define('OS_WINDOWS', 1); } } else { if (!defined('OS_WINDOWS')) { define('OS_WINDOWS', 0); } } $result = $extract->extract(PCLZIP_OPT_PATH, $target); } if (!$result) { $mambot_error = true; } else { $mambot_error = false; } } if ($mambot_error) { $msg = "It was not possible to copy the mambot/plugin files. Make sure the /" . _PLUGIN_DIR_NAME . "/content folder is writable and try again."; } break; case 'fix_content_fields': $output = ''; $rows = $this->_db->getTableFields(array('#__jreviews_content')); $columns = array_keys($rows['#__jreviews_content']); $sql = "SELECT name,type FROM #__jreviews_fields WHERE location = 'content'"; $this->_db->setQuery($sql); $fields = $this->_db->loadObjectList('name'); $missing = array(); foreach ($fields as $field) { if (!in_array($field->name, $columns)) { $output = $FieldModel->addTableColumn($field->name, $field->type, 'content'); } } $query = "DELETE FROM #__jreviews_fields WHERE name = ''"; $this->_db->setQuery($query); $output = $this->_db->query(); if ($output != '') { $msg = "There was a problem fixing one or more of the content fields"; } break; case 'fix_review_fields': $output = ''; $rows = $this->_db->getTableFields(array('#__jreviews_review_fields')); $columns = array_keys($rows['#__jreviews_review_fields']); $sql = "SELECT name,type FROM #__jreviews_fields WHERE location = 'review'"; $this->_db->setQuery($sql); $fields = $this->_db->loadObjectList('name'); $missing = array(); foreach ($fields as $field) { if (!in_array($field->name, $columns)) { $output = $FieldModel->addTableColumn($field->name, $field->type, 'review'); } } $query = "DELETE FROM #__jreviews_fields WHERE name = ''"; $this->_db->setQuery($query); $output = $this->_db->query(); if ($output != '') { $msg = "There was a problem fixing one or more of the review fields"; } break; default: break; } cmsFramework::redirect("index.php?option=com_jreviews", $msg); }