static function storeRSSExport($Module, $http, $publish = false, $skipValuesID = null) { $valid = true; $validationErrors = array(); /* Kill the RSS cache in all siteaccesses */ $config = eZINI::instance('site.ini'); $cacheDir = eZSys::cacheDirectory(); $availableSiteAccessList = $config->variable('SiteAccessSettings', 'AvailableSiteAccessList'); foreach ($availableSiteAccessList as $siteAccess) { $cacheFilePath = $cacheDir . '/rss/' . md5($siteAccess . $http->postVariable('Access_URL')) . '.xml'; $cacheFile = eZClusterFileHandler::instance($cacheFilePath); if ($cacheFile->exists()) { $cacheFile->delete(); } } $db = eZDB::instance(); $db->begin(); /* Create the new RSS feed */ for ($itemCount = 0; $itemCount < $http->postVariable('Item_Count'); $itemCount++) { if ($skipValuesID == $http->postVariable('Item_ID_' . $itemCount)) { continue; } $rssExportItem = eZRSSExportItem::fetch($http->postVariable('Item_ID_' . $itemCount), true, eZRSSExport::STATUS_DRAFT); if ($rssExportItem == null) { continue; } // RSS is supposed to feed certain objects from the subnodes if ($http->hasPostVariable('Item_Subnodes_' . $itemCount)) { $rssExportItem->setAttribute('subnodes', 1); } else { $rssExportItem->setAttribute('subnodes', 0); } $rssExportItem->setAttribute('class_id', $http->postVariable('Item_Class_' . $itemCount)); $class = eZContentClass::fetch($http->postVariable('Item_Class_' . $itemCount)); $titleClassAttributeIdentifier = $http->postVariable('Item_Class_Attribute_Title_' . $itemCount); $descriptionClassAttributeIdentifier = $http->postVariable('Item_Class_Attribute_Description_' . $itemCount); $categoryClassAttributeIdentifier = $http->postVariable('Item_Class_Attribute_Category_' . $itemCount); if (!$class) { $validated = false; $validationErrors[] = ezpI18n::tr('kernel/rss/edit_export', 'Selected class does not exist'); } else { $dataMap = $class->attribute('data_map'); if (!isset($dataMap[$titleClassAttributeIdentifier])) { $valid = false; $validationErrors[] = ezpI18n::tr('kernel/rss/edit_export', 'Invalid selection for title class %1 does not have attribute "%2"', null, array($class->attribute('name'), $titleClassAttributeIdentifier)); } if ($descriptionClassAttributeIdentifier != '' && !isset($dataMap[$descriptionClassAttributeIdentifier])) { $valid = false; $validationErrors[] = ezpI18n::tr('kernel/rss/edit_export', 'Invalid selection for description class %1 does not have attribute "%2"', null, array($class->attribute('name'), $descriptionClassAttributeIdentifier)); } if ($categoryClassAttributeIdentifier != '' && !isset($dataMap[$categoryClassAttributeIdentifier])) { $valid = false; $validationErrors[] = ezpI18n::tr('kernel/rss/edit_export', 'Invalid selection for category class %1 does not have attribute "%2"', null, array($class->attribute('name'), $categoryClassAttributeIdentifier)); } } $rssExportItem->setAttribute('title', $http->postVariable('Item_Class_Attribute_Title_' . $itemCount)); $rssExportItem->setAttribute('description', $http->postVariable('Item_Class_Attribute_Description_' . $itemCount)); $rssExportItem->setAttribute('category', $http->postVariable('Item_Class_Attribute_Category_' . $itemCount)); if ($http->hasPostVariable('Item_Class_Attribute_Enclosure_' . $itemCount)) { $rssExportItem->setAttribute('enclosure', $http->postVariable('Item_Class_Attribute_Enclosure_' . $itemCount)); } if ($publish && $valid) { $rssExportItem->setAttribute('status', eZRSSExport::STATUS_VALID); $rssExportItem->store(); // delete drafts $rssExportItem->setAttribute('status', eZRSSExport::STATUS_DRAFT); $rssExportItem->remove(); } else { $rssExportItem->store(); } } $rssExport = eZRSSExport::fetch($http->postVariable('RSSExport_ID'), true, eZRSSExport::STATUS_DRAFT); $rssExport->setAttribute('title', $http->postVariable('title')); $rssExport->setAttribute('url', $http->postVariable('url')); // $rssExport->setAttribute( 'site_access', $http->postVariable( 'SiteAccess' ) ); $rssExport->setAttribute('description', $http->postVariable('Description')); $rssExport->setAttribute('rss_version', $http->postVariable('RSSVersion')); $rssExport->setAttribute('number_of_objects', $http->postVariable('NumberOfObjects')); $rssExport->setAttribute('image_id', $http->postVariable('RSSImageID')); if ($http->hasPostVariable('active')) { $rssExport->setAttribute('active', 1); } else { $rssExport->setAttribute('active', 0); } $rssExport->setAttribute('access_url', str_replace(array('/', '?', '&', '>', '<'), '', $http->postVariable('Access_URL'))); if ($http->hasPostVariable('MainNodeOnly')) { $rssExport->setAttribute('main_node_only', 1); } else { $rssExport->setAttribute('main_node_only', 0); } $published = false; if ($publish && $valid) { $rssExport->store(true); // remove draft $rssExport->remove(); $published = true; } else { $rssExport->store(); } $db->commit(); return array('valid' => $valid, 'published' => $published, 'validation_errors' => $validationErrors); }
$rssExport->setAttribute('status', eZRSSExport::STATUS_DRAFT); $rssExport->store(); foreach ($rssItems as $rssItem) { $rssItem->setAttribute('status', eZRSSExport::STATUS_DRAFT); $rssItem->store(); } $db->commit(); } else { return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel'); } } switch ($Params['BrowseType']) { case 'NodeSource': $nodeIDArray = $http->hasPostVariable('SelectedNodeIDArray') ? $http->postVariable('SelectedNodeIDArray') : null; if (isset($nodeIDArray) && !$http->hasPostVariable('BrowseCancelButton')) { $rssExportItem = eZRSSExportItem::fetch($Params['RSSExportItemID'], true, eZRSSExport::STATUS_DRAFT); $rssExportItem->setAttribute('source_node_id', $nodeIDArray[0]); if ($rssExportItem->attribute('title') == '' && $rssExportItem->attribute('description') == '') { eZRSSEditFunction::setItemDefaults($rssExportItem); } $rssExportItem->store(); } break; case 'ImageSource': $imageNodeIDArray = $http->hasPostVariable('SelectedNodeIDArray') ? $http->postVariable('SelectedNodeIDArray') : null; if (isset($imageNodeIDArray) && !$http->hasPostVariable('BrowseCancelButton')) { $rssExport->setAttribute('image_id', $imageNodeIDArray[0]); } break; } } else {