コード例 #1
0
        public ActionResult ExecuteUpdate()
        {
            if (User.Identity.IsAuthenticated && User.HasAccess("ADMIN"))
            {
                // Execute all incremental updates in a transaction.
                using (IDbTransaction tx = Database.OpenTransaction()) {
                    for (int n = Data.Database.InstalledVersion + 1; n <= Data.Database.CurrentVersion; n++)
                    {
                        // Read embedded create script
                        Stream str = Assembly.GetExecutingAssembly().GetManifestResourceStream(Database.ScriptRoot + ".Updates." +
                                                                                               n.ToString() + ".sql");
                        String sql = new StreamReader(str).ReadToEnd();
                        str.Close();

                        // Split statements and execute
                        string[] stmts = sql.Split(new char[] { ';' });
                        foreach (string stmt in stmts)
                        {
                            if (!String.IsNullOrEmpty(stmt.Trim()))
                            {
                                SysUser.Execute(stmt.Trim(), tx);
                            }
                        }

                        // Check for update class
                        var utype = Type.GetType("Piranha.Data.Updates.Update" + n.ToString());
                        if (utype != null)
                        {
                            IUpdate update = (IUpdate)Activator.CreateInstance(utype);
                            update.Execute(tx);
                        }
                    }
                    // Now lets update the database version.
                    SysUser.Execute("UPDATE sysparam SET sysparam_value = @0 WHERE sysparam_name = 'SITE_VERSION'",
                                    tx, Data.Database.CurrentVersion);
                    SysParam.InvalidateParam("SITE_VERSION");
                    tx.Commit();
                }
                return(RedirectToAction("index", "account"));
            }
            else
            {
                return(RedirectToAction("update"));
            }
        }
コード例 #2
0
ファイル: ClientCache.cs プロジェクト: becdetat/Piranha
 /// <summary>
 /// Updates the global last modified date for the site.
 /// </summary>
 /// <param name="tx">Optional transaction</param>
 public static void SetSiteLastModified(IDbTransaction tx = null)
 {
     SysParam.Execute("UPDATE sysparam SET sysparam_value = @0 WHERE sysparam_name = @1", tx,
                      DateTime.Now, "SITE_LAST_MODIFIED");
     SysParam.InvalidateParam("SITE_LAST_MODIFIED");
 }