т.к. текст\база терминов постоянно меняются, то в большинстве случаем проще всего делать замену непосредственно перед выводом - заменяем нужные слова на блоки аля
<span class="library" data-word="слово сочетание в именительном падеже">слово сочетание</span>
, а дальше уже через ajax подгружаем нужную подсказку при наведении.
Если речь о БД, то блокировка требуется только для метода выполняющего запрос, остальные методы-запросы вызывают его в своем коде т.е. метод поиска последних новостей вызывает метод запроса и передает в него параметры.
Вариант с замыканиями будет сложнее в реализации.
Вначале выполняется условие, а затем уже выбираются столбцы, поэтому даже теоретически такой вариант не возможен. Замени в условии end_time_year на activate_time_year + {$year}