/** * Entry point for the script * * @return void * * @since 2.5.1 */ public function doExecute() { // Merge the default translation with the current translation $lang = JFactory::getLanguage(); $lang->load('lib_j2xml', JPATH_SITE, null, false, false) || $lang->load('lib_j2xml', JPATH_ADMINISTRATOR, null, false, false) || $lang->load('lib_j2xml', JPATH_SITE, null, true) || $lang->load('lib_j2xml', JPATH_ADMINISTRATOR, null, true); $filename = $this->input->get('f', null, ''); if (!$filename) { echo "Usage /usr/bin/php /path/to/site/cli/j2xml.php -f j2xml_file.xml"; exit(1); } if (!file_exists($filename)) { echo "File {$filename} not found"; exit(1); } JLog::addLogger(array('text_file' => 'j2xml.php', 'extension' => 'com_j2xml'), JLog::ALL, array('lib_j2xml', 'cli_j2xml')); JLog::addLogger(array('logger' => 'echo', 'extension' => 'com_j2xml'), JLOG::ALL & ~JLOG::DEBUG, array('lib_j2xml', 'cli_j2xml')); if (!($data = implode(gzfile($filename)))) { $data = file_get_contents($filename); } libxml_use_internal_errors(true); $xml = simplexml_load_string($data); if (!$xml) { $errors = libxml_get_errors(); foreach ($errors as $error) { $msg = $error->code . ' - ' . $error->message . ' at line ' . $error->line; switch ($error->level) { default: case LIBXML_ERR_WARNING: $this->out(sprintf('%d - %s at line %d', $error->message, $error->line, 'message')); break; case LIBXML_ERR_ERROR: $this->out(sprintf('%d - %s at line %d', $error->message, $error->line, 'notice')); break; case LIBXML_ERR_FATAL: $this->out(sprintf('%d - %s at line %d', $error->message, $error->line, 'error')); break; } } libxml_clear_errors(); exit(0); } if (!$xml) { $this->out(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); exit(0); } $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('j2xml'); $results = $dispatcher->trigger('onBeforeImport', array('cli_j2xml', &$xml)); if (!$xml) { $this->out(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } elseif (strtoupper($xml->getName()) != 'J2XML') { $this->out(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } elseif (!isset($xml['version'])) { $this->out(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } else { jimport('eshiol.j2xml.importer'); $xmlVersion = $xml['version']; $version = explode(".", $xmlVersion); $xmlVersionNumber = $version[0] . substr('0' . $version[1], strlen($version[1]) - 1) . substr('0' . $version[2], strlen($version[2]) - 1); if ($xmlVersionNumber == 120500) { set_time_limit(120); $params = JComponentHelper::getParams('com_j2xml'); J2XMLImporter::import($xml, $params); } else { $this->out(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_NOT_SUPPORTED', $xmlVersion), 'error'); } } }
function import() { // Check for request forgeries JRequest::checkToken() or jexit('Invalid Token'); $app = JFactory::getApplication('administrator'); $msg = ''; $db = JFactory::getDBO(); $date = JFactory::getDate(); $now = $date->toSQL(); $params = JComponentHelper::getParams('com_j2xml'); $this->setRedirect('index.php?option=com_j2xml'); libxml_use_internal_errors(true); $filetype = JRequest::getVar('j2xml_filetype', 1); switch (JRequest::getVar('j2xml_filetype', 1)) { case 1: //Retrieve file details from uploaded file, sent from upload form: $file = JRequest::getVar('j2xml_local', null, 'files', 'array'); if (!isset($file)) { $app->enqueueMessage(JText::_('COM_J2XML_MSG_UPLOAD_ERROR'), 'error'); return false; } elseif ($file['error'] > 0) { $app->enqueueMessage(JText::_('COM_J2XML_MSG_UPLOAD_ERROR'), 'error'); return false; } $filename = $file['tmp_name']; break; case 2: if (!($filename = JRequest::getVar('j2xml_url'))) { $app->enqueueMessage(JText::_('COM_J2XML_MSG_UPLOAD_ERROR'), 'error'); return false; } break; case 3: if ($filename = JRequest::getVar('j2xml_server', null)) { $filename = JPATH_ROOT . '/' . $filename; } else { $app->enqueueMessage(JText::_('COM_J2XML_MSG_UPLOAD_ERROR'), 'error'); return false; } break; default: $app->enqueueMessage(JText::_('COM_J2XML_MSG_UPLOAD_ERROR'), 'error'); return false; } if (!($data = implode(gzfile($filename)))) { $data = file_get_contents($filename); } $data = substr($data, strpos($data, '<?xml version="1.0" encoding="UTF-8" ?>')); $data = self::stripInvalidXml($data); if (!defined('LIBXML_PARSEHUGE')) { define(LIBXML_PARSEHUGE, 524288); } $xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_PARSEHUGE); if (!$xml) { $errors = libxml_get_errors(); foreach ($errors as $error) { $msg = $error->code . ' - ' . $error->message . ' at line ' . $error->line; switch ($error->level) { default: case LIBXML_ERR_WARNING: $app->enqueueMessage($msg, 'message'); break; case LIBXML_ERR_ERROR: $app->enqueueMessage($msg, 'notice'); break; case LIBXML_ERR_FATAL: $app->enqueueMessage($msg, 'error'); break; } } libxml_clear_errors(); $this->setRedirect('index.php?option=com_j2xml'); } if (!$xml) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); return false; } $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('j2xml'); $results = $dispatcher->trigger('onBeforeImport', array('com_j2xml.cpanel', &$xml)); if (!$xml) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } elseif (strtoupper($xml->getName()) == 'J2XML') { if (!isset($xml['version'])) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } else { jimport('eshiol.j2xml.importer'); jimport('eshiol.j2xml.version'); $xmlVersion = $xml['version']; $version = explode(".", $xmlVersion); $xmlVersionNumber = $version[0] . substr('0' . $version[1], strlen($version[1]) - 1) . substr('0' . $version[2], strlen($version[2]) - 1); $j2xmlVersion = J2XMLVersion::$DOCVERSION; $version = explode(".", $j2xmlVersion); $j2xmlVersionNumber = $version[0] . substr('0' . $version[1], strlen($version[1]) - 1) . substr('0' . $version[2], strlen($version[2]) - 1); if ($xmlVersionNumber == $j2xmlVersionNumber || $xmlVersionNumber == "120500") { //set_time_limit(120); $params = JComponentHelper::getParams('com_j2xml'); $j2xml = new J2XMLImporter(); $j2xml->import($xml, $params); } elseif ($xmlVersionNumber == 10506) { $app->enqueueMessage(JText::sprintf('COM_J2XML_MSG_FILE_FORMAT_J2XML15', $xmlVersion), 'error'); } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_NOT_SUPPORTED', $xmlVersion), 'error'); } } } elseif (strtoupper($xml->getName()) == 'RSS') { $namespaces = $xml->getNamespaces(true); if (isset($namespaces['wp'])) { if ($generator = $xml->xpath('/rss/channel/generator')) { if (preg_match("/http:\\/\\/wordpress.(org|com)\\//", (string) $generator[0]) != false) { $xml->registerXPathNamespace('wp', $namespaces['wp']); if (!($wp_version = $xml->xpath('/rss/channel/wp:wxr_version'))) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } else { if ($wp_version[0] == '1.2') { $app->enqueueMessage(JText::_('COM_J2XML_MSG_FILE_FORMAT_J2XMLWP'), 'error'); } else { if ($wp_version[0] == '1.1') { $app->enqueueMessage(JText::_('COM_J2XML_MSG_FILE_FORMAT_J2XMLWP'), 'error'); } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } } } } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } $this->setRedirect('index.php?option=com_j2xml'); }
function import() { // Check for request forgeries JRequest::checkToken() or jexit('Invalid Token'); JLog::addLogger(array('logger' => 'messagequeue'), JLOG::ALL, array('j2xml')); $app = JFactory::getApplication('administrator'); $msg = ''; $db = JFactory::getDBO(); $date = JFactory::getDate(); $now = $date->toSQL(); $params = JComponentHelper::getParams('com_j2xml'); libxml_use_internal_errors(true); //Retrieve file details from uploaded file, sent from upload form: $file = JRequest::getVar('file_upload', null, 'files', 'array'); if ($file['name']) { $filename = $file['tmp_name']; } else { $params = JComponentHelper::getParams('com_j2xml'); $root = $params->get('root'); if (!$root) { $root = $_SERVER['DOCUMENT_ROOT']; } if (strrpos($root, DS) === strlen($root) - 1) { $root = substr($root, strlen($root) - 1); } $filename = $root . JRequest::getVar('remote_file', null); $filename = str_replace('/', DS, $filename); } if (!($data = implode(gzfile($filename)))) { $data = file_get_contents($filename); } $data = substr($data, strpos($data, '<?xml version="1.0" encoding="UTF-8" ?>')); $data = self::stripInvalidXml($data); if (!defined('LIBXML_PARSEHUGE')) { define(LIBXML_PARSEHUGE, 524288); } // Syahrul Sazli Shaharir $xml = simplexml_load_string($data, 'SimpleXMLElement', LIBXML_PARSEHUGE); if (!$xml) { $errors = libxml_get_errors(); foreach ($errors as $error) { $msg = $error->code . ' - ' . $error->message . ' at line ' . $error->line; switch ($error->level) { default: case LIBXML_ERR_WARNING: $app->enqueueMessage($msg, 'message'); break; case LIBXML_ERR_ERROR: $app->enqueueMessage($msg, 'notice'); break; case LIBXML_ERR_FATAL: $app->enqueueMessage($msg, 'error'); break; } } libxml_clear_errors(); $this->setRedirect('index.php?option=com_j2xml'); } if (!$xml) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); return false; } $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('j2xml'); $results = $dispatcher->trigger('onBeforeImport', array('com_j2xml.cpanel', &$xml)); if (!$xml) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } elseif (strtoupper($xml->getName()) != 'J2XML') { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } elseif (!isset($xml['version'])) { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_UNKNOWN'), 'error'); } else { jimport('eshiol.j2xml.importer'); $xmlVersion = $xml['version']; $version = explode(".", $xmlVersion); $xmlVersionNumber = $version[0] . substr('0' . $version[1], strlen($version[1]) - 1) . substr('0' . $version[2], strlen($version[2]) - 1); if ($xmlVersionNumber == 120500) { set_time_limit(120); $params = JComponentHelper::getParams('com_j2xml'); J2XMLImporter::import($xml, $params); } else { $app->enqueueMessage(JText::sprintf('LIB_J2XML_MSG_FILE_FORMAT_NOT_SUPPORTED', $xmlVersion), 'error'); } } $this->setRedirect('index.php?option=com_j2xml'); }