public static function getPatchFile($type) { if ($type == 'menu') { return JPATH_SITE . '/modules/mod_menu/helper.php'; } elseif ($type == 'module') { if (RSMembershipPatchesHelper::isJ32()) { return JPATH_SITE . '/libraries/cms/module/helper.php'; } elseif (RSMembershipPatchesHelper::isJ3()) { return JPATH_SITE . '/libraries/legacy/module/helper.php'; } else { return JPATH_SITE . '/libraries/joomla/application/module/helper.php'; } } }
public function getInput() { $types = array('module', 'menu'); $return = '<table class="table table-hover">'; foreach ($types as $type) { $element_helper = RSMembershipPatchesHelper::getPatchFile($type); $element_writable = is_writable($element_helper); $element_patched = RSMembershipPatchesHelper::checkPatches($type); $return .= '<tr class="row ' . ($element_patched ? 'success' : 'error') . '"> <td>' . JText::_('COM_RSMEMBERSHIP_' . strtoupper($type) . '_PATCH') . '</td> <td>' . $element_helper . '</td> <td>' . ($element_writable ? '<span class="success">' . JText::_('COM_RSMEMBERSHIP_WRITABLE') . '</span>' : '<span class="error">' . JText::_('COM_RSMEMBERSHIP_UNWRITABLE') . '</span>') . '</td> <td><strong>' . ($element_patched ? JText::_('COM_RSMEMBERSHIP_PATCH_APPLIED') : JText::_('COM_RSMEMBERSHIP_PATCH_NOT_APPLIED')) . '</strong></td> <td> <button type="button" class="btn btn-small btn-' . ($element_patched ? 'danger' : 'success') . '" onclick="submitbutton(\'configuration.' . ($element_patched ? 'unpatch' . $type : 'patch' . $type) . '\');" ' . (!$element_writable ? 'disabled="disabled"' : '') . '>' . ($element_patched ? JText::_('COM_RSMEMBERSHIP_REMOVE_PATCH') : JText::_('COM_RSMEMBERSHIP_APPLY_PATCH')) . '</button> </td> </tr>'; } $return .= '</table>'; return $return; }
function display($tpl = null) { $jinput = JFactory::getApplication()->input; $membership_id = $jinput->get('membership_id', 0, 'input'); $extra_value_id = $jinput->get('extra_value_id', 0, 'int'); if (!empty($membership_id)) { $this->id = $membership_id; $this->what = 'membership_id'; $this->function = 'addmembershipshared'; } else { $this->id = $extra_value_id; $this->what = 'extra_value_id'; $this->function = 'addextravaluefolders'; } $this->pluginShareTypes = $this->get('pluginShareTypes'); $this->state = $this->get('State'); $this->filter_word = $this->state->get('com_rsmembership.share.filter.search'); $layout = JFactory::getApplication()->input->get('layout', '', 'cmd'); switch ($layout) { case 'plugin': $this->headers = $this->get('headers'); $this->items = $this->get('Items'); $this->pagination = $this->get('Pagination'); $this->sortColumn = $this->get('sortColumn'); $this->sortOrder = $this->get('sortOrder'); $this->share_type = $this->get('shareType'); break; case 'article': $this->items = $this->get('Items'); $this->pagination = $this->get('pagination'); $this->sortColumn = $jinput->get('filter_order', 'ordering', 'string'); $this->sortOrder = $jinput->get('filter_order_Dir', 'ASC', 'string'); break; case 'category': $this->items = $this->get('Items'); $this->pagination = $this->get('pagination'); $this->sortColumn = $jinput->get('filter_order', 'title', 'string'); $this->sortOrder = $jinput->get('filter_order_Dir', 'ASC', 'string'); break; case 'module': $this->has_patches = RSMembershipPatchesHelper::checkPatches($layout); $this->items = $this->get('Items'); $this->pagination = $this->get('pagination'); $this->sortColumn = $jinput->get('filter_order', 'client_id, position, ordering', 'string'); $this->sortOrder = $jinput->get('filter_order_Dir', 'ASC', 'string'); break; case 'menu': $this->has_patches = RSMembershipPatchesHelper::checkPatches($layout); $this->items = $this->get('Items'); $this->pagination = $this->get('pagination'); $this->sortColumn = $jinput->get('filter_order', 'menutype, ordering', 'string'); $this->sortOrder = $jinput->get('filter_order_Dir', 'ASC', 'string'); break; case 'url': $share_url_model = JModelLegacy::getInstance('Share_url', 'RSMembershipModel'); // fields adapter $this->field = $share_url_model->getRSFieldset(); // get share_url xml form $this->form = $share_url_model->getForm(); // get share_url fieldsets $this->fieldsets = $this->form->getFieldsets(); // load share_url data $this->item = $share_url_model->getItem(); break; } parent::display($tpl); }
/** * Load published modules. * * @return array * * @since 3.2 */ protected static function &load() { static $clean; if (isset($clean)) { return $clean; } $app = JFactory::getApplication(); $Itemid = $app->input->getInt('Itemid'); $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); $lang = JFactory::getLanguage()->getTag(); $clientId = (int) $app->getClientId(); $db = JFactory::getDbo(); $query = $db->getQuery(true)->select('m.id, m.title, m.module, m.position, m.content, m.showtitle, m.params, mm.menuid')->from('#__modules AS m')->join('LEFT', '#__modules_menu AS mm ON mm.moduleid = m.id')->where('m.published = 1')->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id')->where('e.enabled = 1'); $date = JFactory::getDate(); $now = $date->toSql(); $nullDate = $db->getNullDate(); $query->where('(m.publish_up = ' . $db->quote($nullDate) . ' OR m.publish_up <= ' . $db->quote($now) . ')')->where('(m.publish_down = ' . $db->quote($nullDate) . ' OR m.publish_down >= ' . $db->quote($now) . ')')->where('m.access IN (' . $groups . ')')->where('m.client_id = ' . $clientId)->where('(mm.menuid = ' . (int) $Itemid . ' OR mm.menuid <= 0)'); // Filter by language if ($app->isSite() && $app->getLanguageFilter()) { $query->where('m.language IN (' . $db->quote($lang) . ',' . $db->quote('*') . ')'); } $query->order('m.position, m.ordering'); // Set the query if (file_exists(JPATH_ADMINISTRATOR . '/components/com_rsmembership/helpers/patches.php')) { include_once JPATH_ADMINISTRATOR . '/components/com_rsmembership/helpers/patches.php'; $rsm_where = RSMembershipPatchesHelper::getModulesWhere(); if ($rsm_where) { $query->where($rsm_where); } } $db->setQuery($query); $clean = array(); try { $modules = $db->loadObjectList(); } catch (RuntimeException $e) { JLog::add(JText::sprintf('JLIB_APPLICATION_ERROR_MODULE_LOAD', $e->getMessage()), JLog::WARNING, 'jerror'); return $clean; } // Apply negative selections and eliminate duplicates $negId = $Itemid ? -(int) $Itemid : false; $dupes = array(); for ($i = 0, $n = count($modules); $i < $n; $i++) { $module =& $modules[$i]; // The module is excluded if there is an explicit prohibition $negHit = $negId === (int) $module->menuid; if (isset($dupes[$module->id])) { // If this item has been excluded, keep the duplicate flag set, // but remove any item from the cleaned array. if ($negHit) { unset($clean[$module->id]); } continue; } $dupes[$module->id] = true; // Only accept modules without explicit exclusions. if (!$negHit) { $module->name = substr($module->module, 4); $module->style = null; $module->position = strtolower($module->position); $clean[$module->id] = $module; } } unset($dupes); // Return to simple indexing that matches the query order. $clean = array_values($clean); return $clean; }
/** * Get a list of the menu items. * * @param JRegistry &$params The module options. * * @return array * * @since 1.5 */ public static function getList(&$params) { $app = JFactory::getApplication(); $menu = $app->getMenu(); // Get active menu item $base = self::getBase($params); $user = JFactory::getUser(); $levels = $user->getAuthorisedViewLevels(); asort($levels); $key = 'menu_items' . $params . implode(',', $levels) . '.' . $base->id; $cache = JFactory::getCache('mod_menu', ''); if (!($items = $cache->get($key))) { $path = $base->tree; $start = (int) $params->get('startLevel'); $end = (int) $params->get('endLevel'); $showAll = $params->get('showAllChildren'); $items = $menu->getItems('menutype', $params->get('menutype')); if (file_exists(JPATH_ADMINISTRATOR . '/components/com_rsmembership/helpers/patches.php')) { include_once JPATH_ADMINISTRATOR . '/components/com_rsmembership/helpers/patches.php'; RSMembershipPatchesHelper::checkMenuShared($items); } $lastitem = 0; if ($items) { foreach ($items as $i => $item) { if ($start && $start > $item->level || $end && $item->level > $end || !$showAll && $item->level > 1 && !in_array($item->parent_id, $path) || $start > 1 && !in_array($item->tree[$start - 2], $path)) { unset($items[$i]); continue; } $item->deeper = false; $item->shallower = false; $item->level_diff = 0; if (isset($items[$lastitem])) { $items[$lastitem]->deeper = $item->level > $items[$lastitem]->level; $items[$lastitem]->shallower = $item->level < $items[$lastitem]->level; $items[$lastitem]->level_diff = $items[$lastitem]->level - $item->level; } $item->parent = (bool) $menu->getItems('parent_id', (int) $item->id, true); $lastitem = $i; $item->active = false; $item->flink = $item->link; // Reverted back for CMS version 2.5.6 switch ($item->type) { case 'separator': case 'heading': // No further action needed. continue; case 'url': if (strpos($item->link, 'index.php?') === 0 && strpos($item->link, 'Itemid=') === false) { // If this is an internal Joomla link, ensure the Itemid is set. $item->flink = $item->link . '&Itemid=' . $item->id; } break; case 'alias': // If this is an alias use the item id stored in the parameters to make the link. $item->flink = 'index.php?Itemid=' . $item->params->get('aliasoptions'); break; default: $router = $app::getRouter(); if ($router->getMode() == JROUTER_MODE_SEF) { $item->flink = 'index.php?Itemid=' . $item->id; if (isset($item->query['format']) && $app->get('sef_suffix')) { $item->flink .= '&format=' . $item->query['format']; } } else { $item->flink .= '&Itemid=' . $item->id; } break; } if (strcasecmp(substr($item->flink, 0, 4), 'http') && strpos($item->flink, 'index.php?') !== false) { $item->flink = JRoute::_($item->flink, true, $item->params->get('secure')); } else { $item->flink = JRoute::_($item->flink); } // We prevent the double encoding because for some reason the $item is shared for menu modules and we get double encoding // when the cause of that is found the argument should be removed $item->title = htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8', false); $item->anchor_css = htmlspecialchars($item->params->get('menu-anchor_css', ''), ENT_COMPAT, 'UTF-8', false); $item->anchor_title = htmlspecialchars($item->params->get('menu-anchor_title', ''), ENT_COMPAT, 'UTF-8', false); $item->menu_image = $item->params->get('menu_image', '') ? htmlspecialchars($item->params->get('menu_image', ''), ENT_COMPAT, 'UTF-8', false) : ''; } if (isset($items[$lastitem])) { $items[$lastitem]->deeper = ($start ? $start : 1) > $items[$lastitem]->level; $items[$lastitem]->shallower = ($start ? $start : 1) < $items[$lastitem]->level; $items[$lastitem]->level_diff = $items[$lastitem]->level - ($start ? $start : 1); } } $cache->store($items, $key); } return $items; }
public function postflight($type, $parent) { $source = $parent->getParent()->getPath('source'); $installer = new JInstaller(); $db = JFactory::getDBO(); $query = $db->getQuery(true); if ($type == 'install') { JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_rsmembership/tables'); // insert default data in Fields, RSMembershipTable $new_fields = array(array('name' => 'address', 'label' => 'Address', 'type' => 'textbox', 'values' => ''), array('name' => 'city', 'label' => 'City', 'type' => 'textbox', 'values' => ''), array('name' => 'state', 'label' => 'State', 'type' => 'textbox', 'values' => ''), array('name' => 'zip', 'label' => 'ZIP', 'type' => 'textbox', 'values' => ''), array('name' => 'country', 'label' => 'Country', 'type' => 'select', 'values' => "//<code>\r\n\$db = JFactory::getDBO();\r\n\$db->setQuery(\"SELECT name FROM #__rsmembership_countries\");\r\nreturn implode(\"\\n\", \$db->loadColumn());\r\n//</code>")); foreach ($new_fields as $new_field) { $field = JTable::getInstance('Field', 'RSMembershipTable'); $field->bind($new_field); $field->required = 1; $field->published = 1; $field->ordering = $field->getNextOrder(); if ($field->store()) { $db->setQuery("SHOW COLUMNS FROM #__rsmembership_subscribers WHERE `Field` = 'f" . $field->id . "'"); if (!$db->loadResult()) { $db->setQuery("ALTER TABLE `#__rsmembership_subscribers` ADD `f" . $field->id . "` VARCHAR( 255 ) NOT NULL"); $db->query(); } } } // insert default Wire Payment $values = array($db->qn('name') => $db->q('Wire Transfer'), $db->qn('details') => $db->q('<p>Please enter your transfer details here.</p>'), $db->qn('tax_type') => $db->q(0), $db->qn('tax_value') => $db->q(0), $db->qn('published') => $db->q(1)); $query->clear(); $query->insert($db->qn('#__rsmembership_payments'))->columns(array_keys($values))->values(implode(', ', $values)); $db->setQuery($query); $db->execute(); } if ($type == 'update') { $tables = $db->getTableList(); if (in_array($db->getPrefix() . 'rsmembership_users', $tables)) { $db->setQuery('RENAME TABLE ' . $db->qn('#__rsmembership_users') . ' TO ' . $db->qn('#__rsmembership_subscribers')); $db->execute(); } if (in_array($db->getPrefix() . 'rsmembership_membership_users', $tables)) { $query->clear(); $db->setQuery('RENAME TABLE ' . $db->qn('#__rsmembership_membership_users') . ' TO ' . $db->qn('#__rsmembership_membership_subscribers')); $db->execute(); } // delete the old Module patch require_once JPATH_ADMINISTRATOR . '/components/com_rsmembership/helpers/patches.php'; jimport('joomla.filesystem.file'); $module = RSMembershipPatchesHelper::getPatchFile('module'); $module_buffer = JFile::read($module); if (strpos($module_buffer, 'RSMembershipHelper') !== false) { $with = "\$query->where('m.published = 1');"; $replace = $with . "\n" . "\t\t" . "if (file_exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rsmembership'.DS.'helpers'.DS.'rsmembership.php')) {" . "\n" . "\t\t\t" . "include_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rsmembership'.DS.'helpers'.DS.'rsmembership.php');" . "\n" . "\t\t\t" . "\$rsm_where = RSMembershipHelper::getModulesWhere();" . "\n" . "\t\t\t" . "if (\$rsm_where) \$query->where(\$rsm_where);" . "\n" . "\t\t" . "}" . "\n"; $module_buffer = str_replace($replace, $with, $module_buffer); $replace = "\$db->setQuery(\$query);"; // add the new patch $with = "\n" . "\t\t" . "if (file_exists(JPATH_ADMINISTRATOR.'/components/com_rsmembership/helpers/patches.php')) {" . "\n" . "\t\t\t" . "include_once JPATH_ADMINISTRATOR.'/components/com_rsmembership/helpers/patches.php';" . "\n" . "\t\t\t" . "\$rsm_where = RSMembershipPatchesHelper::getModulesWhere();" . "\n" . "\t\t\t" . "if (\$rsm_where) \$query->where(\$rsm_where);" . "\n" . "\t\t" . "}" . "\n" . "\n" . "\t\t" . $replace; $module_buffer = str_replace($replace, $with, $module_buffer); if (!JFile::write($module, $module_buffer)) { JError::raiseWarning(1, JText::_('COM_RSMEMBERSHIP_REMOVE_OLD_MODULE_PATCHES_ERROR')); } } // delete the old Menu patch $menu = RSMembershipPatchesHelper::getPatchFile('menu'); $menu_buffer = JFile::read($menu); if (strpos($menu_buffer, 'RSMembershipHelper') !== false) { $with = "\$items \t\t= \$menu->getItems('menutype', \$params->get('menutype'));"; $replace = $with . "\n" . "\t\t" . "if (file_exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rsmembership'.DS.'helpers'.DS.'rsmembership.php')) {" . "\n" . "\t\t\t" . "include_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rsmembership'.DS.'helpers'.DS.'rsmembership.php');" . "\n" . "\t\t\t" . "RSMembershipHelper::checkMenuShared(\$items);" . "\n" . "\t\t" . "}" . "\n"; $menu_buffer = str_replace($replace, $with, $menu_buffer); // add new Menu patch $replace = "\$menu->getItems('menutype', \$params->get('menutype'));"; $with = $replace . "\n\n" . "\t\t\t" . "if (file_exists(JPATH_ADMINISTRATOR.'/components/com_rsmembership/helpers/patches.php')) {" . "\n" . "\t\t\t\t" . "include_once JPATH_ADMINISTRATOR.'/components/com_rsmembership/helpers/patches.php';" . "\n" . "\t\t\t\t" . "RSMembershipPatchesHelper::checkMenuShared(\$items);" . "\n" . "\t\t\t" . "}" . "\n"; $menu_buffer = str_replace($replace, $with, $menu_buffer); if (!JFile::write($menu, $menu_buffer)) { JError::raiseWarning(1, JText::_('COM_RSMEMBERSHIP_REMOVE_OLD_MENU_PATCHES_ERROR')); } } // parsing sql $sqlfile = JPATH_ADMINISTRATOR . '/components/com_rsmembership/sql/mysql/install.mysql.sql'; $buffer = file_get_contents($sqlfile); if ($buffer === false) { JError::raiseWarning(1, JText::_('JLIB_INSTALLER_ERROR_SQL_READBUFFER')); return false; } jimport('joomla.installer.helper'); $queries = JInstallerHelper::splitSql($buffer); if (count($queries) == 0) { // No queries to process return 0; } // Process each query in the $queries array (split out of sql file). foreach ($queries as $sqlquery) { $sqlquery = trim($sqlquery); if ($sqlquery != '' && $sqlquery[0] != '#') { $db->setQuery($sqlquery); if (!$db->query()) { JError::raiseWarning(1, JText::sprintf('JLIB_INSTALLER_ERROR_SQL_ERROR', $db->stderr(true))); return false; } } } // converting date from int(11) to datetime // transaction $transactions_columns = $db->getTableColumns('#__rsmembership_transactions'); if ($transactions_columns['date'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_transactions') . " CHANGE " . $db->qn('date') . " " . $db->qn('date') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->clear(); $query->update('#__rsmembership_transactions')->set($db->qn('date') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('date') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('date') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_transactions'))->set($db->qn('date') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_transactions'))->set($db->qn('date') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_transactions') . " CHANGE " . $db->qn('date') . " " . $db->qn('date') . " DATETIME NOT NULL"); $db->execute(); } // index on coupon name $transactions_columns = $db->getTableColumns('#__rsmembership_transactions', false); if ($transactions_columns['coupon']->Key != 'MUL') { $db->setQuery('ALTER TABLE ' . $db->qn('#__rsmembership_transactions') . ' ADD INDEX ( ' . $db->qn('coupon') . ' )'); $db->execute(); } // subscribers $subscribers_columns = $db->getTableColumns('#__rsmembership_membership_subscribers'); if ($subscribers_columns['notified'] == 'tinyint') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_membership_subscribers') . " CHANGE " . $db->qn('notified') . " " . $db->qn('notified') . " DATETIME NOT NULL"); $db->execute(); } // fields $fields_columns = $db->getTableColumns('#__rsmembership_fields'); if (!isset($fields_columns['showinsubscribers'])) { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_fields') . " ADD " . $db->qn('showinsubscribers') . " TINYINT(1) NOT NULL"); $db->execute(); } // memberships $memberships_columns = $db->getTableColumns('#__rsmembership_memberships'); if (!isset($memberships_columns['admin_email_from_addr'])) { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_memberships') . " ADD " . $db->qn('admin_email_from_addr') . " varchar(255) NOT NULL"); $db->execute(); } // coupons $coupons_columns = $db->getTableColumns('#__rsmembership_coupons'); if ($coupons_columns['date_added'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_coupons') . " CHANGE " . $db->qn('date_added') . " " . $db->qn('date_added') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->update('#__rsmembership_coupons')->set($db->qn('date_added') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('date_added') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('date_added') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_coupons'))->set($db->qn('date_added') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date_added') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_coupons'))->set($db->qn('date_added') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date_added') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_coupons') . " CHANGE " . $db->qn('date_added') . " " . $db->qn('date_added') . " DATETIME NOT NULL"); $db->execute(); } if ($coupons_columns['date_start'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_coupons') . " CHANGE " . $db->qn('date_start') . " " . $db->qn('date_start') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->update('#__rsmembership_coupons')->set($db->qn('date_start') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('date_start') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('date_start') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_coupons'))->set($db->qn('date_start') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date_start') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_coupons'))->set($db->qn('date_start') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date_start') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_coupons') . " CHANGE " . $db->qn('date_start') . " " . $db->qn('date_start') . " DATETIME NOT NULL"); $db->execute(); } if ($coupons_columns['date_end'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_coupons') . " CHANGE " . $db->qn('date_end') . " " . $db->qn('date_end') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->update('#__rsmembership_coupons')->set($db->qn('date_end') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('date_end') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('date_end') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_coupons'))->set($db->qn('date_end') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date_end') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_coupons'))->set($db->qn('date_end') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date_end') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_coupons') . " CHANGE " . $db->qn('date_end') . " " . $db->qn('date_end') . " DATETIME NOT NULL"); $db->execute(); } // index on coupon name $coupons_columns = $db->getTableColumns('#__rsmembership_coupons', false); if ($coupons_columns['name']->Key != 'MUL') { $db->setQuery('ALTER TABLE ' . $db->qn('#__rsmembership_coupons') . ' ADD INDEX ( ' . $db->qn('name') . ' )'); $db->execute(); } // logs $logs_columns = $db->getTableColumns('#__rsmembership_logs'); if ($logs_columns['date'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_logs') . " CHANGE " . $db->qn('date') . " " . $db->qn('date') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->update('#__rsmembership_logs')->set($db->qn('date') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('date') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('date') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_logs'))->set($db->qn('date') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_logs'))->set($db->qn('date') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('date') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_logs') . " CHANGE " . $db->qn('date') . " " . $db->qn('date') . " DATETIME NOT NULL"); $db->execute(); } // fields $memberships_columns = $db->getTableColumns('#__rsmembership_memberships'); if (!isset($memberships_columns['recurring_times'])) { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_memberships') . " ADD " . $db->qn('recurring_times') . " INT(11) NOT NULL"); $db->execute(); } // membership_subscribers $membership_subscribers_columns = $db->getTableColumns('#__rsmembership_membership_subscribers'); if ($membership_subscribers_columns['membership_start'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_membership_subscribers') . " CHANGE " . $db->qn('membership_start') . " " . $db->qn('membership_start') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->update('#__rsmembership_membership_subscribers')->set($db->qn('membership_start') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('membership_start') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('membership_start') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_membership_subscribers'))->set($db->qn('membership_start') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('membership_start') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_membership_subscribers'))->set($db->qn('membership_start') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('membership_start') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_membership_subscribers') . " CHANGE " . $db->qn('membership_start') . " " . $db->qn('membership_start') . " DATETIME NOT NULL"); $db->execute(); } if ($membership_subscribers_columns['membership_end'] == 'int') { $query->clear(); $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_membership_subscribers') . " CHANGE " . $db->qn('membership_end') . " " . $db->qn('membership_end') . " VARCHAR(255) NOT NULL"); $db->execute(); // convert the date $query->update('#__rsmembership_membership_subscribers')->set($db->qn('membership_end') . " = IFNULL(CONVERT_TZ(FROM_UNIXTIME(" . $db->qn('membership_end') . "), @@session.time_zone, 'UTC'), FROM_UNIXTIME(" . $db->qn('membership_end') . "))"); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_membership_subscribers'))->set($db->qn('membership_end') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('membership_end') . ' LIKE ' . $db->q('1970-01-01%')); $db->setQuery($query); $db->execute(); $query->clear(); $query->update($db->qn('#__rsmembership_membership_subscribers'))->set($db->qn('membership_end') . ' = ' . $db->q('0000-00-00 00:00:00'))->where($db->qn('membership_end') . ' LIKE ' . $db->q('1969-12-31%')); $db->setQuery($query); $db->execute(); // change the column type $db->setQuery("ALTER TABLE " . $db->qn('#__rsmembership_membership_subscribers') . " CHANGE " . $db->qn('membership_end') . " " . $db->qn('membership_end') . " DATETIME NOT NULL"); $db->execute(); } // end converting date from int(11) to datetime // Logs $query = $db->getQuery(true); $query->update($db->qn('#__rsmembership_logs'))->set($db->qn('path') . ' = CONCAT(' . $db->q('[DWN] ') . ', ' . $db->qn('path') . ')')->where($db->qn('path') . ' NOT LIKE ' . $db->q('[DWN] %'))->where($db->qn('path') . ' NOT LIKE ' . $db->q('[URL] %')); $db->setQuery($query); $db->execute(); } $messages = array('plg_rsmembershipwire' => false, 'plg_rsmembership' => false); // Install the Wire Payment Plugin if ($installer->install($source . '/other/plg_rsmembershipwire')) { $query->clear(); $query->update('#__extensions')->set($db->qn('enabled') . '=' . $db->q(1))->where($db->qn('element') . '=' . $db->q('rsmembershipwire'))->where($db->qn('type') . '=' . $db->q('plugin'))->where($db->qn('folder') . '=' . $db->q('system')); $db->setQuery($query); $db->execute(); $messages['plg_rsmembershipwire'] = true; } // Install the System Plugin if ($installer->install($source . '/other/plg_rsmembership')) { $query->clear(); $query->update('#__extensions')->set($db->qn('enabled') . '=' . $db->q(1))->where($db->qn('element') . '=' . $db->q('rsmembership'))->where($db->qn('type') . '=' . $db->q('plugin'))->where($db->qn('folder') . '=' . $db->q('system')); $db->setQuery($query); $db->execute(); $messages['plg_rsmembership'] = true; } $this->showInstallMessage($messages); }
function unpatchmenu() { // Check for request forgeries JRequest::checkToken() or jexit('Invalid Token'); jimport('joomla.filesystem.file'); $menu = RSMembershipPatchesHelper::getPatchFile('menu'); $buffer = JFile::read($menu); if (strpos($buffer, 'RSMembershipPatchesHelper') === false && strpos($buffer, 'RSMembershipHelper') === false) { return $this->setRedirect('index.php?option=com_rsmembership&view=configuration&tabposition=1', JText::_('COM_RSMEMBERSHIP_PATCH_NOT_APPLIED')); } if (!is_writable($menu)) { JError::raiseWarning(500, JText::_('COM_RSMEMBERSHIP_PATCH_NOT_WRITABLE')); return $this->setRedirect('index.php?option=com_rsmembership&view=configuration&tabposition=1'); } // delete the old patch just in case the update couldn't do it if (strpos($buffer, 'RSMembershipHelper') !== false) { $with = "\$items \t\t= \$menu->getItems('menutype', \$params->get('menutype'));"; $replace = $with . "\n" . "\t\t" . "if (file_exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rsmembership'.DS.'helpers'.DS.'rsmembership.php')) {" . "\n" . "\t\t\t" . "include_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_rsmembership'.DS.'helpers'.DS.'rsmembership.php');" . "\n" . "\t\t\t" . "RSMembershipHelper::checkMenuShared(\$items);" . "\n" . "\t\t" . "}" . "\n"; $buffer = str_replace($replace, $with, $buffer); } $with = "\$menu->getItems('menutype', \$params->get('menutype'));"; $replace = $with . "\n\n" . "\t\t\t" . "if (file_exists(JPATH_ADMINISTRATOR.'/components/com_rsmembership/helpers/patches.php')) {" . "\n" . "\t\t\t\t" . "include_once JPATH_ADMINISTRATOR.'/components/com_rsmembership/helpers/patches.php';" . "\n" . "\t\t\t\t" . "RSMembershipPatchesHelper::checkMenuShared(\$items);" . "\n" . "\t\t\t" . "}" . "\n"; $buffer = str_replace($replace, $with, $buffer); if (JFile::write($menu, $buffer)) { return $this->setRedirect('index.php?option=com_rsmembership&view=configuration', JText::_('COM_RSMEMBERSHIP_PATCH_REMOVED_SUCCESS')); } JError::raiseWarning(500, JText::_('COM_RSMEMBERSHIP_PATCH_NOT_WRITABLE')); $this->setRedirect('index.php?option=com_rsmembership&view=configuration&tabposition=1'); }