Beispiel #1
0
 /**
  * Возвращает строку для вывода в компилированном темплейте PTL
  *
  * @param string   $image_tag
  * @param template $template
  *
  * @return string
  */
 protected function compile_image($image_tag, $template)
 {
     //    // Если у нас есть скомпилированная строка для данного тэга - возвращаем строку. Больше ничего делать не надо
     //    if(!empty($this->image_path_list[$image_tag])) {
     //      return $this->image_path_list[$image_tag];
     //    }
     // Ресолвим переменные template в $image_tag - получаем Resolved Image Tag (RIT)
     // Их названия - в квадратных скобочках типа [ID] или даже [production.ID]
     $image_tag = $this->image_tag_parse($image_tag, $template);
     // Проверяем наличие ключа RIT в хранилища. В нём не может быть несуществующих файлов по построению
     if (!empty($this->container[$image_tag[SKIN_IMAGE_TAG_RESOLVED]])) {
         return $this->container[$image_tag[SKIN_IMAGE_TAG_RESOLVED]];
     }
     // Шорткат
     $image_id = $image_tag[SKIN_IMAGE_TAG_IMAGE_ID];
     // Нет ключа RIT в контейнере - обсчёт пути для RIT из конфигурации
     empty($this->container[$image_id]) && !empty($this->config[$image_id]) ? $this->compile_try_path($image_id, $this->config[$image_id]) : false;
     // Всё еще пусто? Может у нас не image ID, а просто путь к файлу?
     empty($this->container[$image_id]) ? $this->compile_try_path($image_id, $image_id) : false;
     // Нет - image ID не является путём к файлу. Пора обратиться к предкам за помощью...
     // Пытаемся вытащить путь из родителя и применить к нему свои параметры
     // Тащим по ID изображения, а не по ТЭГУ - мало ли что там делает с путём родитель и как преобразовывает его в строку?
     if (empty($this->container[$image_id]) && !empty($this->parent)) {
         $this->container[$image_id] = $this->parent->compile_image($image_id, $template);
         // Если у родителя нет картинки - он вернет пустую строку. Тогда нам надо использовать заглушку - свою или родительскую
         empty($this->container[$image_id]) ? $this->container[$image_id] = $this->compile_image(SKIN_IMAGE_MISSED_FIELD, $template) : false;
     }
     return !empty($this->container[$image_id]) ? $this->apply_params($image_tag) : '';
 }