} // 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');
/** * 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; }