예제 #1
0
 /**
  * get image object info for SEO
  * @return array
  */
 public function getImageObject()
 {
     $key = 'cache_blog_image_object_' . $this->id;
     $img = Yii::$app->cache->get($key);
     if ($img === false) {
         $flag = false;
         $doc = new DOMDocument();
         $doc->loadHTML($this->content);
         $tags = $doc->getElementsByTagName('img');
         $img = ['url' => '', 'width' => '', 'height' => ''];
         foreach ($tags as $i => $tag) {
             $img['url'] = $tag->getAttribute('src');
             $img['width'] = $tag->getAttribute('width');
             $img['height'] = $tag->getAttribute('height');
             $flag = true;
             break;
         }
         if ($flag) {
             /* cache */
             $sql = (new Query())->select('updated_at')->from(Blog::tableName())->where(['id' => $this->id])->createCommand()->rawSql;
             $dependency = new DbDependency();
             $dependency->sql = $sql;
             Yii::$app->cache->set($key, $img, 0, $dependency);
         } else {
             Yii::$app->session->setFlash('warning', Yii::t('app', 'Missing image in blog post.'));
         }
     }
     return $img;
 }