Source of file api.documents.php
Size: 43,584 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.documents.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037 | <?php /** * DOCx profile documents base class */ class ProfileDocuments { /** * Contains available document templates as id=>data * * @var array */ protected $templates = array(); /** * Contains current instance user login * * @var string */ protected $userLogin = ''; /** * Contains available users data * * @var array */ protected $userData = array(); /** * Conteins associated agents data for current user as key=>value * * @var array */ protected $userAgentData = array(); /** * Contains some custom fields data * * @var array */ protected $customFields = array(); /** * Contains system alter config as key=>value * * @var array */ protected $altcfg = array(); /** * Contains user documents as id=>data * * @var array */ protected $userDocuments = array(); /** * Contains all users documents array as id=>data * * @var array */ protected $allUserDocuments = array(); const TEMPLATES_PATH = 'content/documents/pl_docx/'; const DOCUMENTS_PATH = 'content/documents/pl_cache/'; public function __construct() { global $ubillingConfig; $this->loadTemplates(); $this->altcfg = $ubillingConfig->getAlter(); } /** * load templates into private prop * * @return void */ protected function loadTemplates() { $query = "SELECT * from `docxtemplates`"; $all = simple_queryall($query); if (!empty($all)) { foreach ($all as $io => $each) { $this->templates[$each['id']] = $each; } } } /** * Sets user login * * @param string $login existing users login * * @return void */ public function setLogin($login) { $login = mysql_real_escape_string($login); $this->userLogin = $login; } /** * gets current user login * * @return string */ public function getLogin() { return ($this->userLogin); } /** * gets user data by previously setted login * * @return array */ public function getUserData() { if (!empty($this->userLogin)) { if (isset($this->userData[$this->userLogin])) { $currentUserData = $this->userData[$this->userLogin]; return ($currentUserData); } else { throw new Exception('NO_USER_DATA_FOUND'); } } else { throw new Exception('NO_USER_LOGIN_SET'); } } /** * Loads current user assigned agent data into private property * * @return void */ protected function loadUserAgentData() { if (!empty($this->userLogin)) { $rawData = zb_AgentAssignedGetDataFast($this->userLogin, $this->userData[$this->userLogin]['ADDRESS']); @$this->userAgentData['AGENTEDRPO'] = $rawData['edrpo']; @$this->userAgentData['AGENTNAME'] = $rawData['contrname']; @$this->userAgentData['AGENTID'] = $rawData['id']; @$this->userAgentData['AGENTBANKACC'] = $rawData['bankacc']; @$this->userAgentData['AGENTBANKNAME'] = $rawData['bankname']; @$this->userAgentData['AGENTBANKCODE'] = $rawData['bankcode']; @$this->userAgentData['AGENTIPN'] = $rawData['ipn']; @$this->userAgentData['AGENTLICENSE'] = $rawData['licensenum']; @$this->userAgentData['AGENTJURADDR'] = $rawData['juraddr']; @$this->userAgentData['AGENTPHISADDR'] = $rawData['phisaddr']; @$this->userAgentData['AGENTPHONE'] = $rawData['phone']; @$this->userAgentData['AGENTNAMEABBR'] = $rawData['agnameabbr']; @$this->userAgentData['AGENTSIGNATORY'] = $rawData['agsignatory']; @$this->userAgentData['AGENTSIGNATORY2'] = $rawData['agsignatory2']; @$this->userAgentData['AGENTBASIS'] = $rawData['agbasis']; @$this->userAgentData['AGENTMAIL'] = $rawData['agmail']; @$this->userAgentData['AGENTSITE'] = $rawData['siteurl']; } } /** * Returns current user assigned agent data * * @return array */ public function getUserAgentData() { if (!empty($this->userLogin)) { $this->loadUserAgentData(); return ($this->userAgentData); } else { throw new Exception('NO_USER_LOGIN_SET'); } } /** * returns last generated ID from documents registry * * @return int */ protected function getDocumentLastId() { $query = "SELECT `id` from `docxdocuments` ORDER BY `id` DESC LIMIT 1"; $data = simple_query($query); if (!empty($data)) { $result = $data['id']; } else { $result = 0; } return ($result); } /** * Transforms and localizes date * * @param string $date * * @return string */ protected function transformDateLit($date) { $result = ''; if (!empty($date)) { $dateF = date("d F Y", strtotime($date)); $result = rcms_date_localise($dateF); } else { $result = __('None'); } return($result); } /** * Returns contract dates data * * @return array */ protected function getContractDatesAll() { $result = array(); $query = "SELECT `login`,`contract` from `contracts`"; $allcontracts = simple_queryall($query); $contractDates = new ContractDates(); $dates = $contractDates->getAllDatesFull(); if (!empty($allcontracts)) { foreach ($allcontracts as $io => $eachcontract) { $result[$eachcontract['login']]['contractnum'] = $eachcontract['contract']; if (isset($dates[$eachcontract['contract']])) { $result[$eachcontract['login']]['contractdate'] = $dates[$eachcontract['contract']]['date']; $result[$eachcontract['login']]['contractdatelit'] = $this->transformDateLit($dates[$eachcontract['contract']]['date']); $result[$eachcontract['login']]['contractdatefromlit'] = $this->transformDateLit($dates[$eachcontract['contract']]['from']); $result[$eachcontract['login']]['contractdatetilllit'] = $this->transformDateLit($dates[$eachcontract['contract']]['till']); } else { $result[$eachcontract['login']]['contractdate'] = '1970-01-01'; $result[$eachcontract['login']]['contractdatelit'] = __('None'); $result[$eachcontract['login']]['contractdatefromlit'] = __('None'); $result[$eachcontract['login']]['contractdatetilllit'] = __('None'); } } } return($result); } /** * loads user data for template processing * * @return void */ public function loadAllUserData() { $userdata = array(); $alluserdata = zb_UserGetAllStargazerData(); $tariffspeeds = zb_TariffGetAllSpeeds(); $tariffprices = zb_TariffGetPricesAll(); $multinetdata = zb_MultinetGetAllData(); $allcontracts = zb_UserGetAllLoginContracts(); $contractDates = $this->getContractDatesAll(); $allphonedata = zb_UserGetAllPhoneData(); $allrealnames = zb_UserGetAllRealnames(); $alladdress = zb_AddressGetFulladdresslist(); $allemails = zb_UserGetAllEmails(); $allnasdata = zb_NasGetAllData(); $cf = new CustomFields(); $allRawCfData = $cf->getAllFieldsData(); $allCfData = array(); $allCondets = array(); $morph = new UBMorph(); $allpdata = zb_UserPassportDataGetAll(); $curdate = curdate(); $lastDocId = $this->getDocumentLastId(); $newDocId = $lastDocId + 1; if ($this->altcfg['OPENPAYZ_SUPPORT']) { if ($this->altcfg['OPENPAYZ_REALID']) { $allopcustomers = zb_TemplateGetAllOPCustomers(); } } if ($this->altcfg['CONDET_ENABLED']) { $conDet = new ConnectionDetails(); $allCondets = $conDet->getAllData(); } //CF data preprocessing if (!empty($allRawCfData)) { foreach ($allRawCfData as $io => $each) { $allCfData[$each['login']][$each['typeid']] = $each['content']; } } if (!empty($alluserdata)) { foreach ($alluserdata as $io => $eachuser) { $userdata[$eachuser['login']]['LOGIN'] = $eachuser['login']; $userdata[$eachuser['login']]['PASSWORD'] = $eachuser['Password']; $userdata[$eachuser['login']]['USERHASH'] = crc16($eachuser['login']); $userdata[$eachuser['login']]['TARIFF'] = $eachuser['Tariff']; @$userdata[$eachuser['login']]['TARIFFPRICE'] = $tariffprices[$eachuser['Tariff']]; $userdata[$eachuser['login']]['CASH'] = $eachuser['Cash']; $userdata[$eachuser['login']]['CREDIT'] = $eachuser['Credit']; $userdata[$eachuser['login']]['DOWN'] = $eachuser['Down']; $userdata[$eachuser['login']]['PASSIVE'] = $eachuser['Passive']; $userdata[$eachuser['login']]['AO'] = $eachuser['AlwaysOnline']; @$userdata[$eachuser['login']]['CONTRACT'] = $allcontracts[$eachuser['login']]; @$userdata[$eachuser['login']]['CONTRACTDATE'] = $contractDates[$eachuser['login']]['contractdate']; @$userdata[$eachuser['login']]['CONTRACTDATELIT'] = $contractDates[$eachuser['login']]['contractdatelit']; @$userdata[$eachuser['login']]['CONTRACTDATEFROMLIT'] = $contractDates[$eachuser['login']]['contractdatefromlit']; @$userdata[$eachuser['login']]['CONTRACTDATETILLLIT'] = $contractDates[$eachuser['login']]['contractdatetilllit']; @$userdata[$eachuser['login']]['REALNAME'] = $allrealnames[$eachuser['login']]; @$userdata[$eachuser['login']]['ADDRESS'] = $alladdress[$eachuser['login']]; @$userdata[$eachuser['login']]['EMAIL'] = $allemails[$eachuser['login']]; @$userdata[$eachuser['login']]['PHONE'] = $allphonedata[$eachuser['login']]['phone']; @$userdata[$eachuser['login']]['MOBILE'] = $allphonedata[$eachuser['login']]['mobile']; //openpayz payment ID if ($this->altcfg['OPENPAYZ_REALID']) { @$userdata[$eachuser['login']]['PAYID'] = $allopcustomers[$eachuser['login']]; } else { @$userdata[$eachuser['login']]['PAYID'] = ip2int($eachuser['IP']); } //traffic params $userdata[$eachuser['login']]['TRAFFIC'] = $eachuser['D0'] + $eachuser['U0']; $userdata[$eachuser['login']]['TRAFFICDOWN'] = $eachuser['D0']; $userdata[$eachuser['login']]['TRAFFICUP'] = $eachuser['U0']; //net params @$userdata[$eachuser['login']]['IP'] = $eachuser['IP']; @$userdata[$eachuser['login']]['MAC'] = $multinetdata[$eachuser['IP']]['mac']; @$userdata[$eachuser['login']]['NETID'] = $multinetdata[$eachuser['IP']]['netid']; @$userdata[$eachuser['login']]['HOSTID'] = $multinetdata[$eachuser['IP']]['id']; //nas data @$usernas = zb_NasGetParams($multinetdata[$eachuser['IP']]['netid'], $allnasdata); @$userdata[$eachuser['login']]['NASID'] = $usernas['id']; @$userdata[$eachuser['login']]['NASIP'] = $usernas['nasip']; @$userdata[$eachuser['login']]['NASNAME'] = $usernas['nasname']; @$userdata[$eachuser['login']]['NASTYPE'] = $usernas['nastype']; if (isset($tariffspeeds[$eachuser['Tariff']])) { $userdata[$eachuser['login']]['SPEEDDOWN'] = $tariffspeeds[$eachuser['Tariff']]['speeddown']; $userdata[$eachuser['login']]['SPEEDUP'] = $tariffspeeds[$eachuser['Tariff']]['speedup']; } else { //if no tariff speed defined zero speed by default $userdata[$eachuser['login']]['SPEEDDOWN'] = 0; $userdata[$eachuser['login']]['SPEEDUP'] = 0; } //passport data @$userdata[$eachuser['login']]['PBIRTH'] = $allpdata[$eachuser['login']]['birthdate']; @$userdata[$eachuser['login']]['PNUM'] = $allpdata[$eachuser['login']]['passportnum']; @$userdata[$eachuser['login']]['PDATE'] = $allpdata[$eachuser['login']]['passportdate']; @$userdata[$eachuser['login']]['PWHO'] = $allpdata[$eachuser['login']]['passportwho']; @$userdata[$eachuser['login']]['PCITY'] = $allpdata[$eachuser['login']]['pcity']; @$userdata[$eachuser['login']]['PSTREET'] = $allpdata[$eachuser['login']]['pstreet']; @$userdata[$eachuser['login']]['PBUILD'] = $allpdata[$eachuser['login']]['pbuild']; @$userdata[$eachuser['login']]['PAPT'] = $allpdata[$eachuser['login']]['papt']; @$userdata[$eachuser['login']]['PINN'] = $allpdata[$eachuser['login']]['pinn']; //signup details @$userdata[$eachuser['login']]['CONDETPRICE'] = $allCondets[$eachuser['login']]['price']; @$userdata[$eachuser['login']]['CONDETPERIOD'] = $allCondets[$eachuser['login']]['term']; @$userdata[$eachuser['login']]['CONDETPRICELIT'] = $morph->sum2str($allCondets[$eachuser['login']]['price']); @$userdata[$eachuser['login']]['TARIFFPRICELIT'] = $morph->sum2str($tariffprices[$eachuser['Tariff']]); //other document data @$userdata[$eachuser['login']]['DOCID'] = $newDocId; @$userdata[$eachuser['login']]['CURDATE'] = $curdate; @$userdata[$eachuser['login']]['CURDATELIT'] = $this->transformDateLit($curdate); @$userdata[$eachuser['login']]['FIRSTDAYMONTH'] = $this->transformDateLit(date("Y-m-01")); @$userdata[$eachuser['login']]['FIRSTDAYNEXTMONTH'] = $this->transformDateLit(date("Y-m-01", strtotime('first day of +1 month'))); @$userdata[$eachuser['login']]['LASTDAYMONTH'] = $this->transformDateLit(date("Y-m-t")); @$userdata[$eachuser['login']]['LASTDAYNEXTMONTH'] = $this->transformDateLit(date("Y-m-t", strtotime('first day of +1 month'))); //custom profile fields if (isset($allCfData[$eachuser['login']])) { if (!empty($allCfData[$eachuser['login']])) { foreach ($allCfData[$eachuser['login']] as $eachFieldTypeId => $eachFieldContent) { @$userdata[$eachuser['login']]['CFIELD:' . $eachFieldTypeId] = $eachFieldContent; } } } } } $this->userData = $userdata; } /** * Returns available document templates prop * * @return array */ public function getTemplates() { return ($this->templates); } /** * Renders existing document template edit form * * @param int $templateId * * @return string */ protected function renderTemplateEditForm($templateId) { $result = ''; $templateId = vf($templateId, 3); if (isset($this->templates[$templateId])) { $templateData = $this->templates[$templateId]; $inputs = wf_HiddenInput('editsometemplateid', $templateId); $inputs .= wf_TextInput('editsometemplatename', __('Template display name'), $templateData['name'], true, 20); $inputs .= wf_CheckInput('editsometemplatepublic', __('Template is public'), true, $templateData['public']); $inputs .= wf_Submit(__('Save')); $result .= wf_Form('', 'POST', $inputs, 'glamour'); } return ($result); } /** * Saves changes to existing document template * * @return void */ public function saveTemplate() { if (wf_CheckPost(array('editsometemplateid', 'editsometemplatename'))) { $templateId = vf($_POST['editsometemplateid'], 3); if (isset($this->templates[$templateId])) { $templateData = $this->templates[$templateId]; $where = "WHERE `id`='" . $templateId . "';"; $newTemplateName = $_POST['editsometemplatename']; $newTemplatePublic = (wf_CheckPost(array('editsometemplatepublic'))) ? 1 : 0; if ($templateData['name'] != $newTemplateName) { simple_update_field('docxtemplates', 'name', $newTemplateName, $where); log_register('PLDOCS CHANGE TEMPLATE [' . $templateId . '] NAME `' . $newTemplateName . '`'); } if ($templateData['public'] != $newTemplatePublic) { simple_update_field('docxtemplates', 'public', $newTemplatePublic, $where); log_register('PLDOCS CHANGE TEMPLATE [' . $templateId . '] PUBLIC `' . $newTemplatePublic . '`'); } } } } /** * returns available templates list with some controls * * @return string */ public function renderTemplatesList() { $cells = wf_TableCell(__('ID')); $cells .= wf_TableCell(__('Date')); $cells .= wf_TableCell(__('Admin')); $cells .= wf_TableCell(__('Public')); $cells .= wf_TableCell(__('Name')); $cells .= wf_TableCell(__('Path')); $cells .= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); if (!empty($this->templates)) { foreach ($this->templates as $io => $each) { $cells = wf_TableCell($each['id']); $cells .= wf_TableCell($each['date']); $cells .= wf_TableCell($each['admin']); $cells .= wf_TableCell(web_bool_led($each['public'])); $cells .= wf_TableCell($each['name']); $cells .= wf_TableCell($each['path']); $actlinks = wf_JSAlert('?module=pl_documents&deletetemplate=' . $each['id'] . '&username=' . $this->userLogin, web_delete_icon(), 'Removing this may lead to irreparable results') . ' '; $actlinks .= wf_modalAuto(web_edit_icon(), __('Edit'), $this->renderTemplateEditForm($each['id'])) . ' '; $actlinks .= wf_Link('?module=pl_documents&download=' . $each['path'] . '&username=' . $this->userLogin, wf_img('skins/icon_download.png', __('Download'))) . ' '; $actlinks .= wf_Link('?module=pl_documents&print=' . $each['id'] . '&custom=true&username=' . $this->userLogin, wf_img('skins/icon_print.png') . ' ' . __('Print'), false, 'ubButton'); $cells .= wf_TableCell($actlinks); $rows .= wf_TableRow($cells, 'row3'); } } $result = wf_TableBody($rows, '100%', '0', 'sortable'); return ($result); } /** * returns template upload form * * @return string */ public function uploadForm() { $uploadinputs = wf_HiddenInput('uploadtemplate', 'true'); $uploadinputs .= wf_TextInput('templatedisplayname', __('Template display name'), '', true, 20); $uploadinputs .= wf_CheckInput('publictemplate', __('Template is public'), true, false); $uploadinputs .= __('Upload new document template from HDD') . wf_tag('br'); $uploadinputs .= wf_tag('input', false, '', 'id="fileselector" type="file" name="uldocxtempplate"') . wf_tag('br'); $uploadinputs .= wf_Submit('Upload'); $uploadform = bs_UploadFormBody('', 'POST', $uploadinputs, 'glamour'); return ($uploadform); } /** * register uploaded template into database * * @param string $path path to template file * @param string $displayname template display name * @param int $public is template accesible from userstats * * @return void */ protected function registerTemplateDB($path, $displayname, $public) { $path = mysql_real_escape_string($path); $displayname = mysql_real_escape_string($displayname); $public = vf($public, 3); $admin = whoami(); $date = curdatetime(); $query = "INSERT INTO `docxtemplates` (`id`, `date`, `admin`, `public`, `name`, `path`) VALUES (NULL, '" . $date . "', '" . $admin . "', '" . $public . "', '" . $displayname . "', '" . $path . "');"; nr_query($query); log_register("PLDOCS ADD TEMPLATE `" . $displayname . "`"); } /** * unregister existing document template * * @param int $id existing template id * * @return void */ protected function unregisterTemplateDB($id) { $id = vf($id, 3); $query = "DELETE from `docxtemplates` WHERE `id`='" . $id . "';"; nr_query($query); log_register("PLDOCS UNREG TEMPLATE [" . $id . "]"); } /** * deletes existing template * * @param $id int existing template id * * @return void */ public function deleteTemplate($id) { $id = ubRouting::filters($id, 'int'); $templatesDb = new NyanORM('docxtemplates'); $templatesDb->where('id', '=', $id); $templateData = $templatesDb->getAll('id'); if (!empty($templateData)) { $templateFileToDelete = $templateData[$id]['path']; if (file_exists(self::TEMPLATES_PATH . $templateFileToDelete)) { rcms_delete_files(self::TEMPLATES_PATH . $templateFileToDelete); log_register('PLDOCS DELETE TEMPLATE [' . $id . ']'); } else { log_register('PLDOCS DELETE TEMPLATE [' . $id . '] FAIL `' . $templateFileToDelete . '` NOT_EXISTS'); } } else { log_register('PLDOCS DELETE TEMPLATE [' . $id . '] FAIL NO_DB_REC'); } $this->unregisterTemplateDB($id); } /** * do the docx template upload subroutine * * @return boolean */ public function doUpload() { $uploaddir = self::TEMPLATES_PATH; $allowedExtensions = array("docx"); $result = false; $extCheck = true; //check file type foreach ($_FILES as $file) { if ($file['tmp_name'] > '') { if (@!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) { $extCheck = false; } } } if ($extCheck) { if (wf_CheckPost(array('templatedisplayname'))) { $displayName = $_POST['templatedisplayname']; $templatePublic = (isset($_POST['publictemplate'])) ? 1 : 0; $filename = zb_rand_string(8) . '.docx'; $uploadfile = $uploaddir . $filename; if (move_uploaded_file($_FILES['uldocxtempplate']['tmp_name'], $uploadfile)) { $result = true; //save template into database $this->registerTemplateDB($filename, $displayName, $templatePublic); } else { show_error(__('Error'), __('Cant upload file to') . ' ' . self::TEMPLATES_PATH); } } else { show_error(__('No display name for template')); } } else { show_error(__('Wrong file type')); } return ($result); } /** * returns custom documents form fields * * @return string */ public function customDocumentFieldsForm() { $rawServices = $this->altcfg['DOCX_SERVICES']; $availServices = array(); if (!empty($rawServices)) { $rawServices = explode(',', $rawServices); if (!empty($rawServices)) { foreach ($rawServices as $io => $each) { $availServices[__($each)] = __($each); } } } //public flag state detection $publicFlag = false; if (wf_CheckGet(array('print'))) { $templateId = vf($_GET['print'], 3); if (isset($this->templates[$templateId])) { if ($this->templates[$templateId]['public'] == 1) { $publicFlag = true; } } } $inputs = wf_DatePickerPreset('customdate', curdate()); $inputs .= wf_tag('br'); $inputs .= wf_TextInput('customrealname', __('Real Name'), @$this->userData[$this->userLogin]['REALNAME'], true, '20'); $inputs .= wf_TextInput('customphone', __('Phone'), @$this->userData[$this->userLogin]['PHONE'], true, '10'); $inputs .= wf_Selector('customservice', $availServices, __('Service'), '', 'true'); $inputs .= wf_TextInput('customnotes', __('Notes'), '', true, '20'); $inputs .= wf_TextInput('customsum', __('Sum'), @$this->userData[$this->userLogin]['TARIFFPRICE'], true, '10'); if ($this->altcfg['CORPS_ENABLED']) { $inputs .= wf_tag('br') . wf_tag('span', false, 'row3') . ' ' . __('Corporate users') . ' ' . wf_tag('span', true) . wf_tag('br'); $greed = new Avarice(); $corpsRuntime = $greed->runtime('CORPS'); if (!empty($corpsRuntime)) { $corps = new Corps(); if ($corps->userIsCorporate($this->userLogin)) { //this is realy corp user $corpData = $corps->corpGetDataByLogin($this->userLogin); $inputs .= wf_TextInput('corpname', __('Corp name'), htmlspecialchars(@$corpData['corpname'], ENT_QUOTES), true, '50'); $inputs .= wf_TextInput('corpaddress', __('Address'), @$corpData['address'], true, '30'); $inputs .= wf_TextInput('corpdoctype', __('Document type'), @$corpData['doctype'], true, '30'); $inputs .= wf_TextInput('corpdocnum', __('Document number'), @$corpData['docnum'], true, '30'); $inputs .= wf_TextInput('corpdocdate', __('Document date'), @$corpData['docdate'], true, '30'); $inputs .= wf_TextInput('corpbankacc', __('Bank account'), @$corpData['bankacc'], true, '30'); $inputs .= wf_TextInput('corpbankname', __('Bank name'), htmlspecialchars(@$corpData['bankname'], ENT_QUOTES), true, '30'); $inputs .= wf_TextInput('corpbankmfo', __('Bank MFO'), @$corpData['bankmfo'], true, '30'); $inputs .= wf_TextInput('corpedrpou', __('EDRPOU'), @$corpData['edrpou'], true, '30'); $inputs .= wf_TextInput('corpndstaxnum', __('NDS number'), @$corpData['ndstaxnum'], true, '30'); $inputs .= wf_TextInput('corpinncode', __('INN code'), @$corpData['inncode'], true, '30'); $inputs .= wf_TextInput('corptaxtype', __('Tax type'), @$corpData['taxtype'], true, '30'); $inputs .= wf_TextInput('corpnameabbr', __('Short name'), @$corpData['corpnameabbr'], true, '30'); $inputs .= wf_TextInput('corpsignatory', __('Signatory'), @$corpData['corpsignatory'], true, '30'); $inputs .= wf_TextInput('corpsignatory2', __('Signatory') . ' 2', @$corpData['corpsignatory2'], true, '30'); $inputs .= wf_TextInput('corpbasis', __('Basis'), @$corpData['corpbasis'], true, '30'); $inputs .= wf_TextInput('corpemail', __('Email'), @$corpData['corpemail'], true, '30'); $inputs .= wf_TextInput('corpnotes', __('Notes'), @$corpData['notes'], true, '30'); } else { $inputs .= __('Private user'); } } else { $inputs .= __('No license key available'); } } $inputs .= wf_HiddenInput('customfields', 'true'); $publicLabel = wf_tag('abbr', false, '', 'title="' . __('users can download it themselves') . '"') . __('Save this document as public') . wf_tag('abbr', true); $inputs .= wf_CheckInput('savedocaspublic', $publicLabel, true, $publicFlag); $inputs .= wf_tag('br'); $inputs .= wf_Submit(__('Create')); $result = wf_Form('', 'POST', $inputs, 'glamour'); return ($result); } /** * sets some custom template fields from post request * * @return void */ public function setCustomFields() { //ugly debug code $pdvPercent = $this->altcfg['DOCX_NDS']; if (wf_CheckPost(array('customfields'))) { $morph = new UBMorph(); @$this->customFields['CUSTDATE'] = $_POST['customdate']; @$this->customFields['CUSTREALNAME'] = $_POST['customrealname']; @$this->customFields['CUSTPHONE'] = $_POST['customphone']; @$this->customFields['CUSTSERVICE'] = $_POST['customservice']; @$this->customFields['CUSTNOTES'] = $_POST['customnotes']; @$this->customFields['CUSTSUM'] = $_POST['customsum']; @$this->customFields['CUSTPHONE'] = $_POST['customphone']; $pdv = 0; if (is_numeric($this->customFields['CUSTSUM'])) { @$pdv = ($this->customFields['CUSTSUM'] / 100) * $pdvPercent; } @$this->customFields['PDV'] = $pdv; if (is_numeric($this->customFields['CUSTSUM'])) { @$this->customFields['CUSTSUMPDV'] = $this->customFields['CUSTSUM'] + $pdv; } else { $this->customFields['CUSTSUMPDV'] = 0; } @$this->customFields['CUSTSUMPDVLIT'] = $morph->sum2str($this->customFields['CUSTSUMPDV']); @$this->customFields['CUSTSUMLIT'] = $morph->sum2str($this->customFields['CUSTSUM']); if ($this->altcfg['CORPS_ENABLED']) { //corporate user fields @$this->customFields['CORPNAME'] = $_POST['corpname']; @$this->customFields['CORPADDRESS'] = $_POST['corpaddress']; @$this->customFields['CORPDOCTYPE'] = $_POST['corpdoctype']; @$this->customFields['CORPDOCNUM'] = $_POST['corpdocnum']; @$this->customFields['CORPDOCDATE'] = $_POST['corpdocdate']; @$this->customFields['CORPBANKACC'] = $_POST['corpbankacc']; @$this->customFields['CORPBANKNAME'] = $_POST['corpbankname']; @$this->customFields['CORPBANKMFO'] = $_POST['corpbankmfo']; @$this->customFields['CORPEDRPOU'] = $_POST['corpedrpou']; @$this->customFields['CORPNDSTAXNUM'] = $_POST['corpndstaxnum']; @$this->customFields['CORPINNCODE'] = $_POST['corpinncode']; @$this->customFields['CORPTAXTYPE'] = $_POST['corptaxtype']; @$this->customFields['CORPNOTES'] = $_POST['corpnotes']; @$this->customFields['CORPNAMEABBR'] = $_POST['corpnameabbr']; @$this->customFields['CORPSIGNATORY'] = $_POST['corpsignatory']; @$this->customFields['CORPSIGNATORY2'] = $_POST['corpsignatory2']; @$this->customFields['CORPBASIS'] = $_POST['corpbasis']; @$this->customFields['CORPEMAILDOCS'] = $_POST['corpemail']; } if ($this->altcfg['NETWORKS_EXT']) { //extended network pools management $extNets = new ExtNets(); @$this->customFields['NETWORKS_EXT'] = $extNets->poolTemplateData($this->userLogin); } } } /** * receives custom fields from object * * @return array */ public function getCustomFields() { return ($this->customFields); } /** * register generated document in database * * @param string $login - current user login * @param int $templateid - existing template ID * @param string $path path to file in storage * * @return void */ public function registerDocument($login, $templateid, $path) { $login = mysql_real_escape_string($login); $templateid = vf($templateid, 3); $path = mysql_real_escape_string($path); $date = date("Y-m-d H:i:s"); $publicState = wf_CheckPost(array('savedocaspublic')) ? 1 : 0; $query = " INSERT INTO `docxdocuments` ( `id` , `date` , `login` , `public` , `templateid` , `path` ) VALUES ( NULL , '" . $date . "', '" . $login . "', '" . $publicState . "', '" . $templateid . "', '" . $path . "' ); "; nr_query($query); } /** * Deletes specified document from filesystem documents storage * * @param int $documentId * * @return void */ protected function deleteDocument($documentId) { $documentId = ubRouting::filters($documentId, 'int'); $documentsDb = new NyanORM('docxdocuments'); $documentsDb->where('id', '=', $documentId); $documentData = $documentsDb->getAll('id'); if (!empty($documentData)) { $fileToDelete = $documentData[$documentId]['path']; if (file_exists(self::DOCUMENTS_PATH . $fileToDelete)) { rcms_delete_files(self::DOCUMENTS_PATH . $fileToDelete); log_register('PLDOCS DELETE DOCUMENT [' . $documentId . ']'); } else { log_register('PLDOCS DELETE DOCUMENT [' . $documentId . '] FAIL `' . $fileToDelete . '` NOT_EXISTS'); } } else { log_register('PLDOCS DELETE DOCUMENT [' . $documentId . '] FAIL NO_DB_REC'); } } /** * kills document in database * * @param int $documentid - existing document ID * * @return void */ public function unregisterDocument($documentid) { $documentid = vf($documentid, 3); //FS cleanup $this->deleteDocument($documentid); //database index cleanup $query = "DELETE FROM `docxdocuments` WHERE `id`='" . $documentid . "'"; nr_query($query); log_register("PLDOCS UNREG DOCUMENT [" . $documentid . "]"); } /** * loads user documents from database * * @param string $login user login to search public docs * * @return void */ public function loadUserDocuments($login) { $query = "SELECT * from `docxdocuments` WHERE `login`='" . $this->userLogin . "' ORDER BY `id` DESC"; $all = simple_queryall($query); if (!empty($all)) { foreach ($all as $io => $each) { $this->userDocuments[$each['id']] = $each; } } } /** * loads all user generated documents from database * * @param string $date * * @return void */ public function loadAllUsersDocuments($date = '') { $date = trim($date); $date = (!empty($date)) ? $date : curdate(); $where = "WHERE `date` LIKE '" . $date . "%'"; $query = "SELECT * from `docxdocuments` " . $where . " ORDER BY `id` DESC;"; $all = simple_queryall($query); if (!empty($all)) { foreach ($all as $io => $each) { $this->allUserDocuments[$each['id']] = $each; } } } /** * gets all user generated documents from database by this year * * $param bool $currentYear * * @return array */ public function getAllUsersDocuments($currentYear = false) { $result = array(); $where = ($currentYear) ? "WHERE `date` LIKE '" . date("Y-") . "%'" : ''; $query = "SELECT * from `docxdocuments` " . $where . " ORDER BY `id` DESC;"; $all = simple_queryall($query); if (!empty($all)) { foreach ($all as $io => $each) { $result[$each['id']] = $each; } } return ($result); } /** * Renders document edit form, which allows to change document public visibility * * @param int $documentId * * @return string */ protected function renderDocumentEditForm($documentId) { $result = ''; if (isset($this->userDocuments[$documentId])) { $currentDocumentData = $this->userDocuments[$documentId]; $inputs = wf_HiddenInput('chvisdocumentid', $documentId); $publicLabel = wf_tag('abbr', false, '', 'title="' . __('users can download it themselves') . '"') . __('Save this document as public') . wf_tag('abbr', true); $inputs .= wf_CheckInput('chdocumentpublic', $publicLabel, true, $currentDocumentData['public']); $inputs .= wf_tag('br'); $inputs .= wf_Submit(__('Save')); $result .= wf_Form('', 'POST', $inputs, 'glamour'); } return ($result); } /** * Saves document visibility if this required * * @return void */ public function saveDocumentVisibility() { if (wf_CheckPost(array('chvisdocumentid'))) { $documentId = $_POST['chvisdocumentid']; if (isset($this->userDocuments[$documentId])) { $newPublicState = (wf_CheckPost(array('chdocumentpublic'))) ? 1 : 0; $where = "WHERE `id`='" . $documentId . "';"; simple_update_field('docxdocuments', 'public', $newPublicState, $where); log_register('PLDOCS CHANGE DOCUMENT [' . $documentId . '] PUBLIC `' . $newPublicState . '`'); } } } /** * Renders previously generated user documents * * @return string */ public function renderUserDocuments() { $cells = wf_TableCell(__('ID')); $cells .= wf_TableCell(__('Date')); $cells .= wf_TableCell(__('Public')); $cells .= wf_TableCell(__('Template')); $cells .= wf_TableCell(__('Path')); $cells .= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); if (!empty($this->userDocuments)) { foreach ($this->userDocuments as $io => $each) { $cells = wf_TableCell($each['id']); $cells .= wf_TableCell($each['date']); $cells .= wf_TableCell(web_bool_led($each['public'])); @$templateName = $this->templates[$each['templateid']]['name']; $cells .= wf_TableCell(wf_tag('abbr', false, '', 'title="' . $each['templateid'] . '"') . $templateName . wf_tag('abbr', true)); $downloadLink = wf_Link('?module=pl_documents&username=' . $this->userLogin . '&documentdownload=' . $each['path'], $each['path'], false, ''); $cells .= wf_TableCell($downloadLink); $actionLinks = wf_JSAlert('?module=pl_documents&username=' . $this->userLogin . '&deletedocument=' . $each['id'], web_delete_icon(), __('Are you serious')) . ' '; $actionLinks .= wf_modalAuto(web_edit_icon(), __('Edit'), $this->renderDocumentEditForm($each['id'])); $cells .= wf_TableCell($actionLinks); $rows .= wf_TableRow($cells, 'row3'); } } $result = wf_TableBody($rows, '100%', '0', ''); return ($result); } /** * Renders previously generated all users documents * * @return string */ public function renderAllUserDocuments() { $allAddress = zb_AddressGetFulladdresslistCached(); $allRealnames = zb_UserGetAllRealnames(); $cells = wf_TableCell(__('ID')); $cells .= wf_TableCell(__('Date')); $cells .= wf_TableCell(__('Public')); $cells .= wf_TableCell(__('Template')); $cells .= wf_TableCell(__('Path')); $cells .= wf_TableCell(__('Login')); $cells .= wf_TableCell(__('Address')); $cells .= wf_TableCell(__('Real Name')); $cells .= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); if (!empty($this->allUserDocuments)) { foreach ($this->allUserDocuments as $io => $each) { $cells = wf_TableCell($each['id']); $cells .= wf_TableCell($each['date']); $cells .= wf_TableCell(web_bool_led($each['public'])); @$templateName = $this->templates[$each['templateid']]['name']; $cells .= wf_TableCell(wf_tag('abbr', false, '', 'title="' . $each['templateid'] . '"') . $templateName . wf_tag('abbr', true)); $downloadLink = wf_Link('?module=report_documents&documentdownload=' . $each['path'], $each['path'], false, ''); $cells .= wf_TableCell($downloadLink); $profileLink = wf_Link('?module=userprofile&username=' . $each['login'], web_profile_icon() . ' ' . $each['login']); $cells .= wf_TableCell($profileLink); $cells .= wf_TableCell(@$allAddress[$each['login']]); $cells .= wf_TableCell(@$allRealnames[$each['login']]); $actionLinks = wf_JSAlert('?module=report_documents&deletedocument=' . $each['id'], web_delete_icon(), __('Are you serious')); $cells .= wf_TableCell($actionLinks); $rows .= wf_TableRow($cells, 'row3'); } } $result = wf_TableBody($rows, '100%', '0', ''); return ($result); } /** * Renders previously generated all users as fullcalendar widget * * @return string */ public function renderAllUserDocumentsCalendar() { $allAddress = zb_AddressGetFulladdresslistCached(); $calendarData = ''; $yearDocuments = $this->getAllUsersDocuments(); if (!empty($yearDocuments)) { foreach ($yearDocuments as $io => $each) { $timestamp = strtotime($each['date']); $date = date("Y, n-1, j", $timestamp); $rawTime = date("H:i:s", $timestamp); $calendarData .= " { title: '" . $rawTime . ' ' . @$allAddress[$each['login']] . "', url: '?module=userprofile&username=" . $each['login'] . "', start: new Date(" . $date . "), end: new Date(" . $date . "), }, "; } } $result = wf_FullCalendar($calendarData); return ($result); } /** * show calendar contol form * * @return string */ public function dateControl() { if (wf_CheckPost(array('showdate'))) { $curdate = $_POST['showdate']; } else { $curdate = curdate(); } $inputs = wf_DatePickerPreset('showdate', $curdate); $inputs .= wf_Submit(__('Show')); $result = wf_Form('', 'POST', $inputs, 'glamour'); return ($result); } } |