Example #1
0
}
// MAIN
$display = '';
if (SEC_checkToken()) {
    if ($_REQUEST['action'] == 'uninstall') {
        $uninstall_plugin = 'plugin_uninstall_' . $pi_name;
        if ($uninstall_plugin()) {
            $display = COM_refresh($_CONF['site_admin_url'] . '/plugins.php?msg=45');
        } else {
            $display = COM_refresh($_CONF['site_admin_url'] . '/plugins.php?msg=73');
        }
    } else {
        if (DB_count($_TABLES['plugins'], 'pi_name', $pi_name) == 0) {
            // plugin not installed
            if (plugin_compatible_with_this_geeklog_version()) {
                if (plugin_install_now()) {
                    $display = COM_refresh($_CONF['site_admin_url'] . '/plugins.php?msg=44');
                } else {
                    $display = COM_refresh($_CONF['site_admin_url'] . '/plugins.php?msg=72');
                }
            } else {
                // plugin needs a newer version of Geeklog
                $display .= COM_siteHeader('menu', $LANG32[8]) . COM_startBlock($LANG32[8]) . '<p>' . $LANG32[9] . '</p>' . COM_endBlock() . COM_siteFooter();
            }
        } else {
            // plugin already installed
            $display .= COM_siteHeader('menu', $LANG01[77]) . COM_startBlock($LANG32[6]) . '<p>' . $LANG32[7] . '</p>' . COM_endBlock() . COM_siteFooter();
        }
    }
} else {
    $display = COM_refresh($_CONF['site_admin_url'] . '/plugins.php');
Example #2
0
/**
* Puts the datastructures for this plugin into the Geeklog database
*
* Note: Corresponding uninstall routine is in functions.inc
* 
* @return    boolean    True if successful False otherwise
*
*/
function plugin_install_now()
{
    global $pi_name, $pi_version, $gl_version, $pi_url, $NEWTABLE, $DEFVALUES, $NEWFEATURE;
    global $_TABLES, $_CONF, $_ENV;
    COM_errorLog("Attempting to install the {$pi_name} Plugin", 1);
    $uninstall_plugin = 'plugin_uninstall_' . $pi_name;
    // Create the Plugins Tables
    require_once $_CONF['path'] . 'plugins/messenger/sql/messenger_install_1.0.php';
    for ($i = 1; $i <= count($_SQL); $i++) {
        $progress .= "executing " . current($_SQL) . "<br>\n";
        COM_errorLOG("executing " . current($_SQL));
        DB_query(current($_SQL));
        if (DB_error()) {
            COM_errorLog("Error Creating {$table} table", 1);
            $uninstall_plugin('DeletePlugin');
            return false;
            exit;
        }
        next($_SQL);
    }
    COM_errorLog("Success - Created {$table} table", 1);
    // Insert Default Data
    foreach ($DEFVALUES as $table => $sql) {
        COM_errorLog("Inserting default data into {$table} table", 1);
        DB_query($sql, 1);
        if (DB_error()) {
            COM_errorLog("Error inserting default data into {$table} table", 1);
            $uninstall_plugin();
            return false;
            exit;
        }
        COM_errorLog("Success - inserting data into {$table} table", 1);
    }
    // Create the plugin admin security group
    COM_errorLog("Attempting to create {$pi_name} admin group", 1);
    DB_query("INSERT INTO {$_TABLES['groups']} (grp_name, grp_descr) " . "VALUES ('{$pi_name} Admin', 'Users in this group can administer the {$pi_name} plugin')", 1);
    if (DB_error()) {
        plugin_install_now();
        return false;
        exit;
    }
    COM_errorLog('...success', 1);
    $group_id = DB_insertId();
    // Save the grp id for later uninstall
    COM_errorLog('About to save group_id to vars table for use during uninstall', 1);
    DB_query("INSERT INTO {$_TABLES['vars']} VALUES ('{$pi_name}_admin', {$group_id})", 1);
    if (DB_error()) {
        $uninstall_plugin();
        return false;
        exit;
    }
    COM_errorLog('...success', 1);
    // Add plugin Features
    foreach ($NEWFEATURE as $feature => $desc) {
        COM_errorLog("Adding {$feature} feature", 1);
        DB_query("INSERT INTO {$_TABLES['features']} (ft_name, ft_descr) " . "VALUES ('{$feature}','{$desc}')", 1);
        if (DB_error()) {
            COM_errorLog("Failure adding {$feature} feature", 1);
            $uninstall_plugin();
            return false;
            exit;
        }
        $feat_id = DB_insertId();
        COM_errorLog("Success", 1);
        COM_errorLog("Adding {$feature} feature to admin group", 1);
        DB_query("INSERT INTO {$_TABLES['access']} (acc_ft_id, acc_grp_id) VALUES ({$feat_id}, {$group_id})");
        if (DB_error()) {
            COM_errorLog("Failure adding {$feature} feature to admin group", 1);
            $uninstall_plugin();
            return false;
            exit;
        }
        COM_errorLog("Success", 1);
    }
    // OK, now give Root users access to this plugin now! NOTE: Root group should always be 1
    COM_errorLog("Attempting to give all users in Root group access to {$pi_name} admin group", 1);
    DB_query("INSERT INTO {$_TABLES['group_assignments']} VALUES ({$group_id}, NULL, 1)");
    if (DB_error()) {
        $uninstall_plugin();
        return false;
        exit;
    }
    // Register the plugin with Geeklog
    COM_errorLog("Registering {$pi_name} plugin with Geeklog", 1);
    DB_delete($_TABLES['plugins'], 'pi_name', 'messenger');
    DB_query("INSERT INTO {$_TABLES['plugins']} (pi_name, pi_version, pi_gl_version, pi_homepage, pi_enabled) " . "VALUES ('{$pi_name}', '{$pi_version}', '{$gl_version}', '{$pi_url}', 1)");
    if (DB_error()) {
        $uninstall_plugin();
        return false;
        exit;
    }
    DB_query("INSERT INTO {$_TABLES['vars']} VALUES ('{$pi_name}_status', 1)", 1);
    /* DO NOT REMOVE OR CHANGE THE FOLLOWING CODE UNDER ANY CONDITION */
    /* This Plugin requires a license to be installed and information collected is ONLY used to track that license */
    /* Blaine Lang: glmessenger author */
    $message = 'Completed plugin install: ' . date('m d Y', time()) . "   AT " . date('H:i', time()) . "\n";
    $message .= 'Site: ' . $_CONF['site_url'] . ' and Sitename: ' . $_CONF['site_name'] . "\n";
    $message .= 'Admin: ' . $_CONF['site_mail'] . "\n";
    $message .= 'Hostname: ' . $_ENV['HOSTNAME'] . ' and RemoteAddress: ' . $_ENV['REMOTE_ADDR'];
    @mail('*****@*****.**', 'glMessenger Install successfull', $message);
    COM_errorLog("Succesfully installed the {$pi_name} Plugin!", 1);
    return true;
}