Index: admin/system_presets/simple/agents_agent.php =================================================================== --- admin/system_presets/simple/agents_agent.php (revision 14858) +++ admin/system_presets/simple/agents_agent.php (working copy) @@ -4,26 +4,26 @@ // section removal $remove_sections = Array ( - 'in-portal:agents', + 'in-portal:scheduled_tasks', ); // sections shown with debug on $debug_only_sections = Array ( -// 'in-portal:agents', +// 'in-portal:scheduled_tasks', ); // toolbar buttons $remove_buttons = Array ( -// list of agents -// 'agent_list' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'process', 'cancel', 'view', 'dbl-click'), +// list of scheduled tasks +// 'scheduled_task_list' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'process', 'cancel', 'view', 'dbl-click'), -// edit agent -// 'agent_edit' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'), +// edit scheduled task +// 'scheduled_task_edit' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'), ); // fields to hide $hidden_fields = Array ( - /* 'AgentId', 'AgentName', 'AgentType', 'Status', 'Event', 'RunInterval', 'RunMode', 'LastRunOn', + /* 'ScheduledTaskId', 'Name', 'Type', 'Status', 'Event', 'RunInterval', 'RunMode', 'LastRunOn', 'LastRunStatus', 'NextRunOn', 'RunTime', */ ); @@ -33,7 +33,7 @@ // fields to make required $required_fields = Array ( - /* 'AgentId', 'AgentName', 'AgentType', 'Status', 'Event', 'RunInterval', 'RunMode', 'LastRunOn', + /* 'ScheduledTaskId', 'Name', 'Type', 'Status', 'Event', 'RunInterval', 'RunMode', 'LastRunOn', 'LastRunStatus', 'NextRunOn', 'RunTime', */ ); @@ -47,5 +47,5 @@ // hide columns in grids $hide_columns = Array ( // currently not in user -// 'Default' => Array ( 'AgentId', 'AgentName', 'AgentType', 'Status', 'Event', 'RunInterval', 'RunMode', 'LastRunOn', 'LastRunStatus', 'NextRunOn', ), +// 'Default' => Array ( 'ScheduledTaskId', 'Name', 'Type', 'Status', 'Event', 'RunInterval', 'RunMode', 'LastRunOn', 'LastRunStatus', 'NextRunOn', ), ); \ No newline at end of file Index: core/admin_templates/agents/agent_edit.tpl =================================================================== --- core/admin_templates/agents/agent_edit.tpl (revision 14858) +++ core/admin_templates/agents/agent_edit.tpl (working copy) @@ -1,7 +1,7 @@ - + @@ -11,27 +11,27 @@ - +
- + \ No newline at end of file Index: core/install/english.lang =================================================================== --- core/install/english.lang (revision 14858) +++ core/install/english.lang (working copy) @@ -674,9 +674,9 @@ PHVsPg0KICA8bGk+U2NhbnMgZm9yIG5ld2x5IGFkZGVkIEZyb250LWVuZCBUaGVtZSB0ZW1wbGF0ZXMgYWNyb3NzIGFsbCA8c3Ryb25nPjxpPmVuYWJsZWQ8L2k+PC9zdHJvbmc+IHRoZW1lcy4gVGhpcyBhY3Rpb24gaXMgcGVyZm9ybWVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhIG5ldyB0aGVtZSBpcyBhZGRlZCBvciBleGlzdGluZyB0aGVtZSBpcyBlbmFibGVkLjwvbGk+DQogIDxsaT5BZGRpdGlvbmFsbHksIGRlbGV0ZXMgYWxsIGNvbXByZXNzZWQgYW5kIGNhY2hlZCBKYXZhc2NyaXB0L0NTUyBmaWxlcyAoLmpzIC5jc3MpIGxvYWRlZCB1c2luZyA8c3Ryb25nPjxpPiZsdDtpbnAyOm1fQ29tcHJlc3MgLi4uLyZndDs8L2k+PC9zdHJvbmc+IHRhZy48L2xpPg0KICA8bGk+VGhpcyBmdW5jdGlvbiBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhICJSZWZyZXNoIiBidXR0b24gaW4gdGhlIFRoZW1lcyBzZWN0aW9uIHRvb2xiYXIgaW4gQWRtaW4gQ29uc29sZS48L2xpPg0KICA8bGk+VGhpcyBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gY2FzZSB3aGVuICI0MDQgTm90IEZvdW5kIiBwYWdlIGlzIHNob3duIGluc3RlYWQgb2YgZXhwZWN0ZWQgbmV3bHkgYWRkZWQgcGFnZSBvciB0ZW1wbGF0ZS48L2xpPg0KPC91bD4= PHVsPg0KICA8bGk+UmVzZXRzIHRoZSBjYWNoZSBvZiBBZG1pbiBDb25zb2xlIHNlY3Rpb25zIChsZWZ0IG1lbnUpLiBUaGUgZGVmaW5pdGlvbnMgb2Ygc2VjdGlvbnMgYXJlIHJlYWQgYW5kIGNvbGxlY3RlZCBmcm9tIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzIHRoYXQgYWxyZWFkeSBiZWVuIHNjYW5uZWQgYW5kIGNhY2hlZCBieSB0aGUgc3lzdGVtLjwvbGk+DQogIDxsaT5Vc2UgdGhpcyByZXNldCBvcHRpb24gaWYgYSBuZXdseSBhZGRlZCBzZWN0aW9uIGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBsZWZ0IEFkbWluIENvbnNvbGUgbWVudS48L2xpPg0KPC91bD4= PHVsPg0KICA8bGk+UmVzZXRzIDxzdHJvbmc+PGk+QWxsIERhdGE8L2k+PC9zdHJvbmc+IHN0b3JlZCBpbiB0aGUgTWVtb3J5IENhY2hlLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIFN5c3RlbSBEYXRhIGFuZCBEYXRhYmFzZSBJdGVtcy48L2xpPg0KICA8bGk+VXNlIHdpdGggY2F1dGlvbiBkdWUgdG8gcG9zc2liaWxpdHkgb2YgbG9uZyBleGVjdXRpb24gdGltZS48L2xpPg0KPC91bD4= - PHVsPg0KICA8bGk+U2NhbnMgPHN0cm9uZz48aT4iY29yZSI8L2k+PC9zdHJvbmc+IGFuZCA8c3Ryb25nPjxpPiJtb2R1bGVzIjwvaT48L3N0cm9uZz4gZm9sZGVycyB0byBjYWNoZSB0aGUgbG9jYXRpb24gb2YgYWxsIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzLiBUaGUgZXhlY3V0aW9uIHRpbWUgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzIGZvdW5kLjwvbGk+DQogIDxsaT5SZXNldHMgdmFyaW91cyBjYWNoZWQgc3lzdGVtIGRhdGEgc3VjaCBhcyBkZWZpbmVkIFBIUCBDbGFzc2VzIChtYXBwaW5nIGJldHdlZW4gdGhlIGNsYXNzIG5hbWUgYW5kIHBoeXNpY2FsIGZpbGVuYW1lIGFuZCBsb2NhdGlvbiBvZiB0aGUgY2xhc3MpLCBIb29rcywgQWdlbnRzLCBDYWNoZWQgQ29uZmlndXJhdGlvbiBWYXJpYWJsZXMsIFJlcGxhY2VtZW50IFRlbXBsYXRlcywgUmV3cml0ZSBMaXN0ZW5lcnMgYW5kIExvYWRlZCBNb2R1bGVzLiBEYXRhIGlzIHJlYWQgYW5kIGNvbGxlY3RlZCBmcm9tIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzIHRoYXQgYWxyZWFkeSBiZWVuIHNjYW5uZWQgYW5kIGNhY2hlZCBieSB0aGUgc3lzdGVtLjwvbGk+DQogIDxsaT5EZWxldGVzIGNvbXBpbGVkIHNraW5zIGZvciBBZG1pbiBDb25zb2xlIChjc3MgZmlsZXMpLjwvbGk+DQo8L3VsPg== + PHVsPg0KICA8bGk+U2NhbnMgPHN0cm9uZz48aT4iY29yZSI8L2k+PC9zdHJvbmc+IGFuZCA8c3Ryb25nPjxpPiJtb2R1bGVzIjwvaT48L3N0cm9uZz4gZm9sZGVycyB0byBjYWNoZSB0aGUgbG9jYXRpb24gb2YgYWxsIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzLiBUaGUgZXhlY3V0aW9uIHRpbWUgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzIGZvdW5kLjwvbGk+DQogIDxsaT5SZXNldHMgdmFyaW91cyBjYWNoZWQgc3lzdGVtIGRhdGEgc3VjaCBhcyBkZWZpbmVkIFBIUCBDbGFzc2VzIChtYXBwaW5nIGJldHdlZW4gdGhlIGNsYXNzIG5hbWUgYW5kIHBoeXNpY2FsIGZpbGVuYW1lIGFuZCBsb2NhdGlvbiBvZiB0aGUgY2xhc3MpLCBIb29rcywgU2NoZWR1bGVkIFRhc2tzLCBDYWNoZWQgQ29uZmlndXJhdGlvbiBWYXJpYWJsZXMsIFJlcGxhY2VtZW50IFRlbXBsYXRlcywgUmV3cml0ZSBMaXN0ZW5lcnMgYW5kIExvYWRlZCBNb2R1bGVzLiBEYXRhIGlzIHJlYWQgYW5kIGNvbGxlY3RlZCBmcm9tIDxzdHJvbmc+PGk+VW5pdCBDb25maWc8L2k+PC9zdHJvbmc+IGZpbGVzIHRoYXQgYWxyZWFkeSBiZWVuIHNjYW5uZWQgYW5kIGNhY2hlZCBieSB0aGUgc3lzdGVtLjwvbGk+DQogIDxsaT5EZWxldGVzIGNvbXBpbGVkIHNraW5zIGZvciBBZG1pbiBDb25zb2xlIChjc3MgZmlsZXMpLjwvbGk+DQo8L3VsPg== PHVsPg0KICA8bGk+RGVsZXRlcyB0aGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBGcm9udC1lbmQgVVJMcyBhbmQgYWN0dWFsIFRoZW1lIFRlbXBsYXRlcy4gVGhpcyBtYXBwaW5nIGlzIHVwZGF0ZWQgYXV0b21hdGljYWxseSwgd2hlbiB0aGUgd2Vic2l0ZSBTdHJ1Y3R1cmUgb3IgU2VjdGlvbnMgYXJlIGNoYW5nZWQuPC9saT4NCiAgPGxpPlVzZSB0aGlzIG9wdGlvbiBvbmx5IGluIGNhc2UgaWYgTW9kUmV3cml0ZSBtb2RlIGlzIGVuYWJsZWQgYW5kIGRpc3BsYXllZCBwYWdlIGRpZmZlcnMgZnJvbSB0aGUgcGFnZSB0aGF0IGl0IHNob3VsZCBiZSwgd2hlbiBnaXZlbiBVUkwgaXMgdmlzaXRlZC48L2xpPg0KPC91bD4= - PHVsPg0KICA8bGk+UmVzZXRzIHZhcmlvdXMgY2FjaGVkIHN5c3RlbSBkYXRhIHN1Y2ggYXMgZGVmaW5lZCBQSFAgQ2xhc3NlcyAobWFwcGluZyBiZXR3ZWVuIHRoZSBjbGFzcyBuYW1lIGFuZCBwaHlzaWNhbCBmaWxlbmFtZSBhbmQgbG9jYXRpb24gb2YgdGhlIGNsYXNzKSwgSG9va3MsIEFnZW50cywgQ2FjaGVkIENvbmZpZ3VyYXRpb24gVmFyaWFibGVzLCBSZXBsYWNlbWVudCBUZW1wbGF0ZXMsIFJld3JpdGUgTGlzdGVuZXJzIGFuZCBMb2FkZWQgTW9kdWxlcy4gRGF0YSBpcyByZWFkIGFuZCBjb2xsZWN0ZWQgZnJvbSA8c3Ryb25nPjxpPlVuaXQgQ29uZmlnPC9pPjwvc3Ryb25nPiBmaWxlcyB0aGF0IGFscmVhZHkgYmVlbiBzY2FubmVkIGFuZCBjYWNoZWQgYnkgdGhlIHN5c3RlbS48L2xpPg0KPC91bD4= + PHVsPg0KICA8bGk+UmVzZXRzIHZhcmlvdXMgY2FjaGVkIHN5c3RlbSBkYXRhIHN1Y2ggYXMgZGVmaW5lZCBQSFAgQ2xhc3NlcyAobWFwcGluZyBiZXR3ZWVuIHRoZSBjbGFzcyBuYW1lIGFuZCBwaHlzaWNhbCBmaWxlbmFtZSBhbmQgbG9jYXRpb24gb2YgdGhlIGNsYXNzKSwgSG9va3MsIFNjaGVkdWxlZCBUYXNrcywgQ2FjaGVkIENvbmZpZ3VyYXRpb24gVmFyaWFibGVzLCBSZXBsYWNlbWVudCBUZW1wbGF0ZXMsIFJld3JpdGUgTGlzdGVuZXJzIGFuZCBMb2FkZWQgTW9kdWxlcy4gRGF0YSBpcyByZWFkIGFuZCBjb2xsZWN0ZWQgZnJvbSA8c3Ryb25nPjxpPlVuaXQgQ29uZmlnPC9pPjwvc3Ryb25nPiBmaWxlcyB0aGF0IGFscmVhZHkgYmVlbiBzY2FubmVkIGFuZCBjYWNoZWQgYnkgdGhlIHN5c3RlbS48L2xpPg0KPC91bD4= PHVsPg0KICA8bGk+RGVsZXRlcyB0aGUgY2FjaGVkIHZlcnNpb24gb2YgRnJvbnQtZW5kIG1lbnUgKGRpc3BsYXllZCB2aWEgPHN0cm9uZz48aT4mbHQ7aW5wMjpzdF9DYWNoZWRNZW51IC4uLi8mZ3Q7PC9pPjwvc3Ryb25nPiB0YWcpLiBUaGlzIGNhY2hlIGlzIHVwZGF0ZWQgYXV0b21hdGljYWxseSwgd2hlbiB0aGUgd2Vic2l0ZSBzdHJ1Y3R1cmUgb3Igc2VjdGlvbnMgYXJlIGNoYW5nZWQuPC9saT4NCiAgPGxpPlVzZSB0aGlzIG9wdGlvbiBvbmx5IGluIGNhc2UgaWYgZGlzcGxheWVkIG1lbnUgb24gdGhlIEZyb250LWVuZCBkb2Vzbid0IG1hdGNoIHRoZSBtZW51IGRlZmluZWQgaW4gQWRtaW4gQ29uc29sZS48L2xpPg0KPC91bD4= PHVsPg0KICA8bGk+U2hvd3MgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZGF0YWJhc2UgdGFibGUgbG9hZGluZyBpdCBieSB0aGUgVGFibGUgTmFtZSAodGFibGUgcHJlZml4IGlzIG9wdGlvbmFsKSBvciA8c3Ryb25nPjxpPlVuaXQgQ29uZmlnIFByZWZpeDwvaT48L3N0cm9uZz4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFibGUuPC9saT4NCjwvdWw+ PHVsPg0KPGxpPkFzIGEgcmVzdWx0LCBzY3JpcHQgd2lsbCBWYWxpZGF0ZSBjdXJyZW50IDxiPjx1PnByb2plY3RfdXBncmFkZXMuc3FsPC91PjwvYj4gZmlsZSBhbmQgb3V0bGluZSBhbnkgZXJyb3JzIG9yIGluY29uc2lzdGVuY2llcywgYW5kIGF1dG8tcG9wdWxhdGUgYWxsIG1pc3NpbmcgREIgUmV2aXNpb25zIGZyb20gdGhlIGZpbGUgaW50byBBcHBsaWVkREJSZXZpc2lvbnMuPC9saT4NCjxsaT48YiBzdHlsZT0iY29sb3I6cmVkIj5OT1RFOjwvYj4gRGV2ZWxvcGVycyBzaG91bGQgT05MWSBydW4gdGhpcyBiZWZvcmUgdGhleSBwZXJmb3JtIFJlcG9zaXRvcnkgVXBkYXRlcyBvbiB0aGVpIHdvcmtpbmcgY29weSE8L2xpPg0KPC91bD4= @@ -1223,7 +1223,6 @@ VXNlcnM= VmVyc2lvbg== Vmlldw== - QWRkaW5nIEFnZW50 QWRkaW5nIEJhbiBSdWxl QWRkaW5nIENvdW50cnkvU3RhdGU= QWRkaW5nIEN1c3RvbSBGaWVsZA== @@ -1231,6 +1230,7 @@ QWRkaW5nIE1haWxpbmcgTGlzdA== QWRkaW5nIFBlcm1pc3Npb24gVHlwZQ== QWRkaW5nIFByb21vIEJsb2Nr + QWRkaW5nIFNjaGVkdWxlZCBUYXNr QWRkaW5nIFNpdGUgRG9tYWlu QWRkaW5nIFNraW4= QWRkaW5nIFNwZWxsaW5nIERpY3Rpb25hcnk= @@ -1258,7 +1258,6 @@ QWRtaW5pc3RyYXRvcnM= QWR2YW5jZWQ= U2hvd2luZyBhbGwgcmVnYXJkbGVzcyBvZiBTdHJ1Y3R1cmU= - QWdlbnRz QmFzZSBTdHlsZXM= QmxvY2sgU3R5bGVz Qm91bmNlIFBPUDMgU2VydmVyIFNldHRpbmdz @@ -1272,7 +1271,6 @@ Q1NWIEltcG9ydA== Q3VzdG9t Q3VzdG9tIEZpZWxkcw== - RWRpdGluZyBBZ2VudA== RWRpdGluZyBCYW4gUnVsZQ== RWRpdGluZyBDaGFuZ2VzIExvZw== Q29udGVudCBFZGl0b3IgLSBBdXRvLXNhdmVkIGF0ICVz @@ -1283,6 +1281,7 @@ RWRpdGluZyBNZW1iZXJzaGlw RWRpdGluZyBQZXJtaXNzaW9uIFR5cGU= RWRpdGluZyBQcm9tbyBCbG9jaw== + RWRpdGluZyBTY2hlZHVsZWQgVGFzaw== RWRpdGluZyBTaXRlIERvbWFpbg== RWRpdGluZyBTa2lu RWRpdGluZyBTUEFNIFJlcG9ydA== @@ -1333,10 +1332,10 @@ TWFpbGluZ3M= TWVzc2FnZXM= TW9kdWxlcw== - TmV3IEFnZW50 TmV3IEVtYWlsIEV2ZW50 TmV3IEZpbGU= TmV3IFJlcGx5 + TmV3IFNjaGVkdWxlZCBUYXNr TmV3IFRoZW1l TmV3IFRoZW1lIFRlbXBsYXRl TmV3IEJhc2UgU3R5bGU= @@ -1356,6 +1355,7 @@ UmVsYXRpb25z UmVwbHkgUE9QMyBTZXJ2ZXIgU2V0dGluZ3M= Q29tbWVudHM= + U2NoZWR1bGVkIFRhc2tz U2VsZWN0IEdyb3VwKHMp U2VsZWN0IFVzZXI= U2VuZCBFLW1haWw= @@ -1433,7 +1433,6 @@ TG9naW4gQXM= TW92ZSBEb3du TW92ZSBVcA== - TmV3IEFnZW50 TmV3IEJhc2UgU3R5bGU= TmV3IEJsb2NrIFN0eWxl TmV3IENvdW50cnkvU3RhdGU= @@ -1443,6 +1442,7 @@ TmV3IFBlcm1pc3Npb24= TmV3IFBocmFzZQ== TmV3IENvbW1lbnQ= + TmV3IFNjaGVkdWxlZCBUYXNr TmV3IFNlYXJjaCBGaWVsZA== TmV3IFNpdGUgRG9tYWlu TmV3IFN0b3AgV29yZA== @@ -1517,7 +1517,7 @@ VW5pY29kZQ== VXBkYXRpbmcgQ29uZmlndXJhdGlvbg== VXBsb2Fk - VXNlIENyb24gdG8gcnVuIEFnZW50cw== + VXNlIENyb24gdG8gcnVuIFNjaGVkdWxlZCBUYXNrcw== QXNzaWduIGFkbWluaXN0cmF0b3JzIHRvIGdyb3Vw QWxsb3cgbmV3IHVzZXIgcmVnaXN0cmF0aW9u QXNzaWduIEFsbCBVc2VycyBUbyBHcm91cA== Index: core/install/install_data.sql =================================================================== --- core/install/install_data.sql (revision 14858) +++ core/install/install_data.sql (working copy) @@ -85,7 +85,7 @@ INSERT INTO ConfigurationValues VALUES(DEFAULT, 'OutputCompressionLevel', '7', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_config_OutputCompressionLevel', 'text', '', '', 60.02, 0, 1, NULL); INSERT INTO ConfigurationValues VALUES(DEFAULT, 'UseTemplateCompression', '0', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_config_UseTemplateCompression', 'checkbox', '', '', 60.03, 0, 1, NULL); INSERT INTO ConfigurationValues VALUES(DEFAULT, 'TrimRequiredFields', '0', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_config_TrimRequiredFields', 'checkbox', '', '', 60.04, 0, 0, NULL); -INSERT INTO ConfigurationValues VALUES(DEFAULT, 'UseCronForRegularEvent', '0', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_UseCronForRegularEvent', 'checkbox', NULL, NULL, 60.05, 0, 0, NULL); +INSERT INTO ConfigurationValues VALUES(DEFAULT, 'RunScheduledTasksFromCron', '0', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_UseCronForRegularEvent', 'checkbox', NULL, NULL, 60.05, 0, 0, NULL); INSERT INTO ConfigurationValues VALUES(DEFAULT, 'UseChangeLog', '0', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_config_UseChangeLog', 'checkbox', '', '', 60.06, 0, 0, NULL); INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Backup_Path', '/home/alex/web/in-portal.rc/system/backupdata', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_config_backup_path', 'text', '', '', 60.07, 0, 1, NULL); INSERT INTO ConfigurationValues VALUES(DEFAULT, 'SystemTagCache', '0', 'In-Portal', 'in-portal:configure_advanced', 'la_section_SettingsSystem', 'la_prompt_syscache_enable', 'checkbox', NULL, NULL, 60.08, 0, 0, NULL); @@ -564,10 +564,10 @@ INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:service.view', 11, 1, 1, 0); INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:service.edit', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:agents.delete', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:agents.edit', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:agents.add', 11, 1, 1, 0); -INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:agents.view', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:scheduled_tasks.delete', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:scheduled_tasks.edit', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:scheduled_tasks.add', 11, 1, 1, 0); +INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:scheduled_tasks.view', 11, 1, 1, 0); INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:site_domains.delete', 11, 1, 1, 0); INSERT INTO Permissions VALUES (DEFAULT, 'in-portal:site_domains.edit', 11, 1, 1, 0); Index: core/install/upgrades.sql =================================================================== --- core/install/upgrades.sql (revision 14861) +++ core/install/upgrades.sql (working copy) @@ -2379,4 +2379,37 @@ INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.REVISION.HISTORY.VIEW', 11, 1, 0, 1); INSERT INTO Permissions VALUES(DEFAULT, 'CATEGORY.REVISION.HISTORY.RESTORE', 11, 1, 0, 1); -ALTER TABLE EmailQueue ADD `LogData` TEXT; \ No newline at end of file +ALTER TABLE EmailQueue ADD `LogData` TEXT; + +UPDATE Permissions +SET Permission = REPLACE(Permission, 'agents', 'scheduled_tasks') +WHERE Permission LIKE 'in-portal:agents%'; + +DELETE FROM Phrase +WHERE PhraseKey IN ( + 'LA_TITLE_ADDINGAGENT', 'LA_TITLE_EDITINGAGENT', 'LA_TITLE_NEWAGENT', 'LA_TITLE_AGENTS', 'LA_TOOLTIP_NEWAGENT' +); + +UPDATE Phrase +SET l<%PRIMARY_LANGUAGE%>_Translation = REPLACE(l<%PRIMARY_LANGUAGE%>_Translation, 'Agents', 'Scheduled Tasks') +WHERE PhraseKey IN ( + 'LA_USECRONFORREGULAREVENT', 'LA_HINT_SYSTEMTOOLSRESETPARSEDCACHEDDATA', 'LA_HINT_SYSTEMTOOLSRESETCONFIGSANDPARSEDDATA' +); + +DELETE FROM PersistantSessionData +WHERE VariableName LIKE 'agent%'; + +RENAME TABLE Agents TO ScheduledTasks; + +ALTER TABLE ScheduledTasks + CHANGE AgentId ScheduledTaskId INT(11) NOT NULL AUTO_INCREMENT, + CHANGE AgentName Name VARCHAR(255) NOT NULL DEFAULT '', + CHANGE AgentType `Type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1'; + +ALTER TABLE ScheduledTasks + DROP INDEX AgentType, + ADD INDEX `Type` (`Type`); + +UPDATE ConfigurationValues +SET VariableName = 'RunScheduledTasksFromCron' +WHERE VariableName = 'UseCronForRegularEvent'; \ No newline at end of file Index: core/kernel/application.php =================================================================== --- core/kernel/application.php (revision 14858) +++ core/kernel/application.php (working copy) @@ -686,7 +686,7 @@ $this->registerClass('kEventManager', KERNEL_PATH . '/event_manager.php', 'EventManager', 'kiCacheable'); $this->registerClass('kHookManager', KERNEL_PATH . '/managers/hook_manager.php', null, 'kiCacheable'); - $this->registerClass('kAgentManager', KERNEL_PATH . '/managers/agent_manager.php', null, 'kiCacheable'); + $this->registerClass('kScheduledTaskManager', KERNEL_PATH . '/managers/agent_manager.php', null, 'kiCacheable'); $this->registerClass('kRequestManager', KERNEL_PATH . '/managers/request_manager.php'); $this->registerClass('kUrlManager', KERNEL_PATH . '/managers/url_manager.php'); @@ -1025,7 +1025,7 @@ } if ($debug_mode) { - $this->EventManager->runAgents(reAFTER); + $this->EventManager->runScheduledTasks(reAFTER); $this->Session->SaveData(); if (kUtil::constOn('DBG_CACHE')) { @@ -1059,7 +1059,7 @@ flush(); if (!$debug_mode) { - $this->EventManager->runAgents(reAFTER); + $this->EventManager->runScheduledTasks(reAFTER); $this->Session->SaveData(); } @@ -1782,18 +1782,18 @@ } /** - * Add new agent + * Add new scheduled task * - * @param string $short_name name to be used to store last maintenace run info + * @param string $short_name name to be used to store last maintenance run info * @param string $event_name * @param int $run_interval run interval in seconds - * @param int $type before or after agent + * @param int $type before or after scheduled task * @param int $status * @access public */ - public function registerAgent($short_name, $event_name, $run_interval, $type = reBEFORE, $status = STATUS_ACTIVE) + public function registerScheduledTask($short_name, $event_name, $run_interval, $type = reBEFORE, $status = STATUS_ACTIVE) { - $this->EventManager->registerAgent($short_name, $event_name, $run_interval, $type, $status); + $this->EventManager->registerScheduledTask($short_name, $event_name, $run_interval, $type, $status); } /** Index: core/kernel/constants.php =================================================================== --- core/kernel/constants.php (revision 14868) +++ core/kernel/constants.php (working copy) @@ -63,11 +63,11 @@ define('EDITING_MODE_CONTENT', 2); // content blocks + phrase editing define('EDITING_MODE_DESIGN', 3); // all other blocks - class Agent { - const AGENT_TYPE_USER = 1; - const AGENT_TYPE_SYSTEM = 2; + class ScheduledTask { + const TYPE_USER = 1; + const TYPE_SYSTEM = 2; - const LAST_RUN_SUCCEDED = 1; + const LAST_RUN_SUCCEEDED = 1; const LAST_RUN_FAILED = 0; const LAST_RUN_RUNNING = 2; } Index: core/kernel/event_manager.php =================================================================== --- core/kernel/event_manager.php (revision 14858) +++ core/kernel/event_manager.php (working copy) @@ -25,12 +25,12 @@ protected $Hooks = null; /** - * Instance of agent manager + * Instance of scheduled task manager * - * @var kAgentManager + * @var kScheduledTaskManager * @access protected */ - protected $Agents = null; + protected $ScheduledTasks = null; /** * Instance of request manager @@ -66,7 +66,7 @@ parent::__construct(); $this->Hooks =& $this->Application->makeClass('kHookManager'); - $this->Agents =& $this->Application->makeClass('kAgentManager'); + $this->ScheduledTasks =& $this->Application->makeClass('kScheduledTaskManager'); $this->Request =& $this->Application->makeClass('kRequestManager'); } @@ -79,7 +79,7 @@ public function setFromCache(&$data) { $this->Hooks->setFromCache($data); - $this->Agents->setFromCache($data); + $this->ScheduledTasks->setFromCache($data); $this->buildEvents = $data['EventManager.buildEvents']; } @@ -94,7 +94,7 @@ { return array_merge( $this->Hooks->getToCache(), - $this->Agents->getToCache(), + $this->ScheduledTasks->getToCache(), Array ( 'EventManager.buildEvents' => $this->buildEvents, ) @@ -102,58 +102,58 @@ } /** - * Returns information about registered agents + * Returns information about registered scheduled tasks * * @param bool $from_cache * @return Array * @access public */ - public function getAgents($from_cache = false) + public function getScheduledTasks($from_cache = false) { - return $this->Agents->getAll($from_cache); + return $this->ScheduledTasks->getAll($from_cache); } /** - * Add new agent + * Add new scheduled task * - * @param string $short_name name to be used to store last maintenace run info + * @param string $short_name name to be used to store last maintenance run info * @param string $event_name * @param int $run_interval run interval in seconds - * @param int $type before or after agent + * @param int $type before or after scheduled task * @param int $status * @access public */ - public function registerAgent($short_name, $event_name, $run_interval, $type = reBEFORE, $status = STATUS_ACTIVE) + public function registerScheduledTask($short_name, $event_name, $run_interval, $type = reBEFORE, $status = STATUS_ACTIVE) { - $this->Agents->add($short_name, $event_name, $run_interval, $type, $status); + $this->ScheduledTasks->add($short_name, $event_name, $run_interval, $type, $status); } /** - * Run registred agents with specified event type + * Run registered scheduled tasks with specified event type * * @param int $event_type * @param bool $from_cron * @access public */ - public function runAgents($event_type = reBEFORE, $from_cron = false) + public function runScheduledTasks($event_type = reBEFORE, $from_cron = false) { - $this->Agents->runAgents($event_type, $from_cron); + $this->ScheduledTasks->runAll($event_type, $from_cron); } /** - * Runs agent based on given data + * Runs scheduled task based on given data * - * @param Array $agent_data + * @param Array $scheduled_task_data * @return bool * @access public */ - public function runAgent($agent_data) + public function runScheduledTask($scheduled_task_data) { - return $this->Agents->runAgent($agent_data); + return $this->ScheduledTasks->run($scheduled_task_data); } /** - * Registers Hook from subprefix event to master prefix event + * Registers Hook from sub-prefix event to master prefix event * * Pattern: Observer * Index: core/kernel/managers/agent_manager.php =================================================================== --- core/kernel/managers/agent_manager.php (revision 14858) +++ core/kernel/managers/agent_manager.php (working copy) @@ -14,7 +14,7 @@ defined('FULL_PATH') or die('restricted access!'); -class kAgentManager extends kBase implements kiCacheable { +class kScheduledTaskManager extends kBase implements kiCacheable { /** * Events, that should be run before parser initialization @@ -22,7 +22,7 @@ * @var Array * @access protected */ - protected $beforeAgents = Array (); + protected $before = Array (); /** * Events, that should be run after parser initialization @@ -30,7 +30,7 @@ * @var Array * @access protected */ - protected $afterAgents = Array (); + protected $after = Array (); /** * Sets data from cache to object @@ -40,8 +40,8 @@ */ public function setFromCache(&$data) { - $this->beforeAgents = $data['EventManager.beforeRegularEvents']; - $this->afterAgents = $data['EventManager.afterRegularEvents']; + $this->before = $data['EventManager.beforeRegularEvents']; + $this->after = $data['EventManager.afterRegularEvents']; } /** @@ -53,13 +53,13 @@ public function getToCache() { return Array ( - 'EventManager.beforeRegularEvents' => $this->beforeAgents, - 'EventManager.afterRegularEvents' => $this->afterAgents, + 'EventManager.beforeRegularEvents' => $this->before, + 'EventManager.afterRegularEvents' => $this->after, ); } /** - * Returns information about registered agents + * Returns information about registered scheduled tasks * * @param bool $from_cache * @return Array @@ -67,99 +67,99 @@ */ public function getAll($from_cache = false) { - static $agents = null; + static $scheduled_tasks = null; if ($from_cache) { return Array ( - reBEFORE => $this->beforeAgents, - reAFTER => $this->afterAgents, + reBEFORE => $this->before, + reAFTER => $this->after, ); } - if ( !isset($agents) ) { - $timeout_clause = 'LastRunStatus = ' . Agent::LAST_RUN_RUNNING . ' AND Timeout > 0 AND ' . adodb_mktime() . ' - LastRunOn > Timeout'; + if ( !isset($scheduled_tasks) ) { + $timeout_clause = 'LastRunStatus = ' . ScheduledTask::LAST_RUN_RUNNING . ' AND Timeout > 0 AND ' . adodb_mktime() . ' - LastRunOn > Timeout'; $sql = 'SELECT * - FROM ' . $this->Application->getUnitOption('agent', 'TableName') . ' - WHERE (Status = ' . STATUS_ACTIVE . ') AND ((LastRunStatus != ' . Agent::LAST_RUN_RUNNING . ') OR (' . $timeout_clause . '))'; - $all_agents = $this->Conn->Query($sql); + FROM ' . $this->Application->getUnitOption('scheduled-task', 'TableName') . ' + WHERE (Status = ' . STATUS_ACTIVE . ') AND ((LastRunStatus != ' . ScheduledTask::LAST_RUN_RUNNING . ') OR (' . $timeout_clause . '))'; + $all_scheduled_tasks = $this->Conn->Query($sql); - $agents = Array ( + $scheduled_tasks = Array ( reBEFORE => Array (), reAFTER => Array (), ); - foreach ($all_agents as $agent_data) { - $agents[ $agent_data['RunMode'] ][ $agent_data['AgentName'] ] = Array ( - 'EventName' => $agent_data['Event'], - 'RunInterval' => (int)$agent_data['RunInterval'], - 'LastRunOn' => (int)$agent_data['LastRunOn'], - 'NextRunOn' => (int)$agent_data['NextRunOn'], - 'Status' => $agent_data['Status'], - 'LastRunStatus' => $agent_data['LastRunStatus'], - 'SiteDomainLimitation' => $agent_data['SiteDomainLimitation'], + foreach ($all_scheduled_tasks as $scheduled_task_data) { + $scheduled_tasks[ $scheduled_task_data['RunMode'] ][ $scheduled_task_data['Name'] ] = Array ( + 'EventName' => $scheduled_task_data['Event'], + 'RunInterval' => (int)$scheduled_task_data['RunInterval'], + 'LastRunOn' => (int)$scheduled_task_data['LastRunOn'], + 'NextRunOn' => (int)$scheduled_task_data['NextRunOn'], + 'Status' => $scheduled_task_data['Status'], + 'LastRunStatus' => $scheduled_task_data['LastRunStatus'], + 'SiteDomainLimitation' => $scheduled_task_data['SiteDomainLimitation'], ); } } - return $agents; + return $scheduled_tasks; } /** - * Returns agents by type + * Returns scheduled tasks by type * * @param int $type * @return Array * @access protected */ - protected function &getAgentsByType($type) + protected function &getByType($type) { if ($type == reBEFORE) { - return $this->beforeAgents; + return $this->before; } - return $this->afterAgents; + return $this->after; } /** - * Add new agent + * Add new scheduled task * * @param string $short_name name to be used to store last maintenance run info * @param string $event_name * @param int $run_interval run interval in seconds - * @param int $type before or after agent + * @param int $type before or after scheduled task * @param int $status * @access public */ public function add($short_name, $event_name, $run_interval, $type = reBEFORE, $status = STATUS_ACTIVE) { - $agents =& $this->getAgentsByType($type); + $scheduled_tasks =& $this->getByType($type); - $agents[$short_name] = Array ( + $scheduled_tasks[$short_name] = Array ( 'EventName' => $event_name, 'RunInterval' => $run_interval, 'Status' => $status ); } /** - * Run registered agents with specified event type + * Run registered scheduled tasks with specified event type * * @param int $event_type * @param bool $from_cron * @access public */ - public function runAgents($event_type = reBEFORE, $from_cron = false) + public function runAll($event_type = reBEFORE, $from_cron = false) { if ( defined('IS_INSTALL') ) { return ; } - if ( !$from_cron && $this->Application->ConfigValue('UseCronForRegularEvent') ) { - // if RegularEvents are set to run from cron + if ( !$from_cron && $this->Application->ConfigValue('RunScheduledTasksFromCron') ) { + // if scheduled tasks are set to run from cron return ; } - $agents = $this->getAll(); - $events_source = $agents[$event_type]; + $scheduled_tasks = $this->getAll(); + $events_source = $scheduled_tasks[$event_type]; $user_id = $this->Application->RecallVar('user_id'); $this->Application->StoreVar('user_id', USER_ROOT, true); // to prevent permission checking inside events, true for optional storage @@ -174,14 +174,14 @@ $site_domains = explode('|', substr($event_data['SiteDomainLimitation'], 1, -1)); if ( !in_array($site_domain_id, $site_domains) ) { - // agent isn't allowed on this site domain + // scheduled task isn't allowed on this site domain continue; } } // remember LastTimeoutOn only for events that are still running and will be reset - if ( $event_data['LastRunStatus'] == Agent::LAST_RUN_RUNNING ) { - $this->updateAgent($short_name, Array ('LastTimeoutOn' => adodb_mktime())); + if ( $event_data['LastRunStatus'] == ScheduledTask::LAST_RUN_RUNNING ) { + $this->update($short_name, Array ('LastTimeoutOn' => adodb_mktime())); } $next_run = $event_data['NextRunOn']; @@ -190,77 +190,77 @@ continue; } - $event_data['AgentName'] = $short_name; - $this->runAgent($event_data); + $event_data['Name'] = $short_name; + $this->run($event_data); } $this->Application->StoreVar('user_id', $user_id, $user_id == USER_GUEST); } /** - * Runs agent based on given data + * Runs scheduled task based on given data * - * @param Array $agent_data + * @param Array $scheduled_task_data * @return bool * @access public */ - public function runAgent($agent_data) + public function run($scheduled_task_data) { - $event = new kEvent($agent_data['EventName']); + $event = new kEvent($scheduled_task_data['EventName']); if ( !$this->Application->prefixRegistred($event->Prefix) ) { - // don't process agents, left from disabled modules + // don't process scheduled tasks, left from disabled modules return false; } $start_time = adodb_mktime(); - // remember, when agent execution started + // remember, when scheduled task execution started $fields_hash = Array ( 'LastRunOn' => $start_time, - 'LastRunStatus' => Agent::LAST_RUN_RUNNING, - 'NextRunOn' => $start_time + $agent_data['RunInterval'], + 'LastRunStatus' => ScheduledTask::LAST_RUN_RUNNING, + 'NextRunOn' => $start_time + $scheduled_task_data['RunInterval'], ); - $this->updateAgent($agent_data['AgentName'], $fields_hash); + $this->update($scheduled_task_data['Name'], $fields_hash); $event->redirect = false; $this->Application->HandleEvent($event); $now = adodb_mktime(); - $next_run = $agent_data['RunInterval'] ? $start_time + $agent_data['RunInterval'] : $now; + $next_run = $scheduled_task_data['RunInterval'] ? $start_time + $scheduled_task_data['RunInterval'] : $now; while ($next_run < $now) { // in case event execution took longer, then RunInterval (don't use <=, because RunInterval can be 0) - $next_run += $agent_data['RunInterval']; + $next_run += $scheduled_task_data['RunInterval']; } - // remember, when agent execution ended + // remember, when scheduled task execution ended $fields_hash = Array ( 'NextRunOn' => $next_run, 'RunTime' => round(($now - $start_time) / 60), - 'LastRunStatus' => $event->status == kEvent::erSUCCESS ? Agent::LAST_RUN_SUCCEDED : Agent::LAST_RUN_FAILED, + 'LastRunStatus' => $event->status == kEvent::erSUCCESS ? ScheduledTask::LAST_RUN_SUCCEEDED : ScheduledTask::LAST_RUN_FAILED, ); - $this->updateAgent($agent_data['AgentName'], $fields_hash); + $this->update($scheduled_task_data['Name'], $fields_hash); return true; } /** - * Updates agent record with latest changes about it's invocation progress + * Updates scheduled task record with latest changes about it's invocation progress * - * @param string $agent_name + * @param string $scheduled_task_name * @param Array $fields_hash * @return void * @access protected */ - protected function updateAgent($agent_name, $fields_hash) + protected function update($scheduled_task_name, $fields_hash) { $this->Conn->doUpdate( $fields_hash, - $this->Application->getUnitOption('agent', 'TableName'), - 'AgentName = ' . $this->Conn->qstr($agent_name) + $this->Application->getUnitOption('scheduled-task', 'TableName'), + 'Name = ' . $this->Conn->qstr($scheduled_task_name) ); } } \ No newline at end of file Index: core/kernel/managers/cache_manager.php =================================================================== --- core/kernel/managers/cache_manager.php (revision 14858) +++ core/kernel/managers/cache_manager.php (working copy) @@ -58,7 +58,7 @@ protected $temporaryCache = Array ( 'registerAggregateTag' => Array (), - 'registerAgent' => Array (), + 'registerScheduledTask' => Array (), 'registerHook' => Array (), 'registerBuildEvent' => Array (), 'registerAggregateTag' => Array (), @@ -401,7 +401,7 @@ // tracking related 'UseChangeLog', 'UseVisitorTracking', 'ModRewriteUrlEnding', 'ForceModRewriteUrlEnding', - 'UseCronForRegularEvent', + 'RunScheduledTasksFromCron', ); $escaped_config_vars = array_map(Array (&$this->Conn, 'qstr'), $config_vars); Index: core/kernel/managers/request_manager.php =================================================================== --- core/kernel/managers/request_manager.php (revision 14858) +++ core/kernel/managers/request_manager.php (working copy) @@ -66,7 +66,7 @@ $this->Application->SetVar('events', $events); $this->Application->SetVar('passed', implode(',', $all_passed)); - $this->Application->EventManager->runAgents(reBEFORE); + $this->Application->EventManager->runScheduledTasks(reBEFORE); $this->processed = true; } Index: core/kernel/session/session.php =================================================================== --- core/kernel/session/session.php (revision 14858) +++ core/kernel/session/session.php (working copy) @@ -289,7 +289,7 @@ return ; } -// $this->DeleteExpired(); // called from u:OnDeleteExpiredSessions agent now +// $this->DeleteExpired(); // called from u:OnDeleteExpiredSessions scheduled task now if ($this->expired || ($this->CachedSID && !$this->_fromGet && !$this->SessionSet)) { $this->RemoveSessionCookie(); Index: core/kernel/utility/unit_config_reader.php =================================================================== --- core/kernel/utility/unit_config_reader.php (revision 14858) +++ core/kernel/utility/unit_config_reader.php (working copy) @@ -419,7 +419,7 @@ function parseConfig($prefix) { $this->parseClasses($prefix); - $this->parseAgents($prefix); + $this->parseScheduledTasks($prefix); $this->parseHooks($prefix); $this->parseAggregatedTags($prefix); } @@ -457,19 +457,19 @@ } } - protected function parseAgents($prefix) + protected function parseScheduledTasks($prefix) { $config =& $this->configData[$prefix]; - if ( !isset($config['RegularEvents']) || !$config['RegularEvents'] ) { + if ( !isset($config['ScheduledTasks']) || !$config['ScheduledTasks'] ) { return ; } - $regular_events = $config['RegularEvents']; + $scheduled_tasks = $config['ScheduledTasks']; - foreach ($regular_events as $short_name => $regular_event_info) { - $event_status = array_key_exists('Status', $regular_event_info) ? $regular_event_info['Status'] : STATUS_ACTIVE; - $this->Application->delayUnitProcessing('registerAgent', Array ( $short_name, $config['Prefix'] . ':' . $regular_event_info['EventName'], $regular_event_info['RunInterval'], $regular_event_info['Type'], $event_status )); + foreach ($scheduled_tasks as $short_name => $scheduled_task_info) { + $event_status = array_key_exists('Status', $scheduled_task_info) ? $scheduled_task_info['Status'] : STATUS_ACTIVE; + $this->Application->delayUnitProcessing('registerScheduledTask', Array ( $short_name, $config['Prefix'] . ':' . $scheduled_task_info['EventName'], $scheduled_task_info['RunInterval'], $scheduled_task_info['Type'], $event_status )); } } Index: core/units/admin/admin_config.php =================================================================== --- core/units/admin/admin_config.php (revision 14858) +++ core/units/admin/admin_config.php (working copy) @@ -24,7 +24,7 @@ 1 => 'event', ), - 'RegularEvents' => Array( + 'ScheduledTasks' => Array( 'optimize_performance' => Array('EventName' => 'OnOptimizePerformance', 'RunInterval' => 86400, 'Type' => reAFTER), ), Index: core/units/admin/admin_events_handler.php =================================================================== --- core/units/admin/admin_events_handler.php (revision 14870) +++ core/units/admin/admin_events_handler.php (working copy) @@ -1061,7 +1061,7 @@ } /** - * [AGENT] + * [SCHEDULED TASK] * 1. Delete all Debug files from system/.restricted folder (format debug_@977827436@.txt) * 2. Run MySQL OPTIMIZE SQL one by one on all In-Portal tables (found by prefix). * Index: core/units/agents/agent_eh.php =================================================================== --- core/units/agents/agent_eh.php (revision 14858) +++ core/units/agents/agent_eh.php (working copy) @@ -14,7 +14,7 @@ defined('FULL_PATH') or die('restricted access!'); - class AgentEventHandler extends kDBEventHandler { + class ScheduledTaskEventHandler extends kDBEventHandler { /** * Allows to override standard permission mapping @@ -26,37 +26,37 @@ $permissions = Array ( 'OnMassCancel' => Array ('self' => 'add|edit'), - 'OnRunAgents' => Array ('self' => 'add|edit'), + 'OnRun' => Array ('self' => 'add|edit'), ); $this->permMapping = array_merge($this->permMapping, $permissions); } /** - * [HOOK] Refreshes agents list in database based on cached data from unit configs + * [HOOK] Refreshes scheduled task list in database based on cached data from unit configs * * @param kEvent $event */ - function OnRefreshAgents(&$event) + function OnRefresh(&$event) { - $regular_events = $this->Application->EventManager->getAgents(true); + $scheduled_tasks_from_cache = $this->Application->EventManager->getScheduledTasks(true); $object =& $event->getObject( Array ('skip_autoload' => true) ); /* @var $object kDBItem */ $processed_ids = Array (); - $agents = $this->Conn->Query($object->GetSelectSQL(), 'AgentName'); + $scheduled_tasks_from_db = $this->Conn->Query($object->GetSelectSQL(), 'Name'); - foreach ($regular_events as $run_mode => $events) { + foreach ($scheduled_tasks_from_cache as $run_mode => $events) { - foreach ($events as $agent_name => $agent_params) { - if ( !isset($agents[$agent_name]) ) { + foreach ($events as $scheduled_task_name => $scheduled_task_params) { + if ( !isset($scheduled_tasks_from_db[$scheduled_task_name]) ) { $fields_hash = Array ( - 'Event' => $agent_params['EventName'], - 'AgentName' => $agent_name, - 'AgentType' => Agent::AGENT_TYPE_SYSTEM, - 'Status' => array_key_exists('Status', $agent_params) ? $agent_params['Status'] : STATUS_ACTIVE, - 'RunInterval' => $agent_params['RunInterval'], + 'Event' => $scheduled_task_params['EventName'], + 'Name' => $scheduled_task_name, + 'Type' => ScheduledTask::TYPE_SYSTEM, + 'Status' => array_key_exists('Status', $scheduled_task_params) ? $scheduled_task_params['Status'] : STATUS_ACTIVE, + 'RunInterval' => $scheduled_task_params['RunInterval'], 'RunMode' => $run_mode, ); @@ -65,7 +65,7 @@ $object->Create(); } else { - $object->LoadFromHash( $agents[$agent_name] ); + $object->LoadFromHash( $scheduled_tasks_from_db[$scheduled_task_name] ); } $processed_ids[] = $object->GetID(); @@ -73,10 +73,10 @@ } - // delete all non-processed agents (ones, that were deleted from unit configs) + // delete all non-processed scheduled tasks (ones, that were deleted from unit configs) $sql = 'SELECT ' . $object->IDField . ' FROM ' . $object->TableName . ' - WHERE (AgentType = ' . Agent::AGENT_TYPE_SYSTEM . ') AND (' . $object->IDField . ' NOT IN (' . implode(',', $processed_ids) . '))'; + WHERE (Type = ' . ScheduledTask::TYPE_SYSTEM . ') AND (' . $object->IDField . ' NOT IN (' . implode(',', $processed_ids) . '))'; $delete_ids = $this->Conn->GetCol($sql); if ($delete_ids) { @@ -101,7 +101,7 @@ { if ($event->Name == 'OnMassDelete' && $type == 'before') { if ($this->Application->isDebugMode()) { - // allow to delete system agents in debug mode + // allow to delete system scheduled tasks in debug mode return ; } @@ -112,7 +112,7 @@ $sql = 'SELECT ' . $id_field . ' FROM ' . $table_name . ' - WHERE ' . $id_field . ' IN (' . implode(',', $ids) . ') AND AgentType <> ' . Agent::AGENT_TYPE_SYSTEM; + WHERE ' . $id_field . ' IN (' . implode(',', $ids) . ') AND Type <> ' . ScheduledTask::TYPE_SYSTEM; $allowed_ids = $this->Conn->GetCol($sql); $event->setEventParam('ids', $allowed_ids); @@ -121,7 +121,7 @@ } /** - * Cancels agents, that are currently running + * Cancels scheduled tasks, that are currently running * * @param kEvent $event */ @@ -136,9 +136,9 @@ foreach ($ids as $id) { $object->Load($id); - if ($object->GetDBField('LastRunStatus') == Agent::LAST_RUN_RUNNING) { - // only changes status, doesn't affect currency running agents - $object->SetDBField('LastRunStatus', Agent::LAST_RUN_FAILED); + if ($object->GetDBField('LastRunStatus') == ScheduledTask::LAST_RUN_RUNNING) { + // only changes status, doesn't affect currency running scheduled tasks + $object->SetDBField('LastRunStatus', ScheduledTask::LAST_RUN_FAILED); $object->Update(); } } @@ -148,11 +148,11 @@ } /** - * Runs selected agents + * Runs selected scheduled tasks * * @param kEvent $event */ - function OnRunAgents(&$event) + function OnRun(&$event) { $ids = $this->StoreSelectedIDs($event); @@ -163,16 +163,16 @@ $where_clause = Array ( $object->TableName . '.' . $object->IDField . ' IN (' . implode(',', $ids) . ')', $object->TableName . '.Status = ' . STATUS_ACTIVE, - $object->TableName . '.LastRunStatus <> ' . Agent::LAST_RUN_RUNNING, + $object->TableName . '.LastRunStatus <> ' . ScheduledTask::LAST_RUN_RUNNING, ); $sql = $object->GetSelectSQL() . ' WHERE (' . implode(') AND (', $where_clause) . ')'; - $agents = $this->Conn->Query($sql); + $scheduled_tasks = $this->Conn->Query($sql); - foreach ($agents as $agent_data) { - $agent_data['EventName'] = $agent_data['Event']; - $this->Application->EventManager->runAgent($agent_data); + foreach ($scheduled_tasks as $scheduled_task_data) { + $scheduled_task_data['EventName'] = $scheduled_task_data['Event']; + $this->Application->EventManager->runScheduledTask($scheduled_task_data); } } Index: core/units/agents/agents_config.php =================================================================== --- core/units/agents/agents_config.php (revision 14858) +++ core/units/agents/agents_config.php (working copy) @@ -15,10 +15,10 @@ defined('FULL_PATH') or die('restricted access!'); $config = Array ( - 'Prefix' => 'agent', + 'Prefix' => 'scheduled-task', 'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'), 'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'), - 'EventHandlerClass' => Array ('class' => 'AgentEventHandler', 'file' => 'agent_eh.php', 'build_event' => 'OnBuild'), + 'EventHandlerClass' => Array ('class' => 'ScheduledTaskEventHandler', 'file' => 'agent_eh.php', 'build_event' => 'OnBuild'), 'TagProcessorClass' => Array ('class' => 'kDBTagProcessor', 'file' => '', 'build_event' => 'OnBuild'), 'AutoLoad' => true, @@ -40,42 +40,43 @@ 'HookToEvent' => Array ('OnAfterCacheRebuild'), 'DoPrefix' => '', 'DoSpecial' => '*', - 'DoEvent' => 'OnRefreshAgents', + 'DoEvent' => 'OnRefresh', ), ), - 'IDField' => 'AgentId', + 'IDField' => 'ScheduledTaskId', - 'TableName' => TABLE_PREFIX . 'Agents', + 'TableName' => TABLE_PREFIX . 'ScheduledTasks', - 'TitleField' => 'AgentName', + 'TitleField' => 'Name', 'StatusField' => Array ('Status'), 'TitlePresets' => Array ( 'default' => Array ( - 'new_status_labels' => Array ('agent' => '!la_title_AddingAgent!'), - 'edit_status_labels' => Array ('agent' => '!la_title_EditingAgent!'), - 'new_titlefield' => Array ('agent' => '!la_title_NewAgent!'), + 'new_status_labels' => Array ('scheduled-task' => '!la_title_AddingScheduledTask!'), + 'edit_status_labels' => Array ('scheduled-task' => '!la_title_EditingScheduledTask!'), + 'new_titlefield' => Array ('scheduled-task' => '!la_title_NewScheduledTask!'), ), - 'agent_list' => Array ( - 'prefixes' => Array ('agent_List'), 'format' => "!la_title_Agents!", + 'scheduled_task_list' => Array ( + 'prefixes' => Array ('scheduled-task_List'), 'format' => "!la_title_ScheduledTasks!", 'toolbar_buttons' => Array ('new_item', 'edit', 'delete', 'approve', 'decline', 'process', 'cancel', 'view', 'dbl-click'), ), - 'agent_edit' => Array ('prefixes' => Array ('agent'), 'format' => "#agent_status# '#agent_titlefield#'", + 'scheduled_task_edit' => Array ( + 'prefixes' => Array ('scheduled-task'), 'format' => "#scheduled-task_status# '#scheduled-task_titlefield#'", 'toolbar_buttons' => Array ('select', 'cancel', 'reset_edit', 'prev', 'next'), - ), + ), ), - 'PermSection' => Array('main' => 'in-portal:agents'), + 'PermSection' => Array('main' => 'in-portal:scheduled_tasks'), 'Sections' => Array ( - 'in-portal:agents' => Array ( + 'in-portal:scheduled_tasks' => Array ( 'parent' => 'in-portal:website_setting_folder', 'icon' => 'conf_agents', - 'label' => 'la_title_Agents', + 'label' => 'la_title_ScheduledTasks', 'url' => Array('t' => 'agents/agent_list', 'pass' => 'm'), 'permissions' => Array('view', 'add', 'edit', 'delete'), 'priority' => 6, @@ -89,20 +90,20 @@ 'ListSortings' => Array ( '' => Array ( - 'Sorting' => Array ('AgentName' => 'asc'), + 'Sorting' => Array ('Name' => 'asc'), ) ), 'Fields' => Array ( - 'AgentId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), + 'ScheduledTaskId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0), - 'AgentName' => Array ( + 'Name' => Array ( 'type' => 'string', 'max_len' => 255, 'unique' => Array (), 'required' => 1, 'not_null' => 1, 'default' => '' ), - 'AgentType' => Array ( + 'Type' => Array ( 'type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'la_opt_User', 2 => 'la_opt_System'), 'use_phrases' => 1, 'required' => 1, 'not_null' => 1, 'default' => 1 @@ -153,9 +154,9 @@ 0 => 'icon16_disabled.png', ), 'Fields' => Array ( - 'AgentId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 50, ), - 'AgentName' => Array ('title' => 'column:la_fld_Name', 'filter_block' => 'grid_like_filter', 'width' => 200, ), - 'AgentType' => Array ('title' => 'column:la_fld_Type', 'filter_block' => 'grid_options_filter', 'width' => 60, ), + 'ScheduledTaskId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 50, ), + 'Name' => Array ('filter_block' => 'grid_like_filter', 'width' => 200, ), + 'Type' => Array ('filter_block' => 'grid_options_filter', 'width' => 60, ), 'Event' => Array ('filter_block' => 'grid_like_filter', 'width' => 280, ), 'RunInterval' => Array ('filter_block' => 'grid_range_filter', 'width' => 100, ), 'RunMode' => Array ('filter_block' => 'grid_options_filter', 'width' => 85, ), Index: core/units/forms/forms/forms_config.php =================================================================== --- core/units/forms/forms/forms_config.php (revision 14858) +++ core/units/forms/forms/forms_config.php (working copy) @@ -30,7 +30,7 @@ 5 => 'mode', ), - 'RegularEvents' => Array ( + 'ScheduledTasks' => Array ( 'check_submission_repies' => Array('EventName' => 'OnProcessReplies', 'RunInterval' => 3600, 'Type' => reAFTER), 'check_bounced_submission_repies' => Array('EventName' => 'OnProcessBouncedReplies', 'RunInterval' => 18000, 'Type' => reAFTER), ), Index: core/units/images/image_event_handler.php =================================================================== --- core/units/images/image_event_handler.php (revision 14868) +++ core/units/images/image_event_handler.php (working copy) @@ -368,7 +368,7 @@ } /** - * [AGENT] Remove unused images from "/system/images" and "/system/images/pending" folders + * [SCHEDULED TASK] Remove unused images from "/system/images" and "/system/images/pending" folders * * @param kEvent $event */ @@ -459,7 +459,7 @@ } /** - * [AGENT] Remove all images from "/system/images/resized" and "/system/images/pending/resized" folders + * [SCHEDULED TASK] Remove all images from "/system/images/resized" and "/system/images/pending/resized" folders * * @param kEvent $event */ Index: core/units/images/images_config.php =================================================================== --- core/units/images/images_config.php (revision 14858) +++ core/units/images/images_config.php (working copy) @@ -69,7 +69,7 @@ 4 => 'event', ), - 'RegularEvents' => Array ( + 'ScheduledTasks' => Array ( 'clean_catalog_images' => Array ('EventName' => 'OnCleanImages', 'RunInterval' => 604800, 'Type' => reAFTER, 'Status' => STATUS_DISABLED), 'clean_resized_catalog_images' => Array ('EventName' => 'OnCleanResizedImages', 'RunInterval' => 2592000, 'Type' => reAFTER, 'Status' => STATUS_DISABLED), ), Index: core/units/mailing_lists/mailing_lists_config.php =================================================================== --- core/units/mailing_lists/mailing_lists_config.php (revision 14858) +++ core/units/mailing_lists/mailing_lists_config.php (working copy) @@ -31,7 +31,7 @@ 5 => 'mode', ), - 'RegularEvents' => Array ( + 'ScheduledTasks' => Array ( 'generate_mailing_queue' => Array ('EventName' => 'OnGenerateEmailQueue', 'RunInterval' => 1800, 'Type' => reAFTER), 'process_mailing_queue' => Array ('EventName' => 'OnProcessEmailQueue', 'RunInterval' => 1800, 'Type' => reAFTER), ), Index: core/units/users/users_config.php =================================================================== --- core/units/users/users_config.php (revision 14858) +++ core/units/users/users_config.php (working copy) @@ -92,7 +92,7 @@ 5 => 'mode', ), - 'RegularEvents' => Array( + 'ScheduledTasks' => Array( 'membership_expiration' => Array('EventName' => 'OnCheckExpiredMembership', 'RunInterval' => 1800, 'Type' => reAFTER), 'delete_expired_sessions' => Array('EventName' => 'OnDeleteExpiredSessions', 'RunInterval' => 43200, 'Type' => reAFTER), ), Index: core/units/users/users_event_handler.php =================================================================== --- core/units/users/users_event_handler.php (revision 14858) +++ core/units/users/users_event_handler.php (working copy) @@ -232,7 +232,7 @@ } /** - * [AGENT] Deletes expired sessions + * [SCHEDULED TASK] Deletes expired sessions * * @param kEvent $event */ Index: tools/cron.php =================================================================== --- tools/cron.php (revision 14858) +++ tools/cron.php (working copy) @@ -35,8 +35,8 @@ $application->Init(); // events from request are not processed, only predefined regular events - $application->EventManager->runAgents(reBEFORE, true); - $application->EventManager->runAgents(reAFTER, true); + $application->EventManager->runScheduledTasks(reBEFORE, true); + $application->EventManager->runScheduledTasks(reAFTER, true); $application->Done();