/** EXAMPLE array( 'subscriber_pending' => array( 'pending_code' => array("not: 'abc1234'", "is: 'def123'", "is: '2234'"), 'pending_email' => array('not: NULL')), 'subscriber_data' => array( 12 => array("not: 'Milwaukee'"), // 12 is alias for field_id=12 ... 15 => array("greater: 15")), 'subscribers' => array( 'email' => "not: '*****@*****.**'"), 'status' => "equal: active" ); LEGAL LOGIC: (not|is|less|greater|true|false|equal) */ function &getIDByAttr($f = array('subscriber_pending' => array(), 'subscriber_data' => array(), 'subscribers' => array())) { $dbo = Pommo::$_dbo; require_once Pommo::$_baseDir . 'classes/Pommo_Sql.php'; $sql = array('where' => array(), 'join' => array()); if (!empty($f['subscribers'])) { $sql = array_merge_recursive($sql, Pommo_Sql::fromFilter($f['subscribers'], 's')); } if (!empty($f['subscriber_data'])) { $sql = array_merge_recursive($sql, Pommo_Sql::fromFilter($f['subscriber_data'], 'd')); } $p = null; if (!empty($f['subscriber_pending'])) { $p = 'p'; $sql = array_merge_recursive($sql, Pommo_Sql::fromFilter($f['subscriber_pending'], 'p')); } $joins = implode(' ', $sql['join']); $where = implode(' ', $sql['where']); $query = "\n SELECT DISTINCT s.subscriber_id\n FROM " . $dbo->table['subscribers'] . " s\n [LEFT JOIN " . $dbo->table['subscriber_pending'] . " %S\n ON (s.subscriber_id = p.subscriber_id)]\n " . $joins . "\n WHERE 1 " . $where; $query = $dbo->prepare($query, array($p)); die($query); return $dbo->getAll($query, 'assoc', 'subscriber_id'); }