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 .= '
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;
}
}