Slawa Gorshkoff, curriculum vitae (CV)

General information

Name, surname Vjacheslav (Slawa) Gorshkoff  
Place and date of birth August 29, 1968, Moscow area, village Silver Ponds, Russia
Gender, Nationality Male, Russian
Citizenship Citizen of Germany
Education Higher, Latvian State University, faculty of physics and mathematics, studying «applied mathematics», 1992
Scientific degree and profession Bachelor of Physic and Mathematics, Mathematician, Programmer
The marital status Married, two children: son, born 1991 and daughter, born 1992
Foreign languages
  • Russian - natively
  • English, engineering (computer) literature — perfectly, spoken language — good
  • German — spoken language — good.
  • Latvian — I can read, understand and translate with dictionary.
Interests and Hobby Computers, music, books, photo, cinema, inline skates, traveling, nature
Contact Info

Places of work and occupied posts


Working place, Post Hardware Software
2006- Company "XXX", Senior Developer, System Architect Dell PowerAge servers, Sun Enterprise servers Zend Development Studio, PHP, Apache, Perl
1999-2006 Company "XXX", Software Developer, System administrator Dell PowerAge servers, Sun Enterprise servers Zend Development Studio, PHP, Apache, Perl; MS Visual Studio, JBuilder, JDeveloper
1996-1999 Company "Bilteks", Webmaster, system manager, database and system administrator Sun Ultra 1, Pentium PC, Cisco routers and switches Oracle 7, Sybase 11, Postgres 95, CGI, Perl, JavaScript, Java, Netscape Web-servers, Netscape LiveWire, Sybase web.sql, MS FrontPage, MS Office, CorelDRAW, Photoshop, CDRWin etc.
1993-1995 Company "Alise T", chief of department of the computer graphics, creative designer Pentium PC, Microsoft Network, IBM OS/2, Novell Netware, CD Recorders, Imagesetters PostScript, CorelDRAW, Ventura Publisher, PageMaker, QuarkXPress, PhotoShop, CorelCD Creator, Easy-CD, CD-Gen, WinOnCD etc.
1992-1993 Printing house "Latvijas Dzelzcelnieks", engineer - programmer, creative designer IBM PC/386, 486 CorelDRAW, Ventura Publisher, PageMaker, QuarkXPress, PhotoShop
1989-1992 Joint-stock company "Saiva", engineer - programmer Robotron, IBM PC XT dBase II, dBase III, FoxBase, FoxPro, Clipper, AutoCAD
1987-1989 Service in USSR Armed Forces, computer operator top secret Basic, Assembler
1986-1987 Computer center of Ministry of Trade in Latvian SSR, programmer EC Computers, IBM/360 PL/1, Fortran
1985-1986 Computer center of Latvian University, programmer EC Computers, IBM/360 PL/1, Fortran, Assembler, JCL

Knowledges and skills

Hardware knowledge
  • Android-powered Smartphones - configuration, firmware updates, programming
  • IBM-PC compatible workstations - experience of assembly, upkeep, configuration
  • IBM-PC compatible notebooks - experience of upkeep, configuration
  • Windows CE-powered HandheldPC/PocketPC - experience of upkeep, configuration, programming
  • Palm Pilot compatible PDA - experience of upkeep, configuration, programming
  • Sun workstations - experience of a upkeep, configuration
  • CISCO Network equipment - experience of management and upkeep
  • Peripheral equipment IBM-compatible of computers: Video-cards, SCSI controllers, scanners, printers, HDD, streamers, multimedia - experience of connection, configuration, support
Operational systems
  • AndroidOS (Linux) - programming
  • UNIX: Solaris 2.x, Linux - installation, system administration, programming
  • PalmOS - configuration, programming
  • Windows CE - professional use, programming
  • Microsoft Windows 3.x, Windows 95, Windows NT/2000/XP - professional use, configuration, administration, programming, programming of keyboard drivers, design of TrueType fonts
  • Microsoft DOS - programming, TSR drivers, Turbo Debugger
  • IBM OS/2 - use, configuration
  • Novell Netware 2.x, 3.x - installation, configuration, administration
  • IBM System/360 - programming, job control
Databases
  • SQLite on Android devices - programming
  • mySQL - installation, administration, programming
  • Sybase Adaptive Server Enterprise - installation, system administration, programming, upkeep, configuration
  • Oracle 7-9 - experience of installation and configuration
  • dBase, FoxBase, FoxPro - programming
  • Postgres 95 - installation, administration, programming
Server applications Netscape Enterprise Server, Netscape Proxy Server, Netscape Messaging Server, Oracle Web Server, Squid proxy server, Apache, NFS, ISODE - experience of installation, configuration, administration
Client applications Netscape LiveWire (JavaScript), Sybase web.sql (Perl), mod_perl, PHP- programming of WWW-interfaces, database binding
Applications Photoshop, CorelDRAW, PageMaker, QuarkXPress, MS Office, MS Frontpage, NetObjects Fusion, Fontographer etc.
Programming systems, IDE Borland JBuilder, Oracle JDeveloper, Metrowerks CodeWarrior, (Embedded) Visual Studio, Watcom C, Visual Basic, Tk/Perl, CygWin32, VisualCE, PocketC, Zend Development Studui
Programming languages C, C++, Perl, JavaScript, Java, HTML, XML, PHP, Unix Shell, PocketC, Basic
Academical knowledge
  • Programming languages: Lisp, Prolog;
  • Project management
  • Testing metodology and technology
  • Methods of optimization
Miscellaneous
  • Experience of assembly and diagnostics of IBM-compatible computers
  • UNIX system administration
  • Administration of SQL databases (especially, Sybase ASE and MySQL 3.x and 4.x)
  • Database design and WWW integration
  • Usage and development with JavaScript frameworks: JQuery, Ext-JS
  • Experience of FFMpeg integration on Android, JNI-development
  • Experience of work with a audio-format MPEG Layer 3: software encoders, players, IceCast/ShoutCast streaming
  • Experience of work with a video-formats MPEG1, MPEG2, DivX: software encoders, converters, players
  • BD-J (Blu-Ray Java) Programming, authoring of Blu-ray Discs
  • Adaptation of the UNIX system programs to Win32
  • Localization/translation of the software
  • Knowledge of IrDA standards, experience in tracing of IrLAP, IrLMP, IAS protocols. Programming of IrLPT, IrCOMM applications.
  • Knowledge of Nokia Smart Messaging Specifications: Group Graphics, Business Cards, Calendar Notes etc.
  • Knowledge of WAP technologies, protocols and SDK's
  • Development of GUI for Java, C and VB applications
  • Using UML for Java classes design and representation
  • Java2ME MIDlet programming
  • Programming of Apache modules
  • OpenSource CMS: Drupal, Joomla - installation, customization, installation of extensions
  • PalmOS programming
  • FTN-networks, installation and use of the FIDOnet software
  • Process engineering of Compact Disks and DVD: formats, types of media, Audio/Video, Enhanced/Multisession CD
  • Format of TrueType and Adobe PostScript fonts, development of own fonts
  • OSI Standard model, FTAM operations
  • ISDN and CAPI - programming

The most significant personal creative reachings

2012

Development of Android freeware (link in Russian): Webcam, Routes, CarMode.

Eclipse IDE, Android SDK, Android NDK

2005

Development of PalmOS Shareware: Schema Browser, XMLGuru, OnLaunch, SmartUpdate.

PalmOS, Palm Development Suite, Metrowerks CodeWarrior IDE

2002

Development of Light Sabre MIDlets: Mobile Navigation, Ring Tones, Pictures, Poetry.

Java/ME, Servets; Borland JBuilder, JDK 1.4, Nokia Java Tools.

1999

Development of Light Sabre Software Suite for Windows CE: Nokia Group Graphics, Operator Logos, Business Cards, Calendar Notes uploading/downloading to Nokia 61xx, 88xx, 71xx mobile phones.

Microsoft Visual Studio, C, C++, Windows CE SDK.

1998

Porting of a client and server components of ISODE 7 to Windows 95 and Windows NT.

GNU Tools, CygWin32, C.

1998

Development of software gateway servers between ISDN (CAPI) and TCP/IP.

Microsoft Visual Studio, C, Windows Sockets.

1997

Creation of the system software for INTERNET-Cafe on the basis of diskless Linux terminals with TK/Perl applications.

Perl, TK/Perl, C, GNU Tools.

1992

Creation of a first in Latvia Russian/Latvian/English code table "Plus" and manufacturing more than 50 TrueType typefaces in this coding.

Fontographer, FontLab, CorelDraw.

Certificates and degrees

October, 2004 Computer Training Center at BMSTU, Certificate of Excelence,
PHP Specialist (link in Russian)
August, 2001 Computer Training Center at BMSTU, Certificate of Excelence,
HTML Specialist (link in Russian)
August, 2001 Computer Training Center at BMSTU, Certificate of Excelence,
Internet User (link in Russian)

Layout and information © 1999-2005, Slawa Gorshkoff

local("ot.new"), _VALUE_ORDER_DONE=> local("ot.done"), _VALUE_ORDER_CANCELED => local("ot.canceled"), _VALUE_ORDER_COMPLETED => local("ot.compelete"), _VALUE_ORDER_REJECTED => local("ot.rejected"), _VALUE_ORDER_FAX_SENT => local("ot.faxSent"), _VALUE_ORDER_FAX_NOT_REQUIRED => local("ot.faxNotRequired"), _VALUE_ORDER_KVA_SENT => local("ot.priceOfferSent"), _VALUE_ORDER_KVA_AGREE => local("ot.priceOfferAgree"), _VALUE_ORDER_KVA_REFUSED => local("ot.priceOfferRefused"), _VALUE_ORDER_LIEFERANT_SELECTED => local("ot.Lieferant"), _VALUE_ORDER_BILL_AMOUNT => local("ot.BillAmount"), _VALUE_ORDER_BILL_AMOUNT+1=>local("ot.BillAmount+1"), _VALUE_ORDER_BILL_AMOUNT+2=>local("ot.BillAmount+2"), _VALUE_ORDER_BILL_REJECTED=> local("ot.BillRejected"), _VALUE_ORDER_BILL_ACCEPTED=> local("ot.BillAccepted"), _VALUE_ORDER_REFERENCE_ORDER => local("ot.ReferencedOrderCreated"), _VALUE_ORDER_TEST+1=>local("ot.test result 1"), _VALUE_ORDER_TEST+2=>local("ot.test result 2"), _VALUE_ORDER_TEST+3=>local("ot.test result 3"), _VALUE_ORDER_TEST+4=>local("ot.test result 4"), _VALUE_ORDER_PRINT=> local("ot.printed"), _VALUE_ORDER_DESTINATION_CHANGED => local("ot.destination changed"), _VALUE_PAYMENT_BASE_KK => local("ot.kk nicht abgerechnet"), _VALUE_PAYMENT_BASE_KK + AUFTRAG_VALUE_PAYMENT_STATUS_BILL => local("ot.kk abgerechnet"), _VALUE_PAYMENT_BASE_KK + AUFTRAG_VALUE_PAYMENT_STATUS_PAYD => local("ot.kk Zahlungeingang"), _VALUE_PAYMENT_BASE_SH => local("ot.sh nicht abgerechnet"), _VALUE_PAYMENT_BASE_SH + AUFTRAG_VALUE_PAYMENT_STATUS_BILL => local("ot.sh abgerechnet"), _VALUE_PAYMENT_BASE_SH + AUFTRAG_VALUE_PAYMENT_STATUS_PAYD => local("ot.sh Zahlungeingang"), _VALUE_ORDER_KK_AGREEMENT_REQUIRED => local("ot.kk agreement required"), _VALUE_ORDER_KK_AGREEMENT_RECEIVED => local("ot.kk agreement received"), _VALUE_ORDER_KK_AGREEMENT_REJECTED => local("ot.kk agreement rejected"), _VALUE_ORDER_GARBAGE_ACCEPTED => local("ot.garbage accepted"), _VALUE_ORDER_GARBAGE_REJECTED => local("ot.garbage rejected"), _VALUE_ORDER_GARBAGE_REQUESTED => local("ot.garbage requested"), ); return strlen($order[$type])?$order[$type]:$type; } function _log_setup() { global $_LOG_SAVE_ENGINE; $_LOG_SAVE_ENGINE=SETUP_ITEM_ENGINE(_LOG_ENTITY); } function _log_restore() { global $_LOG_SAVE_ENGINE; SETUP_ITEM_ENGINE($_LOG_SAVE_ENGINE); } // by reference function _log_save_attributes(&$item,&$save) { /* @var $item Item */ foreach($save as $key=>$value) $item->insertAttribute($key,$value); unset($save); } function log_entry_name_generator(&$item) { $item->name = sprintf("%d/%s",$item->type,date("Y-m-d H:i:s")); } // by reference function _log_save_item(&$item) { /* 1 date 2 real user id 3 real login 4 effective user id 5 effective login 6 group id 7 role id 8 host 9 browser */ $item->name = sprintf("%d/%s",$item->type,date("Y-m-d H:i:s")); // check if not under the browser if (strlen($_SERVER['SERVER_SOFTWARE'])) { $l = array_shift(authGet()); $e = authGetEffective(); list($group,$role)=authGetGroup(); $host = get_remote_address(); $browser = $_SERVER["HTTP_USER_AGENT"]; $save = array( _ATTRIBUTE_DATE => date("d.m.Y H:i:s"), _ATTRIBUTE_REAL_USER_ID=>getUserID($l), _ATTRIBUTE_REAL_USER_LOGIN=>$l, _ATTRIBUTE_EFFECTIVE_USER_ID=>getUserID($e), _ATTRIBUTE_EFFECTIVE_USER_LOGIN=>$e, _ATTRIBUTE_GROUP=>$group, _ATTRIBUTE_ROLE=>$role, 8=>$host, 9=>$browser, ); } else { $save = array( _ATTRIBUTE_DATE => date("d.m.Y H:i:s"), _ATTRIBUTE_REAL_USER_ID=>-1, _ATTRIBUTE_EFFECTIVE_USER_ID=>-1, _ATTRIBUTE_GROUP=>-1, _ATTRIBUTE_ROLE=>ROLE_ADMIN, ); } _log_save_attributes($item,$save); $id = $item->save(); unset($item); return $id; } function getSecurityInfo(&$entry) { $ruid = $entry->getAttributeValue(_ATTRIBUTE_REAL_USER_ID); $euid = $entry->getAttributeValue(_ATTRIBUTE_EFFECTIVE_USER_ID); $ruinfo = getUserInfo($ruid); $euinfo = getUserInfo($euid); if ($ruid == $euid) return sprintf("%s %s",$ruinfo['USER_NAME'],$ruinfo['USER_SURNAME']); else return sprintf("r:%s %s
e:%s %s",$ruinfo['USER_NAME'],$ruinfo['USER_SURNAME'],$euinfo['USER_NAME'],$euinfo['USER_SURNAME']); } function saveFailureLoginLog() { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_SYSTEM_LOGIN_LOG); $save = array( _ATTRIBUTE_RESULT=>_VALUE_RESULT_LOG_FAILURE ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function saveSuccessLoginLog() { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_SYSTEM_LOGIN_LOG); $save = array( _ATTRIBUTE_RESULT=>_VALUE_RESULT_LOG_SUCCESS ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function saveEffectiveChangeLog() { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_EFFECTIVE_CHANGES_LOG); _log_save_item($item); _log_restore(); } function getPriceConfirmationLogForHM($hm_id) { _log_setup(); $fa[]=new FilterAttribute(_ATTRIBUTE_HM_ID,$hm_id); $items = get_items_dummy(_TYPE_PRICE_CONFIRMATION_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } // order,hm,price,confirmation function savePriceConfirmationLog($order_id,$hm_id,$zeitwert,$confirmation) { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_PRICE_CONFIRMATION_LOG); $save = array( _ATTRIBUTE_ORDER_ID=>$order_id, _ATTRIBUTE_HM_ID=>$hm_id, _ATTRIBUTE_ZEITWERT=>$zeitwert, _ATTRIBUTE_CONFIRMATION=>$confirmation ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getOwnerChangeLogForHM($hm_id) { _log_setup(); $fa[]=new FilterAttribute(_ATTRIBUTE_HM_ID, $hm_id ); $items = get_items_dummy(_TYPE_OWNER_CHANGES_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } // order,hm,kk_old,kk_new,price function saveHMOwnerChangeLog($order_id,$hm_id,$old_owner,$new_owner,$zeitwert,$ptype, $prs_id=0,$addr_id=0,$direction=_VALUE_DIRECTION_DIRECT) { // don't trace if owner is not changed if ($old_owner == $new_owner) return; // CHECK IF ZW-CALCULATION IS REQUIRED $calculation_required = isZeitwertCalculationRequired( $old_owner,$new_owner ); _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_OWNER_CHANGES_LOG); $save = array( _ATTRIBUTE_ORDER_ID => $order_id, _ATTRIBUTE_HM_ID => $hm_id, _ATTRIBUTE_ZEITWERT => $zeitwert, _ATTRIBUTE_OWNER_OLD => $old_owner, _ATTRIBUTE_OWNER_NEW => $new_owner, _ATTRIBUTE_PRICING_TYPE => $ptype, _ATTRIBUTE_PRS_ID => $prs_id, _ATTRIBUTE_ADDR_ID => $addr_id, _ATTRIBUTE_DIRECTION => $direction, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getZeitwertChangeLogForHM($hm_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_HM_ID,$hm_id); $items = get_items_dummy(_TYPE_PRICE_CHANGES_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function saveZeitwertChangeLog($order_id, $hm_id, $old_price, $new_price, $note=NULL, $direction=_VALUE_DIRECTION_DIRECT) { // don't trace if price isn't changed if ($old_price == $new_price) return; _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_PRICE_CHANGES_LOG); $save = array( _ATTRIBUTE_ORDER_ID => $order_id, _ATTRIBUTE_HM_ID => $hm_id, _ATTRIBUTE_ZEITWERT_OLD => $old_price, _ATTRIBUTE_ZEITWERT_NEW => $new_price, _ATTRIBUTE_ORDER_MESSAGE=> $note, _ATTRIBUTE_DIRECTION => $direction, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getOrderLog($order_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_ORDER_ID,$order_id); $so = new SearchObject(_TYPE_NEW_ORDER_LOG,_LOG_ENTITY); $so->setFilters($fa); $so->setSortMode($so->SM_ATTRIBUTE(),_ATTRIBUTE_DATE,SORT_ASCENDING); $items = $so->result(); // $items = get_items_dummy(_TYPE_NEW_ORDER_LOG,$fa,_LOG_ENTITY); unset($fa); unset($so); _log_restore(); return $items; } function saveNewOrderLog($order_id, $status=_VALUE_ORDER_NEW, $message=NULL, $workflow_step = NULL, $order=NULL ) { if (!$order_id) { trigger_error(sprintf("order id is empty while trying to set status %d and message %s", $status,$message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_NEW_ORDER_LOG); $save = array( _ATTRIBUTE_ORDER_ID => $order_id, _ATTRIBUTE_ORDER_STATUS => $status, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_WORKFLOW_STEP => $workflow_step, ); // save order state if order is given if ($order) { $save[_ATTRIBUTE_SUBJECT] = getCacheItemString($order); } _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getHMStatusLog($hm_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_HM_ID,$hm_id); $items = get_items_dummy(_TYPE_HM_STATUS_CHANGE_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function saveHMStatusLog($hm_id,$status,$message=NULL,$order_id=NULL) { if (!$hm_id) { trigger_error(sprintf("hm id is empty while trying to set status %d and message %s", $status,$message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_HM_STATUS_CHANGE_LOG); $save = array( _ATTRIBUTE_HM_ID => $hm_id, _ATTRIBUTE_ORDER_STATUS => $status, _ATTRIBUTE_ORDER_MESSAGE=> $message, _ATTRIBUTE_ORDER_ID => $order_id, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getPersonWorkflowLog($prs_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_PRS_ID,$prs_id); // $items = get_items_dummy(_TYPE_PERSON_WORKFLOW_LOG,$fa,_LOG_ENTITY); $so = new SearchObject(_TYPE_PERSON_WORKFLOW_LOG,_LOG_ENTITY); $so->setGeneralFiltering(TRUE); $so->setFilters($fa); $items = $so->result($in_memory = TRUE); unset($fa); _log_restore(); return $items; } function getOrderWorkflowLog($order_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_ORDER_ID,$order_id); $so = new SearchObject(_TYPE_ORDER_WORKFLOW_LOG,_LOG_ENTITY); $so->setGeneralFiltering(TRUE); $so->setFilters($fa); $items = $so->result($in_memory = TRUE); // $items = get_items_dummy(_TYPE_ORDER_WORKFLOW_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function savePersonWorkflowLog($prs_id,$message, $case=_VALUE_ORDER_CASE_INFORMATIVE,$private=FALSE) { if (!$prs_id) { trigger_error(sprintf("prs id is empty while trying to save message %s", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_PERSON_WORKFLOW_LOG); $save = array( _ATTRIBUTE_PRS_ID => $prs_id, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_ORDER_CASE => $case, _ATTRIBUTE_PRIVATE => (int)$private, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function saveOrderWorkflowLog($order_id,$message,$case=_VALUE_ORDER_CASE_INFORMATIVE,$private=FALSE) { if (!$order_id) { trigger_error(sprintf("order id is empty while trying to save message %s", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_ORDER_WORKFLOW_LOG); $save = array( _ATTRIBUTE_ORDER_ID => $order_id, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_ORDER_CASE => $case, _ATTRIBUTE_PRIVATE => intval($private), ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getHMWorkflowLog($hm_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_HM_ID,$hm_id); // $items = get_items_dummy(_TYPE_HM_WORKFLOW_LOG,$fa,_LOG_ENTITY); $so = new SearchObject(_TYPE_HM_WORKFLOW_LOG,_LOG_ENTITY); $so->setGeneralFiltering(TRUE); $so->setFilters($fa); $items = $so->result($in_memory = TRUE); unset($fa); _log_restore(); return $items; } function saveHMWorkflowLog($hm_id,$message,$case=_VALUE_ORDER_CASE_INFORMATIVE,$private=FALSE) { if (!$hm_id) { trigger_error(sprintf("hm id is empty while trying to save message %s", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_HM_WORKFLOW_LOG); $save = array( _ATTRIBUTE_HM_ID => $hm_id, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_ORDER_CASE => $case, _ATTRIBUTE_PRIVATE => (int)$private, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function saveVHMWorkflowLog($hm_id,$message,$case=_VALUE_ORDER_CASE_INFORMATIVE,$private=FALSE) { if (!$hm_id) { trigger_error(sprintf("vhm id is empty while trying to save message %s", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(TRACE_TYPE_VHM_WORKFLOW); $save = array( TRACE_ATTRIBUTE_VHM_ID => $hm_id, TRACE_ATTRIBUTE_ORDER_MESSAGE => $message, TRACE_ATTRIBUTE_ORDER_CASE => $case, TRACE_ATTRIBUTE_PRIVATE => (int)$private, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getVHMWorkflowLog($vhm_id) { _log_setup(); $fa[] = new FilterAttribute(TRACE_ATTRIBUTE_VHM_ID,$vhm_id); // $items = get_items_dummy(_TYPE_HM_WORKFLOW_LOG,$fa,_LOG_ENTITY); $so = new SearchObject(TRACE_TYPE_VHM_WORKFLOW,_LOG_ENTITY); $so->setGeneralFiltering(TRUE); $so->setFilters($fa); $items = $so->result($in_memory = TRUE); unset($fa); _log_restore(); return $items; } function saveMailExchangeLog($from,$to,$subject,$message,$order_id,$case=_VALUE_MAIL_CASE_ORDER) { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_MAIL_EXCHANGE); $save = array( _ATTRIBUTE_ORDER_ID=> $order_id, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_SUBJECT => $subject, _ATTRIBUTE_ORDER_CASE => $case, _ATTRIBUTE_MAIL_FROM => $from ); _log_save_attributes($item,$save); // save addresses if (is_array($to)) { foreach ($to as $idx=>$email) { if (strlen($email)) $item->insertAttribute(_ATTRIBUTE_MAIL_TO,$email); } } else { if (strlen($to)) $item->insertAttribute(_ATTRIBUTE_MAIL_TO,$to); } _log_save_item($item); _log_restore(); } function getMailExchangeLog($case,$order_id=NULL) { _log_setup(); $fa = array(new FilterAttribute(_ATTRIBUTE_ORDER_CASE,$case)); switch ($case) { case _VALUE_MAIL_CASE_ORDER: // set more precise attribute first array_unshift($fa, new FilterAttribute(_ATTRIBUTE_ORDER_ID,$order_id)); break; case _VALUE_MAIL_CASE_COMPLAINS: // nothing more break; } $items = get_items_dummy(_TYPE_MAIL_EXCHANGE,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function getOrderOwner($order_id) { $fa[] = new FilterAttribute(_ATTRIBUTE_ORDER_ID,$order_id); $fa[] = new FilterAttribute(_ATTRIBUTE_ORDER_STATUS,_VALUE_ORDER_NEW); $owners = get_items_dummy(_TYPE_NEW_ORDER_LOG,$fa,_LOG_ENTITY); unset($fa); if (count($owners)) { return $owners[0]->getAttributeValue( array(_ATTRIBUTE_EFFECTIVE_USER_ID,_ATTRIBUTE_GROUP) ); } return NULL; } function saveBackupProcess($scheduled) { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_BACKUP); $save = array( _ATTRIBUTE_RESULT => _VALUE_BACKUP_NEW, _ATTRIBUTE_QUERY_SCHEDULED => $scheduled, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getBackupStatusString($id) { $r = array( _VALUE_DBLSEARCH_NEW => local("bk.s.new"), _VALUE_DBLSEARCH_WORKING => local("bk.s.working"), _VALUE_DBLSEARCH_DONE => local("bk.s.done"), ); return $r[$id]; } function getBackupProcess($status = NULL, $start_date = NULL) { _log_setup(); $fa = array(); if (strlen($status)) { $fa[] = new FilterAttribute(_ATTRIBUTE_RESULT,$status); } if (strlen($start_date)) { $fa[] = new FilterAttribute(_ATTRIBUTE_QUERY_SCHEDULED,$start_date,"<="); } $items = get_items_dummy(_TYPE_BACKUP,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function saveDublicatesSearch($entity,$type,$attributes) { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_DUBLICATES_SEARCH); $save = array( _ATTRIBUTE_SUBJECT => serialize(array($entity,$type,$attributes)), _ATTRIBUTE_RESULT => _VALUE_DBLSEARCH_NEW ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getDublicatesSearch($userid,$status=NULL) { _log_setup(); $fa = array(new FilterAttribute(_ATTRIBUTE_REAL_USER_ID,$userid)); if (strlen($status)) { $fa[] = new FilterAttribute(_ATTRIBUTE_RESULT,$status); } $items = get_items_dummy(_TYPE_DUBLICATES_SEARCH,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function getDublicatesSearchStatusString($id) { $r = array( _VALUE_DBLSEARCH_NEW=>local("dbl.s.new"), _VALUE_DBLSEARCH_WORKING=>local("dbl.s.working"), _VALUE_DBLSEARCH_DONE=>local("dbl.s.done"), ); return $r[$id]; } function saveEntityChangesLog(&$entry) { /* @var $entry Item */ _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_ENTITY_CHANGES_LOG); $save = array( _ATTRIBUTE_ENTITY_ITEM_ID => $entry->id, _ATTRIBUTE_ENTITY => $entry->entity, _ATTRIBUTE_ORDER_MESSAGE => base64_encode(bzcompress(serialize($entry),9)), ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getEntityChangesLog($entity,$itemid) { _log_setup(); $fa = array ( // 1st numeric value to increase search speed new FilterAttribute(_ATTRIBUTE_ENTITY_ITEM_ID, $itemid), // and then string value to compare in a loop new FilterAttribute(_ATTRIBUTE_ENTITY,$entity), ); $items = get_items_dummy(_TYPE_ENTITY_CHANGES_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function getEntityChangesLogHistoryItem($history_id) { /* @var $history_record Item */ $history_record = getItem(_LOG_ENTITY,$history_id); $encoded = $history_record->getAttributeValue(_ATTRIBUTE_ORDER_MESSAGE); return unserialize(bzdecompress(base64_decode($encoded),TRUE)); } function saveReportQuery($report_type, $entity, $item_type, $filters) { // prepare query _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_REPORT); $save = array( _ATTRIBUTE_REPORT_TYPE => $report_type, _ATTRIBUTE_SUBJECT => serialize(array($entity,$item_type,$filters)), _ATTRIBUTE_RESULT => _VALUE_REPORT_NEW, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getReportQueries($userid=0,$status=NULL) { _log_setup(); $fa = array(); if ($userid != 0) { $fa[] = new FilterAttribute(_ATTRIBUTE_REAL_USER_ID,$userid); } if (strlen($status)) { $fa[] = new FilterAttribute(_ATTRIBUTE_RESULT,$status); } $items = get_items_dummy(_TYPE_REPORT,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function getReportQueryStatusString($id) { $r = array( _VALUE_REPORT_NEW => local("rr.ss.new"), _VALUE_REPORT_WORKING => local("rr.ss.working"), _VALUE_REPORT_DONE => local("rr.ss.done"), ); return $r[$id]; } function getHMWarehouseChangeLog($hm_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_HM_ID,$hm_id); $items = get_items_dummy(_TYPE_WAREHOUSE_CHANGE_LOG,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function saveHMWarehouseChangeLog($hm_id, $lfr_old, $lfr_new, $message=NULL) { if (!$hm_id) { trigger_error(sprintf("hm id is empty while trying to change warehouse, message is '%s'", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_WAREHOUSE_CHANGE_LOG); $save = array( _ATTRIBUTE_HM_ID => $hm_id, _ATTRIBUTE_WAREHOUSE_OLD => $lfr_old, _ATTRIBUTE_WAREHOUSE_NEW => $lfr_new, _ATTRIBUTE_ORDER_MESSAGE => $message, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getTrackingWorkflowLog($track_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_TRACKING_ID,$track_id); $items = get_items_dummy(_TYPE_TRACKING_WORKFLOW,$fa,_LOG_ENTITY); unset($fa); _log_restore(); return $items; } function saveTrackingWorkflowLog($track_id,$message,$case=_VALUE_ORDER_CASE_INFORMATIVE) { if (!$track_id) { trigger_error(sprintf("track id is empty while trying to save message %s", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_TRACKING_WORKFLOW); $save = array( _ATTRIBUTE_TRACKING_ID => $track_id, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_ORDER_CASE => $case, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function getMandantWorkflowLog($mandant_id) { _log_setup(); $fa[] = new FilterAttribute(_ATTRIBUTE_MANDANT_ID,$mandant_id); // $items = get_items_dummy(_TYPE_HM_WORKFLOW_LOG,$fa,_LOG_ENTITY); $so = new SearchObject(_TYPE_MANDANT_WORKFLOW_LOG,_LOG_ENTITY); $so->setGeneralFiltering(TRUE); $so->setFilters($fa); $items = $so->result($in_memory = TRUE); unset($fa); _log_restore(); return $items; } function saveMandantWorkflowLog($hm_id,$message,$case=_VALUE_ORDER_CASE_INFORMATIVE,$private=FALSE) { if (!$mandant_id) { trigger_error(sprintf("mandant id is empty while trying to save message %s", $message),E_USER_WARNING); return; } _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_MANDANT_WORKFLOW_LOG); $save = array( _ATTRIBUTE_MANDANT_ID => $hm_id, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_ORDER_CASE => $case, _ATTRIBUTE_PRIVATE => (int)$private, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } /** * Save data picker search log entry * * @param String $entity Entity to search withing * @param Integer $rubrik * @param String $search Search pattern */ function saveDataPickerSearchLog($entity,$rubrik,$search,$search_type='all') { _log_setup(); $item = new Item(NULL); $item->setType(_TYPE_DATA_PICKER_SEARCH_LOG); $save = array( _ATTRIBUTE_ENTITY => $entity, _ATTRIBUTE_ORDER_MESSAGE => $search, _ATTRIBUTE_ORDER_CASE => $rubrik, _ATTRIBUTE_SEARCH_TYPE => $search_type, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); } function savePrsStammdatenMergeRequest($allids,$primary_id,$message) { _log_setup(); $item = new Item(NULL); $item->setType(TRACE_TYPE_PRS_MERGE_REQUEST); $save = array( TRACE_ATTRIBUTE_PRS_ID => $primary_id, TRACE_ATTRIBUTE_SUBJECT => $allids, _ATTRIBUTE_ORDER_MESSAGE => $message, _ATTRIBUTE_ORDER_STATUS => 1, ); _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); return $item->id; } function saveItemRestaurationRequest(Item $save_item, $rubrik, $comment=NULL) { _log_setup(); $item = new Item(NULL); $item->setType(TRACE_TYPE_ITEM_RESTAURATION,_LOG_ENTITY); $save = array( TRACE_ATTRIBUTE_ENTITY => $save_item->entity, TRACE_ATTRIBUTE_ITEM_ID => $save_item->id, _ATTRIBUTE_ORDER_CASE => $rubrik, _ATTRIBUTE_ORDER_MESSAGE => base64_encode(bzcompress(serialize($save_item),9)), ); if ($comment) { $save[_ATTRIBUTE_SUBJECT] = $comment; } _log_save_attributes($item,$save); _log_save_item($item); _log_restore(); return $item->id; } } // defined ?>
( ! ) Fatal error: Uncaught Error: Undefined constant "TRACE_ATTRIBUTE_DATE" in /archive/www/htdocs/comments/lib/general.inc.php on line 12
( ! ) Error: Undefined constant "TRACE_ATTRIBUTE_DATE" in /archive/www/htdocs/comments/lib/general.inc.php on line 12
Call Stack
#TimeMemoryFunctionLocation
10.0002365952{main}( ).../stub.php:0
20.0021367712include( '/archive/www/htdocs/comments/lib/general.inc.php ).../stub.php:13

[940]