public static function getPageIntro($page, $options) { $page['intro'] = ''; $table = ipTable('revision'); $sql = "SELECT `revisionId` FROM {$table} WHERE `pageId` = {$page['id']} AND isPublished = 1"; $revisionId = ipDb()->fetchValue($sql); $revisionId = !empty($revisionId) ? $revisionId : 0; $allowedTags = $options['allowedtags']; $blockName = $options['blockname']; $introLimit = $options['introlimit']; $table = ipTable('widget'); $sql = "SELECT `position` FROM {$table} WHERE `revisionId` = {$revisionId} AND `isVisible` = 1 AND `isDeleted` = 0 AND `name` = 'AsdBlogSeperator'"; $position = ipDb()->fetchValue($sql); if (!empty($position)) { $positionSql = "AND `position` < {$position}"; } else { $positionSql = null; } $sql = "SELECT `id`, `name`, `skin`, `data`, `blockName` FROM {$table} WHERE `revisionId` = {$revisionId} AND `isVisible` = 1 AND `isDeleted` = 0 AND `blockName` = '{$blockName}' {$positionSql} ORDER BY `position` ASC"; $widgets = ipDb()->fetchAll($sql); $i = 0; foreach ($widgets as $widget) { if ($widget['name'] == 'Heading' && $i++ == 0) { $tmp = json_decode($widget['data'], true); $page['title'] = $tmp['title']; } elseif ($widget['name'] == 'Text') { if (!empty($position)) { $i++; $page['intro'] .= strip_tags(\Ip\Internal\Content\Model::generateWidgetPreview($widget['id'], false), $allowedTags); } else { $page['intro'] .= strip_tags(\Ip\Internal\Content\Model::generateWidgetPreview($widget['id'], false), str_replace('</p>', '', $allowedTags)); if (mb_strlen($page['intro']) > $introLimit) { $page['intro'] = '<p>' . mb_substr($page['intro'], 0, strpos($page['intro'], ' ', $introLimit)) . '</p>'; break; } } } elseif ($widget['name'] == 'Columns') { $columns = self::getWidgetByColumn($widget['id']); foreach ($columns as $col) { if ($col['name'] == 'Text') { if (!empty($position)) { $page['intro'] .= strip_tags(\Ip\Internal\Content\Model::generateWidgetPreview($col['id'], false), $allowedTags); } else { $page['intro'] .= strip_tags(\Ip\Internal\Content\Model::generateWidgetPreview($col['id'], false), str_replace('</p>', '', $allowedTags)); if (mb_strlen($page['intro']) > $introLimit) { $page['intro'] = '<p>' . mb_substr($page['intro'], 0, strpos($page['intro'], ' ', $introLimit)) . '</p>'; break; } } } elseif ($col['name'] == 'Image' && empty($page['image'])) { $page['image'] = json_decode($col['data'], true); } } } elseif ($widget['name'] == 'Image' && empty($page['image'])) { $page['image'] = json_decode($widget['data'], true); } } return $page; }