/** 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');
}