/// <summary> /// /// </summary> /// <param name="portalfinfo"></param> /// <returns></returns> public override string DoWork() { try { var objCtrl = new NBrightBuyController(); // the sceduler runs at host level, we therefore need to loop through ALL portals to process data at a portal level. var portalList = NBrightDNN.DnnUtils.GetAllPortals(); foreach (var portal in portalList) { // check if we have NBS in this portal by looking for default settings. var nbssetting = objCtrl.GetByGuidKey(portal.PortalID, -1, "SETTINGS", "NBrightBuySettings"); if (nbssetting != null) { var storeSettings = new StoreSettings(portal.PortalID); var pluginData = new PluginData(portal.PortalID); // get plugin data to see if this scheduler is active on this portal var plugin = pluginData.GetPluginByCtrl("dnnsearchindex"); if (plugin != null && plugin.GetXmlPropertyBool("genxml/checkbox/active")) { // The NBS scheduler is normally set to run hourly, therefore if we only want a process to run daily we need the logic this function. // To to this we keep a last run flag on the sceduler settings var setting = objCtrl.GetByGuidKey(portal.PortalID, -1, "DNNIDXSCHEDULER", "DNNIDXSCHEDULER"); if (setting == null) { setting = new NBrightInfo(true); setting.ItemID = -1; setting.PortalId = portal.PortalID; setting.TypeCode = "DNNIDXSCHEDULER"; setting.GUIDKey = "DNNIDXSCHEDULER"; setting.ModuleId = -1; setting.XMLData = "<genxml></genxml>"; } var lastrun = setting.GetXmlPropertyRaw("genxml/lastrun"); var lastrundate = DateTime.Now.AddYears(-99); if (Utils.IsDate(lastrun)) { lastrundate = Convert.ToDateTime(lastrun); } var rtnmsg = DoProductIdx(portal, lastrundate, storeSettings.DebugMode); setting.SetXmlProperty("genxml/lastrun", DateTime.Now.ToString("s"), TypeCode.DateTime); objCtrl.Update(setting); if (rtnmsg != "") { return(rtnmsg); } } } } return(" - NBS-DNNIDX scheduler OK "); } catch (Exception ex) { return(" - NBS-DNNIDX scheduler FAIL: " + ex.ToString() + " : "); } }
private String GetMenu() { var strCacheKey = "bomenuhtml*" + Utils.GetCurrentCulture() + "*" + PortalId.ToString("") + "*" + UserId.ToString(""); var strOut = ""; var obj = Utils.GetCache(strCacheKey); if (obj != null) { strOut = (String)obj; } if (StoreSettings.Current.DebugMode || strOut == "") { lock (lockobjectGetMenu) { var pluginData = new PluginData(PortalId); var bomenuattributes = DnnUtils.GetLocalizedString("bomenuattributes", _resxpath, Utils.GetCurrentCulture()); var bosubmenuattributes = DnnUtils.GetLocalizedString("bosubmenuattributes", _resxpath, Utils.GetCurrentCulture()); //get group list (these are the sections/first level of the menu) var rootList = new Dictionary <String, String>(); var pluginList = PluginUtils.GetPluginList(); foreach (var p in pluginList) { if (PluginUtils.CheckSecurity(p)) { var grpname = p.GetXmlProperty("genxml/textbox/group"); if (p.GetXmlPropertyBool("genxml/checkbox/hidden") == false) { var rootname = grpname; if (rootname == "") { rootname = p.GetXmlProperty("genxml/textbox/ctrl"); } if (!rootList.ContainsKey(rootname)) { var resxname = DnnUtils.GetLocalizedString(rootname.ToLower(), _resxpath, Utils.GetCurrentCulture()); if (resxname == "") { resxname = rootname; } rootList.Add(rootname, resxname); } } } } strOut = "<ul " + bomenuattributes + ">"; // clientEditor roles can only access products, so only add the exit button to the menu. // the security restriuction on product ctrl is applied in the container.ascx.cs //if (!NBrightBuyUtils.IsClientOnly()) //{ foreach (var rootname in rootList) { var rtnlist = pluginData.GetSubList(rootname.Key); var sublist = new List <NBrightInfo>(); // check security foreach (var p in rtnlist) { if (PluginUtils.CheckSecurity(p)) { sublist.Add(p); } } var href = "#"; var ctrl = ""; var name = "unknown"; var icon = ""; var hrefclass = ""; var securityrootcheck = true; if (sublist.Count > 0) { // has sub menus ctrl = rootname.Key; name = rootname.Value; hrefclass = "class='dropdown-toggle'"; icon = DnnUtils.GetLocalizedString(ctrl.ToLower() + "_icon", _resxpath, Utils.GetCurrentCulture()); strOut += "<li class='dropdown'>"; } else { // clickable root menu var rootp = pluginData.GetPluginByCtrl(rootname.Key); if (rootp != null) { ctrl = rootp.GetXmlProperty("genxml/textbox/ctrl"); name = rootp.GetXmlProperty("genxml/textbox/name"); icon = rootp.GetXmlProperty("genxml/textbox/icon"); securityrootcheck = PluginUtils.CheckSecurity(rootp); if (securityrootcheck) { strOut += "<li>"; var param = new string[1]; param[0] = "ctrl=" + ctrl; href = Globals.NavigateURL(TabId, "", param); } } else { securityrootcheck = false; } } if (securityrootcheck) { strOut += GetRootLinkNode(name, ctrl, icon, href, hrefclass); } if (sublist.Count > 0) { strOut += "<ul " + bosubmenuattributes + ">"; foreach (var p in sublist) { if (p.GetXmlPropertyBool("genxml/checkbox/hidden") == false) { ctrl = p.GetXmlProperty("genxml/textbox/ctrl"); name = p.GetXmlProperty("genxml/textbox/name"); icon = p.GetXmlProperty("genxml/textbox/icon"); var param = new string[1]; param[0] = "ctrl=" + ctrl; href = Globals.NavigateURL(TabId, "", param); strOut += "<li>" + GetSubLinkNode(name, ctrl, icon, href) + "</li>"; } } strOut += "</ul>"; } if (securityrootcheck) { strOut += "</li>"; } } // } // add exit button strOut += "<li>"; var tabid = StoreSettings.Current.Get("exittab"); var exithref = "/"; if (Utils.IsNumeric(tabid)) { exithref = Globals.NavigateURL(Convert.ToInt32(tabid)); } strOut += GetRootLinkNode("Exit", "exit", DnnUtils.GetLocalizedString("exit_icon", _resxpath, Utils.GetCurrentCulture()), exithref, ""); strOut += "</li>"; strOut += "</ul>"; NBrightBuyUtils.SetModCache(0, strCacheKey, strOut); if (StoreSettings.Current.DebugModeFileOut) { Utils.SaveFile(PortalSettings.HomeDirectoryMapPath + "\\debug_menu.html", strOut); } } } return(strOut); }
private String GetControlPath(String ctrl) { var p = _pluginData.GetPluginByCtrl(ctrl); return(p.GetXmlProperty("genxml/textbox/path")); }
public override string DoWork(int portalId) { try { var objCtrl = new NBrightBuyController(); var rtnmsg = ""; // check if we have NBS in this portal by looking for default settings. var nbssetting = objCtrl.GetByGuidKey(portalId, -1, "SETTINGS", "NBrightBuySettings"); if (nbssetting != null) { var pluginData = new PluginData(portalId); // get plugin data to see if this scheduler is active on this portal var plugin = pluginData.GetPluginByCtrl("cartreview"); if (plugin != null && plugin.GetXmlPropertyBool("genxml/checkbox/active")) { var doscheduler = false; // The NBS scheduler is normally set to run hourly, therefore if we only want a process to run daily we need the logic in this function. // To do this we keep a last run flag on the sceduler settings var setting = objCtrl.GetByGuidKey(portalId, -1, "NBrightCartReview", "NBrightCartReviewScheduler"); if (setting == null) { setting = new NBrightInfo(true); setting.ItemID = -1; setting.PortalId = portalId; setting.TypeCode = "NBrightCartReview"; setting.GUIDKey = "NBrightCartReviewScheduler"; setting.ModuleId = -1; setting.XMLData = "<genxml></genxml>"; doscheduler = true; } if (plugin.GetXmlPropertyBool("genxml/checkbox/testmode") == true) { doscheduler = true; } else { // check last run date (Only running once a day in this case) var lastrun = setting.GetXmlProperty("genxml/lastrun"); if (Utils.IsDate(lastrun) && (Convert.ToDateTime(lastrun).AddDays(1) < DateTime.Now)) { doscheduler = true; } } if (doscheduler) { var daysforzero = plugin.GetXmlPropertyInt("genxml/textbox/daysforzero"); var daysfornormal = plugin.GetXmlPropertyInt("genxml/textbox/daysfornormal"); PurgeZeroCarts(portalId, daysforzero); PurgeCarts(portalId, daysfornormal); setting.SetXmlProperty("genxml/lastrun", DateTime.Now.ToString("s"), TypeCode.DateTime); objCtrl.Update(setting); rtnmsg = " - NBrightCartReview " + portalId + " OK "; } } } return(rtnmsg); } catch (Exception ex) { return(" - NBrightCartReview FAIL: " + ex.ToString() + " : "); } }