<?php
namespace DAO;
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 5.1.6 or newer
 *
 * @package		CodeIgniter
 * @author		jcheron
 * @copyright	Copyright (c) 2008 - 2014, EllisLab, Inc.
 * @license		lgpl
 * @version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * Doctrine Helpers
 *
 * @package		CodeIgniter
 * @subpackage	Helpers
 * @category	Helpers
 * @author		jcheron
 * @link		http://slamwiki.kobject.net
 */

// ------------------------------------------------------------------------
	/**
	 * Retourne une instance de $className depuis la base de données, à  partir des valeurs $keyValues de la clé primaire
	 * @param String $className
	 * @param Array or condition $keyValues
	 */
	if(!function_exists("getOne")){
		function getOne($className,$keyValues){
			$CI =& get_instance();
			return $CI->doctrine->em->find($className,$keyValues);
		}
	}
	
	
	/**
	 * Retourne un tableau d'objets de $className depuis la base de données
	 * @param string $className
	 * @param string $condition
	 * @return multitype:$className
	 */
	if(!function_exists("getAll")){
		function getAll($className,$condition=''){
			$CI =& get_instance();
			if($condition!=''){
				if(strrpos(strtolower($condition), "where", -strlen($condition)) === FALSE)
					$condition="where ".$condition;
			}
			$query = $CI->doctrine->em->createQuery("SELECT o FROM ".$className." o ".$condition);
			return $query->getResult();
		}
	}
	/**
	 * Supprime $instance dans la base de données
	 * @param Classe $instance instance à supprimer
	 */
	if(!function_exists("delete")){
	
		function delete($instance){
			$CI =& get_instance();
			$CI->doctrine->em->remove($instance);
			$CI->doctrine->em->flush();
		}
	}
	/**
	 * Met à jour l'objet dans la BDD
	 * @param $instance objet à mettre à jour
	 */
	if(!function_exists("update")){
	
		function update($instance){
			$CI =& get_instance();
			$CI->doctrine->em->persist($instance);
			$CI->doctrine->em->flush();
		}
	}