public function __construct($objElement, $strColumn = 'main')
{
parent::__construct();
// Store the parent element (see #4556)
if ($objElement instanceof Model || $objElement instanceof Model\Collection) {
/** @var ContentModel|ModuleModel|FormModel $objModel */
$objModel = $objElement;
if ($objModel instanceof Model\Collection) {
$objModel = $objModel->current();
}
$this->objParent = $objModel;
}
if ($this->strKey == '' || $this->strTable == '') {
return;
}
/** @var Model $strModelClass */
$strModelClass = \Model::getClassFromTable($this->strTable);
// Load the model
if (class_exists($strModelClass)) {
$objHybrid = $strModelClass::findByPk($objElement->{$this->strKey});
if ($objHybrid === null) {
return;
}
$this->objModel = $objHybrid;
} else {
$objHybrid = $this->Database->prepare("SELECT * FROM " . $this->strTable . " WHERE id=?")->limit(1)->execute($objElement->{$this->strKey});
if ($objHybrid->numRows < 1) {
return;
}
}
$cssID = array();
$this->arrData = $objHybrid->row();
// Get the CSS ID from the parent element (!)
$this->cssID = \StringUtil::deserialize($objElement->cssID, true);
if (isset($objHybrid->attributes)) {
$cssID = \StringUtil::deserialize($objHybrid->attributes, true);
}
// Override the CSS ID (see #305)
if (!empty($this->cssID[0])) {
$cssID[0] = $this->cssID[0];
}
// Merge the CSS classes (see #6011)
if (!empty($this->cssID[1])) {
$cssID[1] = trim($cssID[1] . ' ' . $this->cssID[1]);
}
$this->cssID = $cssID;
$this->typePrefix = $objElement->typePrefix;
$arrHeadline = \StringUtil::deserialize($objElement->headline);
$this->headline = is_array($arrHeadline) ? $arrHeadline['value'] : $arrHeadline;
$this->hl = is_array($arrHeadline) ? $arrHeadline['unit'] : 'h1';
$this->strColumn = $strColumn;
}