コード例 #1
0
 function onAfterRoute()
 {
     jimport('joomla.filesystem.file');
     jimport('joomla.filesystem.folder');
     if (!JFile::exists(JPATH_SITE . DS . 'administrator' . DS . 'components' . DS . 'com_contentbuilder' . DS . 'classes' . DS . 'contentbuilder.php')) {
         return;
     }
     // register non-existent records
     if (in_array(JRequest::getVar('option', ''), array('com_contentbuilder', 'com_content'))) {
         $db = JFactory::getDBO();
         require_once JPATH_SITE . DS . 'administrator' . DS . 'components' . DS . 'com_contentbuilder' . DS . 'classes' . DS . 'contentbuilder.php';
         $db->setQuery("Select `type`, `reference_id` From #__contentbuilder_forms Where published = 1");
         $views = $db->loadAssocList();
         $typeview = array();
         foreach ($views as $view) {
             if (!isset($typeview[$view['type'] . $view['reference_id']])) {
                 $typeview[$view['type'] . $view['reference_id']] = true;
                 $form = contentbuilder::getForm($view['type'], $view['reference_id']);
                 if (is_object($form)) {
                     $form->synchRecords();
                 }
             }
         }
     }
     if (JRequest::getCmd('option', '') == 'com_content' || JRequest::getCmd('option', '') == 'com_contentbuilder') {
         // managing published states
         $db = JFactory::getDBO();
         $date = JFactory::getDate();
         $db->setQuery("Update #__contentbuilder_records Set published = 1 Where is_future = 1 And publish_up <> '0000-00-00 00:00:00' And publish_up <= '" . CBCompat::toSql($date) . "'");
         $db->query();
         $db->setQuery("Update #__contentbuilder_records Set published = 0 Where publish_down <> '0000-00-00 00:00:00' And publish_down <= '" . CBCompat::toSql($date) . "'");
         $db->query();
         // published states END
     }
     // joomla 1.5 and following obviously has problems when logging out and being in list view and the menu item access being registered.
     // J! is then trying to redirect to com_content (for non-obvious reasons), using the view variable orginally used in contentbuilder and then it will
     // throw an error 500, view not found
     // this will get rid of the view parameter and pass the rest of the url to the return parameter
     $enc = base64_decode(JRequest::getVar('return', '', 'method', 'base64'));
     if (is_string($enc)) {
         $enc = explode('?', $enc);
         count($enc) > 1 ? parse_str($enc[1], $out) : ($out = array());
         if (isset($out['option']) && $out['option'] == 'com_contentbuilder') {
             $i = 0;
             $length = count($out);
             $return = '';
             foreach ($out as $key => $value) {
                 if (strtolower($key) != 'view') {
                     $return .= $key . '=' . $value . ($i + 1 < $length ? '&' : '');
                 }
                 $i++;
             }
             JRequest::setVar('return', base64_encode('index.php' . ($return ? '?' : '') . $return));
         }
     }
     if (in_array(JRequest::getVar('option'), array('com_content'))) {
         $pluginParams = CBCompat::getPluginParams($this, 'system', 'contentbuilder_system');
         if ($pluginParams->def('nocache', 1)) {
             $this->caching = CBCompat::getJoomlaConfig('config.caching');
             CBCompat::setJoomlaConfig('config.caching', 0);
         }
     }
     if (JRequest::getVar('option') == 'com_contentbuilder') {
         JFactory::getDBO()->setQuery("\n                    Update \n                        #__contentbuilder_records As records,\n                        #__contentbuilder_forms As forms,\n                        #__contentbuilder_registered_users As cbusers,\n                        #__users As users\n                    Set \n                        records.published = 0\n                    Where\n                        records.reference_id = forms.reference_id\n                    And\n                        records.published = 1\n                    And\n                        records.`type` = forms.`type`\n                    And\n                        forms.act_as_registration = 1\n                    And\n                        forms.id = cbusers.form_id\n                    And\n                        records.record_id = cbusers.record_id\n                    And\n                      (\n                        (\n                            users.id = cbusers.user_id\n                          And\n                            users.block = 1\n                        )\n                      )\n                    ");
         JFactory::getDBO()->query();
         JFactory::getDBO()->setQuery("\n                    Update \n                        #__contentbuilder_records As records,\n                        #__contentbuilder_forms As forms,\n                        #__contentbuilder_registered_users As cbusers,\n                        #__users As users\n                    Set \n                        records.published = forms.auto_publish\n                    Where\n                        records.reference_id = forms.reference_id\n                    And\n                        records.published = 0\n                    And\n                        records.`type` = forms.`type`\n                    And\n                        forms.act_as_registration = 1\n                    And\n                        forms.id = cbusers.form_id\n                    And\n                        records.record_id = cbusers.record_id\n                    And\n                        users.id = cbusers.user_id\n                    And\n                        users.block = 0\n                    ");
         JFactory::getDBO()->query();
     }
 }