Exemplo n.º 1
0
         $tpl->setVariable('rss_export', $rssExport);
         $tpl->setVariable('rss_export_id', $rssExportID);
         $tpl->setVariable('lock_timeout', $timeOut);
         $Result = array();
         $Result['content'] = $tpl->fetch('design:rss/edit_export_denied.tpl');
         $Result['path'] = array(array('url' => false, 'text' => ezpI18n::tr('kernel/rss', 'Really Simple Syndication')));
         return $Result;
     } else {
         if ($timeOut > 0 && $rssExport->attribute('modified') + $timeOut < time()) {
             $rssExport->removeThis();
             $rssExport = false;
         }
     }
 }
 if (!$rssExport) {
     $rssExport = eZRSSExport::fetch($RSSExportID, true, eZRSSExport::STATUS_VALID);
     if ($rssExport) {
         $db = eZDB::instance();
         $db->begin();
         $rssItems = $rssExport->fetchItems();
         $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');
     }
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 * @version  2012.6
 * @package kernel
 */
$Module = $Params['Module'];
$http = eZHTTPTool::instance();
if ($http->hasPostVariable('NewExportButton')) {
    return $Module->run('edit_export', array());
} else {
    if ($http->hasPostVariable('RemoveExportButton') && $http->hasPostVariable('DeleteIDArray')) {
        $deleteArray = $http->postVariable('DeleteIDArray');
        foreach ($deleteArray as $deleteID) {
            $rssExport = eZRSSExport::fetch($deleteID, true, eZRSSExport::STATUS_DRAFT);
            if ($rssExport) {
                $rssExport->remove();
            }
            $rssExport = eZRSSExport::fetch($deleteID, true, eZRSSExport::STATUS_VALID);
            if ($rssExport) {
                $rssExport->remove();
            }
        }
    } else {
        if ($http->hasPostVariable('NewImportButton')) {
            return $Module->run('edit_import', array());
        } else {
            if ($http->hasPostVariable('RemoveImportButton') && $http->hasPostVariable('DeleteIDArrayImport')) {
                $deleteArray = $http->postVariable('DeleteIDArrayImport');
                foreach ($deleteArray as $deleteID) {
                    $rssImport = eZRSSImport::fetch($deleteID, true, eZRSSImport::STATUS_DRAFT);
                    if ($rssImport) {
                        $rssImport->remove();
                    }