/** * Возвращает строку для вывода в компилированном темплейте 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) : ''; }