/** * $builder->deleted(Jam_Behavior_Paranoid::ALL), * $builder->deleted(Jam_Behavior_Paranoid::DELETED), * $builder->deleted(Jam_Behavior_Paranoid::NORMAL) * * @param Jam_Builder $builder * @param Jam_Event_Data $data * @param string $paranoid_filter_type */ public function builder_call_deleted(Database_Query $builder, Jam_Event_Data $data, $paranoid_filter_type = Jam_Behavior_Paranoid::NORMAL) { if (!in_array($paranoid_filter_type, array(Jam_Behavior_Paranoid::DELETED, Jam_Behavior_Paranoid::NORMAL, Jam_Behavior_Paranoid::ALL))) { throw new Kohana_Exception("Deleted type should be Jam_Behavior_Paranoid::DELETED, Jam_Behavior_Paranoid::NORMAL or Jam_Behavior_Paranoid::ALL"); } $builder->params('paranoid_filter_type', $paranoid_filter_type); }
/** * Builds and returns * @param Database_Query $oQuery * @throws Lithium_Exception */ protected function buildWhereStatement(Database_Query $oQuery) { $sSql = ''; $bAddWhere = false; $sGlue = ''; foreach ($oQuery->params() as $aParam) { if (count($aParam) != 2) { throw new Lithium_Exception('database.incorrect_query_params'); } list($iType, $aParams) = $aParam; switch ($iType) { case Database_Query::C_AND: $sGlue = 'AND '; $sOperator = $this->getSqlConditionStatement($aParams); $bAddWhere = true; break; case Database_Query::C_OR: $sGlue = 'OR '; $sOperator = $this->getSqlConditionStatement($aParams); $bAddWhere = true; break; case Database_Query::C_ORDERBY: $sOperator = sprintf('ORDER BY %s %s', $aParams[0], Database_Query::S_DESC == $aParams[1] ? 'ASC' : 'DESC'); break; default: throw new Lithium_Exception('database.unknown_condition_type', $iType); } if (!empty($sSql)) { $sSql .= ' ' . $sGlue; } $sSql .= $sOperator; } if ($bAddWhere && !empty($sSql)) { $sSql = ' WHERE ' . $sSql; } return $sSql; }