Changeset 3061 for sandbox/workflow/branches/1015/inc
- Timestamp:
- 07/15/10 17:50:39 (14 years ago)
- Location:
- sandbox/workflow/branches/1015/inc
- Files:
-
- 28 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
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>
Note: See TracChangeset
for help on using the changeset viewer.