index.php
if (is_file('install/index.php')) {
Не надо так, лучше просто указать в документации что после распаковки архива нужно перейти по адресу: ваш.сайт/install - так как установка будет выполнена один раз за все время жизни сайта, а файловая будет дергаться при каждом обращении к сайту.
index.php
ini_set('display_errors', '1');
error_reporting(E_ERROR);
Не надо так, автор сайта сам должен решить, нужно ему включать пока ошибок и каких именно, или не нужно. Часто показ ошибок вообще отключается на проде.
app/core/core.php
Почему так много функция автозагрузки, отличающихся 1 строкой адреса?
app/core/route.php
$router->add('admin_ads_edit', $admin . '/ads/edit/(id:num)', 'AdminAds:edit', 'GET|POST');
1. Почему метод edit реагирует на GET запрос? Нужно либо PUT, либо (на крайний случай) POST. Подобное везде в роутере.
2. Зачем в роутинге имена вроде admin_ads_del? Они где то применяются?
В остальном роутер неплохой )
index.php
Cms::AutoClear();
Возможно я что то не понял, но зачем столько запросов в базу при каждом обращении к сайту?
models/
Рекомендую вынести логику получения и фильтрации данных из POST и GET в контроллеры, а методы моделей дополнить аргументами навроде:
function edit($id, $name, $text, ...)
Но сами модели тоже довольно странные, не такими они должны быть.