mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-10-28 19:18:58 -04:00
build/refactor/fix: tighten tooling, rename accessors to camelCase, and correct model bugs * build: tighten gitignore, lockfile, and script config - gitignore /build and /.php-cs-fixer.cache - allow core-js@3.50.0 postinstall script in package.json * refactor: rename snake_case data accessors to camelCase Rename get_info, get_multiple_info, get_sale_items, get_sale_payments, and save_customer across Customer, Employee, Item, Sale, and Supplier models to PSR-12 camelCase, updating every call site in controllers, libraries, and views. * test: update calls to match renamed camelCase accessors Update HomeTest, ItemsControllerTest, and ItemTest to call getInfo()/getMultipleInfo() instead of the old snake_case model methods. * fix: correct independent bugs in Item, Item_taxes, and Attribute models - Item::delete()/delete_list(): let $this->db->transStatus() alone decide success instead of accumulating a bitwise-AND over intermediate results, which could report failure (and trigger error toasts) even when the delete had actually completed - Item_taxes: correct $table property from 'item_taxes' to 'items_taxes' - Attribute::getDefinitionNames(): pass an array to QueryBuilder->whereNotIn(), which requires one Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
77 lines
2.1 KiB
PHP
77 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Models\Person;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Config\Services;
|
|
use function Tamtamchik\NameCase\str_name_case;
|
|
|
|
abstract class Persons extends Secure_Controller
|
|
{
|
|
protected Person $person;
|
|
|
|
/**
|
|
* @param string|null $module_id
|
|
*/
|
|
public function __construct(?string $module_id = null)
|
|
{
|
|
parent::__construct($module_id);
|
|
|
|
$this->person = model(Person::class);
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getIndex(): string
|
|
{
|
|
$data['table_headers'] = get_people_manage_table_headers();
|
|
|
|
return view('people/manage', $data);
|
|
}
|
|
|
|
/**
|
|
* Gives search suggestions based on what is being searched for
|
|
* @return ResponseInterface
|
|
*/
|
|
public function getSuggest(): ResponseInterface
|
|
{
|
|
$search = $this->request->getGet('term');
|
|
$suggestions = $this->person->get_search_suggestions($search);
|
|
|
|
return $this->response->setJSON($suggestions);
|
|
}
|
|
|
|
/**
|
|
* Gets one row for a person manage table. This is called using AJAX to update one row.
|
|
* @return ResponseInterface
|
|
*/
|
|
public function getRow(int $row_id): ResponseInterface
|
|
{
|
|
$data_row = get_person_data_row($this->person->getInfo($row_id));
|
|
|
|
return $this->response->setJSON($data_row);
|
|
}
|
|
|
|
/**
|
|
* Capitalize segments of a name, and put the rest into lower case.
|
|
* You can pass the characters you want to use as delimiters as exceptions.
|
|
* The function supports UTF-8 strings
|
|
*
|
|
* Example:
|
|
* i.e. <?php echo nameize("john o'grady-smith"); ?>
|
|
*
|
|
* returns John O'Grady-Smith
|
|
*/
|
|
protected function nameize(string $input): string
|
|
{
|
|
$adjusted_name = str_name_case($input);
|
|
|
|
// TODO: Use preg_replace to match HTML entities and convert them to lowercase. This is a workaround for https://github.com/tamtamchik/namecase/issues/20
|
|
return preg_replace_callback('/&[a-zA-Z0-9#]+;/', function ($matches) {
|
|
return strtolower($matches[0]);
|
|
}, $adjusted_name);
|
|
}
|
|
}
|