123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?php
- /**
- * Extended Build information base class
- */
- class BuildPassport {
- /**
- * Contains all builds passpord data as buildid=>data
- *
- * @var array
- */
- protected $allPassportData = array();
- /**
- * Predefined owner types array
- *
- * @var array
- */
- protected $ownersArr = array('' => '-');
- /**
- * Predefined floors counts
- *
- * @var array
- */
- protected $floorsArr = array('' => '-');
- /**
- * Contains predefined entrances counts
- *
- * @var array
- */
- protected $entrancesArr = array('' => '-');
- /**
- * Database abstraction layer placeholder
- *
- * @var object
- */
- protected $passportsDb = '';
- /**
- * Some static defines, routes etc here
- */
- const URL_PASSPORT = '?module=buildpassport';
- const ROUTE_BUILD = 'buildid';
- const DATA_SOURCE = 'buildpassport';
- const EX_NO_OWNERS = 'EMPTY_OWNERS_PARAM';
- const EX_NO_OPTS = 'NOT_ENOUGHT_OPTIONS';
- public function __construct() {
- $this->initDb();
- $this->loadData();
- $this->savePassport();
- $this->loadConfig();
- }
- /**
- * Inits passports database abstraction layer
- */
- protected function initDb() {
- $this->passportsDb = new NyanORM(self::DATA_SOURCE);
- }
- /**
- * loads all existing builds passport data into protected prop
- *
- * @return void
- */
- protected function loadData() {
- $this->allPassportData = $this->passportsDb->getAll('buildid');
- }
- /**
- * load build passport data options
- *
- * @return void
- */
- protected function loadConfig() {
- global $ubillingConfig;
- $altCfg = $ubillingConfig->getAlter();
- //extracting owners
- if (!empty($altCfg['BUILD_OWNERS'])) {
- $rawOwners = explode(',', $altCfg['BUILD_OWNERS']);
- foreach ($rawOwners as $ia => $eachowner) {
- $this->ownersArr[$eachowner] = $eachowner;
- }
- } else {
- throw new Exception(self::EX_NO_OWNERS);
- }
- //extracting floors and entrances
- if (!empty($altCfg['BUILD_EXTOPTS'])) {
- $rawOpts = explode(',', $altCfg['BUILD_EXTOPTS']);
- if (sizeof($rawOpts) < 3) {
- $maxFloors = $rawOpts[0];
- $maxEntrances = $rawOpts[1];
- for ($floors = 1; $floors <= $maxFloors; $floors++) {
- $this->floorsArr[$floors] = $floors;
- }
- for ($entrances = 1; $entrances <= $maxEntrances; $entrances++) {
- $this->entrancesArr[$entrances] = $entrances;
- }
- } else {
- throw new Exception(self::EX_NO_OPTS);
- }
- } else {
- throw new Exception(self::EX_NO_OPTS);
- }
- }
- /**
- * returns some build passport edit form
- *
- * @praram $buildid existing build id
- *
- * @return string
- */
- public function renderEditForm($buildid) {
- $buildid = ubRouting::filters($buildid, 'int');
- if (isset($this->allPassportData[$buildid])) {
- $currentData = $this->allPassportData[$buildid];
- } else {
- $currentData = array();
- }
- $inputs = wf_HiddenInput('savebuildpassport', $buildid);
- $inputs .= wf_Selector('powner', $this->ownersArr, __('Owner'), @$currentData['owner'], true);
- $inputs .= wf_TextInput('pownername', __('Owner name'), @$currentData['ownername'], true, 30);
- $inputs .= wf_TextInput('pownerphone', __('Owner phone'), @$currentData['ownerphone'], true, 30, 'mobile');
- $inputs .= wf_TextInput('pownercontact', __('Owner contact person'), @$currentData['ownercontact'], true, 30);
- $keys = (@$currentData['keys'] == 1) ? true : false;
- $inputs .= wf_CheckInput('pkeys', __('Keys available'), true, $keys);
- $inputs .= wf_TextInput('paccessnotices', __('Build access notices'), @$currentData['accessnotices'], true, 40);
- $inputs .= wf_CheckInput('panthill', __('Apartment house'), true, @$currentData['anthill']) . ' ';
- $inputs .= wf_Selector('pfloors', $this->floorsArr, __('Floors'), @$currentData['floors'], false);
- $inputs .= wf_Selector('pentrances', $this->entrancesArr, __('Entrances'), @$currentData['entrances'], false);
- $inputs .= wf_TextInput('papts', __('Apartments'), @$currentData['apts'], true, 5);
- $inputs .= __('Notes') . wf_tag('br');
- $inputs .= wf_TextArea('pnotes', '', @$currentData['notes'], true, '50x6');
- $inputs .= wf_CheckInput('pcontract', __('Contract signed'), false, @$currentData['contract']) . ' ';
- $inputs .= wf_CheckInput('pmediator', __('Signed through an intermediary'), true, @$currentData['mediator']) . ' ';
- $inputs .= wf_delimiter(0);
- $inputs .= wf_Submit(__('Save'));
- $result = wf_Form('', 'POST', $inputs, 'glamour');
- return ($result);
- }
- /**
- * Returns some build passport data preview
- *
- * @param int $buildid existing build id
- * @param string $buildAddress optional address string
- *
- * @return string
- */
- public function renderPassportData($buildid, $buildAddress = '') {
- $result = '';
- $buildid = ubRouting::filters($buildid, 'int');
- $rows = '';
- if (!empty($buildAddress)) {
- $cells = wf_TableCell(__('Address'), '30%', 'row2');
- $cells .= wf_TableCell($buildAddress);
- $rows .= wf_TableRow($cells, 'row3');
- }
- if (isset($this->allPassportData[$buildid])) {
- $currentData = $this->allPassportData[$buildid];
- $cells = wf_TableCell(__('Owner'), '30%', 'row2');
- $cells .= wf_TableCell($currentData['owner']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Owner name'), '', 'row2');
- $cells .= wf_TableCell($currentData['ownername']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Owner phone'), '', 'row2');
- $cells .= wf_TableCell($currentData['ownerphone']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Owner contact person'), '', 'row2');
- $cells .= wf_TableCell($currentData['ownercontact']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Keys available'), '', 'row2');
- $keysLabel = ($currentData['keys']) ? wf_img_sized('skins/icon_key.gif', __('Keys available'), 12) . ' ' . __('Yes') : __('No');
- $cells .= wf_TableCell($keysLabel);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Build access notices'), '', 'row2');
- $cells .= wf_TableCell($currentData['accessnotices']);
- $rows .= wf_TableRow($cells, 'row3');
- $antHillLabel = ($currentData['anthill']) ? wf_img_sized('skins/ymaps/build.png', '', 12) . ' ' . __('Yes') : wf_img_sized('skins/ymaps/home.png', '', 12) . ' ' . __('No');
- $cells = wf_TableCell(__('Apartment house'), '', 'row2');
- $cells .= wf_TableCell($antHillLabel);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Floors'), '', 'row2');
- $cells .= wf_TableCell($currentData['floors']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Entrances'), '', 'row2');
- $cells .= wf_TableCell($currentData['entrances']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Apartments'), '', 'row2');
- $cells .= wf_TableCell($currentData['apts']);
- $rows .= wf_TableRow($cells, 'row3');
- $cells = wf_TableCell(__('Notes'), '', 'row2');
- $cells .= wf_TableCell($currentData['notes']);
- $rows .= wf_TableRow($cells, 'row3');
- $contractSignLabel = ($currentData['contract']) ? __('Yes') : __('No');
- $cells = wf_TableCell(__('Contract signed'), '', 'row2');
- $cells .= wf_TableCell($contractSignLabel);
- $rows .= wf_TableRow($cells, 'row3');
- $mediatorLabel = ($currentData['mediator']) ? __('Yes') : __('No');
- $cells = wf_TableCell(__('Signed through an intermediary'), '', 'row2');
- $cells .= wf_TableCell($mediatorLabel);
- $rows .= wf_TableRow($cells, 'row3');
- $result = wf_TableBody($rows, '100%', 0);
- }
- return ($result);
- }
- /**
- * saves new passport data for some build
- *
- * @return void
- */
- protected function savePassport() {
- if (ubRouting::checkPost('savebuildpassport')) {
- $buildid = ubRouting::post('savebuildpassport', 'int');
- $owner = ubRouting::post('powner', 'mres');
- $ownername = ubRouting::post('pownername', 'mres');
- $ownerphone = ubRouting::post('pownerphone', 'mres');
- $ownercontact = ubRouting::post('pownercontact', 'mres');
- $keys = (ubRouting::checkPost('pkeys')) ? 1 : 0;
- $accessnotices = ubRouting::post('paccessnotices', 'mres');
- $floors = ubRouting::post('pfloors', 'mres');
- $entrances = ubRouting::post('pentrances', 'mres');
- $apts = ubRouting::post('papts', 'mres');
- $notes = ubRouting::post('pnotes', 'mres');
- $contract = (ubRouting::checkPost('pcontract')) ? 1 : 0;
- $mediator = (ubRouting::checkPost('pmediator')) ? 1 : 0;
- $anthill = (ubRouting::checkPost('panthill')) ? 1 : 0;
- //filling new data
- $this->passportsDb->data('owner', $owner);
- $this->passportsDb->data('ownername', $ownername);
- $this->passportsDb->data('ownerphone', $ownerphone);
- $this->passportsDb->data('ownercontact', $ownercontact);
- $this->passportsDb->data('keys', $keys);
- $this->passportsDb->data('accessnotices', $accessnotices);
- $this->passportsDb->data('floors', $floors);
- $this->passportsDb->data('apts', $apts);
- $this->passportsDb->data('entrances', $entrances);
- $this->passportsDb->data('notes', $notes);
- $this->passportsDb->data('contract', $contract);
- $this->passportsDb->data('mediator', $mediator);
- $this->passportsDb->data('anthill', $anthill);
- if (isset($this->allPassportData[$buildid])) {
- //updating existing record
- $this->passportsDb->where('buildid', '=', $buildid);
- $this->passportsDb->save();
- log_register('BUILD PASSPORT SAVE [' . $buildid . ']');
- } else {
- //new record
- $this->passportsDb->data('buildid', $buildid);
- $this->passportsDb->create();
- log_register('BUILD PASSPORT CREATE [' . $buildid . ']');
- }
- //reload actual data after saving changes
- $this->loadData();
- }
- }
- /**
- * Returns build passport data if it exists
- *
- * @param int $buildId
- *
- * @return array
- */
- public function getPassportData($buildId) {
- $result = array();
- if (isset($this->allPassportData[$buildId])) {
- $result = $this->allPassportData[$buildId];
- }
- return($result);
- }
- }
|