public static function archiveByArticle(MMSynchArticle $article) { $warnings = self::archive($article->remoteId()); foreach($warnings as $warning) { $article->addWarning($warning); } }
// related_media $relatedObjectIds = array(); $relatedMedia = array( 'a_related_image' => 'MMSynchMediaImage', 'a_related_video' => 'MMSynchMediaVideo', 'a_related_audio' => 'MMSynchMediaAudio', 'a_related_link' => 'MMSynchMediaLink', 'a_related_pdf' => 'MMSynchMediaPDF' ); foreach($relatedMedia as $field => $class) { if ($article->source[$field]) { $objectIds = MMSynchArticle::fetchIdsToObjectIds($class, explode(',', $article->source[$field])); if (count($objectIds)) { $relatedObjectIds = array_merge($relatedObjectIds, $objectIds); } } } $str = implode('-', array_unique($relatedObjectIds)); if ($str != $dataMap['media_content']->toString()) { $cli->output(sprintf($logPrefix . ' change media_content %s => %s', $dataMap['media_content']->toString(), $str)); if ($options['apply'] == true) { $dataMap['media_content']->fromString(implode('-', array_unique($relatedObjectIds)));
OR a.forbidden_article IS NOT NULL HAVING st_version=st_last_version; '; $result = MMSynchronizer::instance()->db->arrayQuery($query); $cli->output(sprintf('%s article to check', count($result))); while(list(,$row) = each($result)) { $article = false; try { $db->begin(); $article = MMSynchArticle::fetch($row['a_id']); if ($article) { $remoteId = $article->remoteId(); $object = eZContentObject::fetchByRemoteID($remoteId, true); if ($object) { $logPrefix = sprintf('Synchronize object[%s] %s with article %s', $row['a_language'], $object->ID, $row['a_id'] ); $dataMap = $object->fetchDataMap(false, $row['a_language']); if (!$dataMap) throw new Exception(sprintf('DataMap not fetchable for object[%s] %s with article %s', $row['a_language'], $object->ID, $row['a_id'])); $map = array( 'publisher_parent_id' => array('name' => 'a_publisher_parent_id', 'default' => ''),
SQLIContentPublisher::getInstance()->setOptions(new SQLIContentPublishOptions(array( 'modification_check' => false, 'update_null_field' => false ))); MMSynchMonitor::start(); // Import one article unlink($lockFileName); try { $db->begin(); MMSynchronizer::instance()->test = true; $article = MMSynchArticle::import($options['article'], $options['force']); if ($article) { $cli->output('Node Id = ' . $article->getContent()->defaultLocation->getNodeId()); } $db->commit(); $iteration++; } catch (Exception $e) { $db->rollback(); $cli->error($e->getMessage()); }
public function process( $row ) { $db = eZDB::instance(); // Récupéraiton de l'article $article = MMSynchArticle::fetch($row['a_id']); $contentObject = eZContentObject::fetchByRemoteID( $article->remoteId() ); if (!$contentObject) { $this->cli->notice(sprintf(' Synchronization problem for Article %s ', $row['a_id'])); return false; } // Récupération des publisher_internal_id $referenceArticleIds = array(); if (trim($article->source['a_referencearticleid']) != '') { $referenceArticleIds = array_unique(explode('|', trim($article->source['a_referencearticleid']))); } $db->begin(); try { if (count($referenceArticleIds) > 0) { $query = sprintf(" SELECT a.id as a_id FROM article a, content c WHERE a.content_id = c.id AND a.language = '%s' AND a.publisher_internal_id IN (%s) AND c.publisher_folder_id = %s ", $row['a_language'], implode(', ', $referenceArticleIds), $article->source['c_publisher_folder_id'] ); $referenceArticles = MMSynchronizer::instance()->db->arrayQuery($query); if (count($referenceArticles) > 0) { $referenceArticlesObjectIds = array(); // Fetch des object correspondant au publisher_internal_id while(list(,$referenceArticleRow) = each($referenceArticles)) { $referenceArticle = MMSynchArticle::fetch($referenceArticleRow['a_id']); $referenceContentObject = eZContentObject::fetchByRemoteID( $referenceArticle->remoteId() ); if ($referenceContentObject) { $referenceArticlesObjectIds[] = $referenceContentObject->attribute('id'); } else { $this->cli->notice(sprintf(' Synchronization problem for Article %s', $referenceArticleRow['a_id'])); } } if (count($referenceArticlesObjectIds)) { $dataMap = $contentObject->fetchDataMap(false, $row['a_language']); $attribute = $dataMap['reference_articles']; $attribute->fromString(implode('-', array_unique($referenceArticlesObjectIds))); $attribute->store(); if (count($referenceArticlesObjectIds) == count($referenceArticleIds)) { $this->updateStatus($row); } else { $this->cli->notice(sprintf(' Relationships among the missing publisher_internal_id %s', implode(', ', $referenceArticleIds))); } } } else { $this->cli->notice(sprintf(' No items synchronized among publisher_internal_id %s', implode(', ', $referenceArticleIds))); } } else { $dataMap = $contentObject->fetchDataMap(false, $row['a_language']); $attribute = $dataMap['reference_articles']; if ($attribute && $attribute->hasContent()) { $attribute->fromString(''); $attribute->store(); } $this->updateStatus($row); } $db->commit(); } catch (Exception $e) { $db->rollback(); } eZContentObject::clearCache(); }
public function process( $id ) { $article = MMSynchArticle::import($id, $this->force); if (isset($this->options['id']) && $article) { $this->cli->output('Main node id : ' . $article->getContent()->defaultLocation->getNodeId()); } unset($article); }