Пример #1
0
 /**
  * Get published article details
  * 
  * @param int  $id  Article ID
  * @return array 
  */
 public static function getEntity($id)
 {
     $module = Pi::service('module')->current();
     $config = Pi::config('', $module);
     $row = Pi::model('article', $module)->find($id);
     if (empty($row->id)) {
         return array();
     }
     if ($row->markup) {
         $subject = Pi::service('markup')->render($row->subject, 'html', $row->markup);
         $subtitle = Pi::service('markup')->render($row->subtitle, 'html', $row->markup);
     } else {
         $subject = Pi::service('markup')->render($row->subject, 'html');
         $subtitle = Pi::service('markup')->render($row->subtitle, 'html');
     }
     $content = Compiled::getContent($row->id, 'html');
     $result = array('title' => $subject, 'content' => Draft::breakPage($content), 'subtitle' => $subtitle, 'source' => $row->source, 'pages' => $row->pages, 'time_publish' => $row->time_publish, 'active' => $row->active, 'visits' => '', 'slug' => '', 'seo' => array(), 'author' => array(), 'attachment' => array(), 'tag' => '', 'related' => array());
     // Get author
     if ($row->author) {
         $author = Pi::api('api', $module)->getAuthorList((array) $row->author);
         if ($author) {
             $result['author'] = array_shift($author);
             if (empty($result['author']['photo'])) {
                 $result['author']['photo'] = Pi::service('asset')->getModuleAsset($config['default_author_photo'], $module);
             }
         }
     }
     // Get attachments
     $resultsetAsset = Pi::model('asset', $module)->select(array('article' => $id, 'type' => 'attachment'));
     $mediaIds = array();
     foreach ($resultsetAsset as $asset) {
         $mediaIds[$asset->media] = $asset->media;
     }
     if ($mediaIds) {
         $resultsetMedia = Pi::model('media', $module)->select(array('id' => $mediaIds));
         foreach ($resultsetMedia as $media) {
             $result['attachment'][] = array('original_name' => $media->title, 'extension' => $media->type, 'size' => $media->size, 'url' => Pi::service('url')->assemble('default', array('module' => $module, 'controller' => 'media', 'action' => 'download', 'id' => $media->id)));
         }
     }
     // Get tag
     /*
     if ($config['enable_tag']) {
         $result['tag'] = Pi::service('tag')->get($module, $id);
     }
     */
     // Get related articles
     $relatedIds = Pi::model('related', $module)->getRelated($id);
     if ($relatedIds) {
         $related = array_flip($relatedIds);
         $where = array('id' => $relatedIds);
         $columns = array('id', 'subject', 'time_publish');
         $resultsetRelated = self::getArticlePage($where, 1, null, $columns, null, $module);
         foreach ($resultsetRelated as $key => $val) {
             if (array_key_exists($key, $related)) {
                 $related[$key] = $val;
             }
         }
         $result['related'] = array_filter($related, function ($var) {
             return is_array($var);
         });
     }
     // Getting seo
     $modelExtended = Pi::model('extended', $module);
     $rowExtended = $modelExtended->find($row->id, $module);
     if ($rowExtended) {
         $result['slug'] = $rowExtended->slug;
         $result['seo'] = array('title' => $rowExtended->seo_title, 'keywords' => $rowExtended->seo_keywords, 'description' => $rowExtended->seo_description);
     }
     // Getting stats data
     $modelStatis = Pi::model('stats', $module);
     $rowStatis = $modelStatis->find($row->id, $module);
     if ($rowStatis) {
         $result['visits'] = $rowStatis->visits;
     }
     return $result;
 }