# CODE INDEX Generated: 2026-02-09 17:02:20 Scope: root `*.php`, `autoload/**/*.php`, `tests/**/*.php`. Excluded: `libraries/**`, `templates/**`. ## Summary - Files with declarations: 41 - Classes/interfaces/traits: 33 - Functions/methods: 333 ## Declarations By File ### `ajax.php` - Function: `__autoload_my_classes()` (line 3) ### `api.php` - Function: `__autoload_my_classes()` (line 4) ### `autoload/class.Cache.php` - Class: `Cache` (line 2) - Function: `store()` (line 4) - Function: `get_file_name()` (line 9) - Function: `fetch()` (line 20) ### `autoload/class.Chunk.php` - Class: `Chunk` (line 2) - Function: `__construct()` (line 62) - Function: `__destruct()` (line 108) - Function: `read()` (line 122) ### `autoload/class.Cron.php` - Class: `Cron` (line 3) - Function: `recursive_tasks()` (line 5) - Function: `import_tasks_from_email()` (line 121) - Function: `tasks_emails()` (line 132) ### `autoload/class.DbModel.php` - Class: `DbModel` (line 2) - Function: `__construct()` (line 8) - Function: `__get()` (line 20) - Function: `__set()` (line 26) - Function: `save()` (line 31) - Function: `delete()` (line 52) ### `autoload/class.Excel.php` - Class: `Excel` (line 10) - Function: `filename()` (line 21) - Function: `__construct()` (line 33) - Function: `headers()` (line 45) - Function: `send_to_file()` (line 53) - Function: `send()` (line 59) - Function: `bofMarker()` (line 70) - Function: `eofMarker()` (line 79) - Function: `left()` (line 88) - Function: `right()` (line 101) - Function: `up()` (line 111) - Function: `down()` (line 124) - Function: `top()` (line 133) - Function: `home()` (line 141) - Function: `number()` (line 151) - Function: `label()` (line 162) ### `autoload/class.Html.php` - Class: `Html` (line 3) - Function: `form_text()` (line 5) - Function: `input_switch()` (line 12) - Function: `select()` (line 19) - Function: `textarea()` (line 26) - Function: `input_icon()` (line 39) - Function: `input()` (line 52) - Function: `button()` (line 65) - Function: `panel()` (line 78) ### `autoload/class.S.php` - Class: `S` (line 2) - Function: `array_unique_multi()` (line 4) - Function: `number_display()` (line 16) - Function: `prepar_request()` (line 21) - Function: `seo()` (line 33) - Function: `no_pl_excel()` (line 48) - Function: `noPL()` (line 63) - Function: `alert()` (line 100) - Function: `hash()` (line 105) - Function: `sort_array_of_array()` (line 121) - Function: `json_to_array()` (line 130) - Function: `get_session()` (line 149) - Function: `del_session()` (line 154) - Function: `set_session()` (line 158) - Function: `get()` (line 163) - Function: `pre()` (line 184) - Function: `email_check()` (line 200) - Function: `send_email()` (line 205) ### `autoload/class.Tpl.php` - Class: `Tpl` (line 2) - Function: `__construct()` (line 7) - Function: `view()` (line 13) - Function: `secureHTML()` (line 21) - Function: `render()` (line 31) - Function: `__set()` (line 64) - Function: `__get()` (line 69) ### `autoload/Controllers/TasksController.php` - Class: `TasksController` (line 4) - Function: `workTime()` (line 8) - Function: `workTimeViewModel()` (line 20) - Function: `resolveTaskStatusForForm()` (line 28) - Function: `resolveTaskStatusForSave()` (line 38) - Function: `taskChangeStatus()` (line 48) - Function: `shouldStopTimerOnStatus()` (line 74) - Function: `shouldSendStatusChangeEmail()` (line 79) - Function: `sendEmailTaskChangeStatus()` (line 84) ### `autoload/controls/class.BackendSites.php` - Class: `BackendSites` (line 3) - Function: `topic_delete()` (line 5) - Function: `topic_accept()` (line 21) - Function: `topic_unaccept()` (line 31) - Function: `topic_save()` (line 41) - Function: `topic_edit()` (line 58) - Function: `topics()` (line 65) - Function: `collective_topics()` (line 70) - Function: `collective_topic_edit()` (line 75) - Function: `collective_topic_save()` (line 82) ### `autoload/controls/class.Crm.php` - Class: `Crm` (line 14) - Function: `client_delete()` (line 17) - Function: `client_save()` (line 32) - Function: `client_edit()` (line 51) - Function: `main_view()` (line 63) ### `autoload/controls/class.Cron.php` - Class: `Cron` (line 3) - Function: `main_view()` (line 5) ### `autoload/controls/class.Finances.php` - Class: `Finances` (line 3) - Function: `category_delete()` (line 5) - Function: `operation_save()` (line 18) - Function: `operation_delete()` (line 39) - Function: `operation_edit()` (line 54) - Function: `category_save()` (line 71) - Function: `category_edit()` (line 90) - Function: `operations_list()` (line 103) - Function: `main_view()` (line 137) ### `autoload/controls/class.Projects.php` - Class: `Projects` (line 3) - Function: `project_save()` (line 5) - Function: `project_edit()` (line 25) - Function: `main_view()` (line 42) - Function: `task_order_save()` (line 51) - Function: `action_mark_as_done()` (line 63) - Function: `action_edit()` (line 77) - Function: `task_update()` (line 91) - Function: `task_text_update()` (line 98) - Function: `task_text_new()` (line 104) - Function: `project_delete()` (line 110) - Function: `task_change_status()` (line 126) - Function: `ajax_user_tasks()` (line 137) - Function: `task_delete()` (line 177) - Function: `open_task_details()` (line 193) - Function: `task_details()` (line 201) - Function: `project_default()` (line 226) - Function: `tasks()` (line 235) ### `autoload/controls/class.Site.php` - Class: `Site` (line 3) - Function: `route()` (line 5) ### `autoload/controls/class.Tasks.php` - Class: `Tasks` (line 3) - Function: `task_change_dates()` (line 5) - Function: `task_delete()` (line 17) - Function: `main_view_by_ajax()` (line 34) - Function: `main_view()` (line 96) - Function: `action_change_status()` (line 183) - Function: `comment_delete()` (line 201) - Function: `comment_save()` (line 218) - Function: `action_delete()` (line 240) - Function: `action_save()` (line 259) - Function: `tasks_order_save()` (line 282) - Function: `send_email_task_change_status()` (line 292) - Function: `task_change_project()` (line 309) - Function: `task_change_client()` (line 320) - Function: `task_change_priority()` (line 334) - Function: `task_change_status()` (line 348) - Function: `task_end()` (line 353) - Function: `task_start()` (line 364) - Function: `task_edit()` (line 375) - Function: `task_save()` (line 398) - Function: `task_popup()` (line 423) - Function: `task_attachment_upload()` (line 449) - Function: `normalize_uploads_array()` (line 496) - Function: `task_attachment_delete()` (line 519) - Function: `task_attachment_rename()` (line 539) - Function: `filtr_save_form()` (line 559) - Function: `filtr_save()` (line 571) - Function: `filtr_update()` (line 589) - Function: `work_time()` (line 609) - Function: `change_task_work_date_start()` (line 614) - Function: `change_task_work_date_end()` (line 619) - Function: `work_delete()` (line 624) - Function: `filtr_set_default()` (line 633) - Function: `filtr_get()` (line 650) ### `autoload/controls/class.Users.php` - Class: `Users` (line 4) - Function: `permissions()` (line 7) - Function: `logout()` (line 46) - Function: `settings_save()` (line 57) - Function: `settings()` (line 71) - Function: `login()` (line 85) - Function: `login_form()` (line 117) ### `autoload/controls/class.Wiki.php` - Class: `Wiki` (line 4) - Function: `category_delete()` (line 7) - Function: `category_save()` (line 20) - Function: `category_edit()` (line 34) - Function: `category_preview()` (line 47) - Function: `main_view()` (line 59) ### `autoload/Domain/Tasks/MailToTaskImporter.php` - Class: `MailToTaskImporter` (line 4) - Function: `__construct()` (line 14) - Function: `importFromImap()` (line 27) - Function: `buildMailbox()` (line 197) - Function: `resolveClientIdBySenderDomain()` (line 214) - Function: `parseEmailsField()` (line 241) - Function: `extractDomainFromEmail()` (line 254) - Function: `parseReceivedDate()` (line 265) - Function: `extractSender()` (line 274) - Function: `decodeHeaderValue()` (line 289) - Function: `messageKey()` (line 306) - Function: `isMessageFinalized()` (line 318) - Function: `getImportStatus()` (line 324) - Function: `saveImportLog()` (line 329) - Function: `ensureImportTable()` (line 346) - Function: `extractMessageContent()` (line 365) - Function: `flattenParts()` (line 410) - Function: `parseSinglePart()` (line 441) - Function: `partParams()` (line 485) - Function: `decodePartBody()` (line 510) - Function: `mimeType()` (line 521) - Function: `htmlToText()` (line 540) - Function: `cleanBodyText()` (line 557) - Function: `prepareImportedTaskText()` (line 601) - Function: `shouldImportAttachment()` (line 622) - Function: `extractReferencedCidValues()` (line 647) - Function: `normalizeContentId()` (line 668) - Function: `parseWithAI()` (line 678) ### `autoload/Domain/Tasks/TaskAttachmentRepository.php` - Class: `TaskAttachmentRepository` (line 4) - Function: `__construct()` (line 11) - Function: `listByTaskId()` (line 25) - Function: `upload()` (line 46) - Function: `uploadFromContent()` (line 76) - Function: `rename()` (line 100) - Function: `delete()` (line 112) - Function: `purgeByTaskId()` (line 137) - Function: `effectiveTitle()` (line 159) - Function: `sanitizeFileName()` (line 165) - Function: `ensureStorage()` (line 173) - Function: `ensureTable()` (line 185) - Function: `storeMeta()` (line 209) - Function: `buildPublicUrl()` (line 230) - Function: `formatSize()` (line 235) - Function: `resolveFilePath()` (line 247) ### `autoload/Domain/Tasks/WorkTimeRepository.php` - Class: `WorkTimeRepository` (line 4) - Function: `__construct()` (line 9) - Function: `getClientsWithUnsettledTasks()` (line 20) - Function: `buildClientTasksByMonth()` (line 44) - Function: `getClientTaskRows()` (line 74) - Function: `getUnsettledTaskStatuses()` (line 91) - Function: `getTaskTotalTimeByMonth()` (line 96) ### `autoload/factory/class.BackendSites.php` - Class: `BackendSites` (line 3) - Function: `topic_delete()` (line 6) - Function: `topic_unaccept()` (line 12) - Function: `topic_accept()` (line 18) - Function: `topic_save()` (line 24) - Function: `topic()` (line 57) - Function: `collective_topic()` (line 63) - Function: `collective_topic_save()` (line 69) ### `autoload/factory/class.Crm.php` - Class: `Crm` (line 14) - Function: `settings()` (line 19) - Function: `get_client_name()` (line 31) - Function: `get_client_list()` (line 36) - Function: `client_delete()` (line 41) - Function: `client_details()` (line 47) - Function: `client_save()` (line 52) ### `autoload/factory/class.Cron.php` - Class: `Cron` (line 3) - Function: `remove_points_history()` (line 5) - Function: `update_points()` (line 18) - Function: `send_push()` (line 31) - Function: `send_emails()` (line 291) ### `autoload/factory/class.Finances.php` - Class: `Finances` (line 3) - Function: `first_operation_date()` (line 5) - Function: `get_operation_tags()` (line 11) - Function: `client_name()` (line 25) - Function: `clients_list_by_dates()` (line 31) - Function: `clients_list()` (line 37) - Function: `category_delete()` (line 43) - Function: `default_group()` (line 48) - Function: `groups_list()` (line 54) - Function: `operation_delete()` (line 60) - Function: `tags_json()` (line 66) - Function: `tags_list()` (line 72) - Function: `operations_list()` (line 91) - Function: `operation_details()` (line 105) - Function: `operation_save()` (line 115) - Function: `category_details()` (line 171) - Function: `category_save()` (line 177) - Function: `wallet_expenses_this_month()` (line 203) - Function: `wallet_income_this_month()` (line 214) - Function: `wallet_summary_this_month()` (line 225) - Function: `wallet_summary()` (line 236) - Function: `operations()` (line 244) - Function: `categories()` (line 273) ### `autoload/factory/class.Projects.php` - Class: `Projects` (line 3) - Function: `projects_list()` (line 5) - Function: `count_open_subtasks()` (line 12) - Function: `task_text_new()` (line 18) - Function: `task_text_update()` (line 29) - Function: `task_total_time()` (line 40) - Function: `send_email_task_change_status()` (line 63) - Function: `task_order_save()` (line 90) - Function: `action_mark_as_done()` (line 104) - Function: `action_name()` (line 112) - Function: `send_email_notification()` (line 118) - Function: `get_task_name()` (line 127) - Function: `set_project_as_default()` (line 133) - Function: `task_update()` (line 139) - Function: `project_delete()` (line 151) - Function: `project_name()` (line 157) - Function: `open_task()` (line 163) - Function: `task_change_status()` (line 176) - Function: `task_delete()` (line 247) - Function: `project_save()` (line 257) - Function: `project_user_id()` (line 329) - Function: `task_user_id()` (line 335) - Function: `project_details()` (line 341) - Function: `tasks_without_project()` (line 351) - Function: `get_project_name()` (line 365) - Function: `user_projects()` (line 371) - Function: `get_unassigned_tasks()` (line 402) - Function: `get_closed_tasks()` (line 431) - Function: `get_toreview_tasks()` (line 476) - Function: `get_inprogress_tasks()` (line 509) - Function: `user_tasks()` (line 555) ### `autoload/factory/class.Tasks.php` - Class: `Tasks` (line 4) - Function: `filtr_details()` (line 11) - Function: `get_priorities()` (line 17) - Function: `task_change_dates()` (line 22) - Function: `parent_tasks()` (line 37) - Function: `get_tasks_gantt()` (line 59) - Function: `work_delete()` (line 117) - Function: `change_task_work_date_end()` (line 122) - Function: `change_task_work_date_start()` (line 128) - Function: `task_works()` (line 134) - Function: `get_statuses()` (line 140) - Function: `clear_task_opened()` (line 150) - Function: `set_task_opened_by_user()` (line 156) - Function: `is_taks_is_opened_by_user()` (line 169) - Function: `get_filtrs()` (line 175) - Function: `filtr_update()` (line 180) - Function: `filtr_save()` (line 190) - Function: `action_change_status()` (line 208) - Function: `comment_delete()` (line 213) - Function: `comment_save()` (line 218) - Function: `action_delete()` (line 233) - Function: `action_save()` (line 239) - Function: `get_tasks()` (line 248) - Function: `get_open_task_id()` (line 295) - Function: `task_start()` (line 301) - Function: `task_end()` (line 340) - Function: `is_work_duration_too_short()` (line 368) - Function: `task_details()` (line 379) - Function: `task_total_time()` (line 394) - Function: `is_task_open()` (line 417) - Function: `work_time_clients()` (line 427) - Function: `task_save()` (line 434) - Function: `task_delete()` (line 532) - Function: `task_first_id()` (line 540) - Function: `task_delete_all()` (line 549) - Function: `task_delete_from_db()` (line 567) - Function: `filtr_set_default()` (line 582) - Function: `get_default_filtr()` (line 590) ### `autoload/factory/class.Users.php` - Class: `Users` (line 3) - Function: `user_details()` (line 5) - Function: `get_default_project()` (line 18) - Function: `get_user_email()` (line 24) - Function: `user_name()` (line 30) - Function: `users_list()` (line 39) - Function: `settings_save()` (line 62) - Function: `login()` (line 73) ### `autoload/factory/class.Wiki.php` - Class: `Wiki` (line 4) - Function: `category_delete()` (line 6) - Function: `category_save()` (line 11) - Function: `category_details()` (line 45) - Function: `category_users()` (line 52) - Function: `get_categories()` (line 58) ### `autoload/view/class.Cron.php` - Class: `Cron` (line 4) - Function: `main_view()` (line 6) ### `autoload/view/class.Projects.php` - Class: `Projects` (line 3) ### `autoload/view/class.Site.php` - Class: `Site` (line 3) - Function: `show()` (line 5) ### `autoload/view/class.Users.php` - Class: `Users` (line 3) - Function: `points_history()` (line 5) - Function: `settings()` (line 12) ### `ceidg.php` - Function: `__autoload_my_classes()` (line 3) - Function: `memory_get_process_usage()` (line 114) ### `cron.php` - Function: `__autoload_my_classes()` (line 4) ### `index.php` - Function: `__autoload_my_classes()` (line 3) ### `tests/Controllers/TasksControllerTest.php` - Function: `assert_same()` (line 7) - Function: `run_tasks_controller_tests()` (line 13) ### `tests/Domain/Tasks/TaskAttachmentRepositoryTest.php` - Function: `run_task_attachment_repository_tests()` (line 7) ### `tests/Domain/Tasks/WorkTimeRepositoryTest.php` - Function: `assert_true()` (line 7) - Function: `run_work_time_repository_tests()` (line 13)