<?php /** * References for Contao * * Copyright (c) 2014 Benjamin Roth [http://www.esales-media.de] * * @package eSM_clients * @link http://www.esales-media.de * @license commercial */ /** * Run in a custom namespace, so the class can be replaced */ namespace eSM_clients; /** * Reads and writes reference clients * * @package Models * @author Benjamin Roth <http://www.esales-media.de> * @copyright eSales Media 2014 */ class EsmClientsModel extends \Model { /** * Table name * @var string */ protected static $strTable = 'tl_esm_clients'; /** * @return \Model\Collection|null */ public static function countReferenceClients() { $t1 = static::$strTable; $t2 = $t1.'_projects'; $Result = \Database::getInstance()->execute("SELECT COUNT($t1.id) AS 'totalcount' FROM $t1 WHERE invisible='' AND EXISTS (SELECT 1 FROM $t2 WHERE $t2.pid = $t1.id AND invisible = '' GROUP BY $t2.pid)"); if ($Result->numRows) { return $Result->totalcount; } return 0; } /** * @return \Model\Collection|null */ public static function getReferenceClients($intLimit=0, $intOffset=0) { $t1 = static::$strTable; $t2 = $t1.'_projects'; $Result = \Database::getInstance()->prepare("SELECT $t1.id FROM $t1 WHERE invisible='' AND EXISTS (SELECT 1 FROM $t2 WHERE $t2.pid = $t1.id AND invisible = '' GROUP BY $t2.pid) ORDER BY $t1.sorting") ->limit($intLimit,$intOffset) ->execute(); $arrIds = $Result->fetchEach('id'); return static::findMultipleByIds($arrIds); } /** * @param bool $blnIncludeInvisible * @return \Model\Collection|null */ public function getProjects($blnIncludeInvisible=false) { $arrConditions = array('pid = ?'); $arrValues = array($this->id); if ($blnIncludeInvisible) { $arrConditions[] = 'invisible = ?'; $arrValues[] = '1'; } return EsmClientsProjectsModel::findBy($arrConditions,$arrValues,array('order'=>'sorting')); } }