fldID = $fldID; $this->fldName = $fldName; } public static function getInstance($fldID, $fldName) { switch ($fldName) { case 'A_ADM_COMPANY': case 'A_CLASSIFIED': case 'K_OD_KOGO': case 'OD_KOGO_ADRES': case 'M_DISTRIBUTOR': case '__CONNECTIONS': case '__NESTED_GROUPS': case '__USER_GROUPS': case '__TELBOXES': case '__TELBOXES_NAME': case '__DEALS_SALES_TELBOXES_NAME': case '__ZALICZKI_NAJEMCOW__NAJEMCA': case '__ZASOB': case '__PROCES': case '__COMPANIES': case 'DEFAULT_ACL_GROUP': case 'VERSION_GIT': case '__USER_ID': case '__USER_LOGIN': case 'A_EXEC_GROUP': // case 'L_APPOITMENT_USER': return new TypespecialVariable($fldID, $fldName); break; } return null; } /** * @returns [{id:int, param_out:str, exports:[]}] */ public function getValuesWithExports($query, $params = array()) { $items = $this->_getValues($query, false, $params); return $items; } public function getValuesByIds($tblId, $ids) { return null; } public function getEditSelectedValuesByIds($tblId, $id, $fieldName, $fieldValue) { $items = $this->_getValues($fieldValue, true); $values = array(); foreach ($items as $vItem) { $values[$vItem->param_out] = $vItem->param_out; } return $values; } public function hGetFormItem($acl, $fieldNamespace, $tblID, $fName, $selValue = '', $params = array(), $record = null) { $jsonAllowCreate = 'true'; switch ($this->fldName) { case 'L_APPOITMENT_USER': case 'A_ADM_COMPANY': case 'A_CLASSIFIED': case 'DEFAULT_ACL_GROUP': case 'VERSION_GIT': case '__USER_ID': case '__USER_LOGIN': $jsonAllowCreate = 'false'; break; } if (array_key_exists('allowCreate', $params)) $jsonAllowCreate = ($params['allowCreate'])? 'true' : 'false'; $tsValue = V::get('typespecialValue', '', $params); if (!empty($selValue) && !empty($tsValue)) { $tsValue = "{$selValue}: {$tsValue}"; // TODO: only in TypespecialVariable - skip in Typespecial } $options = []; if (!empty($selValue)) { $tsVal = (!empty($tsValue))? $tsValue : $selValue; //$out .= ''; $out .= ''; $options[] = [ 'id' => $selValue, 'name' => ($tsValue)? $tsValue : $selValue ]; } return [ 'P5UI__Typespecial', array_filter([ 'idField' => $this->fldID, 'fieldNamespace' => $fieldNamespace, 'fieldName' => $fName, 'frmFldName' => V::get('formFieldName', $fName, $params), 'create' => $jsonAllowCreate, 'ajaxDataUrlBase' => V::get('ajaxDataUrlBase', "index-ajax.php?_cls=TableAjax&_zasobID={$tblID}&_task=TYPESPECIAL&fldID={$this->fldID}", $params), 'options' => $options, 'type' => "TypespecialVariable", 'preload' => false, ], function ($value) { return null !== $value; }), (!empty($options)) ? [ [ 'option', [ 'value' => $options[0]['id'] ], $options[0]['name'] ] ] : [] ]; } public function showFormItem($tblID, $fName, $selValue = '', $params = array(), $record = null) { $out = ''; $jsonAllowCreate = 'true'; switch ($this->fldName) { case 'L_APPOITMENT_USER': case 'A_ADM_COMPANY': case 'A_CLASSIFIED': case 'DEFAULT_ACL_GROUP': case 'VERSION_GIT': case '__USER_ID': case '__USER_LOGIN': $jsonAllowCreate = 'false'; break; default: $jsonAllowCreate = 'true'; } if (isset($params['allowCreate'])) { $jsonAllowCreate = ($params['allowCreate'])? 'true' : 'false'; } $jsonPreload = 'false'; switch ($this->fldName) { case 'VERSION_GIT': //$jsonPreload = 'true'; break; default: $jsonPreload = 'false'; } $tsValue = V::get('typespecialValue', '', $params); if (!empty($selValue) && !empty($tsValue)) { $tsValue = "{$selValue}: {$tsValue}"; } $optionsJson = 'null'; $out .= '
'; $outPlaceholder = ''; if ('' != ($paramPlaceholder = V::get('placeholder', '', $params))) { $outPlaceholder = ' placeholder="' . $paramPlaceholder . '"'; } $out .= ''; $out .= '
'; $ajaxDataUrlBase = "index-ajax.php?_cls=TableAjax&_zasobID={$tblID}&_task=TYPESPECIAL&fldID={$this->fldID}"; $ajaxDataUrlBase = V::get('ajaxDataUrlBase', $ajaxDataUrlBase, $params); $frmFldName = V::get('formFieldName', $fName, $params); $out .= ''; return $out; } /** * @params $query - query string * @params $strict - search only equal value * @returns [{id:int, param_out:str, exports:[]}] */ private function _getValues($query, $strict = false, $params = array()) { $values = array(); switch ($this->fldName) { case 'A_ADM_COMPANY': case 'A_CLASSIFIED': case 'A_EXEC_GROUP': { Lib::loadClass('UsersHelper'); $userName = User::getLogin(); $userLdapGroups = UsersHelper::getLDAPGroupByUserName($userName); DBG::log($userLdapGroups, 'array', '$userLdapGroups = UsersHelper::getLDAPGroupByUserName('.$userName.')'); if (!empty($userLdapGroups)) { foreach ($userLdapGroups as $kID => $vLdapGroup) { $allowGroup = false; //$allowGroup = $vLdapGroup->gidNumber > 1000; if ('workgroup' == $vLdapGroup->cn) { $allowGroup = true; } else { $cnTest = str_replace('-', '_', $vLdapGroup->cn); $cnTest = explode('_', $cnTest); $cnTest = $cnTest[0]; if (is_numeric($cnTest)) { $allowGroup = true; } } if ($allowGroup) { if ($strict) { if (!empty($query) && $query == $vLdapGroup->cn) { $values[$vLdapGroup->cn] = (object)array('id'=>$vLdapGroup->cn, 'param_out'=>$vLdapGroup->cn); } } else { $values[$vLdapGroup->cn] = (object)array('id'=>$vLdapGroup->cn, 'param_out'=>$vLdapGroup->cn); //$values[$vLdapGroup->cn] = $vLdapGroup->cn; } } } } } break; case 'DEFAULT_ACL_GROUP': { Lib::loadClass('UsersHelper'); $userLdapGroups = UsersHelper::getLDAPGroupsAll(); if(V::get('DBG_TS', 0, $_GET) > 2){echo'
userLdapGroups (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($userLdapGroups);echo'
';} if (!empty($userLdapGroups)) { foreach ($userLdapGroups as $kID => $vLdapGroup) { $allowGroup = false; //$allowGroup = $vLdapGroup->gidNumber > 1000; if ('workgroup' == $vLdapGroup->cn) { $allowGroup = true; } else { $cnTest = str_replace('-', '_', $vLdapGroup->cn); $cnTest = explode('_', $cnTest); $cnTest = $cnTest[0]; if (is_numeric($cnTest)) { $allowGroup = true; } } if ($allowGroup) { if ($strict) { if (!empty($query) && $query == $vLdapGroup->cn) { $values[$vLdapGroup->cn] = (object)array('id'=>$vLdapGroup->cn, 'param_out'=>$vLdapGroup->cn); } } else { $values[$vLdapGroup->cn] = (object)array('id'=>$vLdapGroup->cn, 'param_out'=>$vLdapGroup->cn); //$values[$vLdapGroup->cn] = $vLdapGroup->cn; } } } } } break; case 'K_OD_KOGO': { if ($strict && empty($query)) return []; $OD_KOGO_ADRES_ID = DB::getPDO()->fetchValue(" select z2.`ID` from `CRM_LISTA_ZASOBOW` as z join `CRM_LISTA_ZASOBOW` as z2 on (z2.`PARENT_ID`=z.`PARENT_ID`) where z.`ID`='{$this->fldID}' and z2.`DESC`='OD_KOGO_ADRES' "); $sqlLimit = ($strict) ? 1 : 20; $query = trim($query, ' %'); $sqlSearch = ($strict) ? "k.`K_OD_KOGO` = " . DB::getPDO()->quote($query) : "k.`K_OD_KOGO` like " . DB::getPDO()->quote("%{$query}%"); $sql = " select k.`K_OD_KOGO`, k.`OD_KOGO_ADRES` from `IN7_DZIENNIK_KORESP` as k where {$sqlSearch} group by k.`K_OD_KOGO` limit {$sqlLimit} "; return array_map(function ($row) use ($OD_KOGO_ADRES_ID) { return (object)[ 'id' => $row['K_OD_KOGO'], 'param_out' => $row['K_OD_KOGO'], 'exports' => [ $OD_KOGO_ADRES_ID => $row['OD_KOGO_ADRES'], ], ]; }, DB::getPDO()->fetchAll($sql)); } break; case 'OD_KOGO_ADRES': { if ($strict && empty($query)) return []; $sqlLimit = ($strict) ? 1 : 20; $query = trim($query, ' %'); $sqlSearch = ($strict) ? "k.`OD_KOGO_ADRES` = " . DB::getPDO()->quote($query) : "k.`OD_KOGO_ADRES` like " . DB::getPDO()->quote("%{$query}%"); $sql = " select k.`OD_KOGO_ADRES` from `IN7_DZIENNIK_KORESP` as k where {$sqlSearch} group by k.`OD_KOGO_ADRES` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => $row['OD_KOGO_ADRES'], 'param_out' => $row['OD_KOGO_ADRES'], ]; }, DB::getPDO()->fetchAll($sql)); } break; case 'M_DISTRIBUTOR': { if ($strict && empty($query)) return []; $sqlLimit = ($strict) ? 1 : 20; $query = trim($query, ' %'); $sqlSearch = ($strict) ? "p.`M_DISTRIBUTOR` = " . DB::getPDO()->quote($query) : "p.`M_DISTRIBUTOR` like " . DB::getPDO()->quote("%{$query}%"); $sql = " select p.`M_DISTRIBUTOR` from `IN7_MK_BAZA_DYSTRYBUCJI` as p where {$sqlSearch} group by p.`M_DISTRIBUTOR` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => $row['M_DISTRIBUTOR'], 'param_out' => $row['M_DISTRIBUTOR'], ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__NESTED_GROUPS': { $query = trim($query, ' %'); $sqlLimit = 20; $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sql = " select z.`ID`, z.`DESC`, z.`TYPE` from `CRM_LISTA_ZASOBOW` as z where z.`A_STATUS` in('NORMAL', 'WAITING') and z.`TYPE` in('STANOWISKO', 'PODMIOT', 'DZIAL') and (z.`DESC` like {$sqlLikeQuery} or z.`ID` like {$sqlLikeQuery}) group by z.`DESC` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => $row['ID'], 'param_out' => "{$row['TYPE']} {$row['DESC']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__USER_GROUPS': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sql = " select z.ID, z.`DESC`, z.`TYPE` from `CRM_LISTA_ZASOBOW` as z where z.A_STATUS in('NORMAL', 'WAITING') and z.`TYPE` in('STANOWISKO', 'PODMIOT', 'DZIAL') and (z.`DESC` like {$sqlLikeQuery} or z.ID like {$sqlLikeQuery}) group by z.`DESC` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => $row['ID'], 'param_out' => "{$row['TYPE']} {$row['DESC']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__TELBOXES': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sql = " select tx.ID, tx.T_TELBOX_NAME, tx.T_TELBOX_TYPE from `TELBOXES` as tx where tx.A_STATUS != 'DELETED' and (tx.ID like {$sqlLikeQuery} or tx.T_TELBOX_NAME like {$sqlLikeQuery}) order by tx.`T_TELBOX_NAME` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => $row['ID'], 'param_out' => "{$row['T_TELBOX_NAME']} {$row['T_TELBOX_TYPE']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__TELBOXES_NAME': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sql = " select tx.`ID`, tx.`T_TELBOX_NAME`, tx.`T_TELBOX_TYPE` from `TELBOXES` as tx where tx.`A_STATUS`!='DELETED' and (tx.`ID` like {$sqlLikeQuery} or tx.`T_TELBOX_NAME` like {$sqlLikeQuery}) order by tx.`T_TELBOX_NAME` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => $row['T_TELBOX_NAME'], 'param_out' => "{$row['T_TELBOX_NAME']} {$row['T_TELBOX_TYPE']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__DEALS_SALES_TELBOXES_NAME': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sql = " select x.`id`, x.`label` from ( select d.`T_TELBOX_NEIGHBOUR_IN` as `id` , d.`marka` as `label` from `DEALS_SALES` d where d.`A_STATUS`!='DELETED' group by d.`T_TELBOX_NEIGHBOUR_IN`, d.`marka` ) as x where x.`id` like {$sqlLikeQuery} or x.`label` like {$sqlLikeQuery} order by x.`label` limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => "{$row['id']}: {$row['label']}", 'param_out' => '', ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__ZALICZKI_NAJEMCOW__NAJEMCA': { $query = trim($query, ' %'); $sqlLimit = 20; $sql = "select x.`id`, x.`label` from ( select d.`NAJEMCA` as `id` , d.`NAJEMCA` as `label` from `ZALICZKI_NAJEMCOW` d where d.`A_STATUS`!='DELETED' and d.`NAJEMCA` like :query_like group by d.`NAJEMCA` ) as x order by x.`label` limit {$sqlLimit} "; $sth = DB::getPDO()->prepare($sql); $sth->bindValue(':query_like', "%{$query}%", PDO::PARAM_STR); $sth->execute(); return array_map(function ($row) { return (object)[ 'id' => "{$row['id']}", 'param_out' => '', ]; }, $sth->fetchAll()); } break; case '__ZASOB': { $sqlQuery = new stdClass(); $sqlQuery->limit = 20; $sqlQuery->orderBy = ""; $sqlQuery->selectLabel = "concat(z.`TYPE`, ' ', z.`DESC`)"; $sqlQuery->selectAddBestFit = ""; $sqlQuery->whereAddQueryByWords = ""; $sqlWhereAddType = ""; if (!empty($params['zasob_type_in'])) { if (is_scalar($params['zasob_type_in'])) $params['zasob_type_in'] = array($params['zasob_type_in']); $sqlWhereAddType = " and z.`TYPE` IN('" . implode("','", $params['zasob_type_in']) . "') "; if (in_array('KOMORKA', $params['zasob_type_in'])) { $sqlQuery->selectLabel = "concat(z.`TYPE`, ' ', z.`DESC` , ' (', (select zp.`DESC` from `CRM_LISTA_ZASOBOW` as zp where zp.`ID`=z.`PARENT_ID` limit 1), ')')"; } } $query = trim($query, ' %'); $sqlQuery->_queryByWords = array(); if (is_numeric($query)) { $sqlQueryNum = intval($query); $sqlQuery->_queryByWords[] = "z.`ID` like '%{$sqlQueryNum}%'"; $sqlQuery->selectAddBestFit = " , IF (z.`ID`='{$sqlQueryNum}', 1000, IF (z.`ID` like '{$sqlQueryNum}%', 900, 100) ) as _bestFit "; $sqlQuery->orderBy = "order by _bestFit DESC"; } else { $queryWhereBuilder = new SqlQueryWhereBuilder(); $searchWords = $queryWhereBuilder->splitQueryToWords($query); DBG::_('DBG_TS', '>2', "SqlQueryWhereBuilder->splitQueryToWords({$query})", $searchWords, __CLASS__, __FUNCTION__, __LINE__); $sqlWords = array(); if (!empty($searchWords)) { foreach ($searchWords as $word) { if (is_numeric($word)) { $sqlWord = intval($word); $sqlQuery->_queryByWords[] = " ( z.`ID` like '%{$sqlWord}%' or z.`DESC` like '%{$sqlWord}%' ) "; } else { $sqlQuery->_queryByWords[] = "z.`DESC` like " . DB::getPDO()->quote("%{$word}%"); } } } } if (!empty($sqlQuery->_queryByWords)) { $sqlQuery->whereAddQueryByWords = " and (" . implode(" and ", $sqlQuery->_queryByWords) . ")"; } $sql = " select z.`ID` , {$sqlQuery->selectLabel} as `LABEL` {$sqlQuery->selectAddBestFit} from `CRM_LISTA_ZASOBOW` as z where z.`A_STATUS` in('NORMAL', 'WAITING') {$sqlQuery->whereAddQueryByWords} {$sqlWhereAddType} {$sqlQuery->orderBy} limit {$sqlQuery->limit} "; return array_map(function ($row) { return (object)[ 'id' => "{$row['ID']}", 'param_out' => "{$row['LABEL']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__PROCES': { $query = trim($query, ' %'); $sqlQuery = DB::getPDO()->quote("%{$query}%"); $sqlLikeRightQuery = DB::getPDO()->quote("{$query}%"); $sqlLikeBothQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sqlSelectLabel = "concat(z.`TYPE`, ' ', z.`DESC`)"; $sqlWhereAdd = ""; $sql = (is_numeric($query)) ? " select z.`ID` , {$sqlSelectLabel} as `LABEL` , IF (z.`ID` = {$sqlQuery}, 1000, IF (z.`ID` like {$sqlLikeRightQuery}, 900, 100) ) as _bestFit from `CRM_PROCES` as z where z.`A_STATUS` in('NORMAL', 'WAITING') and (z.`DESC` like {$sqlLikeBothQuery} or z.`ID` like {$sqlLikeBothQuery}) {$sqlWhereAdd} order by _bestFit DESC limit {$sqlLimit} " : " select z.`ID` , {$sqlSelectLabel} as `LABEL` from `CRM_PROCES` as z where z.`A_STATUS` in('NORMAL', 'WAITING') and (z.`DESC` like {$sqlLikeBothQuery} or z.`ID` like {$sqlLikeBothQuery}) {$sqlWhereAdd} limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => "{$row['ID']}", 'param_out' => "{$row['LABEL']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__COMPANIES': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sql = " select c.`ID`, c.`P_NAME`, c.`P_NIP` from `COMPANIES` as c where c.`A_STATUS` in('NORMAL', 'WAITING') and (c.`P_NAME` like {$sqlLikeQuery} or c.`P_NIP` like {$sqlLikeQuery} or c.`ID` like {$sqlLikeQuery}) limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => "{$row['ID']}", 'param_out' => "{$row['P_NAME']} {$row['P_NIP']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case 'VERSION_GIT': { $gitPath = '/Library/Server/Web/Data/Sites/SE-production-git/'; $versions = array(); if (file_exists($gitPath)) { $cmd = "cd {$gitPath} && git tag -l| sort -r -n -t. -k1,1 -k2,2 -k3,3 -k4,4|head -10"; $cmdOut = null; $cmdRet = null; exec($cmd, $cmdOut, $cmdRet); if ($cmdRet == 0) { if (!empty($cmdOut)) { foreach ($cmdOut as $tag) { array_unshift($versions, $tag); } } } } foreach ($versions as $version) { if (!empty($query)) { if ($strict) { if ($version != $query) { continue; } } else { if (false === strpos($version, $query)) { continue; } } } $values[] = (object)array('id'=>$version, 'param_out'=>$version); } } break; case '__USER_ID': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sqlSelectLabel = "concat(" . implode(", ", [ 'u.`ADM_NAME`', "' ('", 'u.`ADM_ACCOUNT`', "', '", 'u.`EMAIL`', "', '", 'u.`ADM_PHONE`', "')'", ]) . ")"; $sql = " select u.`ID` , {$sqlSelectLabel} as `LABEL` from `ADMIN_USERS` as u where u.`A_STATUS` in('NORMAL', 'WAITING','MONITOR','WARNING') and u.`EMPLOYEE_TYPE` in('Pracownik','Partner') and (u.`ID` like {$sqlLikeQuery} or u.`ADM_ACCOUNT` like {$sqlLikeQuery} or u.`ADM_NAME` like {$sqlLikeQuery} or u.`ADM_PHONE` like {$sqlLikeQuery} or u.`EMAIL` like {$sqlLikeQuery} ) limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => "{$row['ID']}", 'param_out' => "{$row['LABEL']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case '__USER_LOGIN': { $query = trim($query, ' %'); $sqlLikeQuery = DB::getPDO()->quote("%{$query}%"); $sqlLimit = 20; $sqlSelectLabel = "concat(" . implode(", ", [ 'u.`ADM_NAME`', "' ('", 'u.`ADM_ACCOUNT`', "', '", 'u.`EMAIL`', "', '", 'u.`ADM_PHONE`', "')'", ]) . ")"; $sql = " select u.`ADM_ACCOUNT` as ID , {$sqlSelectLabel} as `LABEL` from `ADMIN_USERS` as u where u.`A_STATUS` in('NORMAL', 'WAITING','MONITOR','WARNING') and u.`EMPLOYEE_TYPE` in('Pracownik','Partner') and (u.`ID` like {$sqlLikeQuery} or u.`ADM_ACCOUNT` like {$sqlLikeQuery} or u.`ADM_NAME` like {$sqlLikeQuery} or u.`ADM_PHONE` like {$sqlLikeQuery} or u.`EMAIL` like {$sqlLikeQuery} ) limit {$sqlLimit} "; return array_map(function ($row) { return (object)[ 'id' => "{$row['ID']}", 'param_out' => "{$row['LABEL']}", ]; }, DB::getPDO()->fetchAll($sql)); } break; case 'L_APPOITMENT_USER': { $query = trim($query, ' %'); $acl = User::getAcl()->getObjectAcl('default_db', 'ADMIN_USERS'); $queryFeatures = $acl->buildQuery([ (!empty($query)) ? [null, 'or', [ (is_numeric($query)) ? ['ID', 'like', "{$query}%"] : null, ['ADM_ACCOUNT', 'like', "%{$query}%"], ['ADM_NAME', 'like', "%{$query}%"], ['ADM_PHONE', 'like', "%{$query}%"], ['EMAIL', 'like', "%{$query}%"], ] ] : null, 'f_A_STATUS' => '=NORMAL', 'f_ADM_TECH_WORKER' => '!NO', 'limit' => 20 ]); return array_map(function ($item) { return (object)[ 'id' => $item['ID'], 'param_out' => "{$item['ADM_NAME']} ({$item['ADM_ACCOUNT']})" ]; }, $queryFeatures->getItems()); } break; default: } return $values; } /** * @returns object * { * ext_tbl_id: "1466", * ext_row_id: "2975", * id: "2975", * tbl_label: "Zasoby", * link_type_id: "5", * link_type: "NestedGroups", * }, */ public function getReturnData($tblId, $rowId, $fieldName) { $retData = new stdClass(); $retData->items = array(); $values = array(); switch ($this->fldName) { case '__CONNECTIONS': { $linkTypes = array(); $tblLabels = array(); $sqlLimit = 21; $sql = " select l.* from `ITEM_LINKS` as l where l.`A_STATUS` in('NORMAL', 'WAITING') and ( (l.`TABLE_1_ZASOB_ID`={$tblId} and l.`TABLE_1_ID`={$rowId}) or (l.`TABLE_2_ZASOB_ID`={$tblId} and l.`TABLE_2_ID`={$rowId}) ) and l.`LINKS_TYPE_ID`>1 limit {$sqlLimit} "; foreach (DB::getPDO()->fetchAll($sql) as $row) { $r = (object)$row; $connObj = new stdClass(); if ($r->TABLE_1_ZASOB_ID == $tblId && $r->TABLE_1_ID == $rowId) { $connObj->ext_tbl_id = $r->TABLE_2_ZASOB_ID; $connObj->ext_row_id = $r->TABLE_2_ID; $connObj->id = $r->TABLE_2_ID; $connObj->label = "{$r->TABLE_2_ZASOB_ID}({$r->TABLE_2_ID})"; } else if ($r->TABLE_2_ZASOB_ID == $tblId && $r->TABLE_2_ID == $rowId) { $connObj->ext_tbl_id = $r->TABLE_1_ZASOB_ID; $connObj->ext_row_id = $r->TABLE_1_ID; $connObj->id = $r->TABLE_1_ID; $connObj->label = "{$r->TABLE_1_ZASOB_ID}({$r->TABLE_1_ID})"; } if ($connObj) { $connObj->link_type_id = $r->LINKS_TYPE_ID; $linkTypes[$connObj->link_type_id] = ''; $tblLabels[$connObj->ext_tbl_id] = ''; $retData->items[] = $connObj; } } if (!empty($linkTypes)) { $sql = " select lt.`ID`, lt.`NAME` from `ITEM_LINK_TYPES` as lt where lt.`ID` in (" . implode(", ", array_keys($linkTypes)) . ") "; foreach (DB::getPDO()->fetchAll($sql) as $row) { $linkTypes[ $row['ID'] ] = $row['NAME']; } } if (!empty($tblLabels)) { $sql = " select z.`ID`, z.`DESC`, z.`DESC_PL`, z.`OPIS` from `CRM_LISTA_ZASOBOW` as z where z.`ID` in (" . implode(", ", array_keys($tblLabels)) . ") "; foreach (DB::getPDO()->fetchAll($sql) as $row) { if (!empty($row['DESC_PL'])) { $tblLabels[ $row['ID'] ] = $row['DESC_PL']; } else if (!empty($row['OPIS'])) { $tblLabels[ $row['ID'] ] = V::strShortUtf8($row['OPIS'], 20); } else { $tblLabels[ $row['ID'] ] = $row['DESC']; } } } foreach ($retData->items as $k => $connObj) { $connObj->link_type = V::get($connObj->link_type_id, $connObj->link_type_id, $linkTypes); $connObj->tbl_label = V::get($connObj->ext_tbl_id, $connObj->ext_tbl_id, $tblLabels); } if(V::get('DBG_TS', 0, $_GET) > 2){echo'
retData->items('.count($retData->items).') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($retData->items);echo'
';} return $retData; } break; default: } return null; } }