"Limiter la fin". pageEnd, les éventuels liens cliquables qui seront avant la page en cours
16805
private function setPageEnd()
    {
        $lastPage = $this->currentPage + $this->numberLinks;

        if ($lastPage <= $this->nbPages) {
            $this->pageEnd = $lastPage;
        } else {
            $this->pageEnd = $this->nbPages;
        }
    }
674240
public function getLimit($sql, $page, $num = 0, $params = array(), $next_page = false)
    {
        $num = (int)$num;
        $sql .= ' limit :limit_from,:limit';

        if ($next_page && $num) {
            $limit_from = ($page - 1) * ($num - 1);
        } else {
            $limit_from = ($page - 1) * $num;
        }

        $ret = $this->getAll($sql, array_merge($params, array('limit' => $num, 'limit_from' => $limit_from)));
        return $ret;
    }
413320
public function getJsScrollDivWithPage($params = array())
		{
			$html="";
			$identifiantDivToScroll = "DIV_MOVE";
			if(isset($params['identifiantDivToScroll']) && $params['identifiantDivToScroll']!='')
			{
				$identifiantDivToScroll = $params['identifiantDivToScroll'];
			}
			
			$conditionsToScrollBegin="";
			$conditionsToScrollEnd="";
			if(isset($params['conditionsToScrollBegin']) && $params['conditionsToScrollBegin']!='')
			{
				$conditionsToScrollBegin=$params['conditionsToScrollBegin']."{"; // les accolades de la condition sont ajout�es automatiquement
				$conditionsToScrollEnd="}";
			}
			

			$baliseJsDebut="<script  >";
			$baliseJsFin="</script>";
			if(isset($params['withoutJsBalises']) && $params['withoutJsBalises']==true)
			{
				$baliseJsDebut="";
				$baliseJsFin="";
			}
			
		
			$html.="$baliseJsDebut
		     //---------------------------------------------------------
		     // Nom Document : gf_scroll_div.js
		     // Auteur : G.Ferraz
		     // Objet : menu flottant
		     // Creation : 01.01.2007
		     //---------------------------------------------------------
		     // Mise � Jour : 01.11.2007
		     //---------------------------------------------------------
		     // OUTILS /////////////////////////////
		     //---------------------------------------------
		     function Add_Event( obj_, event_, func_, mode_){
		     if( obj_.addEventListener)
		     obj_.addEventListener( event_, func_, mode_? mode_:false);
		     else
		     obj_.attachEvent( 'on'+event_, func_);
		     }
		     //----------------------
		     function GetScrollPage(){
		     var Left;
		     var Top;
		     var DocRef;
		    
		     if( window.innerWidth){
		     with( window){
		     Left = pageXOffset;
		     Top = pageYOffset;
		     }
		     }
		     else{ // Cas Explorer a part
		     if( document.documentElement && document.documentElement.clientWidth)
		     DocRef = document.documentElement;
		     else
		     DocRef = document.body;
		    
		     with( DocRef){
		     Left = scrollLeft;
		     Top = scrollTop;
		     }
		     }
		     return({top:Top, left:Left});
		     }
		     //---------------------------
		     function ObjGetPosition(obj_){
		     var PosX = 0;
		     var PosY = 0;
		     //-- suivant type en parametre
		     if( typeof(obj_)=='object')
		     var Obj = obj_;
		     else
		     var Obj = document.getElementById( obj_);
		     //-- Si l'objet existe
		     if( Obj){
		     //-- Recup. Position Objet
		     PosX = Obj.offsetLeft;
		     PosY = Obj.offsetTop;
		     //-- Si propriete existe
		     if( Obj.offsetParent){
		     //-- Tant qu'un parent existe
		     while( Obj = Obj.offsetParent){
		     if( Obj.offsetParent){ // on ne prend pas le BODY
		     //-- Ajout position Parent
		     PosX += Obj.offsetLeft;
		     PosY += Obj.offsetTop;
		     }
		     }
		     }
		     }
		     //-- Retour des positions
		     return({left:PosX, top:PosY});
		     }
		     //-------------------------------------
		     // MENU FLOTTANT //////////////////////
		     //-------------------------------------
		     var IdTimer_1;
		     var IdTimer_2;
		     var O_DivScroll;
		     var Rapport = 1.0/20.0; // On divise par 20
		     var Mini = 2* Rapport;
		     //-----------------------
		     function DIV_Scroll( id_){
		     var Obj = document.getElementById( id_);
		     this.Obj = Obj;
		     if( Obj){
		     Obj.style.position = 'absolute'; // IMPERATIF
		     //-- Recup position de depart
		     var Pos = ObjGetPosition( id_);
		     this.PosX = Pos.left;
		     this.PosY = Pos.top;
		     this.DebX = this.PosX;
		     this.DebY = this.PosY;
		     this.NewX = 0;
		     this.NewY = 0;
		     this.Move = DIV_Deplace;
		     }
		     }
		     //---------------------------
		     function DIV_Deplace( x_, y_){
		     if( arguments[0] != null){
		     this.PosX = x_;
		     this.Obj.style.left = parseInt(x_) +'px';
		     }
		     if( arguments[1] != null){
				$conditionsToScrollBegin
				this.PosY = y_;
				this.Obj.style.top = parseInt(y_) +'px';
				$conditionsToScrollEnd
		     }
		     }
		     //---------------------------
		     function DIV_Replace( x_, y_){
		     //-- Calcul Delta deplacement
		     var Delta_X = (x_ -O_DivScroll.PosX) *Rapport;
		     var Delta_Y = (y_ -O_DivScroll.PosY) *Rapport;
		     //-- Test si fin deplacement
		     if((( Delta_Y < Mini)&&( Delta_Y > -Mini))&&
		     (( Delta_X < Mini)&&( Delta_X > -Mini))){
		     clearInterval( IdTimer_1);
		     O_DivScroll.Move( x_, y_);
		     }
		     else{
		     O_DivScroll.Move( O_DivScroll.PosX +Delta_X, O_DivScroll.PosY +Delta_Y);
		     }
		     }
		     //------------------------
		     function DIV_CheckScroll(){
		     var Scroll = GetScrollPage();
		     //-- New position du menu
		     O_DivScroll.NewX = Scroll.left +O_DivScroll.DebX;
		     O_DivScroll.NewY = Scroll.top +O_DivScroll.DebY;
		     //-- Si pas la bonne Position
		     if(( O_DivScroll.PosY != O_DivScroll.NewY)||( O_DivScroll.PosX != O_DivScroll.NewX)){
		     //-- Clear l'encours
		     clearInterval( IdTimer_1);
		     IdTimer_1 = setInterval(\"DIV_Replace(\" + O_DivScroll.NewX +\",\" + O_DivScroll.NewY +\")\", 10);
		     }
		     return( true);
		     }
		     //-----------------------
		     function DIV_InitScroll(){
		     //-- Recup position Objet
		     O_DivScroll = new DIV_Scroll('$identifiantDivToScroll');
		     //-- Lance inspection si existe
		     if( O_DivScroll.Obj)
		     IdTimer_2 = setInterval('DIV_CheckScroll()',100);
		     }
		     //========================================
		     Add_Event( window, 'load', DIV_InitScroll);
		     //-- EOF --
			$baliseJsFin
			";
			
			return $html;
		}
816286
def pagination(page, limit, length):
        
        realpage = page
        page = page or CtsCapitainsLocalResolver.DEFAULT_PAGE
        limit = limit or CtsCapitainsLocalResolver.PER_PAGE[1]

        if limit < CtsCapitainsLocalResolver.PER_PAGE[0] or limit > CtsCapitainsLocalResolver.PER_PAGE[2]:
            limit = CtsCapitainsLocalResolver.PER_PAGE[1]

        page = (page - 1) * limit

        if page > length:
            realpage = int(ceil(length / limit))
            page = limit * (realpage - 1)
            count = length - 1
        elif limit - 1 + page < length:
            count = limit - 1 + page
        else:
            count = length - 1

        return page, count + 1, realpage, count - page + 1
1183453
public function getActiveSliderPages()
    {
        $em = $this->serviceLocator->get('doctrine.entitymanager.orm_default');
        $today = new \DateTime("now");
        //$today->format('Y-m-d H:i:s');
        $today = $today->format('Y-m-d') . ' 23:59:59';

        // Page active with a startDate before today (or without startDate)
        // and closeDate after today (or without closeDate)
        $query = $em->createQuery(
            'SELECT p FROM PlaygroundCms\Entity\Page p
                WHERE (p.publicationDate <= :date OR p.publicationDate IS NULL)
                AND (p.closeDate >= :date OR p.closeDate IS NULL)
                AND p.active = 1 AND p.pushHome = true
                ORDER BY p.publicationDate DESC'
        );
        $query->setParameter('date', $today);
        $pages = $query->getResult();

        // Je les classe par date de publication (date comme clé dans le tableau afin de pouvoir merger les objets
        // de type article avec le même procédé en les classant naturellement par date asc ou desc
        $arrayPages = array();
        foreach ($pages as $page) {
            if ($page->getPublicationDate()) {
                $key = $page->getPublicationDate()->format('Ymd');
                $key .= $page->getUpdatedAt()->format('Ymd').'-'.$page->getId();
            } else {
                $key = $page->getUpdatedAt()->format('Ymd');
                $key .= $page->getUpdatedAt()->format('Ymd').'-'.$page->getId();
            }

            $arrayPages[$key] = $page;
        }

        return $arrayPages;
    }
828237
public function gestionSondage($params = array())
	{
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates);

		if (isset($params['modeAffichage']) && $params['modeAffichage']=='resultatAccueil') {
			$t->set_filenames(array('sondage'=>'sondageRESULTAT.tpl'));
		} else {
			$t->set_filenames(array('sondage'=>'sondageTEMPORAIRE.tpl'));


			$c = new calqueObject();
			$t->assign_vars(
					array('jsScroll'=>$c->getJsScrollDivWithPage(
							array(
									'conditionsToScrollBegin'=>"if ((document.getElementById('texteSuite').style.display=='block' && y_<4650) || (document.getElementById('texteSuite').style.display=='none' && y_<100))",
									'identifiantDivToScroll'=>"divScroll"
							)
					))
			);

			// verification : est ce que la personne a deja participé aujourd'hui
			$ip = $_SERVER['REMOTE_ADDR'];
			if (trim($ip)=='') {
				// on assigne une ip temporaire,  soit un nombre aleatoire pour pouvoir comptabiliser le vote quand meme ,  on pourra toujours les supprimer si quelqu'un exagere
				$ip = rand(0, 1000000);
			}

			$reqVerif = "SELECT idResultat FROM sondagesResultats WHERE ip like '$ip' AND date=CURDATE()";
			$resVerif = $this->connexionBdd->requete($reqVerif);
			if ( isset($params['modeAffichage']) && $params['modeAffichage']=='noFormulaire' || mysql_num_rows($resVerif)>0) {
				$t->assign_block_vars('resultatsSondage', array('resultats'=>$this->afficheResumeSondage(array('idSondage'=>1))));
			} else {
				// nouvelle participation
				// recuperation des propositions
				$reqPropositions = "SELECT idProposition, libelleProposition FROM sondagesPropositions WHERE idSondage='1'";
				$resPropositions = $this->connexionBdd->requete($reqPropositions);
				$t->assign_block_vars('afficheFormSondage', array());
				while ($fetchPropositions = mysql_fetch_assoc($resPropositions)) {
					$t->assign_block_vars('afficheFormSondage.propositions', array('idProposition'=>$fetchPropositions['idProposition'], 'libelleProposition'=>$fetchPropositions['libelleProposition']));
				}


				$t->assign_vars(array('formAction'=>$this->creerUrl('enregistrerEntreeSondage', 'afficheAccueil')));

			}
		}

		if (isset($params['afficheToutLeTexte']) && $params['afficheToutLeTexte']==true) {
			$displaySuite = "block";
			$styleAccueil = "";
			$lienSuite = "";
		} else {
			$displaySuite = "none";
			$styleAccueil = "border:3px solid #000000;padding:5px;";
			if (isset($params['modeAffichage']) && $params['modeAffichage']=='resultatAccueil') {
				$lienSuite = "<a href='".$this->creerUrl('', 'afficheSondageResultatGrand')."'>"._("Lire la suite")."</a>";
			} else {
				$lienSuite = "<a href='".$this->creerUrl('', 'afficheSondageGrand')."'>"._("Lire la suite")."</a>";
			}
		}

		if (isset($params['modeAffichage']) && $params['modeAffichage']=='resultatAccueil') {

			$t->assign_vars(
					array(
							'pictoSrc'=>'',
							'displaySuite'=>$displaySuite,
							'lienSuite'=>$lienSuite,
							'styleAccueil'=>$styleAccueil,
							'urlIconePdf'=>$this->urlImages.'logo_pdf.jpg',
							'urlDocumentPdf'=>$this->urlImages.'publicite/avenirFinancementArchiStrasbourg.pdf',
							'resultats'=>$this->afficheResumeSondage(array('idSondage'=>1)),
							'urlArticlePresentation'=>$this->creerUrl('', 'afficheSondageGrand')
					)
			);
		} else {
			$t->assign_vars(
					array(
							'pictoSrc'=>$this->urlImages.'pictoSondage.jpg',
							'displaySuite'=>$displaySuite,
							'lienSuite'=>$lienSuite,
							'styleAccueil'=>$styleAccueil,
							'urlIconePdf'=>$this->urlImages.'logo_pdf.jpg',
							'urlDocumentPdf'=>$this->urlImages.'publicite/avenirFinancementArchiStrasbourg.pdf'
					)
			);
		}

		ob_start();
		$t->pparse('sondage');
		$html .= ob_get_contents();
		ob_end_clean();


		return $html;
	}
78996
private int calcLastPageSkip(int total, int skip, int limit) {
        if (skip > total - limit) {
            return skip;
        }
        if (total % limit > 0) {
            return total - total % limit;
        }
        return total - limit;
    }
964423
public function afficherRecapitulatifAncres($idEvenementGroupeAdresse = 0, $idEvenementCourant = 0)
    {
        $html="";
        $t = new Template('modules/archi/templates/');
        $t->set_filenames((array('recapitulatifAncres'=>'recapitulatifAncres.tpl')));

        $resEvenementsLies=$this->getInfosEvenementsLiesForAncres($idEvenementGroupeAdresse);

        while ($fetch = mysql_fetch_assoc($resEvenementsLies)) {
            $couleur = "#000000";

            if ($fetch['idEvenement'] == $idEvenementCourant) {
                $couleur = "#FF0000";
            }


            // le type de structure est le meme que l'evenement precedent , on ne l'affiche pas, c'est pour cela qu'on le transmet a la fonction d'affichage

            $titreAncre = _("Sans titre");
            if (trim($fetch['titre'])!='') {
                $titreAncre = $fetch['titre'];
            }

            if ($fetch['nomTypeEvenement']!='') {
                $titreAncre.=" - ".$fetch['nomTypeEvenement'];
            }
            if ($fetch['date']!='' && $fetch['date']!='0000-00-00') {
                $titreAncre.=" - ".$this->date->toFrench($fetch['date']);
            }

            $t->assign_block_vars('ancres', array(
                    'titre' => stripslashes($titreAncre),
                    'couleur'=>$couleur
            ));
        }

        ob_start();
        $t->pparse('recapitulatifAncres');
        $html .= ob_get_contents();
        ob_end_clean();

        return $html;
    }
416533
public function saveInterest(){
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates."interest/");
		$t->set_filenames(array('confirm'=>'confirm.tpl'));
		
		$urlBack = $this->creerUrl('', 'mesInterets', array());
		$txtLink = "Revenir à la liste de mes intérêts";
		
		if(isset($this->variablesPost) && !empty($this->variablesPost)){
			$interets = $this->variablesPost;
		}
		elseif (isset($this->variablesGet) && !empty($this->variablesGet)){
			$interets = $this->variablesGet;
		}
		
		
		
		/*
		 * Initially, it was adding related nesting element in the interests of the user
		 * Client asked to add only the smallest element in interest (if neighborhood selected, don't add the city and the country)
		 * Little array handling to satified the client need, to revert, delete the two following loops 
		 */
		foreach ($interets as $key => $int){
			if($int== 0){
				unset($interets[$key]);
			}
		}
		while(count($interets)>1){
			array_shift($interets);
		}
		
		
		$requestParameters = array();
		if($interets['rue']!=0){
			$requestParameters[]=array('table'=>'_interetRue','fieldName1'=>'idUtilisateur','fieldName2'=>'idRue','idInteret'=>$interets['rue'],'userId'=>$this->userId);
		}
		if($interets['sousQuartier']!=0){
			$requestParameters[]=array('table'=>'_interetSousQuartier','fieldName1'=>'idUtilisateur','fieldName2'=>'idSousQuartier','idInteret'=>$interets['sousQuartier'],'userId'=>$this->userId);
		}
		if($interets['quartier']!=0){
			$requestParameters[]=array('table'=>'_interetQuartier','fieldName1'=>'idUtilisateur','fieldName2'=>'idQuartier','idInteret'=>$interets['quartier'],'userId'=>$this->userId);
		}
		if($interets['ville']!=0){
			$requestParameters[]=array('table'=>'_interetVille','fieldName1'=>'idUtilisateur','fieldName2'=>'idVille','idInteret'=>$interets['ville'],'userId'=>$this->userId);
		}
		if($interets['pays']!=0){
			$requestParameters[]=array('table'=>'_interetPays','fieldName1'=>'idUtilisateur','fieldName2'=>'idPays','idInteret'=>$interets['pays'],'userId'=>$this->userId);
		}
		if($interets['adresse']!=0){
			$idHistoriqueAdresse = $interets['adresse'];
			$requestParameters[]=array('table'=>'_interetAdresse','fieldName1'=>'idUtilisateur','fieldName2'=>'idHistoriqueAdresse','idInteret'=>$interets['adresse'],'userId'=>$this->userId);
			
			$requete = "
					SELECT ae.idEvenement as idEvenementGroupeAdresse, ae.idAdresse as idAdresse 
					FROM _adresseEvenement ae
					LEFT JOIN historiqueAdresse ha on ha.idAdresse = ae.idAdresse 
					WHERE ha.idHistoriqueAdresse  = ".$idHistoriqueAdresse."
					";			
			$result = $this->connexionBdd->requete($requete);
			$fetch = mysql_fetch_array($result);
			$idAdresse = $fetch['idAdresse'];
			$idEvenementGroupeAdresse = $fetch['idEvenementGroupeAdresse'];
			
			$evenement = new archiEvenement();
			$titreAdresse = $evenement->getIntituleAdresseFrom($idAdresse,'idAdresse');
			
			$urlBack = $this->creerUrl('','',array('archiAffichage'=>'adresseDetail','archiIdAdresse'=>$idAdresse,'archiIdEvenementGroupeAdresse'=>$idEvenementGroupeAdresse));
			$txtLink="Aller à l'adresse " . $titreAdresse;
		}
		if($interets['personne']){
			$requestParameters[]=array('table'=>'_interetPersonne','fieldName1'=>'idUtilisateur','fieldName2'=>'idPersonne','idInteret'=>$interets['personne'],'userId'=>$this->userId);
			$urlBack = $this->creerUrl('', 'evenementListe', array('selection' => 'personne', 'id' => $interets['personne']));
			$txtLink = "Retour à la fiche de la personne";
		}

		$nbEltInserted=0;
		foreach ($requestParameters as $rp){
			//Insert if not exists
			$requete= "
					INSERT INTO ".$rp['table']." (".$rp['fieldName1'].",".$rp['fieldName2'].",created)
					SELECT '".$this->userId."', '".$rp['idInteret']."' , now()
					FROM DUAL
					WHERE NOT EXISTS (SELECT * FROM `".$rp['table']."`
					WHERE ".$rp['fieldName1']."='".$this->userId."' AND ".$rp['fieldName2']."='".$rp['idInteret']."')
					LIMIT 1
					";
			$res = $this->connexionBdd->requete($requete,false);
		}
		$this->messages->addConfirmation('Intérêt(s) sauvegardé(s) avec succès !');
		$t->assign_vars(array(
				'message' =>  $this->messages->display(),
				'textLink' => $txtLink,
				'urlBack'=> $urlBack
		)); 
		ob_start();
		$t->pparse('confirm');
		$html .= ob_get_contents();
		ob_end_clean();
		return $html;
	}
257695
public function index()
    {











$article = Article::load()->findOrFail(1);
echo '<pre>'; print_r($article );

$article = Article::load()->find(1);
echo '<pre>'; print_r($article );





// Récupérer un article WHERE slug
$article = Article::load()->where('slug', '=', 'article-1')->find();
// Résultat SQL : "SELECT * FROM articles WHERE slug = 'article-1' LIMIT 1"


$article->testQuery();

// Récupérer un article WHERE slug ou une erreur HTTP 404
$article = Article::load()->where('slug', '=', 'article-1')->findOrFail();
// Résultat SQL : "SELECT * FROM articles WHERE slug = 'article-1' LIMIT 1"



// Récupérer un article WHERE slug
$article = Article::load()->findBySlug('article-1');
// Résultat SQL : "SELECT * FROM articles WHERE slug = 'article-1' LIMIT 1"

// Récupérer un article WHERE slug ou une erreur HTTP 404
$article = Article::load()->findOrFailBySlug('article-1');
// Résultat SQL : "SELECT * FROM articles WHERE slug = 'article-1' LIMIT 1"



// Récupérer une collection d'articles avec un WHERE
$articles = Article::load()->where('status', '=', 1)->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE status = 1"



// Récupérer une collection d'articles avec un WHERE
$articles = Article::load()->findAllByStatus(1);
// Résultat SQL : "SELECT * FROM articles WHERE status = 1"



$articles = Article::load()->where('status', '=', 1)->where('status', '=', 2)->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE status = 1 AND online = 1"



$articles = Article::load()->where('status', '=', 1)->orWhere('status', '=', 2)->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE status = 1 OR online = 1"




$articles = Article::load()->whereIn('id', [1, 2, 3])->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE id IN (1, 2, 3)"



$articles = Article::load()->whereIn('id', [1, 2, 3])->orWhereIn('id', [7, 8, 9])->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE id IN (1, 2, 3) OR id IN (20, 21, 22)"


$articles = Article::load()->where('status', '=', 1)->orderBy('title', 'ASC')->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE status = 1 ORDER BY 'title' ASC"



$articles = Article::load()->where('status', '=', 1)->limit(5)->offset(2)->findAll();
// Résultat SQL : "SELECT * FROM articles WHERE status = 1 LIMIT 5 OFFSET 2"




$article = new Article();

$articles = $article->paginate();
// Résultats SQL :
// SELECT COUNT(id) AS nb FROM articles WHERE status = 1
// Et :
// SELECT * FROM articles WHERE status = 1 LIMIT 10 OFFSET ? 

echo '<pre>'; print_r($article->getTotal());  // return int - Nombre d'articles paginés

$pagination = $article->getPagination();

foreach ($articles as $article) {
    echo $article->title;
}

echo $pagination->render();  // return string
echo $pagination->perPage();  // return string




$article = new Article();

$articles = $article->paginate(5);





// Par exemple, récupérer tous les articles qui sont joints à une catégorie WHERE son id avec un INNER JOIN
$articlesJoinedToCategory = Article::load()
    ->join(
        ArticleCategory::getTableIntermediateJoinedArticles(),
        Article::getTable().'.id', '=', ArticleCategory::getTableIntermediateJoinedArticles().'.article_id'
    )
    ->where(ArticleCategory::getTableIntermediateJoinedArticles().'.category_id', '=', 2)
    ->findAll();
// Résultat SQL :
// "SELECT * FROM articles
// INNER JOIN articles_categories_intermediate 
//   ON articles.id = articles_categories_intermediate.article_id
// WHERE articles_categories_intermediate.category_id = 2"
echo '<pre>'; print_r($articlesJoinedToCategory);


echo '<hr>';

// Par exemple, récupérer tout les articles qui sont joints à une catégorie WHERE son id avec un LEFT JOIN
$articlesJoinedToCategory = Article::load()
    ->leftJoin(
        ArticleCategory::getTableIntermediateJoinedArticles(),
        Article::getTable().'.id', '=', ArticleCategory::getTableIntermediateJoinedArticles().'.article_id'
    )
    ->where(ArticleCategory::getTableIntermediateJoinedArticles().'.category_id', '=', 2)
    ->findAll();
// Résultat SQL :
// "SELECT * FROM articles
// LEFT JOIN articles_categories_intermediate 
//   ON articles.id = articles_categories_intermediate.article_id
// WHERE articles_categories_intermediate.category_id = 2"
echo '<pre>'; print_r($articlesJoinedToCategory);

echo '<hr>';

// Par exemple, récupérer tout les articles qui sont joints à une catégorie WHERE son id avec un RIGHT JOIN
$articlesJoinedToCategory = Article::load()
    ->rightJoin(
        ArticleCategory::getTableIntermediateJoinedArticles(),
        Article::getTable().'.id', '=', ArticleCategory::getTableIntermediateJoinedArticles().'.article_id'
    )
    ->where(ArticleCategory::getTableIntermediateJoinedArticles().'.category_id', '=', 2)
    ->findAll();
// Résultat SQL :
// "SELECT * FROM articles
// RIGHT JOIN articles_categories_intermediate 
//   ON articles.id = articles_categories_intermediate.article_id
// WHERE articles_categories_intermediate.category_id = 2"
echo '<pre>'; print_r($articlesJoinedToCategory);




Article::load()->select('title, description, content')->where('id', '=', 1)->find();

Article::load()->select('title', 'description', 'content')->where('id', '=', 1)->find();

Article::load()->select(['title', 'description', 'content'])->where('id', '=', 1)->find();




$countArticles = Article::load()->count('id');
// return int - Résultat SQL : "SELECT COUNT(id) AS nb FROM articles"
// PS : Le paramètres 'id' n'est pas obligatoire. Est '*' par défaut.
echo '<pre>'; print_r($countArticles);


$countArticlesByStatus =  Article::load()->countByStatus(1);
// return int - Résultat SQL : "SELECT COUNT(*) AS nb FROM articles WHERE status = 1"
// PS : En 2ème paramètres de "countByStatus" on peut préciser la colonne en ajoutant un 2ème paramètres. Est '*' par défaut.




$sumIdArticles = Article::load()->sum('id');
// return int - Résultat SQL : "SELECT SUM(id) AS sum FROM articles"
echo '<pre>'; print_r($sumIdArticles);




$maxIdArticles = Article::load()->max('id');
// return int - Résultat SQL : "SELECT MAX(id) AS max FROM articles"
echo '<pre>'; print_r($maxIdArticles);




$condition = true;
$articles = Article::load()
    ->select('title, description, content')
    ->where('id', '!=', 1)
    ->when($condition === true, function ($query) {
        return $query->where('status', '=', 1);
    })
    ->findAll();
// Si $condition = true - Résultat SQL : "SELECT title, description, content FROM articles WHERE id != 1 AND status = 1"
// Si $condition = false - Résultat SQL : "SELECT title, description, content FROM articles WHERE id != 1"






$article = new Article();
$articles = $article->runRowCount(true)->findAll();
echo '<pre>'; print_r($article->getRowCount());
// return int - Nombre de lignes affectées



/*

$article = new Article();
$article->setStatus(2);
$article->setH1('Article 18');
$article->setDescription('Description Article 18');
$article->setContent('Content Article 18');
$article->setTitle('Title Article 18');
$article->setSlug('article-120');
$article->setUserId(2);
$article->save();


echo $article->getLastInsertId();
die;

Article::load()->create([
    'status' => 2,
    'h1' => 'Article 12',
    'description' => 'Description Article 12',
    'content' => 'Content Article 12',
    'title' => 'Title Article 12',
    'user_id' => 1,
    'slug' => 'article-12',
]);
// Résultat SQL :
// "INSERT INTO articles (status, h1, description, content, title, slug)
//  VALUES (1, 'Article 12', 'Description Article 12', 'Content Article 12', 'Title Article 12', 'article-12')"

*/








$article = Article::load()->findById(1);
$article->setStatus(2);
$article->setH1('Article 1');
$article->setDescription('Description Article 1');
$article->setContent('Content Article 1');
$article->setTitle('Title Article 1');
$article->setSlug('article-1');
$article->save();



echo $article->getNow();



Article::load()
    ->where('id', '=', 1)
    ->limit(1)
    ->update([
        'status' => 2,
        'h1' => 'Article 1',
        'description' => 'Description Article 1',
        'content' => 'Content Article 1',
        'title' => 'Title Article 1',
        'slug' => 'article-1',
    ]);



$_POST = [
    'status' => 2,
    'h1' => 'Article 1',
    'description' =>
    'Description Article 1',
    'content' => 'Content Article 1',
    'title' => 'Title Article 1',
    'slug' => 'article-1',
];

$article = Article::load()->findById(1);
$article->fill($_POST);
$article->save();

$_POST = [];


// Résultat SQL :
// "UPDATE articles SET
//  status = 1, h1 = 'Article 1', description = 'Description Article 1', content = 'Content Article 1', title = 'Title Article 1', slug = 'article-1'
//  WHERE id = 1 LIMIT 1"




$_POST = [
    'status' => 2,
    'h1' => 'Article 1',
    'description' =>
    'Description Article 1',
    'content' => 'Content Article 1',
    'title' => 'Title Article 1',
    'slug' => 'article-1',
];

$article = Article::load()->findById(1);

var_dump( $article->getTitle() );

$article->fill($_POST);

var_dump( $article->getTitle() );

$article->save();

var_dump( $article->getTitle() );

$_POST = [];












/*
$article = Article::load()->findById(18);
$article->delete();
// Résultats SQL :
// "SELECT * FROM articles WHERE id = 13 LIMIT 1"
// Et :
// "DELETE FROM articles WHERE id = 13 LIMIT 1"


Article::load()->where('id', '=', 17)->limit(1)->delete();

*/





$article = Article::load()->findById(1);
echo '<pre>'; print_r($article->getH1());





$article = new Article();

/*
try {
    // Démarrer une transaction
    $article->beginTransaction();

    // Valider une transaction
    $article->validTransaction();
} catch (\Exception $e) {
    // Annuler une transaction
    $article->cancelTransaction();
}
*/



echo '<hr>';




// Récupérer l'article WHERE son id :
$article = Article::load()->findById(1);
// Résultat SQL : "SELECT * FROM articles WHERE id = 1 LIMIT 1"

// Prenons pour exemple que la colonne 'user_id' de l'article a pour valeur "2"
// Récupérer l'user relié à cette article :
$userJoinedTiArticle = $article->user();
echo '<pre>'; print_r($userJoinedTiArticle);
// Résultat SQL : SELECT users.* FROM users WHERE users.id = 2 LIMIT 1



echo '<hr>';




$user = User::load()->findById(1);
// Résultat SQL : "SELECT * FROM users WHERE id = 1 LIMIT 1"

// Récupérer tous les articles reliés à cette user
$articlesJoinedToUser = $user->articles();
echo '<pre>'; print_r($articlesJoinedToUser);




echo '<hr>';






// Récupérer l'article WHERE son id :
$article = Article::load()->findById(1);
// Résultat SQL : "SELECT * FROM articles WHERE id = ? LIMIT 1"

// Récupérer toute les catégories jointes à cette article :
$articleCategories = $article->articleCategories();
echo '<pre>'; print_r($articleCategories);
// Résultat SQL :
// SELECT articles_categories.* FROM articles_categories
// INNER JOIN articles_categories_intermediate
//   ON articles_categories.id = articles_categories_intermediate.category_id
// WHERE articles_categories_intermediate.article_id = 2



$a = new Article;
$a->testQuery();




$article = new Article();
echo '<pre>'; print_r($article->getDbTable());




$article = new Article();
echo '<pre>'; print_r($article->getTable());





        return $this->view('article/index', [
            'baliseTitle' => 'Article listing title',
            'metaDescription' => 'Article listing desciption',
        ]);  
    }
1351730
def last(self):
        

        if self.limit > self.total:
            return None
        elif self.offset >= self.total:
            return None
        else:
            offset = (self.total / self.limit) * self.limit
            return {'page[offset]': offset, 'page[limit]': self.limit}
22532
def paginate(self, skip, limit):
        """"""
        if not self.count() or not limit:
            return
        skip = skip or 0
        pages = int(ceil(self.count() / float(limit)))
        limits = {}
        last = 0
        for i in range(pages):
            current = limit * i
            limits[last] = current
            last = current
        # example with count == 62
        # {0: 20, 20: 40, 40: 60, 60: 62}
        if limit and limit < self.count():
            limit = limits.get(skip, self.count())
            self.cursordat = self.cursordat[skip: limit]
926992
def select_page(self, limit, offset=0, **kwargs):
        
        start = offset
        while True:
            result = self.select(limit=[start, limit], **kwargs)
            start += limit
            if result:
                yield result
            else:
                break
            if self.debug:
                break
46815
function collectPages(func, callback) {
    var items = [];
    var lastReadId = 0;
    function __collect() {
        return func(lastReadId, function(error, page) {
            if (error) {
                return callback(error);
            }
            if (!page.length) {
                return callback(null, items);
            }
            items = items.concat(page);
            lastReadId = page[page.length - 1].id;
            return __collect();
        });
    }
    return __collect();
}
463329
def limit(count)
      raise InvalidPageSize unless count && count > 0
      Specification.new(reader, result.dup { |r| r.count = count })
    end
1226623
public function afficheStatistiques()
	{
		$t = new Template($this->getCheminPhysique().$this->cheminTemplates);
		$t->set_filenames(array('statsAccueil'=>'statistiquesAccueil.tpl'));

		// recherche du nombre d'evenements
		$reqEvenements = "SELECT DISTINCT idEvenement as nbEvenements FROM evenements;";
		$resEvenements = $this->connexionBdd->requete($reqEvenements);

		// recherche du nombre d'adresses
		$reqAdresses = "SELECT DISTINCT idAdresse as nbAdresses FROM historiqueAdresse;";
		$resAdresses = $this->connexionBdd->requete($reqAdresses);

		// recherche du nombre de photos
		$reqPhotos = "SELECT DISTINCT idImage as nbImages FROM historiqueImage;";
		$resPhotos = $this->connexionBdd->requete($reqPhotos);

		$t->assign_vars(array('architectes'=>$this->getListeArchitectesProductifs(array('sqlLimit'=>"LIMIT 10", "noPagination"=>true))));
		$t->assign_vars(array('rues'=>$this->getListeRuesCompletes(array('sqlLimit'=>"LIMIT 10", "noPagination"=>true))));

		$t->assign_vars(array('voirTousLesArchitectes'=>"<a href='".$this->creerUrl('', 'tousLesArchitectesClasses')."'>"._("Voir tous les architectes classés")."</a>"));

		$t->assign_vars(array('voirToutesLesRues'=>"<a href='".$this->creerUrl('', 'toutesLesRuesCompletesClassees')."'>"._("Voir toutes les rues classées")."</a>"));

		$t->assign_vars(array('nbAdresses'=>mysql_num_rows($resAdresses)));
		$t->assign_vars(array('nbEvenements'=>mysql_num_rows($resEvenements)));
		$t->assign_vars(array('nbPhotos'=>mysql_num_rows($resPhotos)));

		ob_start();
		$t->pparse('statsAccueil');
		$html .= ob_get_contents();
		ob_end_clean();

		return $html;
	}
1346795
function manageScrollbarRender(event) {
			if (modeTimer) {
				$timeout.cancel(modeTimer);
			}
			var m = boxesScrollServices.getMousePosition(event);
			if (isTriggerOver(m)) { // la souris est au dessus du declencheur
				showScrollbar();
			}
			if (isScrollbarVisible()) {
				if (isScrollbarOver(m)) { // la souris est au dessus de la scrollbar
					showScrollbar();
					if (compareGrabberAndMousePosition(m) === 0) { // la souris est au dessus du curseur
						showScrollbar('hover');
					}
				} else {
					hideScrollbar(SHOWSB_TIMEOUT);
				}
			}
		}