Ejemplo n.º 1
0
 protected function getParentRecordIds(dmProjectModule $module, dmProjectModule $parentModule)
 {
     /*
      * if parent is local relation for module,
      * we can prepare parent records
      */
     if ($module->hasLocal($parentModule)) {
         $local = $module->getTable()->getRelationHolder()->getLocalByClass($parentModule->getModel())->getLocal();
         $query = sprintf('SELECT r.id, r.%s FROM %s r WHERE EXISTS (SELECT page.id FROM dm_page page WHERE page.module = ? AND page.action = ? AND page.record_id = r.%s)', $local, $module->getTable()->getTableName(), $local);
         $_parentRecordIds = dmDb::pdo($query, array($parentModule->getKey(), 'show'))->fetchAll(PDO::FETCH_NUM);
         $parentRecordIds = array();
         foreach ($_parentRecordIds as $_parentRecordId) {
             $parentRecordIds[$_parentRecordId[0]] = $_parentRecordId[1];
         }
     } elseif ($module->hasAssociation($parentModule)) {
         $association = $module->getTable()->getRelationHolder()->getAssociationByClass($parentModule->getModel());
         $query = sprintf('SELECT association.%s, association.%s FROM %s association WHERE EXISTS (SELECT page.id FROM dm_page page WHERE page.module = ? AND page.action = ? AND page.record_id = association.%s) GROUP BY association.%s', $association->getForeign(), $association->getLocal(), $association->getAssociationTable()->getTableName(), $association->getForeign(), $association->getLocal());
         $_parentRecordIds = dmDb::pdo($query, array($parentModule->getKey(), 'show'))->fetchAll(PDO::FETCH_NUM);
         $parentRecordIds = array();
         foreach ($_parentRecordIds as $value) {
             $parentRecordIds[$value[1]] = $value[0];
         }
     } else {
         $parentRecordIds = false;
     }
     return $parentRecordIds;
 }