ContentType.php
3.51 KB
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
<?php
/**
* Joomla! Content Management System
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\CMS\Table;
defined('JPATH_PLATFORM') or die;
/**
* Tags table
*
* @since 3.1
*/
class ContentType extends Table
{
/**
* Constructor
*
* @param \JDatabaseDriver $db A database connector object
*
* @since 3.1
*/
public function __construct($db)
{
parent::__construct('#__content_types', 'type_id', $db);
}
/**
* Overloaded check method to ensure data integrity.
*
* @return boolean True on success.
*
* @since 3.1
* @throws \UnexpectedValueException
*/
public function check()
{
// Check for valid name.
if (trim($this->type_title) === '')
{
throw new \UnexpectedValueException(sprintf('The title is empty'));
}
$this->type_title = ucfirst($this->type_title);
if (empty($this->type_alias))
{
throw new \UnexpectedValueException(sprintf('The type_alias is empty'));
}
return true;
}
/**
* Overridden Table::store.
*
* @param boolean $updateNulls True to update fields even if they are null.
*
* @return boolean True on success.
*
* @since 3.1
*/
public function store($updateNulls = false)
{
// Verify that the alias is unique
$table = Table::getInstance('Contenttype', 'JTable', array('dbo' => $this->getDbo()));
if ($table->load(array('type_alias' => $this->type_alias)) && ($table->type_id != $this->type_id || $this->type_id == 0))
{
$this->setError(\JText::_('COM_TAGS_ERROR_UNIQUE_ALIAS'));
return false;
}
return parent::store($updateNulls);
}
/**
* Method to expand the field mapping
*
* @param boolean $assoc True to return an associative array.
*
* @return mixed Array or object with field mappings. Defaults to object.
*
* @since 3.1
*/
public function fieldmapExpand($assoc = true)
{
return $this->fieldmap = json_decode($this->fieldmappings, $assoc);
}
/**
* Method to get the id given the type alias
*
* @param string $typeAlias Content type alias (for example, 'com_content.article').
*
* @return mixed type_id for this alias if successful, otherwise null.
*
* @since 3.2
*/
public function getTypeId($typeAlias)
{
$db = $this->_db;
$query = $db->getQuery(true);
$query->select($db->quoteName('type_id'))
->from($db->quoteName($this->_tbl))
->where($db->quoteName('type_alias') . ' = ' . $db->quote($typeAlias));
$db->setQuery($query);
return $db->loadResult();
}
/**
* Method to get the Table object for the content type from the table object.
*
* @return mixed Table object on success, otherwise false.
*
* @since 3.2
*
* @throws \RuntimeException
*/
public function getContentTable()
{
$result = false;
$tableInfo = json_decode($this->table);
if (is_object($tableInfo) && isset($tableInfo->special))
{
if (is_object($tableInfo->special) && isset($tableInfo->special->type) && isset($tableInfo->special->prefix))
{
$class = isset($tableInfo->special->class) ? $tableInfo->special->class : 'Joomla\\CMS\\Table\\Table';
if (!class_implements($class, 'Joomla\\CMS\\Table\\TableInterface'))
{
// This isn't an instance of TableInterface. Abort.
throw new \RuntimeException('Class must be an instance of Joomla\\CMS\\Table\\TableInterface');
}
$result = $class::getInstance($tableInfo->special->type, $tableInfo->special->prefix);
}
}
return $result;
}
}