fromFilter() public method

...
public fromFilter ( &$in, $p = null )
Exemplo n.º 1
0
 /** 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');
 }