/** * @param Database_Result $objSettings The information from which to initialize the setting from * * @return IMetaModelFilterSetting */ protected function newSetting(Database_Result $objSettings) { $strClass = $GLOBALS['METAMODELS']['filters'][$objSettings->type]['class']; // TODO: add factory support here. if ($strClass) { return new $strClass($this, $objSettings->row()); } return null; }
/** * Initialize the object * @param object * @return string */ public function __construct(Database_Result $objElement) { parent::__construct(); $this->arrData = $objElement->row(); $this->space = deserialize($objElement->space); $this->cssID = deserialize($objElement->cssID, true); $arrHeadline = deserialize($objElement->headline); $this->headline = is_array($arrHeadline) ? $arrHeadline['value'] : $arrHeadline; $this->hl = is_array($arrHeadline) ? $arrHeadline['unit'] : 'h1'; }
/** * Initialize the object * @param Database_Result * @param string */ public function __construct(Database_Result $objModule, $strColumn = 'main') { parent::__construct(); $this->arrData = $objModule->row(); $this->space = deserialize($objModule->space); $this->cssID = deserialize($objModule->cssID, true); $arrHeadline = deserialize($objModule->headline); $this->headline = is_array($arrHeadline) ? $arrHeadline['value'] : $arrHeadline; $this->hl = is_array($arrHeadline) ? $arrHeadline['unit'] : 'h1'; $this->strColumn = $strColumn; }
/** * Create start tag for given end tag and update it * * @param Database_Result $objEndTag */ public function createStartTag($objEndTag) { $arrStartTag = $objEndTag->row(); unset($arrStartTag['id']); unset($arrStartTag['sh5_pid']); $arrStartTag['sh5_tag'] = 'start'; $arrStartTag['sorting'] = $objEndTag->sorting - 1; // Support GlobalContentelements extension if installed if (in_array('GlobalContentelements', $this->Config->getActiveModules())) { $arrStartTag['do'] = $this->Input->get('do'); } // Insert start tag $objResult = $this->Database->prepare("INSERT INTO tl_content %s")->set($arrStartTag)->execute(); $intId = $objResult->insertId; // Update start tag $this->Database->prepare("UPDATE tl_content %s WHERE id = ?")->set(array('sh5_pid' => $intId))->executeUncached($intId); // Update end tag $this->Database->prepare("UPDATE tl_content %s WHERE id = ?")->set(array('sh5_pid' => $intId))->executeUncached($objEndTag->id); }
/** * Load the relations and optionally process a result set * * @param \Database_Result $objResult An optional database result */ public function __construct(\Database_Result $objResult = null) { parent::__construct(); $objRelations = new \DcaExtractor(static::$strTable); $this->arrRelations = $objRelations->getRelations(); if ($objResult !== null) { $this->arrData = $objResult->row(); // Look for joined fields foreach ($this->arrData as $k => $v) { if (strpos($k, '__') !== false) { list($key, $field) = explode('__', $k, 2); // Create the related model if (!isset($this->arrRelated[$key])) { $table = $this->arrRelations[$key]['table']; $strClass = $this->getModelClassFromTable($table); $this->arrRelated[$key] = new $strClass(); } $this->arrRelated[$key]->{$field} = $v; unset($this->arrData[$k]); } } } }
/** * Parse one or more items and return them as array * @param Database_Result * @param boolean * @return array */ protected function parseArticles(Database_Result $objArticles, $blnAddArchive=false) { if ($objArticles->numRows < 1) { return array(); } global $objPage; $this->import('String'); $arrArticles = array(); $limit = $objArticles->numRows; $count = 0; $imgSize = false; // Override the default image size if ($this->imgSize != '') { $size = deserialize($this->imgSize); if ($size[0] > 0 || $size[1] > 0) { $imgSize = $this->imgSize; } } while ($objArticles->next()) { $objTemplate = new FrontendTemplate($this->news_template); $objTemplate->setData($objArticles->row()); $objTemplate->count = ++$count; $objTemplate->class = (($objArticles->cssClass != '') ? ' ' . $objArticles->cssClass : '') . (($count == 1) ? ' first' : '') . (($count == $limit) ? ' last' : '') . ((($count % 2) == 0) ? ' odd' : ' even'); $objTemplate->newsHeadline = $objArticles->headline; $objTemplate->subHeadline = $objArticles->subheadline; $objTemplate->hasSubHeadline = $objArticles->subheadline ? true : false; $objTemplate->linkHeadline = $this->generateLink($objArticles->headline, $objArticles, $blnAddArchive); $objTemplate->more = $this->generateLink($GLOBALS['TL_LANG']['MSC']['more'], $objArticles, $blnAddArchive, true); $objTemplate->link = $this->generateNewsUrl($objArticles, $blnAddArchive); $objTemplate->archive = $objArticles->archive; // Clean the RTE output if ($objArticles->teaser != '') { if ($objPage->outputFormat == 'xhtml') { $objArticles->teaser = $this->String->toXhtml($objArticles->teaser); } else { $objArticles->teaser = $this->String->toHtml5($objArticles->teaser); } $objTemplate->teaser = $this->String->encodeEmail($objArticles->teaser); } // Display the "read more" button for external/article links if (($objArticles->source == 'external' || $objArticles->source == 'article') && $objArticles->text == '') { $objTemplate->text = true; } // Encode e-mail addresses else { // Clean the RTE output if ($objPage->outputFormat == 'xhtml') { $objArticles->text = $this->String->toXhtml($objArticles->text); } else { $objArticles->text = $this->String->toHtml5($objArticles->text); } $objTemplate->text = $this->String->encodeEmail($objArticles->text); } $arrMeta = $this->getMetaFields($objArticles); // Add meta information $objTemplate->date = $arrMeta['date']; $objTemplate->hasMetaFields = !empty($arrMeta); $objTemplate->numberOfComments = $arrMeta['ccount']; $objTemplate->commentCount = $arrMeta['comments']; $objTemplate->timestamp = $objArticles->date; $objTemplate->author = $arrMeta['author']; $objTemplate->datetime = date('Y-m-d\TH:i:sP', $objArticles->date); $objTemplate->addImage = false; // Add an image if ($objArticles->addImage && is_file(TL_ROOT . '/' . $objArticles->singleSRC)) { if ($imgSize) { $objArticles->size = $imgSize; } $this->addImageToTemplate($objTemplate, $objArticles->row()); } $objTemplate->enclosure = array(); // Add enclosures if ($objArticles->addEnclosure) { $this->addEnclosuresToTemplate($objTemplate, $objArticles->row()); } // HOOK: add custom logic if (isset($GLOBALS['TL_HOOKS']['parseArticles']) && is_array($GLOBALS['TL_HOOKS']['parseArticles'])) { foreach ($GLOBALS['TL_HOOKS']['parseArticles'] as $callback) { $this->import($callback[0]); $this->$callback[0]->$callback[1]($objTemplate, $objArticles->row(), $this); } } $arrArticles[] = $objTemplate->parse(); } return $arrArticles; }
/** * Compile the newsletter and send it * @param object * @param object * @param array * @param string * @param string * @param string * @return string */ protected function sendNewsletter(Email $objEmail, Database_Result $objNewsletter, $arrRecipient, $text, $html, $css) { // Prepare text content $objEmail->text = $this->parseSimpleTokens($text, $arrRecipient); // Add HTML content if (!$objNewsletter->sendText) { // Get the mail template $objTemplate = new BackendTemplate(strlen($objNewsletter->template) ? $objNewsletter->template : 'mail_default'); $objTemplate->setData($objNewsletter->row()); $objTemplate->title = $objNewsletter->subject; $objTemplate->body = $this->parseSimpleTokens($html, $arrRecipient); $objTemplate->charset = $GLOBALS['TL_CONFIG']['characterSet']; $objTemplate->css = $css; // Parse template $objEmail->html = $objTemplate->parse(); $objEmail->imageDir = TL_ROOT . '/'; } // Deactivate invalid addresses try { $objEmail->sendTo($arrRecipient['email']); } catch (Swift_RfcComplianceException $e) { $_SESSION['REJECTED_RECIPIENTS'][] = $arrRecipient['email']; } // Rejected recipients if (count($objEmail->failures)) { $_SESSION['REJECTED_RECIPIENTS'][] = $arrRecipient['email']; } }
/** * Add a data row to the XML document * @param DOMDocument * @param DOMElement * @param Database_Result */ protected function addDataRow(DOMDocument $xml, DOMElement $table, Database_Result $objData) { $row = $xml->createElement('row'); $row = $table->appendChild($row); foreach ($objData->row() as $k=>$v) { $field = $xml->createElement('field'); $field->setAttribute('name', $k); $field = $row->appendChild($field); if ($v === null) { $v = 'NULL'; } $value = $xml->createTextNode($v); $value = $field->appendChild($value); } }
/** * Compile the newsletter and send it * @param \Email * @param \Database_Result * @param array * @param string * @param string * @param string * @return string */ protected function sendNewsletter(\Email $objEmail, \Database_Result $objNewsletter, $arrRecipient, $text, $html, $css = null) { // Prepare the text content $objEmail->text = \String::parseSimpleTokens($text, $arrRecipient); // Add the HTML content if (!$objNewsletter->sendText) { // Default template if ($objNewsletter->template == '') { $objNewsletter->template = 'mail_default'; } // Load the mail template $objTemplate = new \BackendTemplate($objNewsletter->template); $objTemplate->setData($objNewsletter->row()); $objTemplate->title = $objNewsletter->subject; $objTemplate->body = \String::parseSimpleTokens($html, $arrRecipient); $objTemplate->charset = $GLOBALS['TL_CONFIG']['characterSet']; $objTemplate->css = $css; // Backwards compatibility // Parse template $objEmail->html = $objTemplate->parse(); $objEmail->imageDir = TL_ROOT . '/'; } // Deactivate invalid addresses try { $objEmail->sendTo($arrRecipient['email']); } catch (Swift_RfcComplianceException $e) { $_SESSION['REJECTED_RECIPIENTS'][] = $arrRecipient['email']; } // Rejected recipients if ($objEmail->hasFailures()) { $_SESSION['REJECTED_RECIPIENTS'][] = $arrRecipient['email']; } }
/** * Add an event to the array of active events * @param Database_Result * @param integer * @param integer * @param string * @param integer * @param integer * @param integer */ protected function addEvent(Database_Result $objEvents, $intStart, $intEnd, $strUrl, $intBegin, $intLimit, $intCalendar) { global $objPage; $intDate = $intStart; $intKey = date('Ymd', $intStart); $span = Calendar::calculateSpan($intStart, $intEnd); $strDate = $this->parseDate($objPage->dateFormat, $intStart); $strDay = $GLOBALS['TL_LANG']['DAYS'][date('w', $intStart)]; $strMonth = $GLOBALS['TL_LANG']['MONTHS'][date('n', $intStart) - 1]; if ($span > 0) { $strDate = $this->parseDate($objPage->dateFormat, $intStart) . ' - ' . $this->parseDate($objPage->dateFormat, $intEnd); $strDay = ''; } $strTime = ''; if ($objEvents->addTime) { if ($span > 0) { $strDate = $this->parseDate($objPage->datimFormat, $intStart) . ' - ' . $this->parseDate($objPage->datimFormat, $intEnd); } elseif ($intStart == $intEnd) { $strTime = $this->parseDate($objPage->timeFormat, $intStart); } else { $strTime = $this->parseDate($objPage->timeFormat, $intStart) . ' - ' . $this->parseDate($objPage->timeFormat, $intEnd); } } // Store raw data $arrEvent = $objEvents->row(); // Overwrite some settings $arrEvent['time'] = $strTime; $arrEvent['date'] = $strDate; $arrEvent['day'] = $strDay; $arrEvent['month'] = $strMonth; $arrEvent['parent'] = $intCalendar; $arrEvent['link'] = $objEvents->title; $arrEvent['target'] = ''; $arrEvent['title'] = specialchars($objEvents->title, true); $arrEvent['href'] = $this->generateEventUrl($objEvents, $strUrl); $arrEvent['class'] = $objEvents->cssClass != '' ? ' ' . $objEvents->cssClass : ''; $arrEvent['details'] = $this->String->encodeEmail($objEvents->details); $arrEvent['start'] = $intStart; $arrEvent['end'] = $intEnd; // Override the link target if ($objEvents->source == 'external' && $objEvents->target) { $arrEvent['target'] = $objPage->outputFormat == 'xhtml' ? ' onclick="return !window.open(this.href)"' : ' target="_blank"'; } // Clean the RTE output if ($arrEvent['teaser'] != '') { if ($objPage->outputFormat == 'xhtml') { $arrEvent['teaser'] = $this->String->toXhtml($arrEvent['teaser']); } else { $arrEvent['teaser'] = $this->String->toHtml5($arrEvent['teaser']); } } // Display the "read more" button for external/article links if ($objEvents->source != 'default' && $objEvents->details == '') { $arrEvent['details'] = true; } else { if ($objPage->outputFormat == 'xhtml') { $arrEvent['details'] = $this->String->toXhtml($arrEvent['details']); } else { $arrEvent['details'] = $this->String->toHtml5($arrEvent['details']); } } // Get todays start and end timestamp if ($this->intTodayBegin === null) { $this->intTodayBegin = strtotime('00:00:00'); } if ($this->intTodayEnd === null) { $this->intTodayEnd = strtotime('23:59:59'); } // Mark past and upcoming events (see #3692) if ($intEnd < $this->intTodayBegin) { $arrEvent['class'] .= ' bygone'; } elseif ($intStart > $this->intTodayEnd) { $arrEvent['class'] .= ' upcoming'; } else { $arrEvent['class'] .= ' current'; } $this->arrEvents[$intKey][$intStart][] = $arrEvent; // Multi-day event for ($i = 1; $i <= $span && $intDate <= $intLimit; $i++) { // Only show first occurrence if ($this->cal_noSpan && $intDate >= $intBegin) { break; } $intDate = strtotime('+ 1 day', $intDate); $intNextKey = date('Ymd', $intDate); $this->arrEvents[$intNextKey][$intDate][] = $arrEvent; } }
/** * Get rows * * @param \Database_Result $objRecords * * @return array */ public function getRows($objRecords) { if (!$objRecords->numRows) { return array(); } $arrRows = array(); $objRecords->reset(); while ($objRecords->next()) { $arrField = $objRecords->row(); foreach ($this->fields as $field) { $arrField[$field] = Format::dcaValue($this->foreignTable, $field, $objRecords->{$field}); } $arrRows[] = $arrField; } return $arrRows; }
function __construct(Database_Result $resultSet = null) { foreach ($resultSet->row() as $name => $value) { $this->{$name} = $value; } }
/** * Parse one or more items and return them as array * * @param Database_Result $objArticles * @param bool|Template $objTemplate * @return array */ protected function parseArticles(Database_Result $objArticles, $objTemplate = false) { if ($objArticles->numRows < 1) { return array(); } global $objPage; $this->import('String'); $this->import('News4wardHelper'); $arrArticles = array(); $limit = $objArticles->numRows; $count = 0; while ($objArticles->next()) { // init FrontendTemplate if theres no object given if (!$objTemplate) { $objTemplate = new FrontendTemplate($this->news4ward_template); } $objTemplate->setData($objArticles->row()); $objTemplate->count = ++$count; $objTemplate->class = (strlen($objArticles->cssClass) ? ' ' . $objArticles->cssClass : '') . ($count == 1 ? ' first' : '') . ($count == $limit ? ' last' : '') . ($count % 2 == 0 ? ' odd' : ' even') . ($objArticles->highlight ? ' highlight' : ''); $objTemplate->link = $this->News4wardHelper->generateUrl($objArticles); $objTemplate->archive = $objArticles->archive; // Clean the RTE output for the TEASER if ($objArticles->teaser != '') { if ($objPage->outputFormat == 'xhtml') { $objArticles->teaser = $this->String->toXhtml($objArticles->teaser); } else { $objArticles->teaser = $this->String->toHtml5($objArticles->teaser); } $objTemplate->teaser = $this->String->encodeEmail($objArticles->teaser); } // Generate ContentElements $objContentelements = $this->Database->prepare('SELECT id FROM tl_content WHERE pid=? AND do="news4ward" ' . (!BE_USER_LOGGED_IN ? " AND invisible=''" : "") . ' ORDER BY sorting ')->execute($objArticles->id); $strContent = ''; while ($objContentelements->next()) { $strContent .= $this->getContentElement($objContentelements->id); } // Clean the RTE output for the CONTENT if ($strContent != '') { // Clean the RTE output if ($objPage->outputFormat == 'xhtml') { $strContent = $this->String->toXhtml($strContent); } else { $strContent = $this->String->toHtml5($strContent); } $strContent = $this->String->encodeEmail($strContent); } $objTemplate->content = $strContent; // Add meta information $arrMeta = $this->getMetaFields($objArticles); $objTemplate->date = $arrMeta['date']; $objTemplate->hasMetaFields = count($arrMeta) ? true : false; $objTemplate->timestamp = $objArticles->start; $objTemplate->author = $arrMeta['author']; $objTemplate->datetime = date('Y-m-d\\TH:i:sP', $objArticles->start); // Add teaser image if ($objArticles->teaserImage && is_file(TL_ROOT . '/' . $objArticles->teaserImage)) { $imgSize = deserialize($this->imgSize, true); $objTemplate->arrSize = $imgSize; if (count($imgSize) > 1) { $objTemplate->teaserImage = $this->getImage($objArticles->teaserImage, $imgSize[0], $imgSize[1], $imgSize[2]); } else { $objTemplate->teaserImage = $objArticles->teaserImage; } $objTemplate->teaserImageRaw = $objTemplate->teaserImag; } // HOOK: add custom logic if (isset($GLOBALS['TL_HOOKS']['News4wardParseArticle']) && is_array($GLOBALS['TL_HOOKS']['News4wardParseArticle'])) { foreach ($GLOBALS['TL_HOOKS']['News4wardParseArticle'] as $callback) { $this->import($callback[0]); $this->{$callback}[0]->{$callback}[1]($this, $objArticles, $objTemplate); } } $arrArticles[] = $objTemplate->parse(); } return $arrArticles; }
/** * Set the current record from a database result row * @param Database_Result * @param string * @param string */ public function setFromRow(Database_Result $resResult, $strTable, $strRefField) { $this->strTable = $strTable; $this->strRefField = $strRefField; $this->varRefId = $resResult->{$strRefField}; $this->resResult = $resResult; $this->arrData = $resResult->row(); $this->blnRecordExists = true; }