/** * Обработчик ошибок, возникающих при работе функций любого типа (шаблоны, функции и т.д.) * * @param $output Ошибочный вывод. * @return string Информация об шибке */ function doit_ob_error_handler($output) { $error = error_get_last(); if ($error['type'] == 1) { $parent_function = d()->_active_function(); if (d()->db->errorCode() != 0) { $db_err = d()->db->errorInfo(); $_message = '<br>Также зафиксирована ошибка базы данных:<br>' . $db_err[2] . " (" . $db_err[1] . ")"; if (iam('developer')) { if ($db_err[1] == '1146') { $_message .= '<br> Создать таблицу <b>' . h(d()->bad_table) . '</b>? <form method="get" action="/admin/scaffold/new" style="display:inline;" target="_blank"><input type="submit" value="Создать"><input type="hidden" name="table" value="' . h(d()->bad_table) . '"></form> '; } if ($db_err[1] == '1054') { //Попытка создать столбик для таблицы //Unknown column 'user_id' $_column_name = array(); if (preg_match_all("/Unknown\\scolumn\\s\\'(.*?)\\'/", $db_err[2], $_column_name) == 1) { $_column_name = $_column_name[1][0]; $_message .= '<br> Создать столбец <b>' . h($_column_name) . '</b> в таблице ' . h(d()->bad_table) . '? <form method="post" action="/admin/scaffold/create_column" style="display:inline;" target="_blank"><input type="submit" value="Создать"><input type="hidden" name="table" value="' . h(d()->bad_table) . '"><input type="hidden" name="column" value="' . h($_column_name) . '"></form> '; } } $_message .= '<br> Провести обработку схемы? <form method="get" action="/admin/scaffold/update_scheme" style="display:inline;" target="_blank"><input type="submit" value="Провести"></form><br>'; } } $errfile = substr($error['file'], strlen($_SERVER['DOCUMENT_ROOT'])); return print_error_message(' ', $error['line'], $errfile, $error['message'], 'Ошибка при выполнении функции ' . $parent_function . ' ' . $_message); } return $output; }
function edit() { if (!iam('admin') && !iam('developer')) { return 'Только главный администратор может управлять доступом.'; } if (url(4) != 'add') { d()->user = d()->Admin_user(url(4)); if (d()->user->is_empty) { return 'Пользователь не найден'; } } else { d()->user = d()->Admin_user->limit(0); } print d()->view(); }
function admin_generate_scheme() { $non_migrate_columns = array('id', 'sort', 'admin_options', 'multi_domain'); if (!iam('developer')) { return 'Производить генерацию схемы могут только разработчики'; } set_time_limit(0); header("Content-Disposition: attachment; filename=schema.ini"); header("Content-Type: application/octet-stream"); header("Content-transfer-encoding: binary"); $tables = d()->db->query('SHOW TABLES')->fetchAll(); foreach ($tables as $row) { print "[schema.{$row[0]}]\r\n"; $columns = d()->db->query('SHOW COLUMNS FROM ' . DB_FIELD_DEL . $row[0] . DB_FIELD_DEL)->fetchAll(); $printed_array = array(); foreach ($columns as $column) { if (!in_array($column['Field'], $non_migrate_columns)) { $printed_array[] = $column['Field']; } } sort($printed_array); foreach ($printed_array as $column) { print "{$column}\r\n"; } } //d()->Scaffold->update_scheme(); //print d()->view(); }
</a></li> <?php } ?> <?php } ?> </ul> </li> <?php if (iam('developer')) { ?> <li> <a href="#" > Скаффолдинг </a> <ul > <li><a target="_blank" href="/admin/scaffold/new">Создать</a></li>