Example #1
0
 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';
         }
     }
 }
Example #2
0
    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;
    }
Example #3
0
 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);
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
 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);
 }
Example #7
0
 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');
 }