Alloying some elements of the solutions proposed by Alan and Vitaly with my own cumbersome understanding, I achieved what I need with the following code.
To include context, I expanded the Aitoc permissions module so that store administrators cannot view or edit CMS pages and static blocks that could affect other stores. This included filtering these items from the grid.
$collection = Mage::getModel('cms/page')->getCollection();
$collection->addStoreFilter(Mage::helper('aitpermissions')->getStoreIds());
$conn = Mage::getSingleton('core/resource')->getConnection('core_read');
$page_ids = array();
foreach($collection as $key=>$item) {
$page_id = $item->getId();
$results = $conn->fetchAll("SELECT * FROM cms_page_store
WHERE page_id = ".$page_id.";");
$count = 0;
$arr_stores = array();
foreach($results as $row) {
$arr_stores[] = $row['store_id'];
$count++;
}
if( in_array('0',$arr_stores) || $count>1) {
$collection->removeItemByKey($key);
}
else {
$page_ids[] = $page_id;
}
}
$collection->addFieldToFilter('page_id',array('in'=>$page_ids));
, .
magento 1.5, , , , .
, .