Files
@ f43d1a4680a9
Branch filter:
Location: hot67beta/components/com_contact/models/category.php
f43d1a4680a9
4.2 KiB
text/x-php
menubar 0 to 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | <?php
/**
* @version $Id: category.php 10381 2008-06-01 03:35:53Z pasamio $
* @package Joomla
* @subpackage Contact
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant to the
* GNU General Public License, and as distributed it includes or is derivative
* of works licensed under the GNU General Public License or other free or open
* source software licenses. See COPYRIGHT.php for copyright notices and
* details.
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );
jimport('joomla.application.component.model');
/**
* @package Joomla
* @subpackage Contact
*/
class ContactModelCategory extends JModel
{
/**
* Builds the query to select contact categories
* @param array
* @return string
* @access protected
*/
function _getCatgoriesQuery( &$options )
{
// TODO: Cache on the fingerprint of the arguments
$db =& JFactory::getDBO();
$aid = @$options['aid'];
$wheres[] = 'a.published = 1';
$wheres[] = 'cc.section = ' . $db->Quote( 'com_contact_details' );
$wheres[] = 'cc.published = 1';
if ($aid !== null)
{
$wheres[] = 'a.access <= ' . (int) $aid;
$wheres[] = 'cc.access <= ' . (int) $aid;
}
$groupBy = 'cc.id';
$orderBy = 'cc.ordering' ;
/*
* Query to retrieve all categories that belong under the contacts
* section and that are published.
*/
$query = 'SELECT cc.*, COUNT( a.id ) AS numlinks, a.id as cid'.
' FROM #__categories AS cc'.
' LEFT JOIN #__contact_details AS a ON a.catid = cc.id'.
' WHERE ' . implode( ' AND ', $wheres ) .
' GROUP BY ' . $groupBy .
' ORDER BY ' . $orderBy;
//echo $query;
return $query;
}
/**
* Builds the query to select contact items
* @param array
* @return string
* @access protected
*/
function _getContactsQuery( &$options )
{
// TODO: Cache on the fingerprint of the arguments
$db =& JFactory::getDBO();
$aid = @$options['aid'];
$catId = @$options['category_id'];
$groupBy = @$options['group by'];
$orderBy = @$options['order by'];
$select = 'cd.*, ' .
'cc.name AS category_name, cc.description AS category_description, cc.image AS category_image,'.
' CASE WHEN CHAR_LENGTH(cd.alias) THEN CONCAT_WS(\':\', cd.id, cd.alias) ELSE cd.id END as slug, '.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(\':\', cc.id, cc.alias) ELSE cc.id END as catslug ';
$from = '#__contact_details AS cd';
$joins[] = 'INNER JOIN #__categories AS cc on cd.catid = cc.id';
if ($catId)
{
$wheres[] = 'cd.catid = ' . (int) $catId;
}
$wheres[] = 'cc.published = 1';
$wheres[] = 'cd.published = 1';
if ($aid !== null)
{
$wheres[] = 'cc.access <= ' . (int) $aid;
$wheres[] = 'cd.access <= ' . (int) $aid;
}
/*
* Query to retrieve all categories that belong under the contacts
* section and that are published.
*/
$query = 'SELECT ' . $select .
' FROM ' . $from .
' ' . implode ( ' ', $joins ) .
' WHERE ' . implode( ' AND ', $wheres ) .
($groupBy ? ' GROUP BY ' . $groupBy : '').
($orderBy ? ' ORDER BY ' . $orderBy : '');
return $query;
}
/**
* Gets a list of categories
* @param array
* @return array
*/
function getCategories( $options=array() )
{
$query = $this->_getCatgoriesQuery( $options );
return $this->_getList( $query, @$options['limitstart'], @$options['limit'] );
}
/**
* Gets the count of the categories for the given options
* @param array
* @return int
*/
function getCategoryCount( $options=array() )
{
$query = $this->_getCatgoriesQuery( $options );
return $this->_getListCount( $query );
}
/**
* Gets a list of categories
* @param array
* @return array
*/
function getContacts( $options=array() )
{
$query = $this->_getContactsQuery( $options );
return $this->_getList( $query, @$options['limitstart'], @$options['limit'] );
}
/**
* Gets the count of the categories for the given options
* @param array
* @return int
*/
function getContactCount( $options=array() )
{
$query = $this->_getContactsQuery( $options );
return $this->_getListCount( $query );
}
}
|