Changeset 3061 for sandbox/workflow
- Timestamp:
- 07/15/10 17:50:39 (14 years ago)
- Location:
- sandbox/workflow/branches/1015
- Files:
-
- 42 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
sandbox/workflow/branches/1015/doc/change_log.txt
r1712 r3061 15 15 arifragoso is Ari Fragoso de Medeiros Junior 16 16 hermespinheiro is Hermes Pinheiro Neto 17 18 Os registros estão listados em ordem decrescente de data de realização. 17 pedroerp is Pedro Eugênio Rocha Pedreira 18 fabianok is Fabiano Sardenberg Kuss 19 pereira.jair is Jair Gonçalves Pereira Junior 20 adeildosantos is Adeildo Fernandes dos Santos 21 22 [2.2.000] 23 24 #1143 - Refinição da função apache_request_headers, caso não exista no ambiente apache-php (viani) 25 #1139 - Modificação na função wf_upload_file para possibilitar a remoção de arquivos (fabianok) 26 #1131 - Modificação na exportação de processos para permitir templates com nomes aleatórios (viani) 27 #1120 - Moficado plugin wf_select_ldap_users para retornar atributos adicionais (adeildosantos) 28 #1119 - Implementado método getSupervisorAreas em class.wf_orgchart.php (pereira.jair) 29 #1089 - Melhoria em query sql na inserção de instancias. (fabianok) 30 #1082 - Removida coluna wf_parent_activity_id da tabela egw_wf_interinstance_relations (asaikawa) 31 #1080 - Modificada string (excluído) para (inativo) quando um registro de usuário no cache não existe mais no ldap. (viani) 32 #1069 - Inclusão de log de tempo de execução de atividades. (gbisotto/rufino) 33 #1004 - Melhorado o método getEmployeeCostCenterID para que retorne o id da área caso não exista o id do centro de custo do funcionário. (gbisotto) 34 #946 - Possibilitar que o plugin smarty wf_autocomplete_input atualize a lista de seleção a cada tecla pressionada. (asaikawa) 35 #944 - Alteração na função javascript get_form_fields para retornar em array os elementos identificados com '[]'. (asaikawa) 36 #943 - Criar na classe wf_location, uma consulta de cidades pelo início do nome. (asaikawa) 37 #942 - Ajustar a classe wf_location para considerar a nova coluna que identifica se o registro é distrito. (asaikawa) 38 #935 - Incluída opção para listar funcionários em ordem alfabética geral na impressão do organograma. (pedroerp) 39 #928 - Incluída busca por telefone no organograma. (pedroerp) 40 #916 - Criada nova variável wf_webserver_url no contexto de execução dos processos. (pedroerp) 41 #870 - Correção de bug no parâmetro print_mode da classe run_activity. (pedroerp) 42 #869 - Indentificação do titular e substituro de áreas do organograma. (pedroerp) 43 #868 - Correção da altura das janelas de edição do organograma. (pedroerp) 44 #609 - Reconstrução da classe factory (pedroerp/rufino) 45 #441 - Inclusão do período de substituição de chefia no organograma. (pedroerp) 19 46 20 47 [2.1.000] 21 48 49 #989 - Compatibilização do workflow com os novos temas do Expresso. (rodsouza) 50 #951 - Correção de bug na verificação de sessão das chamadas ajax do workflow. (viani) 22 51 #794 - Correção de bug de sintaxe na classe Workflow_WfSecurity. (hermespinheiro). 23 52 #792 - Modificado o atribuito de usuário padrão de uma atividade para aceitar também um perfil padrão. (rufino) … … 27 56 #658 - Correção no alinhamento dos ícones de aplicações externas. Ao redimensionar a janela, o ícones são reorganizados. (gbisotto) 28 57 #657 - Correção no alinhamento do menu de atividades dos processos. Ao redimensionar a janela, os menus são reorganizados. (gbisotto). 58 #643 - Criação do método createNewInstance na classe JobBase, que possibilita iniciar uma instância do processo a partir de um job. (rufino) 29 59 #639 - Inclusão de cor em destaque ao passar o mouse sobre uma linha nas visualizações do organograma. (rodsouza) 30 60 #638 - Mudança na query de busca do organograma para pesquisar também por áreas. (rodsouza) 31 #643 - Criação do método createNewInstance na classe JobBase, que possibilita iniciar uma instância do processo a partir de um job. (rufino) 61 #637 - Inclusão de click-to-call no organograma e outras melhorias na interface. (rodsouza) 62 #603 - Remoção do design pattern observer da engine do workflow, por inutilidade. (gbisotto) 32 63 #442 - Criação do plugin wf_autocomplete_input, para listar com autocomplete o resultado de uma busca ajax. (rufino) 33 #637 - Inclusão de click-to-call no organograma e outras melhorias na interface. (rodsouza) 64 65 [2.0.004] 66 67 #1045 - Corrigido bug de sessão nas chamadas ajax de processos. (viani) 68 #951 - Corrigido bug na verificação de sessão ativa nas chamadas ajax de processos. (viani) 69 70 [2.0.003] 71 #899 - Inclusão de inserts faltantes no arquivo default_records, além de atualização de estrutura de tabelas do organograma. (pedroerp) 72 73 [2.0.001] 74 75 #671 - Inclusão do arquivo header.session.inc.php para a verificação de segurança de sessão. (asaikawa) 34 76 35 77 [2.0.000] 36 78 37 * Correção de bug no método getByUser da classe wf_instance. (hermespinheiro) 38 * Melhorias no organograma, com novas visualizações nas interfaces. (rodsouza) 79 #641 - Correção de bug no método getByUser da classe wf_instance. (hermespinheiro) 80 #589 - Melhorias no organograma, com novas visualizações nas interfaces. (rodsouza) 81 #439 - Redução do tempo de carga dos funcionários de uma área no organograma (rodsouza) 39 82 40 83 [1.8.05.000] -
sandbox/workflow/branches/1015/inc/class.WorkflowLDAP.inc.php
r2372 r3061 377 377 * @access public 378 378 */ 379 function getUsers($context) 380 { 381 $filter = '(&(phpgwaccounttype=u)(!(phpgwAccountVisible=-1)))'; 379 function getUsers($context, $onlyVisibleAccounts = true) 380 { 381 $filter = '(phpgwaccounttype=u)'; 382 if($onlyVisibleAccounts) 383 $filter = '(&' . $filter . '(!(phpgwAccountVisible=-1)))'; 384 382 385 $elements = array('uidnumber', 'cn', 'mail'); 383 386 return $this->getEntities($context, $filter, $elements, 'u', false); … … 561 564 * @access public 562 565 */ 563 function search($searchTerm, $includeUsers = true, $includeGroups = false, $includeLists = false, $context = null )566 function search($searchTerm, $includeUsers = true, $includeGroups = false, $includeLists = false, $context = null, $onlyVisibleAccounts = true) 564 567 { 565 568 if (!($includeUsers || $includeGroups || $includeLists)) … … 586 589 $entityFilter = $entityFilter[0]; 587 590 588 $filter = "(&{$entityFilter}(cn={$searchTerm})(!(phpgwAccountVisible=-1)))"; 591 if($onlyVisibleAccounts) 592 $filter = "(&{$entityFilter}(cn={$searchTerm})(!(phpgwAccountVisible=-1)))"; 593 else 594 $filter = "(&{$entityFilter}(cn={$searchTerm}))"; 595 589 596 $resourceIdentifier = ldap_search($this->dataSource, $context, $filter, array('cn', 'uidnumber', 'gidnumber', 'phpgwaccounttype', 'mail')); 590 597 ldap_sort($this->dataSource, $resourceIdentifier, 'cn'); -
sandbox/workflow/branches/1015/inc/class.basemodel.inc.php
r795 r3061 167 167 * @param string $obj Class name 168 168 * @return mixed 169 * @deprecated 169 * @deprecated 2.2.00.000 170 170 * @access public 171 171 */ 172 172 function &getInstance($obj) 173 { 173 { 174 wf_warn_deprecated_method('Factory', 'getInstance'); 174 175 return(wf_create_object(strtolower($obj))); 175 176 } -
sandbox/workflow/branches/1015/inc/class.bo_participants.inc.php
r2372 r3061 74 74 { 75 75 $preffix = ($usePreffix) ? 'u' : ''; 76 $ents = $this->ldap->getUsers($params['context'] );76 $ents = $this->ldap->getUsers($params['context'], $params['onlyVisibleAccounts']); 77 77 foreach ($ents as $ent) 78 78 $output[$preffix . $ent[$id]] = $ent['name']; … … 162 162 $searchLists = (strpos($entities, 'l') !== false); 163 163 164 $onlyVisibleAccounts = $params['onlyVisibleAccounts']; 165 164 166 /* faz a busca */ 165 167 $output = array(); 166 $output['participants'] = $this->ldap->search($searchTerm, $searchUsers, $searchGroups, $searchLists );168 $output['participants'] = $this->ldap->search($searchTerm, $searchUsers, $searchGroups, $searchLists, null, $onlyVisibleAccounts); 167 169 168 170 /* limita os resultados e define uma mensagem que será exibida */ -
sandbox/workflow/branches/1015/inc/class.bo_userinterface.inc.php
r2372 r3061 91 91 $recset[$procname_ver]['useHTTPS'] = 0; 92 92 } 93 $recset[$procname_ver][] = array('wf_activity_id' => $line['wf_activity_id'], 94 'wf_name' => $line['wf_name'], 95 'wf_menu_path' => $line['wf_menu_path'], 96 'wf_type' => $line['wf_type'], 97 'wf_is_autorouted' => $line['wf_is_autorouted'], 98 'wf_is_interactive' => $line['wf_is_interactive']); 93 if (!is_dir(GALAXIA_PROCESSES . '/' . $line['wf_normalized_name'])) 94 { 95 $recset[$procname_ver]['wf_iconfile'] = $templateServer->generateImageLink('navbar_nocode.png'); 96 } 97 else 98 { 99 $recset[$procname_ver][] = array('wf_activity_id' => $line['wf_activity_id'], 100 'wf_name' => $line['wf_name'], 101 'wf_menu_path' => $line['wf_menu_path'], 102 'wf_type' => $line['wf_type'], 103 'wf_is_autorouted' => $line['wf_is_autorouted'], 104 'wf_is_interactive' => $line['wf_is_interactive']); 105 } 99 106 } 100 107 -
sandbox/workflow/branches/1015/inc/class.bo_utils.inc.php
r2372 r3061 64 64 */ 65 65 function search_ldap_users_by_cn($params) 66 { 66 { 67 67 // parâmetro a ser procurado no ldap 68 68 $cn = trim(ereg_replace(' +', ' ', $params['cn'])); … … 86 86 $ret_name = empty($params['name']) ? 'cn' : $params['name']; 87 87 88 $ret_complement = empty($params['complement']) ? '' : $params['complement']; 89 88 90 $ajaxConfig = &Factory::newInstance('ajax_config', 'contactcenter'); 89 91 $config = $ajaxConfig->read_repository(); … … 103 105 104 106 $filter = '(&(uid=*)(phpgwAccountType=u)(!(phpgwAccountVisible=-1))(cn=*' . $cn . '*))'; 105 $attrib_ret = array('cn', $ret_id, $ret_name); 107 108 if($ret_complement != '') 109 $attrib_ret = array('cn', $ret_id, $ret_name, $ret_complement); 110 else 111 $attrib_ret = array('cn', $ret_id, $ret_name); 106 112 107 113 $r = ldap_search($ds, $ldapconfig['basedn'], $filter, $attrib_ret, 0, 0, 5); … … 112 118 } 113 119 elseif(ldap_count_entries($ds, $r) < 200){ 120 114 121 $result = ldap_get_entries($ds, $r); 115 foreach($result as $value){ 116 $output['values'][] = array( 117 'id' => $value[$ret_id], 118 'name' => trim(ucwords(strtolower($value[$ret_name][0])))); 122 123 foreach($result as $value){ 124 if( ($value[$ret_name][0] != '') && ($value[$ret_complement][0] != '') ){ 125 $complement = " >> " . $value[$ret_complement][0]; 126 $output['values'][] = array( 127 'id' => $value[$ret_id], 128 'name' => trim(ucwords(strtolower($value[$ret_name][0]))) . $complement 129 ); 130 131 } 132 elseif($value[$ret_name][0] != ''){ 133 $output['values'][] = array( 134 'id' => $value[$ret_id], 135 'name' => trim(ucwords(strtolower($value[$ret_name][0]))) 136 ); 137 } 138 else{ 139 $output['values'][] = array( 140 'id' => '', 141 'name' => "-- Selecione uma Opção --" 142 ); 143 } 144 119 145 } 120 121 146 122 147 foreach ($output['values'] as $key => $value){ … … 140 165 else{ 141 166 $output['msg'] = 'Não digite caracteres especiais nem números. Apenas letras e espaços são permitidos.'; 142 } 167 } 143 168 return $output; 144 169 } -
sandbox/workflow/branches/1015/inc/class.run_activity.inc.php
r2588 r3061 24 24 */ 25 25 class run_activity extends WorkflowUtils 26 { 26 { 27 27 /** 28 28 * @var array $public_functions func … … 50 50 * @access public 51 51 */ 52 var $process; 52 var $process; 53 53 /** 54 54 * @var object $GUI GUI engine object. Act carefully with it. … … 62 62 var $message = Array(); 63 63 /** 64 * @var object $categories categorie object for categories 64 * @var object $categories categorie object for categories 65 65 * @access public 66 66 */ 67 67 var $categories; 68 68 /** 69 * @var array $conf 70 * @access public 71 */ 72 var $conf = array(); 69 * @var array $conf 70 * @access public 71 */ 72 var $conf = array(); 73 73 /** 74 74 * @var $wf_template local activity template … … 76 76 */ 77 77 var $wf_template; 78 /** 78 /** 79 79 * @var object $instance 80 80 * @access public 81 81 */ 82 82 var $instance; 83 /** 83 /** 84 84 * @var object $activity_type The type of activity 85 85 * @access public … … 88 88 // then we retain all usefull vars as members, to make them avaible in user's source code 89 89 // theses are data which can be set before the user code and which are not likely to change because of the user code 90 /** 91 * @var int $process_id The process id 90 /** 91 * @var int $process_id The process id 92 92 * @access public 93 93 */ 94 94 var $process_id; 95 /** 96 * @var int $activity_id The activity id 95 /** 96 * @var int $activity_id The activity id 97 97 * @access public 98 98 */ 99 99 var $activity_id; 100 /** 100 /** 101 101 * @var int $process_name The process name 102 102 * @access public 103 103 */ 104 104 var $process_name; 105 /** 106 * @var int $process_version The process_version 105 /** 106 * @var int $process_version The process_version 107 107 * @access public 108 108 */ 109 109 var $process_version; 110 /** 111 * @var int $activity_name The process id 110 /** 111 * @var int $activity_name The process id 112 112 * @access public 113 113 */ 114 114 var $activity_name; 115 /** 116 * @var int $user_name The user name 115 /** 116 * @var int $user_name The user name 117 117 * @access public 118 118 */ 119 119 var $user_name; 120 /** 121 * @var int $view_activity activity id of the view activity avaible for this process 120 /** 121 * @var int $view_activity activity id of the view activity avaible for this process 122 122 * @access public 123 123 */ 124 124 var $view_activity; 125 // theses 4 vars aren't avaible for the user code, they're set only after this user code was executed 126 /** 127 * @var int $instance_id Instance id 125 // theses 4 vars aren't avaible for the user code, they're set only after this user code was executed 126 /** 127 * @var int $instance_id Instance id 128 128 * @access public 129 129 */ 130 130 var $instance_id=0; 131 /** 132 * @var string $instance_name Instance name 131 /** 132 * @var string $instance_name Instance name 133 133 * @access public 134 134 */ 135 135 var $instance_name=''; 136 /** 137 * @var int $instance_owner Instance owner id 136 /** 137 * @var int $instance_owner Instance owner id 138 138 * @access public 139 139 */ 140 140 var $instance_owner=0; 141 /** 142 * @var string $owner_name Owner name 141 /** 142 * @var string $owner_name Owner name 143 143 * @access public 144 144 */ 145 145 var $owner_name=''; 146 146 147 147 /** 148 148 * @var bool $print_mode print mode … … 155 155 */ 156 156 var $enable_print_mode = false; 157 157 158 158 /** 159 159 * @var array $act_role_names of roles associated with the activity, usefull for lists of users associated with theses roles 160 * @access public 160 * @access public 161 161 */ 162 162 var $act_role_names= Array(); 163 163 164 164 /** 165 165 * @var array $agents Array of ui_agent objects … … 172 172 * @access public 173 173 */ 174 var $smarty; 174 var $smarty; 175 175 /** 176 176 * @var array $wf holds a global environment vector 177 177 * @access public 178 178 */ 179 var $wf; 179 var $wf; 180 180 /** 181 181 * @var $download_mode activates download mode 182 182 * @access public 183 183 */ 184 var $download_mode; 184 var $download_mode; 185 185 /** 186 186 * @var string $_template_name holds the template's file name 187 187 * @access public 188 188 */ 189 var $_template_name = null; 189 var $_template_name = null; 190 190 /** 191 191 * @var bool Indicates wether the current instance is a child instance or not … … 193 193 */ 194 194 var $isChildInstance = false; 195 195 196 /** 196 197 * @var object Stores a 'workflow_smarty' object … … 200 201 201 202 /** 203 * @var object Log Object 204 * @access private 205 */ 206 private $logger = null; 207 208 /** 202 209 * Constructor 203 * 204 * @access public 210 * 211 * @access public 205 212 */ 206 213 function run_activity() … … 218 225 219 226 $this->workflowSmarty = &Factory::getInstance('workflow_smarty', false); 227 228 // never configure a log of type "firebug" here. This will make goAjax stop running well =( 229 $this->logger = &Factory::getInstance('Logger', array('file')); 220 230 221 231 // TODO: open a new connection to the database under a different username to allow privilege handling on tables … … 236 246 function go($activity_id=0, $iid=0, $auto=0) 237 247 { 248 $totalTime = microtime(true); 249 238 250 $result=Array(); 239 251 … … 431 443 432 444 /* BEGIN WORKFLOW MVC SETTINGS */ 433 $env = array( );//create settings vector445 $env = array(); //create settings vector 434 446 $env['view'] =& $smarty; //view layer instance 435 447 $env['template_file'] =& $_template_name; //template file to be shown 436 $env['dao'] =& wf_create_object('wf_db');//data access object instance448 $env['dao'] =& Factory::newInstance('wf_db'); //data access object instance 437 449 $env['workflow'] =& $GLOBALS['workflow']; //workflow environment information 438 450 $env['instance'] =& $instance; //process manager instance … … 441 453 $env['request'] =& $security->process($_REQUEST); //sanitizes input data from client 442 454 $env['factory'] =& Factory::getInstance('ProcessWrapperFactory'); //instantiation controller class 443 $env['natural'] =& wf_create_object('wf_natural'); //data access object instance for mainframe455 $env['natural'] =& Factory::newInstance('wf_natural'); //data access object instance for mainframe 444 456 /* END WORKFLOW MVC SETTINGS */ 445 457 … … 485 497 486 498 /* include the files */ 499 $processTime = microtime(true); 500 487 501 foreach ($_engineFiles as $_engineFile) 488 502 require $_engineFile; 503 504 $processTime = (microtime(true) - $processTime); 489 505 490 506 unset($GLOBALS['workflow_env']); … … 528 544 } 529 545 546 $totalTime = (microtime(true) - $totalTime); 547 548 $logTime = sprintf("GO [pid=%s,iid=%s,uid=%s,aid=%s] [eng=%ss,proc=%ss]", 549 $this->process_id, 550 $this->instance_id, 551 $GLOBALS['user'], 552 $this->activity_id, 553 number_format(($totalTime - $processTime),3), 554 number_format($processTime,3) ); 555 556 $this->logger->debug($logTime); 557 530 558 // TODO: process instance comments 531 532 559 $instructions = $this->runtime->handle_postUserCode(_DEBUG); 533 560 switch($instructions['action']) … … 593 620 function goAjax($activity_id=0, $iid=0, $auto=0) 594 621 { 622 $totalTime = microtime(true); 623 595 624 $result=Array(); 596 625 … … 702 731 703 732 /* BEGIN WORKFLOW MVC SETTINGS */ 704 $env = array( );//create settings vector705 $env['dao'] =& wf_create_object('wf_db');//data access object instance733 $env = array(); //create settings vector 734 $env['dao'] =& Factory::newInstance('wf_db'); //data access object instance 706 735 $env['workflow'] =& $GLOBALS['workflow']; //workflow environment information 707 736 $env['instance'] =& $instance; //process manager instance … … 710 739 $env['request'] =& $security->process($_REQUEST); //sanitizes input data from client 711 740 $env['factory'] =& Factory::newInstance('ProcessWrapperFactory'); //instantiation controller class 712 $env['natural'] =& wf_create_object('wf_natural'); //data access object instance for mainframe741 $env['natural'] =& Factory::newInstance('wf_natural'); //data access object instance for mainframe 713 742 /* END WORKFLOW MVC SETTINGS */ 714 743 … … 727 756 * the messages for the process factory instead of Workflow 728 757 * factory. Note that this is the same comment as the previous 729 * function... boooring.. =}758 * function... boooring.. 730 759 */ 731 760 Security::enable(); … … 734 763 $nc = &Factory::newInstance('NanoController'); 735 764 $nc->setClassPath(GALAXIA_PROCESSES . SEP . $this->process->getNormalizedName(). SEP . 'code'); 765 766 $processTime = microtime(true); 736 767 $nc->iterateOverVirtualRequests(); 768 $processTime = microtime(true) - $processTime; 769 737 770 $nc->outputResultData(); 738 771 unset($GLOBALS['workflow_env']); … … 740 773 if (!is_null($iid)) 741 774 $instance->instance->sync(); 775 776 $totalTime = microtime(true) - $totalTime; 777 778 $logTime = sprintf("GOAJAX [pid=%s,iid=%s,uid=%s,aid=%s] [eng=%ss,proc=%ss]", 779 $this->process_id, 780 $this->instance_id, 781 $GLOBALS['user'], 782 $this->activity_id, 783 number_format(($totalTime - $processTime),3), 784 number_format($processTime,3) ); 785 786 $this->logger->debug($logTime); 742 787 } 743 788 -
sandbox/workflow/branches/1015/inc/class.so_move_instances.inc.php
r2588 r3061 318 318 } 319 319 320 /* format the array elements for use in a SELECT SQL statement, e.g. [iid => 12, aid = 27] would produce (12, 27) */321 $instanceActivityList = array_map(create_function('$e', 'return \'(\' . $e[\'iid\'] . \', \' . $e[\'aid\'] . \')\';'), $instanceActivityList);322 323 /* update the interinstance relations of the modified rows of the instance_activities table */324 $resultSet = $this->db->query("SELECT wf_parent_instance_id, wf_parent_activity_id FROM egw_wf_interinstance_relations WHERE ((wf_parent_instance_id, wf_parent_activity_id) IN (" . implode(', ', $instanceActivityList) . "))");325 $rows = $resultSet->GetArray(-1);326 if (is_array($rows))327 {328 foreach ($rows as $row)329 {330 /* update the activity ID */331 if (!$this->db->query("UPDATE egw_wf_interinstance_relations SET wf_parent_activity_id = ? WHERE (wf_parent_instance_id = ?) AND (wf_parent_activity_id = ?)", array($activitiesConvert[$row['wf_parent_activity_id']], $row['wf_parent_instance_id'], $row['wf_parent_activity_id'])))332 {333 $this->db->FailTrans();334 return array('error' => 'Erro atualizando a tabela de relacionamento inter-instância. Nenhuma modificação foi salva');335 }336 }337 }338 339 320 /* in case of success, commit the modifications */ 340 321 $this->db->CompleteTrans(); -
sandbox/workflow/branches/1015/inc/class.so_userinterface.inc.php
r2588 r3061 333 333 { 334 334 $employees[$i]['telephoneNumber'] = is_null($entry['telephonenumber']) ? '' : $entry['telephonenumber']; 335 $employees[$i]['cn'] = is_null($entry['cn']) ? '' : $entry['cn'] . (is_null($entry['last_update']) ? ' <font color="red">( excluído)</font>' : '');335 $employees[$i]['cn'] = is_null($entry['cn']) ? '' : $entry['cn'] . (is_null($entry['last_update']) ? ' <font color="red">(inativo)</font>' : ''); 336 336 } 337 337 } -
sandbox/workflow/branches/1015/inc/class.ui_adminactivities.inc.php
r2372 r3061 1035 1035 $image_name = $proc_info['wf_normalized_name'] . SEP . 'graph' . SEP . $proc_info['wf_normalized_name'] . '.png'; 1036 1036 $image = GALAXIA_PROCESSES . SEP . $image_name; 1037 if (Factory::getInstance('BrowserInfo')->isOpera()) 1038 $maximumDimension = 1000000; 1037 if (file_exists($image)) 1038 { 1039 if (Factory::getInstance('BrowserInfo')->isOpera()) 1040 $maximumDimension = 1000000; 1041 else 1042 $maximumDimension = 2500; 1043 1044 $dims = getimagesize($image); 1045 list($originalWidth, $originalHeight) = $dims; 1046 1047 /* the image must be resized */ 1048 if (max($originalWidth, $originalHeight) > $maximumDimension) 1049 { 1050 /* define the new width and height */ 1051 $newWidth = $newHeight = $maximumDimension; 1052 if ($originalWidth > $originalHeight) 1053 $newHeight = $maximumDimension * ($originalHeight / $originalWidth); 1054 else 1055 $newWidth = $maximumDimension * ($originalWidth / $originalHeight); 1056 1057 /* create the new image and send to the browser */ 1058 $smallerImage = imagecreatetruecolor($newWidth, $newHeight); 1059 imagecopyresampled($smallerImage, imagecreatefrompng($image), 0, 0, 0, 0, $newWidth, $newHeight, $originalWidth, $originalHeight); 1060 header('content-disposition: inline; filename=' . $image_name); 1061 header('content-type: ' . $dims['mime']); 1062 imagepng($smallerImage); 1063 } 1064 else 1065 { 1066 header('content-disposition: inline; filename=' . $image_name); 1067 header('content-type: ' . $dims['mime']); 1068 header('content-length: ' . filesize($image)); 1069 readfile($image); 1070 } 1071 } 1072 // if there is no graph, show "graph not found" message 1039 1073 else 1040 $maximumDimension = 2500; 1041 1042 $dims = getimagesize($image); 1043 list($originalWidth, $originalHeight) = $dims; 1044 1045 /* the image must be resized */ 1046 if (max($originalWidth, $originalHeight) > $maximumDimension) 1047 { 1048 /* define the new width and height */ 1049 $newWidth = $newHeight = $maximumDimension; 1050 if ($originalWidth > $originalHeight) 1051 $newHeight = $maximumDimension * ($originalHeight / $originalWidth); 1052 else 1053 $newWidth = $maximumDimension * ($originalWidth / $originalHeight); 1054 1055 /* create the new image and send to the browser */ 1056 $smallerImage = imagecreatetruecolor($newWidth, $newHeight); 1057 imagecopyresampled($smallerImage, imagecreatefrompng($image), 0, 0, 0, 0, $newWidth, $newHeight, $originalWidth, $originalHeight); 1058 header('content-disposition: inline; filename=' . $image_name); 1059 header('content-type: ' . $dims['mime']); 1060 imagepng($smallerImage); 1061 } 1062 else 1063 { 1064 header('content-disposition: inline; filename=' . $image_name); 1065 header('content-type: ' . $dims['mime']); 1066 header('content-length: ' . filesize($image)); 1067 readfile($image); 1074 { 1075 header ('Content-type: image/png'); 1076 $text = 'GRAFICO NAO ENCONTRADO'; 1077 $font_size = 5; 1078 $width = imagefontwidth($font_size) * strlen($text); 1079 $height = imagefontheight($font_size); 1080 $im = imagecreate($width, $height); 1081 $text_color = imagecolorallocate($im, 0, 0, 0); // black 1082 $bg_color = imagecolorallocate($im, 255, 255, 255); // white 1083 imagefill($im, 0, 0, $bg_color); 1084 imagestring($im, $font_size, 0, 0, $text, $text_color); 1085 imagepng($im); 1086 imagedestroy($im); 1068 1087 } 1069 1088 } -
sandbox/workflow/branches/1015/inc/class.ui_adminroles.inc.php
r2372 r3061 276 276 $entry = $cachedLDAP->getEntryByID($mapping['wf_user']); 277 277 $cname = $GLOBALS['phpgw']->translation->convert($entry['cn'],'utf-8'); 278 $glabel = "";278 $glabel = (!empty($entry['uid'])) ? '[' . $entry['uid'] . ']' : ''; 279 279 if (is_null($entry['last_update'])) 280 $glabel = '<font color="red">( excluído)</font>';280 $glabel = '<font color="red">(inativo)</font>'; 281 281 } 282 282 -
sandbox/workflow/branches/1015/inc/class.ui_participants.inc.php
r2372 r3061 92 92 $hideSectors = ($_REQUEST['hideSectors'] == '1') ? true : false; 93 93 94 // the default value of $onlyVisibleAccounts is true 95 if((isset($_REQUEST['onlyVisibleAccounts'])) && (empty($_REQUEST['onlyVisibleAccounts']) || $_REQUEST['onlyVisibleAccounts'] === 'false')) 96 $onlyVisibleAccounts = false; 97 else 98 $onlyVisibleAccounts = true; 99 94 100 /* define the initial organization */ 95 101 $selectedOrganization = $ldap->getOrganizationFromDN($userDN); … … 117 123 $smarty->assign('organizations', $organizationList); 118 124 $smarty->assign('selectedOrganization', $selectedOrganization); 119 $smarty->assign('sectors', $this->bo->getSectors(array('organization' => $selectedOrganization ), true));125 $smarty->assign('sectors', $this->bo->getSectors(array('organization' => $selectedOrganization, 'onlyVisibleAccounts' => $onlyVisibleAccounts), true)); 120 126 $smarty->assign('selectedSector', $selectedSector); 121 $smarty->assign('participants', $this->bo->getEntities(array('entities' => $entities, 'id' => $id, 'context' => $selectedSector, ' usePreffix' => $usePreffix), true));127 $smarty->assign('participants', $this->bo->getEntities(array('entities' => $entities, 'id' => $id, 'context' => $selectedSector, 'onlyVisibleAccounts' => $onlyVisibleAccounts, 'usePreffix' => $usePreffix), true)); 122 128 $smarty->assign('entities', $entities); 123 129 $smarty->assign('id', $id); … … 126 132 $smarty->assign('hideOrganizations', $hideOrganizations); 127 133 $smarty->assign('hideSectors', $hideSectors); 134 $smarty->assign('onlyVisibleAccounts', $onlyVisibleAccounts); 128 135 $smarty->assign('header', $smarty->expressoHeader); 129 136 $smarty->assign('txt_loading', lang("loading")); -
sandbox/workflow/branches/1015/inc/class.workflow_processmanager.inc.php
r2372 r3061 226 226 fclose($fp); 227 227 $out.=' ]]></code>'; 228 if($res['wf_is_interactive']=='y') {229 $out.=' <template><![CDATA[';230 $fp=fopen(GALAXIA_PROCESSES.SEP."$wf_procname".SEP."code".SEP."templates".SEP."$name.tpl","r");231 //while(!feof($fp)) {232 // $line=fread($fp,8192);233 $out.=''; //all templatess will be exported in another section234 //}235 fclose($fp);236 $out.=' ]]></template>';237 }238 228 $out.=' </activity>'."\n"; 239 229 } -
sandbox/workflow/branches/1015/inc/common.inc.php
r2588 r3061 70 70 require_once WF_LIB_ROOT . 'factory/WorkflowFactory.php'; 71 71 require_once WF_LIB_ROOT . 'factory/ProcessFactory.php'; 72 require_once WF_INC_ROOT . 'common_functions.inc.php'; 72 73 ?> -
sandbox/workflow/branches/1015/inc/engine/src/API/BaseActivity.php
r2372 r3061 84 84 * Seems to be the rest of a bad object architecture 85 85 * 86 * @deprecated 86 * @deprecated 2.2.00.000 87 87 */ 88 88 function setDb(&$db) 89 89 { 90 wf_warn_deprecated_method(); 90 91 $this->db =& $db; 91 92 } … … 550 551 * e.g. $isadmin = $activity->checkUserRole($user,'admin') 551 552 * 552 * @deprecated Unused function. Old API, do not use it. Return always false553 * @deprecated 2.2.00.000 - Unused function. Old API, do not use it. Return always false 553 554 */ 554 555 function checkUserRole($user,$rolename) 555 556 { 557 wf_warn_deprecated_method(); 556 558 $this->error[] = 'use of an old deprecated function checkUserRole, return always false'; 557 559 return false; -
sandbox/workflow/branches/1015/inc/engine/src/API/Instance.php
r2588 r3061 84 84 */ 85 85 var $parentLock = false; 86 /**87 * @var int $parentActivityId The activity ID of the parent instance88 * @access public89 */90 var $parentActivityId;91 86 /** 92 87 * @var int $parentInstanceId The instance ID of the parent instance … … 490 485 return ''; 491 486 } 492 487 493 488 /** 494 489 * Creates a new instance. … … 503 498 function _createNewInstance($activityId,$user) { 504 499 // Creates a new instance setting up started, ended, user, status and owner 505 $pid = $this->getOne(' select wf_p_id from '.GALAXIA_TABLE_PREFIX.'activities wherewf_activity_id=?',array((int)$activityId));500 $pid = $this->getOne('SELECT wf_p_id FROM '.GALAXIA_TABLE_PREFIX.'activities WHERE wf_activity_id=?',array((int)$activityId)); 506 501 $this->pId = $pid; 507 502 $this->setStatus('active'); … … 510 505 $this->setStarted($now); 511 506 $this->setOwner($user); 512 513 $query = 'insert into '.GALAXIA_TABLE_PREFIX.'instances 514 (wf_started,wf_ended,wf_status,wf_p_id,wf_owner,wf_properties) 515 values(?,?,?,?,?,?)'; 516 $this->query($query,array($now,0,'active',$pid,$user,$this->security_cleanup(Array(),false))); 517 $this->instanceId = $this->getOne('select max(wf_instance_id) from '.GALAXIA_TABLE_PREFIX.'instances 518 where wf_started=? and wf_owner=?',array((int)$now,$user)); 507 508 //Get the id of new instance, before insert values in table and use this value from main table and relationship tables. 509 $this->instanceId = $this->getOne("SELECT nextval('seq_egw_wf_instances')"); 519 510 $iid=$this->instanceId; 520 511 512 $query = 'INSERT INTO '.GALAXIA_TABLE_PREFIX.'instances 513 (wf_instance_id, wf_started,wf_ended,wf_status,wf_p_id,wf_owner,wf_properties) 514 VALUES 515 (?,?,?,?,?,?,?)'; 516 517 $this->query($query,array((int)$iid, $now,0,'active',$pid,$user,$this->security_cleanup(Array(),false))); 518 521 519 // Then add in ".GALAXIA_TABLE_PREFIX."instance_activities an entry for the 522 520 // activity the user and status running and started now 523 $query = 'insert into '.GALAXIA_TABLE_PREFIX.'instance_activities (wf_instance_id,wf_activity_id,wf_user, 524 wf_started,wf_status) values(?,?,?,?,?)'; 521 $query = 'INSERT INTO '.GALAXIA_TABLE_PREFIX.'instance_activities 522 (wf_instance_id,wf_activity_id,wf_user,wf_started,wf_status) 523 VALUES 524 (?,?,?,?,?)'; 525 525 $this->query($query,array((int)$iid,(int)$activityId,$user,(int)$now,'running')); 526 526 527 527 if (($this->isChildInstance) && (!is_null($this->parentInstanceId))) 528 528 { 529 $query = 'INSERT INTO '.GALAXIA_TABLE_PREFIX.'interinstance_relations(wf_parent_instance_id, wf_parent_activity_id, wf_child_instance_id, wf_parent_lock) VALUES(?,?,?,?)'; 530 $this->query($query,array((int) $this->parentInstanceId, (int) $this->parentActivityId, (int) $iid, (int) (($this->parentLock) ? 1 : 0))); 531 } 532 529 $query = 'INSERT INTO '.GALAXIA_TABLE_PREFIX.'interinstance_relations 530 (wf_parent_instance_id, wf_child_instance_id, wf_parent_lock) 531 VALUES 532 (?,?,?)'; 533 $this->query($query,array((int) $this->parentInstanceId, (int) $iid, (int) (($this->parentLock) ? 1 : 0))); 534 } 535 533 536 //update database with other datas stored in the object 534 537 return $this->sync(); 535 538 } 536 539 537 540 /** 538 541 * Sets the name of this instance … … 1140 1143 return $this->__activity_completed; 1141 1144 } 1142 1145 1143 1146 /** 1144 1147 * This function can be called by the instance object himself (for automatic activities) 1145 * or by the WfRuntime object. In interactive activities code users use complete() --without args-- 1146 * which refer to the WfRuntime->complete() function which call this one. 1148 * or by the WfRuntime object. In interactive activities code users use complete() --without args-- 1149 * which refer to the WfRuntime->complete() function which call this one. 1147 1150 * In non-interactive activities a call to a complete() will generate errors because the engine 1148 1151 * does it his own way as I said first. … … 1160 1163 { 1161 1164 //$this->db-> 1162 $result = $this->query("SELECT 1 FROM " . GALAXIA_TABLE_PREFIX . "instances i, " . GALAXIA_TABLE_PREFIX . "interinstance_relations ir WHERE (ir.wf_child_instance_id = i.wf_instance_id) AND (i.wf_status IN ('active', 'exception')) AND (ir.wf_parent_lock = 1) AND (ir.wf_parent_instance_id = ?) AND (ir.wf_parent_activity_id = ?)", array($this->instanceId, $activityId));1165 $result = $this->query("SELECT 1 FROM " . GALAXIA_TABLE_PREFIX . "instances i, " . GALAXIA_TABLE_PREFIX . "interinstance_relations ir WHERE (ir.wf_child_instance_id = i.wf_instance_id) AND (i.wf_status IN ('active', 'exception')) AND (ir.wf_parent_lock = 1) AND (ir.wf_parent_instance_id = ?)", array($this->instanceId)); 1163 1166 if ($result->numRows() > 0) 1164 1167 die("Esta instância está aguardando que outras instâncias, das quais depende, sejam finalizadas."); … … 1168 1171 //The complete() is in a transaction, it will be completly done or not at all 1169 1172 $this->db->StartTrans(); 1170 1173 1171 1174 //lock rows and ensure access is granted 1172 1175 if (!(isset($this->security))) $this->security = &Factory::getInstance('WfSecurity'); -
sandbox/workflow/branches/1015/inc/engine/src/ProcessMonitor/ProcessMonitor.php
r2372 r3061 59 59 60 60 /** 61 * @deprecated 61 * @deprecated 2.2.00.000 62 62 */ 63 63 function update_instance_status($iid,$status) { 64 wf_warn_deprecated_method(); 64 65 return; 65 66 $query = "update `".GALAXIA_TABLE_PREFIX."instances` set `wf_status`=? where `wf_instance_id`=?"; … … 69 70 70 71 /** 71 * @deprecated 72 * @deprecated 2.2.00.000 72 73 */ 73 74 function update_instance_activity_status($iid,$activityId,$status) { 75 wf_warn_deprecated_method(); 74 76 return; 75 77 $query = "update `".GALAXIA_TABLE_PREFIX."instance_activities` set `wf_status`=? where `wf_instance_id`=? and `wf_activity_id`=?"; -
sandbox/workflow/branches/1015/inc/engine/src/common/WfRuntime.php
r2372 r3061 6 6 * as it handle concurrency and part of the core execution of the instance while avoiding 7 7 * bad manipulation of the instance 8 * 8 * 9 9 * @package Galaxia 10 * @license http://www.gnu.org/copyleft/gpl.html GPL 10 * @license http://www.gnu.org/copyleft/gpl.html GPL 11 11 */ 12 class WfRuntime extends Base 13 { 12 class WfRuntime extends Base 13 { 14 14 /** 15 15 * @var array processes config values cached for this object life duration, init is done at first use for the only process associated with this runtime object 16 16 * @access public 17 17 */ 18 var $conf= Array(); 18 var $conf= Array(); 19 19 /** 20 20 * @var object $activity 21 * @access public 21 * @access public 22 22 */ 23 23 var $activity = null; 24 24 /** 25 25 * @var object $instance 26 * @access public 26 * @access public 27 27 */ 28 28 var $instance = null; 29 29 /** 30 30 * @var int $instance_id 31 * @access public 32 */ 33 var $instance_id = 0; 31 * @access public 32 */ 33 var $instance_id = 0; 34 34 /** 35 35 * @var int $activity_id 36 * @access public 36 * @access public 37 37 */ 38 38 var $activity_id = 0; 39 39 /** 40 40 * @var object $process Retrieve process information 41 * @access public 41 * @access public 42 42 */ 43 43 var $process = null; 44 44 /** 45 45 * @var object $workitems Reference to $instance->workitems 46 * @access public 46 * @access public 47 47 */ 48 48 var $workitems = null; 49 49 /** 50 50 * @var object $activities Reference to $instance->activities 51 * @access public 52 */ 51 * @access public 52 */ 53 53 var $activities = null; 54 54 /** 55 55 * @var object $security Security object 56 * @access public 57 */ 56 * @access public 57 */ 58 58 var $security = null; 59 59 /** 60 60 * @var bool $transaction_in_progress Transaction state 61 * @access public 62 */ 63 var $transaction_in_progress = false; 61 * @access public 62 */ 63 var $transaction_in_progress = false; 64 64 /** 65 65 * @var bool $debug Debug state 66 * @access public 67 */ 66 * @access public 67 */ 68 68 var $debug=false; 69 69 /** 70 70 * @var bool $auto_mode Automatic mode state, non-interactive for instance, big impact on error handling 71 * @access public 72 */ 71 * @access public 72 */ 73 73 var $auto_mode=false; 74 74 … … 81 81 /** 82 82 * Constructor 83 * 83 * 84 84 * @param object &$db ADOdb 85 85 * @return object WfRuntime instance 86 86 * @access public 87 87 */ 88 function WfRuntime() 88 function WfRuntime() 89 89 { 90 90 $this->child_name = 'WfRuntime'; … … 101 101 * Collect errors from all linked objects which could have been used by this object 102 102 * Each child class should instantiate this function with her linked objetcs, calling get_error(true) 103 * 103 * 104 104 * @param bool $debug false by default, if true debug messages can be added to 'normal' messages 105 105 * @param string $prefix appended to the debug message 106 * @return void 106 * @return void 107 107 * @access private 108 108 */ … … 118 118 /** 119 119 * Ends-up dying and giving a last message 120 * 120 * 121 121 * @param string $last_message last sentence 122 122 * @param bool $include_errors false by default, if true we'll include error messages … … 134 134 if ($this->debug) $debug = true; 135 135 if ($this->auto_mode) $dying = false; 136 136 137 137 if ($include_errors) 138 138 { … … 161 161 * Loads the config values for the process associated with the runtime 162 162 * config values are cached while this WfRuntime object stays alive 163 * 163 * 164 164 * @param array $arrayconf Config array with default value, where key is config option name and value is default value 165 * @access private 165 * @access private 166 166 * @return array Values associated with the current process for the asked config options and as well for som WfRuntime internal config options 167 167 */ … … 172 172 $this->loadProcess(); 173 173 } 174 $arrayconf['auto-release_on_leaving_activity'] = 1; 174 $arrayconf['auto-release_on_leaving_activity'] = 1; 175 175 $this->conf = $this->process->getConfigValues($arrayconf); 176 176 return $this->conf; … … 179 179 /** 180 180 * Loads instance, the activity and the process, needed by the runtime engine to 'execute' the activity 181 * 181 * 182 182 * @param int $activityId activity id, the activity we will run 183 183 * @param int $instanceId instance Id, can be empty for a start or standalone activity 184 * @return bool 184 * @return bool 185 185 * @access public 186 186 */ … … 204 204 return false; 205 205 } 206 206 207 207 //ensure the activity is not completed 208 208 $this->instance->setActivityCompleted(false); 209 209 $this->instance->activityID = $activityId; 210 210 211 211 //set the workitems and activities links 212 212 $this->workitems =& $this->instance->workitems; … … 214 214 return true; 215 215 } 216 216 217 217 /** 218 218 * Retrieves the process object associated with the activity 219 * 219 * 220 220 * @param int $pId Process id of the process you want, if you do not give it we will try to take it from the activity 221 221 * @return mixed Process object of the right type or false … … 242 242 return true; 243 243 } 244 244 245 245 /** 246 246 * Gets current process instance 247 * 247 * 248 248 * @return object Process instance 249 249 * @access public … … 256 256 /** 257 257 * Retrieves the activity of the right type from a baseActivity Object 258 * 258 * 259 259 * @param int $activity_id activity_id you want 260 260 * @param bool $with_roles will load the roles links on the object … … 285 285 return true; 286 286 } 287 287 288 288 /** 289 289 * Gets current activity instance 290 * 290 * 291 291 * @return object Activity instance 292 292 * @access public 293 */ 293 */ 294 294 function &getActivity() 295 295 { 296 296 return $this->activity; 297 297 } 298 298 299 299 /** 300 300 * Gets the instance which could be an empty object 301 * 301 * 302 302 * @param int $instanceId is the instance id 303 303 * @return mixed Instance object which can be empty or string if something was turning bad … … 308 308 $this->instance_id = $instanceId; 309 309 $this->instance->getInstance($instanceId); 310 if ( ($this->instance->getInstanceId()==0) 310 if ( ($this->instance->getInstanceId()==0) 311 311 && (! (($this->activity->getType()=='standalone') || ($this->activity->getType()=='start') )) ) 312 312 { … … 319 319 return true; 320 320 } 321 321 322 322 /** 323 323 * Perform necessary security checks at runtime before running an activity 324 324 * This will as well lock the tables via the security object 325 325 * It should be launched in a transaction 326 * 326 * 327 327 * @return bool true if ok, false if the user has no runtime access 328 328 * @access public … … 356 356 * This will as well lock the tables via the security object 357 357 * It should be launched in a transaction 358 * 358 * 359 359 * @return bool true if ok, false if the user has no runtime access instance and activity are unsetted in case of false check 360 360 * @access public … … 372 372 //we are granted an access to release but there is a special bad case where 373 373 //we are a user authorized at releasing instances owned by others and where 374 //this instance is owned by another (for some quite complex reasons). 374 //this instance is owned by another (for some quite complex reasons). 375 375 //we should not release this new user!! 376 //Then this is auto-release, not a conscious act and so we will release only 376 //Then this is auto-release, not a conscious act and so we will release only 377 377 //if we can still grab this instance (avoiding the bad case) 378 378 379 379 //test grab before release 380 380 if ($this->checkUserRun()) … … 386 386 return false; 387 387 } 388 388 389 389 /** 390 390 * Sets/unsets the WfRuntime in debug mode 391 * 391 * 392 392 * @param bool $debug_mode true by default, set it to false to disable debug mode 393 393 * @access public 394 * @return void 394 * @return void 395 395 */ 396 396 function setDebug($debug_mode=true) … … 398 398 $this->debug = $debug_mode; 399 399 } 400 400 401 401 /** 402 402 * Sets/unsets the WfRuntime in automatic mode. i.e : executing 403 403 * non-interactive or interactive activities. Automatic mode have big impacts 404 404 * on error handling and on the way activities are executed 405 * 405 * 406 406 * @param bool $auto_mode true by default, set it to false to disable automatic mode 407 407 * @access public 408 * @return void 408 * @return void 409 409 */ 410 410 function setAuto($auto_mode=true) … … 412 412 $this->auto_mode = $auto_mode; 413 413 } 414 414 415 415 /** 416 416 * This function will start a transaction, call it before setActivityUser() 417 * 418 * @access public 419 * @return void 417 * 418 * @access public 419 * @return void 420 420 */ 421 421 function StartRun() … … 424 424 $this->db->StartTrans(); 425 425 } 426 426 427 427 /** 428 428 * This function ends the transactions started in StartRun() 429 * 429 * 430 430 * @access public 431 431 * @return void … … 433 433 function EndStartRun() 434 434 { 435 if ($this->transaction_in_progress) 435 if ($this->transaction_in_progress) 436 436 { 437 437 $this->db->CompleteTrans(); … … 439 439 } 440 440 } 441 442 /** 443 * For interactive activities this function will set the current user on the instance-activities table. 441 442 /** 443 * For interactive activities this function will set the current user on the instance-activities table. 444 444 * This will prevent having several user using the same activity on the same intsance at the same time 445 445 * But if you want this function to behave well you should call it after a checkUserRun or a checkUserRelease 446 446 * and inside a transaction. Theses others function will ensure the table will be locked and the user 447 447 * is really granted the action 448 * 448 * 449 449 * @param bool $grab true by default, if false the user will be set to '*', releasing the instance-activity record 450 450 * @access public 451 * @return bool 451 * @return bool 452 452 */ 453 453 function setActivityUser($grab=true) 454 454 { 455 if(isset($GLOBALS['user']) && !empty($this->instance->instanceId) && !empty($this->activity_id)) 455 if(isset($GLOBALS['user']) && !empty($this->instance->instanceId) && !empty($this->activity_id)) 456 456 { 457 457 if ($this->activity->isInteractive()) … … 480 480 $this->error[] = $errors; 481 481 return false; 482 } 483 } 484 482 } 483 } 484 485 485 /** 486 486 * Tries to give some usefull info about the current runtime 487 * 487 * 488 488 * @return array associative arrays with keys/values which could be usefull 489 489 * @access public … … 510 510 * This part of the runtime will be runned just after the activity code inclusion. 511 511 * We are in fact after all the "user code" part. We should decide what to do next 512 * 512 * 513 513 * @param bool $debug false by default 514 514 * @return array an array which must be analysed by the application run class. It contains 2 keys … … 525 525 { 526 526 $result = Array(); 527 527 528 528 // re-retrieve instance id which could have been modified by a complete 529 529 $this->instance_id = $this->instance->getInstanceId(); 530 530 531 531 //synchronised instance object with the database 532 532 $this->instance->sync(); … … 537 537 if ($this->instance->getActivityCompleted()) 538 538 { 539 // activity is interactive and completed, 539 // activity is interactive and completed, 540 540 // we have to continue the workflow 541 541 // and send any autorouted activity which could be after this one … … 554 554 if ($GLOBALS['workflow']['__leave_activity']) 555 555 { 556 // activity is interactive and the activity source set the 556 // activity is interactive and the activity source set the 557 557 // $GLOBALS[workflow][__leave_activity] it's a 'cancel' mode. 558 558 // we redirect the user to the leave activity page … … 561 561 } 562 562 else 563 { 563 { 564 564 //the activity is not completed and the user doesn't want to leave 565 565 // we loop on the form … … 570 570 } 571 571 else 572 { 572 { 573 573 // in auto mode or with non interactive activities we return engine info 574 574 // and we collect our errors, we do not let them for other objects … … 583 583 /** 584 584 * Gets the the 'Activity Completed' status 585 * 586 * @access public 587 * @return string 585 * 586 * @access public 587 * @return string 588 588 */ 589 589 function getActivityCompleted() … … 592 592 } 593 593 594 594 595 595 //----------- Instance public function mapping ------------------------------------------- 596 596 597 597 /** 598 598 * Sets the next activity to be executed, if the current activity is 599 599 * a switch activity the complete() method will use the activity setted 600 * in this method as the next activity for the instance. 600 * in this method as the next activity for the instance. 601 601 * Note that this method receives an activity name as argument (Not an Id) 602 602 * and that it does not need the activityId like the instance method 603 * 603 * 604 604 * @param string $actname name of the next activity 605 605 * @return bool 606 606 * @access public 607 607 */ 608 function setNextActivity($actname) 608 function setNextActivity($actname) 609 609 { 610 610 return $this->instance->setNextActivity($this->activity_id,$actname); … … 612 612 613 613 /** 614 * Sets the user that must perform the next 614 * Sets the user that must perform the next 615 615 * activity of the process. this effectively "assigns" the instance to 616 616 * some user 617 * 617 * 618 618 * @param int $user the next user id 619 619 * @param string $activityName The name of the activity that the user will be able to executed. '*' means the next activity. 620 * @return bool 620 * @return bool 621 621 * @access public 622 622 */ … … 631 631 632 632 /** 633 * Sets the user role that must perform the next 633 * Sets the user role that must perform the next 634 634 * activity of the process. this effectively "assigns" the instance to 635 635 * some user 636 * 636 * 637 637 * @param string $roleName the next activity role 638 638 * @param string $activityName The name of the activity that the role will be able to executed. '*' means the next activity. … … 655 655 656 656 /** 657 * Gets the user that must perform the next activity of the process. 657 * Gets the user that must perform the next activity of the process. 658 658 * This can be empty if no setNextUser() was done before. 659 659 * It wont return the default user but only the user which was assigned by a setNextUser 660 * 661 * @return int 662 * @access public 663 */ 664 function getNextUser() 660 * 661 * @return int 662 * @access public 663 */ 664 function getNextUser() 665 665 { 666 666 return $this->instance->getNextUser(); 667 667 } 668 668 669 669 /** 670 670 * Sets the name of this instance. 671 * 671 * 672 672 * @param string $value new name of the instance 673 * @return bool 674 * @access public 675 */ 676 function setName($value) 673 * @return bool 674 * @access public 675 */ 676 function setName($value) 677 677 { 678 678 return $this->instance->setName($value); … … 681 681 /** 682 682 * Gets the name of this instance 683 * 684 * @return string 683 * 684 * @return string 685 685 * @access public 686 686 */ … … 691 691 /** 692 692 * Sets the category of this instance 693 * 693 * 694 694 * @param string $value 695 695 * @return bool 696 696 * @access public 697 697 */ 698 function setCategory($value) 698 function setCategory($value) 699 699 { 700 700 return $this->instance->setcategory($value); … … 703 703 /** 704 704 * Gets category of this instance 705 * 706 * @return string 707 * @access public 708 */ 709 function getCategory() 705 * 706 * @return string 707 * @access public 708 */ 709 function getCategory() 710 710 { 711 711 return $this->instance->getCategory(); 712 712 } 713 713 714 714 /** 715 715 * Sets a property in this instance. This method is used in activities to … … 718 718 * problems (A->z, digits and _ for spaces). If you have several set to call look 719 719 * at the setProperties function. Each call to this function has an impact on database 720 * 720 * 721 721 * @param string $name property name (it will be normalized) 722 722 * @param mixed $value value for this property 723 * @return bool 724 * @access public 725 */ 726 function set($name,$value) 723 * @return bool 724 * @access public 725 */ 726 function set($name,$value) 727 727 { 728 728 return $this->instance->set($name,$value); 729 729 } 730 730 731 731 /** 732 732 * Unsets a property in this instance. This method is used in activities to … … 734 734 * All property names are normalized for security reasons and to avoid localisation 735 735 * problems (A->z, digits and _ for spaces). Each call to this function has an impact on database 736 * 736 * 737 737 * @param string $name property name (it will be normalized) 738 738 * @return bool true if it was ok 739 739 * @access public 740 740 */ 741 function clear($name) 741 function clear($name) 742 742 { 743 743 return $this->instance->clear($name); … … 749 749 * All property names are normalized for security reasons and to avoid localisation 750 750 * problems (A->z, digits and _ for spaces) 751 * 751 * 752 752 * @param string $name property name (it will be normalized) 753 753 * @return bool true if it exists and false otherwise … … 766 766 * problems (A->z, digits and _ for spaces). If you have several set to call look 767 767 * at the setProperties function. Each call to this function has an impact on database 768 * 768 * 769 769 * @param array $properties_array associative array containing for each record the 770 770 * property name as the key and the property value as the value. You do not need the complete … … 780 780 /** 781 781 * Gets the value of an instance property 782 * 782 * 783 783 * @param string $name name of the instance 784 784 * @param string $defaultValue … … 793 793 /** 794 794 * Describes the activities where the instance is present, can be more than one activity if the instance was "splitted" 795 * 795 * 796 796 * @access public 797 797 * @return array Vector of assocs 798 798 */ 799 function getActivities() 799 function getActivities() 800 800 { 801 801 return $this->instance->getActivities(); 802 802 } 803 803 804 804 /** 805 805 * Gets the instance status can be 'completed', 'active', 'aborted' or 'exception' 806 * 806 * 807 807 * @access public 808 808 * @return string Instance status 809 809 */ 810 function getStatus() 810 function getStatus() 811 811 { 812 812 return $this->instance->getStatus(); 813 813 } 814 814 815 815 /** 816 816 * Sets the instance status 817 * 817 * 818 818 * @param $status Desired status, it can be: 'completed', 'active', 'aborted' or 'exception' 819 819 * @return bool 820 820 * @access public 821 821 */ 822 function setStatus($status) 822 function setStatus($status) 823 823 { 824 824 return $this->instance->setStatus($status); 825 825 } 826 826 827 827 /** 828 828 * Gets the instance priority 829 * 830 * @access public 831 * @return int 829 * 830 * @access public 831 * @return int 832 832 */ 833 833 function getPriority() 834 834 { 835 835 return $this->instance->getPriority(); 836 } 836 } 837 837 838 838 /** 839 839 * Sets the instance priority 840 * 840 * 841 841 * @param int $priority 842 842 * @access public 843 * @return bool 843 * @return bool 844 844 */ 845 845 function setPriority($priority) … … 847 847 return $this->instance->setPriority($priority); 848 848 } 849 849 850 850 /** 851 851 * Returns the instance id 852 * 853 * @return int 854 * @access public 855 */ 856 function getInstanceId() 852 * 853 * @return int 854 * @access public 855 */ 856 function getInstanceId() 857 857 { 858 858 return $this->instance->getInstanceId(); 859 859 } 860 860 861 861 /** 862 862 * Returns the process id for this instance 863 * 864 * @return int 865 * @access public 863 * 864 * @return int 865 * @access public 866 866 */ 867 867 function getProcessId() { 868 868 return $this->instance->getProcessId(); 869 869 } 870 870 871 871 /** 872 872 * Returns the owner of the instance 873 * 874 * @return string 875 * @access public 876 */ 877 function getOwner() 873 * 874 * @return string 875 * @access public 876 */ 877 function getOwner() 878 878 { 879 879 return $this->instance->getOwner(); 880 880 } 881 881 882 882 /** 883 883 * Sets the instance owner 884 * 885 * @param string $user 886 * @access public 887 * @return bool 888 */ 889 function setOwner($user) 884 * 885 * @param string $user 886 * @access public 887 * @return bool 888 */ 889 function setOwner($user) 890 890 { 891 891 return $this->instance->setOwner($user); 892 892 } 893 893 894 894 /** 895 895 * Returns the user that must execute or is already executing an activity where the instance is present 896 * 896 * 897 897 * @param int $activityId 898 898 * @return bool False if the activity was not found for the instance, else return the user id or '*' if no user is defined yet 899 899 * @access public 900 */ 901 function getActivityUser($activityId) 900 */ 901 function getActivityUser($activityId) 902 902 { 903 903 return $this->instance->getActivityUser($activityId); 904 904 } 905 905 906 906 /** 907 907 * Sets the status of the instance in some activity 908 * 908 * 909 909 * @param int $activityId Activity id 910 910 * @param string $status New status, it can be 'running' or 'completed' 911 911 * @return bool False if no activity was found for the instance 912 912 * @access public 913 */ 914 function setActivityStatus($activityId,$status) 913 */ 914 function setActivityStatus($activityId,$status) 915 915 { 916 916 return $this->instance->setActivityStatus($activityId,$status); 917 917 } 918 919 920 /** 921 * Gets the status of the instance in some activity 922 * 923 * @param int $activityId 918 919 920 /** 921 * Gets the status of the instance in some activity 922 * 923 * @param int $activityId 924 924 * @return string 'running' or 'completed' 925 925 * @access public 926 926 */ 927 function getActivityStatus($activityId) 927 function getActivityStatus($activityId) 928 928 { 929 929 return $this->instance->getActivityStatus($activityId); 930 930 } 931 931 932 932 /** 933 933 * Resets the start time of the activity indicated to the current time 934 * 934 * 935 935 * @param int $activityId 936 * @return bool 937 * @access public 938 */ 939 function setActivityStarted($activityId) 936 * @return bool 937 * @access public 938 */ 939 function setActivityStarted($activityId) 940 940 { 941 941 return $this->instance->setActivityStarted($activityId); 942 942 } 943 943 944 944 /** 945 945 * Gets the Unix timstamp of the starting time for the given activity 946 * 946 * 947 947 * @param int $activityId 948 * @return int 949 * @access public 950 */ 951 function getActivityStarted($activityId) 948 * @return int 949 * @access public 950 */ 951 function getActivityStarted($activityId) 952 952 { 953 953 return $this->instance->getActivityStarted($activityId); 954 954 } 955 955 956 956 /** 957 957 * Gets the time where the instance was started 958 * 959 * @return int 960 * @access public 961 */ 962 function getStarted() 958 * 959 * @return int 960 * @access public 961 */ 962 function getStarted() 963 963 { 964 964 return $this->instance->getStarted(); 965 965 } 966 966 967 967 /** 968 968 * Gets the end time of the instance (when the process was completed) 969 * 970 * @return int 971 * @access public 972 */ 973 function getEnded() 969 * 970 * @return int 971 * @access public 972 */ 973 function getEnded() 974 974 { 975 975 return $this->instance->getEnded(); 976 976 } 977 978 977 978 979 979 /** 980 980 * Completes an activity. … … 982 982 * the engine does automatically complete automatic activities after 983 983 * executing them 984 * 984 * 985 985 * @return bool True or false, if false it means the complete was not done for some internal reason 986 986 * consult get_error() for more informations 987 987 * @access public 988 988 */ 989 function complete() 989 function complete() 990 990 { 991 991 if (!($this->activity->isInteractive())) … … 994 994 return false; 995 995 } 996 996 997 997 return $this->instance->complete($this->activity_id); 998 998 } … … 1001 1001 * Aborts an activity and terminates the whole instance. We still create a workitem to keep track 1002 1002 * of where in the process the instance was aborted 1003 * 1004 * @return bool 1005 * @access public 1006 */ 1007 function abort() 1003 * 1004 * @return bool 1005 * @access public 1006 */ 1007 function abort() 1008 1008 { 1009 1009 return $this->instance->abort(); 1010 1010 } 1011 1011 1012 1012 /** 1013 1013 * Gets a comment for this instance 1014 * 1014 * 1015 1015 * @param int $cId Comment id 1016 * @return string 1017 * @access public 1018 */ 1019 function get_instance_comment($cId) 1016 * @return string 1017 * @access public 1018 */ 1019 function get_instance_comment($cId) 1020 1020 { 1021 1021 return $this->instance->get_instance_comment($cId); 1022 1022 } 1023 1023 1024 1024 /** 1025 1025 * Inserts or updates an instance comment 1026 * 1026 * 1027 1027 * @param int $cId Commend id 1028 * @param int $activityId 1029 * @param object $activity 1028 * @param int $activityId 1029 * @param object $activity 1030 1030 * @param int $user User id 1031 1031 * @param string $title Comment's title 1032 1032 * @param string $comment Comment's contents 1033 * @return bool 1034 * @access public 1035 */ 1036 function replace_instance_comment($cId, $activityId, $activity, $user, $title, $comment) 1033 * @return bool 1034 * @access public 1035 */ 1036 function replace_instance_comment($cId, $activityId, $activity, $user, $title, $comment) 1037 1037 { 1038 1038 return $this->instance->replace_instance_comment($cId, $activityId, $activity, $user, $title, $comment); 1039 1039 } 1040 1040 1041 1041 /** 1042 1042 * Removes an instance comment 1043 * 1043 * 1044 1044 * @param int $cId Comment id 1045 * @return bool 1046 * @access public 1047 */ 1048 function remove_instance_comment($cId) 1045 * @return bool 1046 * @access public 1047 */ 1048 function remove_instance_comment($cId) 1049 1049 { 1050 1050 return $this->instance->remove_instance_comment($cId); 1051 1051 } 1052 1052 1053 1053 /** 1054 1054 * Lists instance comments 1055 * 1056 * @return array 1057 * @access public 1058 */ 1059 function get_instance_comments() 1055 * 1056 * @return array 1057 * @access public 1058 */ 1059 function get_instance_comments() 1060 1060 { 1061 1061 return $this->instance->get_instance_comments(); … … 1087 1087 $workflow = $GLOBALS['workflow']; 1088 1088 unset($_REQUEST['iid']); 1089 $run_activity = Factory:: getInstance('run_activity');1089 $run_activity = Factory::newInstance('run_activity'); 1090 1090 $run_activity->runtime->instance->parentInstanceId = $this->instance_id; 1091 $run_activity->runtime->instance->parentActivityId = $this->activity_id;1092 1091 $output = $run_activity->goChildInstance($activityID, $properties, $user, $parentLock); 1093 1092 $_REQUEST['iid'] = $iid; … … 1128 1127 function getParent() 1129 1128 { 1130 $resultSet = $this->query("SELECT wf_parent_instance_id, wf_parent_ activity_id, wf_parent_lock FROM egw_wf_interinstance_relations WHERE (wf_child_instance_id = ?)", array($this->getInstanceId()));1129 $resultSet = $this->query("SELECT wf_parent_instance_id, wf_parent_lock FROM egw_wf_interinstance_relations WHERE (wf_child_instance_id = ?)", array($this->getInstanceId())); 1131 1130 if (($row = $resultSet->fetchRow())) 1132 return array('instance_id' => $row['wf_parent_instance_id'], ' activity_id' => $row['wf_parent_activity_id'], 'lock' => ($row['wf_parent_lock'] == 1));1131 return array('instance_id' => $row['wf_parent_instance_id'], 'lock' => ($row['wf_parent_lock'] == 1)); 1133 1132 else 1134 1133 return false; -
sandbox/workflow/branches/1015/inc/local/classes/class.wf_engine.php
r2588 r3061 86 86 * @return bool true caso a instância tenha sido continuada e false caso contrário. 87 87 * @access public 88 * @deprecated 1.7.00.00088 * @deprecated 2.2.00.000 89 89 */ 90 90 function continueInstance($activityID, $instanceID) 91 91 { 92 wf_warn_deprecated_method('wf_instance', 'continueInstance'); 92 93 $WFInstance = &Factory::getInstance('wf_instance'); 93 94 return $WFInstance->continueInstance($activityID, $instanceID); … … 99 100 * @return boolean true se foi possível abortar a instância e false caso contrário. 100 101 * @access public 101 * @deprecated 1.7.00.000102 * @deprecated 2.2.00.000 102 103 */ 103 104 function abortInstance($instanceID) 104 105 { 106 wf_warn_deprecated_method('wf_instance', 'abort'); 105 107 $WFInstance = &Factory::getInstance('wf_instance'); 106 108 return $WFInstance->abort($instanceID); … … 113 115 * @return boolean true se foi possível mudar o nome da instância e false caso contrário. 114 116 * @access public 115 * @deprecated 1.7.00.000117 * @deprecated 2.2.00.000 116 118 */ 117 119 function setInstanceName($instanceID, $name) 118 120 { 121 wf_warn_deprecated_method('wf_instance', 'setName'); 119 122 $WFInstance = &Factory::getInstance('wf_instance'); 120 123 return $WFInstance->setName($instanceID, $name); … … 127 130 * @return boolean true se foi possível mudar a prioridade da instância e false caso contrário. 128 131 * @access public 129 * @deprecated 1.7.00.000132 * @deprecated 2.2.00.000 130 133 */ 131 134 function setInstancePriority($instanceID, $priority) 132 135 { 136 wf_warn_deprecated_method('wf_instance', 'setPriority'); 133 137 $WFInstance = &Factory::getInstance('wf_instance'); 134 138 return $WFInstance->setPriority($instanceID, $priority); … … 141 145 * @return array As instâncias que satisfazem o critério de seleção. 142 146 * @access public 143 * @deprecated 1.7.00.000147 * @deprecated 2.2.00.000 144 148 */ 145 149 function getIdleInstances($numberOfDays, $activities = null) 146 150 { 151 wf_warn_deprecated_method('wf_instance', 'getIdle'); 147 152 $WFInstance = &Factory::getInstance('wf_instance'); 148 153 return $WFInstance->getIdle($numberOfDays, $activities); … … 154 159 * @return array As instâncias que satisfazem o critério de seleção. 155 160 * @access public 156 * @deprecated 1.7.00.000161 * @deprecated 2.2.00.000 157 162 */ 158 163 function getInstances($activities = null) 159 164 { 165 wf_warn_deprecated_method('wf_instance', 'getIdle'); 160 166 return $this->getIdleInstances(0, $activities); 161 167 } … … 166 172 * @return array As instâncias que satisfazem o critério de seleção. 167 173 * @access public 168 * @deprecated 1.7.00.000174 * @deprecated 2.2.00.000 169 175 */ 170 176 function getInstancesByName($name) 171 177 { 178 wf_warn_deprecated_method('wf_instance', 'getByName'); 172 179 $WFInstance = &Factory::getInstance('wf_instance'); 173 180 $preOutput = $WFInstance->getByName($name); … … 187 194 * @return array As instâncias filhas do par instância/atividade atual 188 195 * @access public 189 * @deprecated 1.7.00.000196 * @deprecated 2.2.00.000 190 197 */ 191 198 function getChildInstances($instanceID = null, $activityID = null) 192 199 { 193 $WFInstance = &Factory::getInstance('wf_instance'); 194 $preOutput = $WFInstance->getChildren($instanceID, $activityID); 200 wf_warn_deprecated_method('wf_instance', 'getChildren'); 201 $WFInstance = &Factory::getInstance('wf_instance'); 202 $preOutput = $WFInstance->getChildren($instanceID); 195 203 $output = array(); 196 204 foreach ($preOutput as $childInstance) … … 206 214 * @return mixed Uma array contento as propriedades da instância (no formato "nome_da_propriedade" => "valor"). Ou false em caso de erro. 207 215 * @access public 208 * @deprecated 1.7.00.000216 * @deprecated 2.2.00.000 209 217 */ 210 218 function getInstanceProperties($instanceID) 211 219 { 220 wf_warn_deprecated_method('wf_instance', 'getProperties'); 212 221 $WFInstance = &Factory::getInstance('wf_instance'); 213 222 return $WFInstance->getProperties($instanceID); … … 219 228 * @return array Propriedades da instância filha. Array no formato "nome_da_propriedade" => "valor". 220 229 * @access public 221 * @deprecated 1.7.00.000230 * @deprecated 2.2.00.000 222 231 */ 223 232 function getChildInstanceProperties($instanceID) 224 233 { 234 wf_warn_deprecated_method('wf_instance', 'getProperties'); 225 235 $WFInstance = &Factory::getInstance('wf_instance'); 226 236 return $WFInstance->getProperties($instanceID); … … 333 343 * @return array As instâncias que satisfazem o critério de seleção. 334 344 * @access public 335 * @deprecated 1.7.00.000345 * @deprecated 2.2.00.000 336 346 */ 337 347 function getUserInstances($users, $activities = null, $status = null) 338 348 { 349 wf_warn_deprecated_method('wf_instance', 'getByUser'); 339 350 $WFInstance = &Factory::getInstance('wf_instance'); 340 351 return $WFInstance->getByUser($users, $activities, $status); … … 346 357 * @return bool true caso a propriedade tenha sido alterada com sucesso 347 358 * @access public 348 * @deprecated 1.7.00.000359 * @deprecated 2.2.00.000 349 360 */ 350 361 function setInstanceProperty($instanceID, $nameProperty, $value) 351 362 { 363 wf_warn_deprecated_method('wf_instance', 'setProperty'); 352 364 $WFInstance = &Factory::getInstance('wf_instance'); 353 365 return $WFInstance->setProperty($instanceID, $nameProperty, $value); … … 362 374 * @return bool true se o usuário tiver acesso à instância (levando em consideração $writeAccess) ou false caso contrário 363 375 * @access public 364 * @deprecated 1.7.00.000376 * @deprecated 2.2.00.000 365 377 */ 366 378 function checkUserAccessToInstance($userID, $instanceID, $activityID, $writeAccess = true) 367 379 { 380 wf_warn_deprecated_method('wf_instance', 'checkUserAccess'); 368 381 $WFInstance = &Factory::getInstance('wf_instance'); 369 382 return $WFInstance->checkUserAccess($userID, $instanceID, $activityID, $writeAccess); -
sandbox/workflow/branches/1015/inc/local/classes/class.wf_instance.php
r2588 r3061 250 250 251 251 /** 252 * Busca as instâncias filhas de uma instância 253 * Se os parâmetros não forem informados, retorna instâncias filhas das instância atual. 254 * @param int $instanceID O ID da instância pai (não obrigatório). 255 * @param int $activityID O ID da atividade corrente da instância pai 256 * @return array As instâncias filhas do par instância/atividade atual 257 * @access public 258 */ 259 public function getChildren($instanceID = null, $activityID = null) 252 * This method gets all children instances of the given instance. 253 * If there is no parameter, it gets the children instances of the current instance 254 * @param int $instanceID Dad instance's identification. 255 * @return array Array with the children instances, or false 256 * @access public 257 */ 258 public function getChildren($instanceID = null) 260 259 { 261 260 $output = array(); 262 261 if (is_null($instanceID)) 263 262 $instanceID = $GLOBALS['workflow']['wf_runtime']->instance_id; 264 if (is_null($activityID)) 265 $activityID = $GLOBALS['workflow']['wf_runtime']->activity_id; 266 267 /* check instanceID */ 268 if (!$this->checkInstanceAccess($instanceID, $activityID)) 263 264 /* check instanceID */ 265 if (!$this->checkInstanceAccess($instanceID)) 269 266 return $output; 270 267 271 268 /* build the SQL query */ 272 $query = 'SELECT i.wf_instance_id AS wf_instance_id, ia.wf_activity_id AS wf_activity_id, ia.wf_started AS wf_started, i.wf_name AS wf_name, i.wf_status AS wf_status, ia.wf_user AS wf_user, ir.wf_parent_lock AS wf_parent_lock '; 273 $query .= 'FROM egw_wf_interinstance_relations ir, egw_wf_instances i LEFT JOIN egw_wf_instance_activities ia ON (ia.wf_instance_id = i.wf_instance_id)'; 274 $query .= 'WHERE (ir.wf_child_instance_id = i.wf_instance_id) AND (ir.wf_parent_instance_id = ?) AND (ir.wf_parent_activity_id = ?)'; 275 276 $result = $this->db->query($query, array($instanceID, $activityID)); 269 $query = 'SELECT i.wf_instance_id AS wf_instance_id, ' . 270 ' ia.wf_activity_id AS wf_activity_id, ' . 271 ' i.wf_started AS wf_started, ' . 272 ' i.wf_name AS wf_name, ' . 273 ' i.wf_status AS wf_status, ' . 274 ' ia.wf_user AS wf_user, ' . 275 ' ir.wf_parent_lock AS wf_parent_lock ' . 276 ' FROM egw_wf_interinstance_relations ir, egw_wf_instances i ' . 277 ' LEFT JOIN egw_wf_instance_activities ia ' . 278 ' ON (ia.wf_instance_id = i.wf_instance_id) ' . 279 ' WHERE ' . 280 ' (ir.wf_child_instance_id = i.wf_instance_id) AND (ir.wf_parent_instance_id = ?) '; 281 282 $result = $this->db->query($query, array($instanceID)); 277 283 $output = $result->GetArray(-1); 278 284 -
sandbox/workflow/branches/1015/inc/local/classes/class.wf_natural.php
r795 r3061 1 1 <?php 2 require_once(PHPGW_SERVER_ROOT.SEP.'workflow'.SEP.'inc'.SEP.'natural'.SEP.'class.natural.php'); 2 /**************************************************************************\ 3 * eGroupWare * 4 * http://www.egroupware.org * 5 * -------------------------------------------- * 6 * This program is free software; you can redistribute it and/or modify it * 7 * under the terms of the GNU General Public License as published by the * 8 * Free Software Foundation; either version 2 of the License, or (at your * 9 * option) any later version. * 10 \**************************************************************************/ 11 12 require_once(PHPGW_SERVER_ROOT.SEP.'workflow'.SEP.'inc'.SEP.'natural'.SEP.'class.natural.php'); 13 14 /** 15 * Mainframe connection to workflow 16 * 17 * TODO - This class should be removed from here. Its based on a not 18 * public protocol, thus cannot be used for everybody. 19 * 20 * @package Workflow 21 * @subpackage local 22 * @license http://www.gnu.org/copyleft/gpl.html GPL 23 * @author Everton Flávio Rufino Seára 24 */ 25 class wf_natural extends Natural 26 { 3 27 4 28 /** 5 * Mainframe connection to workflow 6 * @author Everton Flávio Rufino Seára 7 * @package Workflow 8 * @subpackage local 9 * @license http://www.gnu.org/copyleft/gpl.html GPL 10 **/ 29 * @var object Log Object 30 * @access private 31 */ 32 private $logger = null; 11 33 12 class wf_natural extends Natural34 function __construct() 13 35 { 36 parent::Natural(); 14 37 15 function __construct() 16 { 17 parent::Natural(); 38 $natconf = array( 39 'mainframe_ip' => '', 40 'mainframe_port' => '', 41 'mainframe_key' => '', 42 'mainframe_password' => '', 43 'mainframe_environment' => '' 44 ); 18 45 19 $natconf = array( 20 'mainframe_ip' => '', 21 'mainframe_port' => '', 22 'mainframe_key' => '', 23 'mainframe_password' => '', 24 'mainframe_environment' => '' 25 ); 46 $nat_conf_values = &Factory::getInstance('workflow_wfruntime')->getConfigValues($natconf); 26 47 27 $nat_conf_values = $GLOBALS['workflow']['wf_runtime']->getConfigValues($natconf); 48 $this->setIPAddress($nat_conf_values['mainframe_ip']); 49 $this->setServerPort($nat_conf_values['mainframe_port']); 50 $this->setKey($nat_conf_values['mainframe_key']); 51 $this->setPassword($nat_conf_values['mainframe_password']); 52 $this->setApplication($nat_conf_values['mainframe_environment']); 28 53 29 $this->setIPAddress($nat_conf_values['mainframe_ip']); 30 $this->setServerPort($nat_conf_values['mainframe_port']); 31 $this->setKey($nat_conf_values['mainframe_key']); 32 $this->setPassword($nat_conf_values['mainframe_password']); 33 $this->setApplication($nat_conf_values['mainframe_environment']); 54 $this->logger = &Factory::getInstance('Logger', array('file')); 55 } 56 57 /** 58 * This method MUST be called before using execute method 59 * It specifies the natural sub-program to be accessed. 60 * 61 * @param Object $obj Object that specifies natural sub-program properties 62 * @return void 63 */ 64 public function configure($obj) 65 { 66 $this->obj = $obj; 67 68 $this->initialize($obj->name); 69 70 if ($obj->server != NULL){ 71 $this->setIPAddress($obj->server); 34 72 } 35 36 /** 37 * Method to configure the access to mainframe 38 * This method MUST be called before using execute method, else 'false' will be returned 39 * 40 * Only the first and second param are mandatory. 41 * 42 * @param String $subProgram - Name of sub-program 43 * @param String $inputParameter - Input parameters to sub-program 44 * 45 * @param String $ip - IP Address of Mainfram 46 * @param int $port - ServerPort to access the mainframe 47 * @param String $key - Access key (user) 48 * @param String $password - Key (user) password 49 * @param char $environment - Application environment access 'D' (development) or 'P' (production) 50 51 */ 52 53 public function configure($obj) 54 { 55 $this->obj = $obj; 56 57 $this->initialize($obj->name); 58 59 if ($obj->server != NULL){ 60 $this->setIPAddress($obj->server); 61 } 62 if ($obj->port != NULL){ 63 $this->setServerPort($obj->port); 64 } 65 if ($obj->key != NULL){ 66 $this->setKey($obj->key); 67 } 68 if ($obj->password != NULL){ 69 $this->setPassword($obj->password); 70 } 71 if ($obj->environment != NULL){ 72 $this->setApplication($obj->environment); 73 } 74 if ($obj->logon != NULL){ 75 $this->setLogon($obj->logon); 76 } 77 if ($obj->system != NULL){ 78 $this->setSystem($obj->system); 79 } 80 if ($obj->rc != NULL){ 81 $this->setRC($obj->rc); 82 } 73 if ($obj->port != NULL){ 74 $this->setServerPort($obj->port); 83 75 } 84 85 /* 86 87 public function configure($subProgram, $inputParameter, $ip = NULL, $port = NULL, 88 $key = NULL, $password = NULL, $environment = NULL, $logon = NULL, $system = NULL, $rc = NULL) 89 { 90 $this->initialize($subProgram, $inputParameter); 91 92 if ($ip != NULL){ 93 $this->setIPAddress($ip); 94 } 95 if ($port != NULL){ 96 $this->setServerPort($port); 97 } 98 if ($key != NULL){ 99 $this->setKey($key); 100 } 101 if ($password != NULL){ 102 $this->setPassword($password); 103 } 104 if ($environment != NULL){ 105 $this->setApplication($environment); 106 } 107 if ($logon != NULL){ 108 $this->setLogon($logon); 109 } 110 if ($system != NULL){ 111 $this->setSystem($system); 112 } 113 if ($rc != NULL){ 114 $this->setRC($rc); 115 } 116 76 if ($obj->key != NULL){ 77 $this->setKey($obj->key); 117 78 } 118 119 */ 120 121 /** 122 * Access and retrieve data from mainframe 123 * @return bool 124 */ 125 public function execute($inputParams = "") 126 { 127 return parent::execute($inputParams); 79 if ($obj->password != NULL){ 80 $this->setPassword($obj->password); 81 } 82 if ($obj->environment != NULL){ 83 $this->setApplication($obj->environment); 84 } 85 if ($obj->logon != NULL){ 86 $this->setLogon($obj->logon); 87 } 88 if ($obj->system != NULL){ 89 $this->setSystem($obj->system); 90 } 91 if ($obj->rc != NULL){ 92 $this->setRC($obj->rc); 128 93 } 129 94 } 95 96 /** 97 * Method for accessing and retrieving data from mainframe 98 * @return bool 99 */ 100 public function execute($inputParams = "") 101 { 102 // execute action and log wasted time 103 $totalTime = microtime(true); 104 $result = parent::execute($inputParams); 105 $totalTime = microtime(time) - $totalTime; 106 $log = sprintf("WF_NATURAL [subprogram=%s] [time=%ss]", 107 $this->obj->name, 108 number_format($totalTime,3) 109 ); 110 $this->logger->debug($log); 111 return $result; 112 } 113 } 130 114 ?> -
sandbox/workflow/branches/1015/inc/local/classes/class.wf_orgchart.php
r2588 r3061 480 480 return $output; 481 481 } 482 483 /** 484 * Return all areas that the employee is a supervisor. 485 * 486 * Search in the organization for all areas that the employee is a supervisor. 487 * @param int $employeeID The ID of employee 488 * @return array Array containing all the areas that the employeee is a supervisor. 489 * @access public 490 */ 491 function getSupervisorAreas($employeeID) { 492 493 if (!$employeeID) { 494 return false; 495 } 496 497 $query = "SELECT 498 a.area_id 499 FROM 500 area a 501 LEFT OUTER JOIN substituicao s ON ((a.area_id = s.area_id) 502 AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) 503 WHERE 504 a.titular_funcionario_id = ? OR 505 s.funcionario_id = ? 506 GROUP BY 507 a.area_id"; 508 509 $result = $this->db->query($query, array($employeeID,$employeeID)); 510 if (!$result) 511 return false; 512 513 $output = $result->GetArray(-1); 514 return $output; 515 } 482 516 483 517 /** -
sandbox/workflow/branches/1015/inc/local/functions/function.wf_create_object.php
r795 r3061 5 5 * @return mixed 6 6 * @license http://www.gnu.org/copyleft/gpl.html GPL 7 * @deprecated 1.4.00.000 - 08/03/20077 * @deprecated 2.2.00.000 8 8 * @package Workflow 9 9 * @subpackage local … … 12 12 function wf_create_object($class_name) 13 13 { 14 wf_warn_deprecated_method('Factory', 'getInstance'); 14 15 $obj = null; 15 16 $file_name = PHPGW_SERVER_ROOT.SEP.'workflow'.SEP.'inc'.SEP.'local'.SEP.'classes'.SEP.'class.'.$class_name.'.php'; -
sandbox/workflow/branches/1015/inc/log/Log.php
r795 r3061 167 167 /* If the class exists, return a new instance of it. */ 168 168 if (Log::_classExists($class)) { 169 $obj = &new $class($name, $ident, $conf, $level);169 $obj = new $class($name, $ident, $conf, $level); 170 170 return $obj; 171 171 } -
sandbox/workflow/branches/1015/inc/log/Log/observer.php
r795 r3061 79 79 */ 80 80 if (class_exists($class)) { 81 $object = &new $class($priority, $conf);81 $object = new $class($priority, $conf); 82 82 return $object; 83 83 } … … 103 103 /* Support both new-style and old-style construction. */ 104 104 if ($newstyle) { 105 $object = &new $class($priority, $conf);105 $object = new $class($priority, $conf); 106 106 } else { 107 $object = &new $class($priority);107 $object = new $class($priority); 108 108 } 109 109 return $object; -
sandbox/workflow/branches/1015/inc/smarty/plugins/function.html_options.php
r795 r3061 96 96 } 97 97 98 function smarty_function_html_boxoptions($params, &$smarty) 99 { 100 require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); 101 102 $name = null; 103 $values = null; 104 $options = null; 105 $selected = array(); 106 $output = null; 107 108 $extra = ''; 109 110 foreach($params as $_key => $_val) { 111 switch($_key) { 112 case 'name': 113 $$_key = (string)$_val; 114 break; 115 116 case 'options': 117 $$_key = (array)$_val; 118 break; 119 120 case 'values': 121 case 'output': 122 $$_key = array_values((array)$_val); 123 break; 124 125 case 'selected': 126 $$_key = array_map('strval', array_values((array)$_val)); 127 break; 128 129 default: 130 if(!is_array($_val)) { 131 $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; 132 } else { 133 $smarty->trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE); 134 } 135 break; 136 } 137 } 138 139 if (!isset($options) && !isset($values)) 140 return ''; /* raise error here? */ 141 142 $_html_result = ''; 143 144 if (isset($options)) { 145 146 foreach ($options as $_key=>$_val) 147 $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected); 148 149 } else { 150 151 foreach ($values as $_i=>$_key) { 152 $_val = isset($output[$_i]) ? $output[$_i] : ''; 153 $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected); 154 } 155 156 } 157 158 if(!empty($name)) { 159 $_html_result = '<select name="' . $name . '"' . $extra . ' style="height: 100px;" size="5">' . "\n" . $_html_result . '</select>' . "\n"; 160 } 161 162 return $_html_result; 163 164 } 98 165 function smarty_function_html_options_optoutput($key, $value, $selected) { 99 166 if(!is_array($value)) { -
sandbox/workflow/branches/1015/inc/smarty/wf_plugins/function.wf_select_ldap_users.php
r2372 r3061 23 23 */ 24 24 function smarty_function_wf_select_ldap_users($params, &$smarty) 25 { 25 { 26 26 require_once $smarty->_get_plugin_filepath('function','html_options'); 27 27 $imagesPath = substr(Factory::getInstance('TemplateServer')->generateImageLink(''), 0, -1); … … 34 34 'size_input' => '20', 35 35 'opt_id' => 'dn', 36 'opt_name' => 'cn'); 36 'opt_name' => 'cn', 37 'opt_complement' => ''); 37 38 $extractParams = array( 38 39 'name', … … 42 43 'class_btn', 43 44 'opt_id', 44 'opt_name'); 45 'opt_name', 46 'opt_complement'); 45 47 46 48 /* verifica se todos os parâmetros obrigatórios foram passados */ … … 78 80 $output = <<<EOF 79 81 <input type="text" id="$name_input" name="$name_input" size="$size_input" /> 80 <input type="button" class="$class_btn" value="$value_btn" onclick="search_ldap_users_by_cn(document.getElementById('$name_input').value, '$name', '$opt_id', '$opt_name', $handleExpiredSessions )" />82 <input type="button" class="$class_btn" value="$value_btn" onclick="search_ldap_users_by_cn(document.getElementById('$name_input').value, '$name', '$opt_id', '$opt_name', $handleExpiredSessions, '$opt_complement')" /> 81 83 <img id="$name_img" border="0" src="$imagesPath/loading.gif" style="display:none"> 82 <span id="$name_span" style="display:none"> <b>Selecione o nome: </b>84 <span id="$name_span" style="display:none"><br><br><b>Selecione um nome abaixo: </b><br><br> 83 85 EOF; 84 86 85 $output .= smarty_function_html_ options(array_merge(array(87 $output .= smarty_function_html_boxoptions(array_merge(array( 86 88 'name' => $name, 87 89 'id' => $name, -
sandbox/workflow/branches/1015/inc/smarty/wf_plugins/function.wf_select_user.php
r2372 r3061 12 12 * - email_as_textarea : indica se o campo que receberá os emails deve ser um textarea (valor true) ou input type text (valor false). Este parâmetro só tem validade se get_email for true. 13 13 * - hide_groups : indica se deve-se omitir os grupos na tela de seleção. 14 * - onlyVisibleAccounts : indica se devem ser recuperadas apenas as contas visíveis, ou se as ocultas também devem ser listadas. 14 15 * - organization : nome da organização que estará previamente selecionada. 15 16 * - title : texto da tooltip que aparecerá quando o usuário colocar o mouse sobre o ícone para adicionar usuário. … … 35 36 'hide_organizations' => false, 36 37 'hide_sectors' => false, 38 'onlyVisibleAccounts' => true, 37 39 'rows'=> 2); 38 40 $extractParams = array( … … 42 44 'title', 43 45 'cols', 44 'rows'); 46 'rows', 47 'onlyVisibleAccounts'); 45 48 46 49 /* verifica se todos os parâmetros obrigatórios foram passados */ … … 93 96 if ($params['hide_sectors'] == true) 94 97 $extraParams .= "&hideSectors=1"; 98 if (empty($onlyVisibleAccounts) || $onlyVisibleAccounts === 'false') 99 $extraParams .= "&onlyVisibleAccounts=false"; 100 else 101 $extraParams .= "&onlyVisibleAccounts=true"; 95 102 96 103 $image = Factory::getInstance('TemplateServer')->generateImageLink('add_user.png'); 97 104 98 $output .= <<<EOF99 <a alt="$title" title="$title" href="javascript:void(0)" onclick="openParticipants('$name', '$extraParams');"><img border="0" alt="" src="$image" /></a>105 $output .= <<<EOF 106 <a alt="$title" title="$title" href="javascript:void(0)" onclick="openParticipants('$name', '$extraParams');"><img border="0" alt="" src="$image" /></a> 100 107 EOF; 101 108 return $output; -
sandbox/workflow/branches/1015/inc/smarty/wf_plugins/function.wf_select_users.php
r2372 r3061 8 8 * - value : usuários e grupos previamente selecionados. Deve estar no formato de matriz, seguindo o seguinte padrão: ::$matriz["u123"]="Nome do usuário 123" ; $matriz["g321"]="Nome do grupo 321" e, assim por diante. 9 9 * - hide_groups : indica se deve-se omitir os grupos na tela de seleção. 10 * - onlyVisibleAccounts : indica se devem ser recuperadas apenas as contas visíveis, ou se as ocultas também devem ser listadas. 10 11 * - organization : nome da organização que estará previamente selecionada. 11 12 * @param object &$smarty Instância do objeto smarty em uso … … 24 25 'hide_organizations' => false, 25 26 'hide_sectors' => false, 27 'onlyVisibleAccounts' => true, 26 28 'value' => array()); 27 29 $extractParams = array( 28 30 'name', 29 'value'); 31 'value', 32 'onlyVisibleAccounts'); 30 33 31 34 /* verifica se todos os parâmetros obrigatórios foram passados */ … … 54 57 if ($params['hide_sectors'] == true) 55 58 $extraParams .= "&hideSectors=1"; 59 if (empty($onlyVisibleAccounts) || $onlyVisibleAccounts === 'false') 60 $extraParams .= "&onlyVisibleAccounts=false"; 61 else 62 $extraParams .= "&onlyVisibleAccounts=true"; 56 63 57 64 $output = '<table border="0"><tr><td>'; … … 66 73 $output .= "</td><td>"; 67 74 $output .= <<<EOF 68 <a href='javascript:void(0)' onclick="openParticipants(500, 270, '$name', '$extraParams');"><img border="0" src="$imagesPath/add_group.png"></a>75 <a href='javascript:void(0)' onclick="openParticipants(500, 315, '$name', '$extraParams');"><img border="0" src="$imagesPath/add_group.png"></a> 69 76 <br /> 70 <a href='javascript:void(0)' onclick="openParticipants(500, 270, '$name', '$extraParams');">Adicionar</a>77 <a href='javascript:void(0)' onclick="openParticipants(500, 315, '$name', '$extraParams');">Adicionar</a> 71 78 <br /><br /> 72 79 <a href='javascript:void(0)' onclick="delUsers('$name');"><img border="0" src="$imagesPath/delete_group.png"></a> -
sandbox/workflow/branches/1015/index.php
r2372 r3061 9 9 * option) any later version. * 10 10 \**************************************************************************/ 11 12 /* Including common stuff to prepare workflow to run. A session start is needed */ 13 require_once 'inc/common.inc.php'; 11 14 12 15 /* if the menuaction variable is set, then let the expresso index deal with it */ … … 38 41 ); 39 42 require_once '../header.inc.php'; 40 require_once 'inc/common.inc.php';41 43 42 44 if (isset($_GET['start_tab'])) -
sandbox/workflow/branches/1015/js/htmlarea/plugins/UploadImage/popups/ImageEditor/Transform.php
r795 r3061 130 130 131 131 $classname = "Image_Transform_Driver_{$driver}"; 132 $obj = &new $classname;132 $obj = new $classname; 133 133 return $obj; 134 134 } -
sandbox/workflow/branches/1015/js/jscode/participants.js
r795 r3061 1 1 var participantsClone = null; 2 var chkOnlyVisibleAccountsClone = null; 2 3 var searchTimer = null; 3 4 var globalSearchEnter = true; … … 23 24 var params = { 24 25 organization: $F('organization'), 26 onlyVisibleAccounts: $F('onlyVisibleAccounts'), 25 27 entities: $F('entities'), 26 28 id: $F('id'), … … 34 36 var params = { 35 37 context: $F('sector'), 38 onlyVisibleAccounts: $F('onlyVisibleAccounts'), 36 39 entities: $F('entities'), 37 40 id: $F('id'), … … 46 49 setSelectValue($('participants'), data); 47 50 participantsClone = data; 51 if($('onlyVisibleAccounts')) 52 chkOnlyVisibleAccountsClone = $('onlyVisibleAccounts').checked; 48 53 } 49 54 … … 63 68 var reg = new RegExp("<option[^>]*>[^<]*" + searchString + "[^<]*<\/option>", "gi"); 64 69 setSelectValue($('participants'), participantsClone.match(reg)); 70 if($('onlyVisibleAccounts')) 71 $('onlyVisibleAccounts').checked = chkOnlyVisibleAccountsClone; 65 72 66 73 var participants = $('participants'); … … 126 133 127 134 obj = $('participants'); 128 if (obj) 135 if (obj){ 129 136 participantsClone = obj.innerHTML; 137 if($('onlyVisibleAccounts')) 138 chkOnlyVisibleAccountsClone = $('onlyVisibleAccounts').checked; 139 } 130 140 131 141 obj = $('exitLink'); … … 140 150 if (obj) 141 151 obj.focus(); 152 153 obj = $('onlyVisibleAccounts'); 154 if (obj) 155 obj.onclick = checkOnlyVisibleAccounts; 142 156 143 157 obj = $('useGlobalSearch'); … … 149 163 }); 150 164 }; 165 166 function checkOnlyVisibleAccounts() 167 { 168 if(!$('useGlobalSearch').checked) 169 getParticipants(); 170 else 171 toggleFullSearch(); 172 } 151 173 152 174 function participantsFilterName(name) … … 330 352 $('globalSearchWarnings').innerHTML = ''; 331 353 var params = { 354 onlyVisibleAccounts: $F('onlyVisibleAccounts'), 332 355 searchTerm: $F('search'), 333 356 entities: $F('entities'), … … 341 364 { 342 365 newWidth = 500; 343 newHeight = 290;366 newHeight = 315; 344 367 newScreenX = screen.width - newWidth; 345 368 newScreenY = 0; -
sandbox/workflow/branches/1015/js/jscode/wf_file_upload.js
r795 r3061 149 149 }; 150 150 151 152 151 153 // Set row value 152 154 new_row.innerHTML = element.value + ' '; … … 160 162 }; 161 163 164 this.removeFile = function (me, nome){ 165 me.parentNode.parentNode.removeChild(me.parentNode); 166 hd = document.getElementById("hd_remover_anexos"); 167 hd.value += nome+"; "; 168 } 169 162 170 }; -
sandbox/workflow/branches/1015/js/jscode/wf_select_ldap_users.js
r795 r3061 9 9 * @param String opt_name Atributo que será atribuído ao name (innerHTML) das options da combo, por padrão é o 'cn' 10 10 */ 11 function search_ldap_users_by_cn(cn, target, opt_id, opt_name, handleExpiredSessions) 12 { 11 function search_ldap_users_by_cn(cn, target, opt_id, opt_name, handleExpiredSessions, opt_complement) 12 { 13 // o parâmetro opt_complement foi acrescentado posteriormente a esta função, devido alguns métodos não utilizá-lo é 14 // necessário fazer o tratamento do mesmo caso não seja passado. 15 if(opt_complement == undefined) 16 opt_complement = ''; 17 13 18 /* Método que trata o retorno da chamada Ajax. Atribui os valores retornados à combobox */ 14 19 function result_search_ldap_users_by_cn(data) … … 35 40 var container = document.getElementById(data["target"]); 36 41 container.innerHTML = ""; 37 if(data['values'].length > 1){42 if(data['values'].length >= 1){ 38 43 container.disabled = true; 39 44 fill_combo_employee(data["target"], data["values"]); … … 44 49 } 45 50 } 51 52 return false; 46 53 } 47 54 48 55 var url = '$this.bo_utils.search_ldap_users_by_cn'; 49 var param = "cn=" + cn + "&target=" + target + "&id=" + opt_id + "&name=" + opt_name ;56 var param = "cn=" + cn + "&target=" + target + "&id=" + opt_id + "&name=" + opt_name + "&complement=" + opt_complement; 50 57 51 58 document.getElementById(target + "_img").show(); -
sandbox/workflow/branches/1015/js/orgchart/organization.js
r2063 r3061 483 483 data[i]['tr_attributes']['class'] = "linha" + i%2; 484 484 data[i]['tr_attributes']['className'] = "linha" + i%2; 485 data[i]['funcionario_id_desc'] = '<a href="javascript:void(0)" class="lbOn" onmouseover="getEmployeeInfoTimer(event, ' + data[i]['funcionario_id'] + ', ' + organizationID + '); return false;" onmouseout="hideEmployeeInfo(); return false;" onclick="loadAddEmployeeUI(' + organizationID + ', function(){objEmployee.fillForm(' + dataHash.customInspect() + ')}); $(\'addEmployeeLink\').parentNode.removeChild($(\'addEmployeeLink\')); return false;">' + data[i]['funcionario_id_desc'] + '</a>' + (data[i]['removed'] ? ' <font color="red">( excluído)</font>' : '');485 data[i]['funcionario_id_desc'] = '<a href="javascript:void(0)" class="lbOn" onmouseover="getEmployeeInfoTimer(event, ' + data[i]['funcionario_id'] + ', ' + organizationID + '); return false;" onmouseout="hideEmployeeInfo(); return false;" onclick="loadAddEmployeeUI(' + organizationID + ', function(){objEmployee.fillForm(' + dataHash.customInspect() + ')}); $(\'addEmployeeLink\').parentNode.removeChild($(\'addEmployeeLink\')); return false;">' + data[i]['funcionario_id_desc'] + '</a>' + (data[i]['removed'] ? ' <font color="red">(inativo)</font>' : ''); 486 486 data[i]['actions'] = '<a href="#" onclick="objEmployee.remove({\'funcionario_id\': ' + data[i]['funcionario_id'] + ', \'organizacao_id\': ' + organizationID + '} , this.parentNode.parentNode); return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/button_cancel.png" /></a>'; 487 487 } … … 537 537 data[i]['tr_attributes']['class'] = "linha" + i%2; 538 538 data[i]['tr_attributes']['className'] = "linha" + i%2; 539 data[i]['funcionario_id_desc'] = '<a href="javascript:void(0)" class="lbOn" onmouseover="getEmployeeInfoTimer(event, ' + data[i]['funcionario_id'] + ', ' + organizationID + '); return false;" onmouseout="hideEmployeeInfo(); return false;" onclick="loadAddEmployeeUI(' + organizationID + ', function(){objEmployee.fillForm(' + dataHash.customInspect() + ')}); $(\'addEmployeeLink\').parentNode.removeChild($(\'addEmployeeLink\')); return false;">' + data[i]['funcionario_id_desc'] + ' ' + complement + '</a>' + (data[i]['removed'] ? ' <font color="red">( excluído)</font>' : '');539 data[i]['funcionario_id_desc'] = '<a href="javascript:void(0)" class="lbOn" onmouseover="getEmployeeInfoTimer(event, ' + data[i]['funcionario_id'] + ', ' + organizationID + '); return false;" onmouseout="hideEmployeeInfo(); return false;" onclick="loadAddEmployeeUI(' + organizationID + ', function(){objEmployee.fillForm(' + dataHash.customInspect() + ')}); $(\'addEmployeeLink\').parentNode.removeChild($(\'addEmployeeLink\')); return false;">' + data[i]['funcionario_id_desc'] + ' ' + complement + '</a>' + (data[i]['removed'] ? ' <font color="red">(inativo)</font>' : ''); 540 540 data[i]['actions'] = '<a href="#" onclick="objEmployee.remove({\'funcionario_id\': ' + data[i]['funcionario_id'] + ', \'organizacao_id\': ' + organizationID + '} , this.parentNode.parentNode); return false;"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/button_cancel.png" /></a>'; 541 541 window.scrollTo(0,0); -
sandbox/workflow/branches/1015/js/userinterface/orgchart.js
r2371 r3061 348 348 complement = ''; 349 349 if (employees[i]['removed']) 350 complement += ' <font color="red">( excluído)</font>';350 complement += ' <font color="red">(inativo)</font>'; 351 351 content += '<tr class="linha'+ i%2 + (useCategories ? ' categoria_' + employees[i]['funcionario_categoria_id'] : '') + '" onmouseover="this.className=\'highlight0\'" onmouseout="this.className=\'linha'+ i%2 + (useCategories ? ' categoria_' + employees[i]['funcionario_categoria_id'] : '') + '\'">'; 352 352 content += '<td><a href="javascript:void(0);" onmouseover="getEmployeeInfoTimer(event, ' + employees[i]['funcionario_id'] + '); return false;" onmouseout="hideEmployeeInfo(); return false;">' + employees[i]['cn'] + complement + '</a></td>'; -
sandbox/workflow/branches/1015/lib/factory/WorkflowFactory.php
r2588 r3061 63 63 $this->registerFileInfo('Thread', 'class.Thread.inc.php', 'inc'); 64 64 $this->registerFileInfo('Paging', 'class.Paging.inc.php', 'inc'); 65 $this->registerFileInfo('Logger', 'class.Logger.inc.php', 'inc'); 65 66 $this->registerFileInfo('FsUtils', 'class.fsutils.inc.php', 'inc'); 66 67 $this->registerFileInfo('UserPictureProvider', 'class.UserPictureProvider.inc.php', 'inc'); … … 168 169 169 170 171 /** 172 * TODO - This is another ATR - Alternative Technical Resource (common known 173 * as workaround) to allow instantiation of "wf" classes. Although these classes 174 * should have not been instanciated by the workflow module, some of them are 175 * instantiated by run_activity during every execution. =( 176 * In a new version of MVC these objects must be created by the Processes. 177 */ 178 $this->registerFileInfo('wf_natural', 'class.wf_natural.php', 'inc/local/classes'); 179 $this->registerFileInfo('wf_db', 'class.wf_db.php', 'inc/local/classes'); 180 181 170 182 /* ok. no more instances of this class.. */ 171 183 self::$_instantiated = true; -
sandbox/workflow/branches/1015/setup/default_records.inc.php
r2042 r3061 59 59 $GLOBALS['phpgw']->ADOdb->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES(?, ?, ?)", array('workflow', 'log_type_file', 'True')); 60 60 $GLOBALS['phpgw']->ADOdb->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES(?, ?, ?)", array('workflow', 'log_type_firebug', 'True')); 61 $GLOBALS['phpgw']->ADOdb->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES(?, ?, ?)", array('workflow', 'log_level', ' 7'));61 $GLOBALS['phpgw']->ADOdb->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES(?, ?, ?)", array('workflow', 'log_level', '0')); 62 62 63 63 /* connect to the new database */ -
sandbox/workflow/branches/1015/setup/setup.inc.php
r2042 r3061 16 16 $setup_info['workflow']['app_order'] = 10; 17 17 $setup_info['workflow']['enable'] = 1; 18 $setup_info['workflow']['author'] = ' Ported from tikiwiki, modified by regis_glc alpeb & mbartz<br>Customized to ExpressoLivre by viani, rodrigolira, mariceli, drovetto, carloseduardo, rufino, asaikawa, gbisotto, julianadelgado & rodsouza<br>See changeLog for full names.';19 $setup_info['workflow']['note'] = 'Workflow engine';18 $setup_info['workflow']['author'] = 'See changeLog for complete list of developers.'; 19 $setup_info['workflow']['note'] = 'Workflow Engine'; 20 20 $setup_info['workflow']['license'] = 'GPL'; 21 21 $setup_info['workflow']['description'] = 'Workflow Management'; … … 59 59 $setup_info['workflow']['depends'][] = array( 60 60 'appname' => 'phpgwapi', 61 'versions' => Array('1.0.0','1.0.1','1.2', '2.0', '2.1' )61 'versions' => Array('1.0.0','1.0.1','1.2', '2.0', '2.1', '2.2') 62 62 ); 63 63 $setup_info['workflow']['depends'][] = array( 64 64 'appname' => 'preferences', 65 'versions' => Array('1.0.0', '0.9.13.002', '2.0', '2.1' )65 'versions' => Array('1.0.0', '0.9.13.002', '2.0', '2.1', '2.2') 66 66 ); 67 67 ?> -
sandbox/workflow/branches/1015/setup/tables_current.inc.php
r1229 r3061 190 190 'fd' => array( 191 191 'wf_parent_instance_id' => array('type' => 'int', 'precision' => '4', 'nullable' => False), 192 'wf_parent_activity_id' => array('type' => 'int', 'precision' => '4', 'nullable' => False),193 192 'wf_child_instance_id' => array('type' => 'int', 'precision' => '4', 'nullable' => False), 194 193 'wf_parent_lock' => array('type' => 'int', 'precision' => '2', 'nullable' => True) 195 194 ), 196 'pk' => array('wf_parent_instance_id', 'wf_ parent_activity_id', 'wf_child_instance_id'),195 'pk' => array('wf_parent_instance_id', 'wf_child_instance_id'), 197 196 'fk' => array(), 198 197 'ix' => array(), -
sandbox/workflow/branches/1015/setup/tables_update.inc.php
r2042 r3061 1216 1216 { 1217 1217 #updating the current version 1218 $GLOBALS['setup_info']['workflow']['currentver'] = '2.0.003'; 1219 return $GLOBALS['setup_info']['workflow']['currentver']; 1220 } 1221 $test[] = '2.0.003'; 1222 function workflow_upgrade2_0_003() 1223 { 1224 #updating the current version 1225 $GLOBALS['setup_info']['workflow']['currentver'] = '2.0.004'; 1226 return $GLOBALS['setup_info']['workflow']['currentver']; 1227 } 1228 $test[] = '2.0.004'; 1229 function workflow_upgrade2_0_004() 1230 { 1231 #updating the current version 1218 1232 $GLOBALS['setup_info']['workflow']['currentver'] = '2.1.000'; 1219 1233 return $GLOBALS['setup_info']['workflow']['currentver']; … … 1224 1238 if (!$GLOBALS['phpgw_setup']->oProc->m_bDeltaOnly) 1225 1239 { 1240 /* updating log level */ 1241 $values = array('0', 'workflow', 'log_level'); 1242 $GLOBALS['phpgw']->ADOdb->query('UPDATE phpgw_config SET config_value=? WHERE config_app=? AND config_name=?', $values); 1243 1226 1244 $workflowHostInfo = extractDatabaseParameters(); 1227 1245 … … 1260 1278 /* reconnect to the previous database */ 1261 1279 $GLOBALS['phpgw']->ADOdb->connect($workflowHostInfo['host'], $workflowHostInfo['user'], $workflowHostInfo['password'], $workflowHostInfo['dbname']); 1280 1281 /* removing primary key of egw_wf_interinstance_relations */ 1282 $GLOBALS['phpgw']->ADOdb->query('ALTER TABLE egw_wf_interinstance_relations DROP CONSTRAINT egw_wf_interinstance_relations_pkey'); 1283 1284 /* removing wf_parent_activity_id column from egw_wf_interinstance_relations table */ 1285 $GLOBALS['phpgw']->ADOdb->query('ALTER TABLE egw_wf_interinstance_relations DROP COLUMN wf_parent_activity_id'); 1286 1287 /* adding primary key without the column removed */ 1288 $GLOBALS['phpgw']->ADOdb->query('ALTER TABLE egw_wf_interinstance_relations ADD CONSTRAINT egw_wf_interinstance_relations_pkey PRIMARY KEY (wf_parent_instance_id, wf_child_instance_id)'); 1262 1289 } 1263 1290 -
sandbox/workflow/branches/1015/templates/default/participants.tpl
r795 r3061 32 32 <td colspan="2"> 33 33 <p style="text-align: center; font-weight: bold; font-size: 130%;">Busca Global</p> 34 </td> 35 </tr> 36 <tr> 37 <td colspan="2"> 38 <label><input type="checkbox" name="onlyVisibleAccounts" id="onlyVisibleAccounts" value="true" {if $onlyVisibleAccounts} checked {/if}/> Exibir apenas contas visíveis</label> 34 39 </td> 35 40 </tr>
Note: See TracChangeset
for help on using the changeset viewer.