@@ -82,33 +82,48 @@ class FeedsNodeProcessor extends FeedsProcessor {
...
@@ -82,33 +82,48 @@ class FeedsNodeProcessor extends FeedsProcessor {
*/
*/
publicfunctionclear(FeedsSource$source){
publicfunctionclear(FeedsSource$source){
$state=$source->state(FEEDS_PROCESS_CLEAR);
$state=$source->state(FEEDS_PROCESS_CLEAR);
if(empty($state->total)){
$state->total=db_query("SELECT COUNT(n.nid) FROM {node} n JOIN {feeds_item} fi ON fi.entity_type = 'node' AND n.nid = fi.entity_id WHERE fi.id = :id AND fi.feed_nid = :nid",array(':id'=>$source->id,':nid'=>$source->feed_nid))->fetchField();
// Build base select statement.
$select=db_select('node','n');
$select->addField('n','nid');
$select->join('feeds_item','fi',"n.nid = fi.entity_id AND fi.entity_type = 'node'");
$nodes=db_query_range("SELECT n.nid FROM {node} n JOIN {feeds_item} fi ON fi.entity_type = 'node' AND n.nid = fi.entity_id WHERE fi.id = :id AND fi.feed_nid = :nid",0,$count,array(':id'=>$source->id,':nid'=>$source->feed_nid));
foreach($nodesas$node){
foreach($nodesas$node){
$nids[$node->nid]=$node->nid;
$nids[$node->nid]=$node->nid;
$state->deleted++;
}
}
node_delete_multiple($nids);
node_delete_multiple($nids);
if(db_query_range("SELECT 1 FROM {node} n JOIN {feeds_item} fi ON fi.entity_type = 'node' AND n.nid = fi.entity_id WHERE fi.id = :id AND fi.feed_nid = :nid",0,1,array(':id'=>$source->id,':nid'=>$source->feed_nid))->fetchField()){
$state->progress($state->total,$state->deleted);
return;
}
// Set message.
// Report progress, take into account that we may not have deleted as