]> git.mxchange.org Git - friendica.git/commitdiff
admin page to manage failed updates
authorfriendica <info@friendica.com>
Mon, 30 Apr 2012 02:10:07 +0000 (19:10 -0700)
committerfriendica <info@friendica.com>
Mon, 30 Apr 2012 02:10:07 +0000 (19:10 -0700)
boot.php
mod/admin.php
view/admin_aside.tpl
view/failed_updates.tpl [new file with mode: 0644]

index aefc694e6410fd22d62f64a9a9fb6fd2a50de03c..733d94b1e183f3856c9022fa65b7e636348a6015 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -667,7 +667,7 @@ if(! function_exists('check_config')) {
                                                        // call the specific update
 
                                                        $func = 'update_' . $x;
-                                                       $retval = $func($a);
+                                                       $retval = $func();
                                                        if($retval) {
                                                                //send the administrator an e-mail
                                                                $email_tpl = get_intltext_template("update_fail_eml.tpl");
index 3b6d186d5520a32fca53dfe8143263ce54820a26..b07ef851a1e9b9697b742c96dc211ac95ac88085 100644 (file)
@@ -61,6 +61,9 @@ function admin_post(&$a){
                        case 'logs':
                                admin_page_logs_post($a);
                                break;
+                       case 'dbsync':
+                               admin_page_dbsync_post($a);
+                               break;
                        case 'update':
                                admin_page_remoteupdate_post($a);
                                break;
@@ -94,7 +97,8 @@ function admin_content(&$a) {
                'users'  =>     Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"),
                'plugins'=>     Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
                'themes' =>     Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
-               'update' =>     Array($a->get_baseurl(true)."/admin/update/", t("Update") , "update")
+               'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
+               'update' =>     Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update")
        );
        
        /* get plugins admin page */
@@ -142,6 +146,9 @@ function admin_content(&$a) {
                        case 'logs':
                                $o = admin_page_logs($a);
                                break;
+                       case 'dbsync':
+                               $o = admin_page_dbsync($a);
+                               break;
                        case 'update':
                                $o = admin_page_remoteupdate($a);
                                break;
@@ -435,6 +442,62 @@ function admin_page_site(&$a) {
 }
 
 
+function admin_page_dbsync(&$a) {
+
+       $o = '';
+
+       if($a->argc > 3 && intval($a->argv[3]) && $a->argv[2] === 'mark') {
+               set_config('database', 'update_' . intval($a->argv[3]), 'success');
+               info( t('Update has been marked successful') . EOL);
+               goaway($a->get_baseurl(true) . '/admin/dbsync');
+       }
+
+       if($a->argc > 2 && intval($a->argv[2])) {
+               require_once('update.php');
+               $func = 'update_' . intval($a->argv[2]);
+               if(function_exists($func)) {
+                       $retval = $func();
+                       if($retval === UPDATE_FAILED) {
+                               $o .= sprintf( t('Executing %s failed. Check system logs.'), $func); 
+                       }
+                       elseif($retval === UPDATE_SUCCESS) {
+                               $o .= sprintf( t('Update %s was successfully applied.', $func));
+                               set_config('database',$func, 'success');
+                       }
+                       else
+                               $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func);
+               }
+               else
+                       $o .= sprintf( t('Update function %s could not be found.'), $func);
+               return $o;
+       }
+
+       $failed = array();
+       $r = q("select * from config where `cat` = 'database' ");
+       if(count($r)) {
+               foreach($r as $rr) {
+                       $upd = intval(substr($rr['k'],7));
+                       if($upd < 1139 || $rr['v'] === 'success')
+                               continue;
+                       $failed[] = $upd;
+               }
+       }
+       if(! count($failed))
+               return '<h3>' . t('No failed updates.') . '</h3>';
+
+       $o = replace_macros(get_markup_template('failed_updates.tpl'),array(
+               '$base' => $a->get_baseurl(true),
+               '$banner' => t('Failed Updates'),
+               '$desc' => t('This does not include updates prior to 1139, which did not return a status.'),
+               '$mark' => t('Mark success (if update was manually applied)'),
+               '$apply' => t('Attempt to execute this update step automatically'),
+               '$failed' => $failed
+       ));     
+
+       return $o;
+
+}
+
 /**
  * Users admin page
  *
@@ -979,7 +1042,6 @@ readable.");
                                        $size = 5000000;
                                $seek = fseek($fp,0-$size,SEEK_END);
                                if($seek === 0) {
-                                       fgets($fp); // throw away the first partial line
                                        $data = escape_tags(fread($fp,$size));
                                        while(! feof($fp))
                                                $data .= escape_tags(fread($fp,4096));
index a3c98e2ce45ebd08da01581531c3b34b71f66f36..f25a1eb4ba2325eef9f8bdc3665b480f068e66b7 100644 (file)
@@ -16,6 +16,7 @@
        <li class='admin link button $admin.users.2'><a href='$admin.users.0'>$admin.users.1</a><span id='pending-update' title='$h_pending'></span></li>
        <li class='admin link button $admin.plugins.2'><a href='$admin.plugins.0'>$admin.plugins.1</a></li>
        <li class='admin link button $admin.themes.2'><a href='$admin.themes.0'>$admin.themes.1</a></li>
+       <li class='admin link button $admin.dbsync.2'><a href='$admin.dbsync.0'>$admin.dbsync.1</a></li>
 </ul>
 
 <ul class='admin linklist'>
diff --git a/view/failed_updates.tpl b/view/failed_updates.tpl
new file mode 100644 (file)
index 0000000..c6e4cb0
--- /dev/null
@@ -0,0 +1,17 @@
+<h2>$banner</h2>
+
+<div id="failed_updates_desc">$desc</div>
+
+{{ if $failed }}
+{{ for $failed as $f }}
+
+<h4>$f</h4>
+<ul>
+<li><a href="$base/admin/dbsync/mark/$f">$mark</a></li>
+<li><a href="$base/admin/dbsync/$f">$apply</a></li>
+</ul>
+
+<hr />
+{{ endfor }}
+{{ endif }}
+