Changeset 7177
- Timestamp:
- 09/06/12 10:47:22 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workflow/inc/local/classes/class.wf_orgchart.php
r7037 r7177 111 111 112 112 $output = $result->GetArray(-1); 113 114 return $output; 115 } 116 117 /** 118 * Busca os funcionários de uma organização 119 * 120 * Este método irá buscar na tabela de funcionários, todos os funcionários que pertencem à organização solicitada. 121 * @param int $organizationID O ID da organização. 122 * @param boolean $searchLdap True, caso seja necessário buscar no LDAP os dados dos usuários. Ou false, caso contrário. 123 * @param int $employeeStatusID O ID do status dos funcionários a serem listados. 124 * @return array Uma array seqüencial contendo os funcionários de uma organização. Cada linha do array conterá: 125 * - organizacao_id 126 * - funcionario_id: uidNumber do funcionário 127 * - localidade_id 128 * - localidade_descricao 129 * - area_id 130 * - area_sigla 131 * - centro_custo_id 132 * - nm_centro_custo: número do centro de custo 133 * - centro_custo_descricao 134 * - nome: nome do funcionário (quando busca no Ldap) 135 * - email: email do funcionário (quando busca no Ldap) 136 * - telefone: telefone do funcionário (quando busca no Ldap) 137 * @access public 138 */ 139 function getOrganizationEmployees($organizationID, $searchLdap = false, $employeeStatusID = null) 140 { 141 $query = "SELECT f.organizacao_id, " . 142 " f.funcionario_id, " . 143 " l.localidade_id, " . 144 " l.descricao AS localidade_descricao, " . 145 " a.area_id, " . 146 " a.sigla AS area_sigla, " . 147 " c.centro_custo_id, " . 148 " c.nm_centro_custo, " . 149 " c.descricao AS centro_custo_descricao " . 150 " FROM funcionario f " . 151 " INNER JOIN area a " . 152 " ON (f.area_id = a.area_id) " . 153 " INNER JOIN localidade l " . 154 " ON (f.localidade_id = l.localidade_id) " . 155 " LEFT OUTER JOIN centro_custo c " . 156 " ON (COALESCE(f.centro_custo_id, l.centro_custo_id, a.centro_custo_id) = c.centro_custo_id) " . 157 " WHERE " . 158 " f.organizacao_id = ? "; 159 160 $bindValues = array($organizationID); 161 162 // Se desejar somente retornar as áreas que estão ativas 163 if(!empty($employeeStatusID)){ 164 $query .=" AND f.funcionario_status_id = ? "; 165 $bindValues[] = $employeeStatusID; 166 } 167 168 $query .= " ORDER BY f.funcionario_id"; 169 170 $result = $this->db->query($query, $bindValues); 171 if (!$result) 172 return false; 173 174 $output = $result->GetArray(-1); 175 176 if($searchLdap){ 177 $output = $this->searchEmployeeDataInLdap($output); 178 } 113 179 114 180 return $output; … … 1189 1255 $output = $result->GetArray(-1); 1190 1256 1191 if(is_array($output) && $searchLdap){ 1257 if($searchLdap){ 1258 $output = $this->searchEmployeeDataInLdap($output); 1259 } 1260 1261 return $output; 1262 } 1263 1264 /** 1265 * Percorre o array passado por parâmetro, buscando os dados dos funcionários no Ldap. Adiciona estes dados no array e o retorna. 1266 * 1267 * @param array $output Array contendo os usuários que deverão ser consultados no Ldap 1268 * @return array Retorna o mesmo array passado por parâmetro, adicionados os dados dos usuários buscados no Ldap 1269 */ 1270 function searchEmployeeDataInLdap($output) 1271 { 1272 if(is_array($output)){ 1192 1273 foreach($output AS $k => $value){ 1193 $user_data = $this->ldap->getEntryByID($value['funcionario_id']); 1194 $output[$k]['nome'] = $user_data['cn']; 1195 $output[$k]['telefone'] = $user_data['telephonenumber']; 1274 if(is_numeric($value['funcionario_id'])){ 1275 $user_data = $this->ldap->getEntryByID($value['funcionario_id']); 1276 $output[$k]['nome'] = $user_data['cn']; 1277 $output[$k]['email'] = $user_data['mail']; 1278 $output[$k]['telefone'] = $user_data['telephonenumber']; 1279 } 1196 1280 } 1197 1281 } 1198 1199 1282 return $output; 1200 1283 }
Note: See TracChangeset
for help on using the changeset viewer.