Example #1
0
 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;
 }