/** * Build an SQL 'where' fragment for timestamp-based sorting from a max_id * parameter, matching notices posted before the given one (inclusive), and * if necessary add it to the data object's query. * * @param DB_DataObject $obj * @param int $id * @param string $idField * @param string $createdField * @return mixed string or false if no match */ public static function addWhereMaxId(DB_DataObject $obj, $id, $idField = 'id', $createdField = 'created') { $max = self::whereMaxId($id, $idField, $createdField); if ($max) { $obj->whereAdd($max); } }
/** * Prepares a select query, given a series of tags to exclude. * @param $tags mixed. Can be a tag table recordset or an array of tag records * @param DB_DataObject $obj the recordset on which the select query will be executed */ public function getWithoutTags($tags, DB_DataObject $obj) { $tagsdo = array(); if (!is_array($tags) || $tags->N) { $tags = array($tags); } foreach ($tags as $atag) { if (!($atag = $this->_getTagFromTag($atag))) { continue; } $tagsdo[] = $atag; } foreach ($tagsdo as $tag) { $t = DB_DataObject::factory('tag_record'); $t->whereAdd('extags_' . $tag->id . '.tag_id = ' . $tag->id); $t->tagged_table = $obj->tableName(); $obj->whereAdd('extags_' . $tag->id . '.id is null'); $t->selectAdd(); $t->selectAdd('extags_' . $tag->id . '.tag_id'); $obj->joinAdd(clone $t, array('joinType' => 'LEFT', 'joinAs' => 'extags_' . $tag->id, 'useWhereAsOn' => true)); } return; }