public function rebuild($start_date = null, $end_date = null)
 {
     if (!$start_date) {
         $start_date = config_option('last_sharing_table_rebuild');
     }
     if ($start_date instanceof DateTimeValue) {
         $start_date = $start_date->toMySQL();
     }
     if ($end_date instanceof DateTimeValue) {
         $end_date = $end_date->toMySQL();
     }
     if ($end_date) {
         $end_cond = "AND updated_on <= '{$end_date}'";
     }
     try {
         $object_ids = Objects::instance()->findAll(array('id' => true, "conditions" => "updated_on >= '{$start_date}' {$end_cond}"));
         $obj_count = 0;
         DB::beginWork();
         foreach ($object_ids as $id) {
             $obj = Objects::findObject($id);
             if ($obj instanceof ContentDataObject) {
                 $obj->addToSharingTable();
                 $obj_count++;
             }
         }
         set_config_option('last_sharing_table_rebuild', DateTimeValueLib::now()->toMySQL());
         DB::commit();
     } catch (Exception $e) {
         DB::rollback();
         Logger::log("Failed to rebuild sharing table: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString());
     }
     return $obj_count;
 }
 /**
  * Check if there is a new version of application available
  *
  * @param boolean $force When forced check will always construct the versions feed object
  *   try to fech the data and check for a new version. Version feed object is also returned
  * @return VersionFeed In case of error this function will return false
  */
 static function check($force = true)
 {
     $allow_url_fopen = strtolower(ini_get('allow_url_fopen'));
     if (function_exists('simplexml_load_file') && ($allow_url_fopen == '1' || $allow_url_fopen == 'on')) {
         // Execute once a day, if not forced check if we need to execute it now
         if (!$force) {
             if (config_option('upgrade_last_check_new_version', false)) {
                 return true;
                 // already have it checked and already have a new version
             }
             // if
             $last_check = config_option('upgrade_last_check_datetime');
             if ($last_check instanceof DateTimeValue && $last_check->getTimestamp() + 86400 > DateTimeValueLib::now()->getTimestamp()) {
                 return true;
                 // checked in the last day
             }
             // if
         }
         // if
         try {
             $versions_feed = new VersionsFeed();
             set_config_option('upgrade_last_check_datetime', DateTimeValueLib::now());
             set_config_option('upgrade_last_check_new_version', $versions_feed->hasNewVersions(product_version()));
             return $force ? $versions_feed : true;
         } catch (Exception $e) {
             return false;
         }
         // try
     } else {
         set_config_option('upgrade_check_enabled', false);
         return false;
     }
     // if
 }
 function scolors()
 {
     if (can_manage_configuration(logged_user())) {
         $valid_options = ConfigCategories::getOptionsFromCategory('brand_colors');
         foreach ($_POST as $k => $v) {
             print "{$k} => {$v}";
             if (in_array($k, $valid_options)) {
                 set_config_option($k, str_replace("#", "", $v));
             }
         }
     }
     exit;
 }
示例#4
0
function plugins_load_temp_table()
{
    global $config, $plugins;
    $pluginslist = retrieve_plugin_list();
    if (isset($_SESSION["plugin_temp_table"])) {
        $table = $_SESSION["plugin_temp_table"];
    } else {
        $table = "plugin_temp_table_" . rand();
    }
    $x = 0;
    while ($x < 30) {
        if (!plugins_temp_table_exists($table)) {
            $_SESSION["plugin_temp_table"] = $table;
            db_execute("CREATE TEMPORARY TABLE IF NOT EXISTS {$table} LIKE plugin_config");
            db_execute("TRUNCATE {$table}");
            db_execute("INSERT INTO {$table} SELECT * FROM plugin_config");
            break;
        } else {
            $table = "plugin_temp_table_" . rand();
        }
        $x++;
    }
    $path = $config['base_path'] . '/plugins/';
    $dh = opendir($path);
    if ($dh !== false) {
        while (($file = readdir($dh)) !== false) {
            if (is_dir("{$path}/{$file}") && file_exists("{$path}/{$file}/setup.php") && !in_array($file, $pluginslist)) {
                include_once "{$path}/{$file}/setup.php";
                if (!function_exists('plugin_' . $file . '_install') && function_exists($file . '_version')) {
                    $function = $file . '_version';
                    $cinfo[$file] = $function();
                    if (!isset($cinfo[$file]['author'])) {
                        $cinfo[$file]['author'] = 'Unknown';
                    }
                    if (!isset($cinfo[$file]['homepage'])) {
                        $cinfo[$file]['homepage'] = 'Not Stated';
                    }
                    if (isset($cinfo[$file]['webpage'])) {
                        $cinfo[$file]['homepage'] = $cinfo[$file]['webpage'];
                    }
                    if (!isset($cinfo[$file]['longname'])) {
                        $cinfo[$file]['longname'] = ucfirst($file);
                    }
                    $cinfo[$file]['status'] = -2;
                    if (in_array($file, $plugins)) {
                        $cinfo[$file]['status'] = -1;
                    }
                    db_execute("REPLACE INTO {$table} (directory, name, status, author, webpage, version)\n\t\t\t\t\t\tVALUES ('" . $file . "', '" . $cinfo[$file]['longname'] . "', '" . $cinfo[$file]['status'] . "', '" . $cinfo[$file]['author'] . "', '" . $cinfo[$file]['homepage'] . "', '" . $cinfo[$file]['version'] . "')");
                    $pluginslist[] = $file;
                } elseif (function_exists('plugin_' . $file . '_install') && function_exists('plugin_' . $file . '_version')) {
                    $function = $file . '_version';
                    $cinfo[$file] = $function();
                    $cinfo[$file]['status'] = 0;
                    if (!isset($cinfo[$file]['author'])) {
                        $cinfo[$file]['author'] = 'Unknown';
                    }
                    if (!isset($cinfo[$file]['homepage'])) {
                        $cinfo[$file]['homepage'] = 'Not Stated';
                    }
                    if (isset($cinfo[$file]['webpage'])) {
                        $cinfo[$file]['homepage'] = $cinfo[$file]['webpage'];
                    }
                    if (!isset($cinfo[$file]['longname'])) {
                        $cinfo[$file]['homepage'] = ucfirst($file);
                    }
                    /* see if it's been installed as old, if so, remove from oldplugins array and session */
                    $oldplugins = read_config_option("oldplugins");
                    if (substr_count($oldplugins, $file)) {
                        $oldplugins = str_replace($file, "", $oldplugins);
                        $oldplugins = str_replace(",,", ",", $oldplugins);
                        $oldplugins = trim($oldplugins, ",");
                        set_config_option('oldplugins', $oldplugins);
                        $_SESSION['sess_config_array']['oldplugins'] = $oldplugins;
                    }
                    db_execute("REPLACE INTO {$table} (directory, name, status, author, webpage, version)\n\t\t\t\t\t\tVALUES ('" . $file . "', '" . $cinfo[$file]['longname'] . "', '" . $cinfo[$file]['status'] . "', '" . $cinfo[$file]['author'] . "', '" . $cinfo[$file]['homepage'] . "', '" . $cinfo[$file]['version'] . "')");
                    $pluginslist[] = $file;
                }
            }
        }
        closedir($dh);
    }
    return $table;
}
<?php

include '../../include/db.php';
include '../../include/general.php';
include '../../include/authenticate.php';
if (!checkperm('a')) {
    exit('Permission denied.');
}
include_once '../../include/config_functions.php';
// Process autosaving requests
if (getval('ajax', '') === 'true' && getval('autosave', '') === 'true') {
    $response['success'] = true;
    $response['message'] = '';
    $autosave_option_name = getvalescaped('autosave_option_name', '');
    $autosave_option_value = getvalescaped('autosave_option_value', '');
    if (!set_config_option(null, $autosave_option_name, $autosave_option_value)) {
        $response['success'] = false;
    }
    echo json_encode($response);
    exit;
}
include '../../include/header.php';
process_config_options();
?>
<div class="BasicsBox">
    <h1><?php 
echo $lang['systemconfig'];
?>
</h1>
    <p><?php 
echo $lang['systemconfig_description'];
示例#6
0
function disable_poller()
{
    set_config_option('poller_enabled', '');
}
 /**
  * Finish the installation - create owner company and administrator
  *
  * @param void
  * @return null
  */
 function complete_installation()
 {
     if (Contacts::getOwnerCompany() instanceof Contact) {
         die('Owner company already exists');
         // Somebody is trying to access this method even if the user already exists
     }
     // if
     $form_data = array_var($_POST, 'form');
     tpl_assign('form_data', $form_data);
     if (array_var($form_data, 'submited') == 'submited') {
         try {
             $admin_password = trim(array_var($form_data, 'admin_password'));
             $admin_password_a = trim(array_var($form_data, 'admin_password_a'));
             if (trim($admin_password) == '') {
                 throw new Error(lang('password value required'));
             }
             // if
             if ($admin_password != $admin_password_a) {
                 throw new Error(lang('passwords dont match'));
             }
             // if
             DB::beginWork();
             Contacts::delete();
             // clear users table
             // Create a company
             $company = new Contact();
             $company->setFirstName(array_var($form_data, 'company_name'));
             $company->setObjectName();
             $company->setIsCompany(true);
             $company->save();
             // Init default colors
             set_config_option('brand_colors_head_back', "424242");
             set_config_option('brand_colors_tabs_back', "e7e7e7");
             set_config_option('brand_colors_head_font', "FFFFFF");
             set_config_option('brand_colors_tabs_font', "333333");
             // Create the administrator user
             $administrator = new Contact();
             $pergroup = PermissionGroups::findOne(array('conditions' => "`name`='Super Administrator'"));
             $administrator->setUserType($pergroup->getId());
             $administrator->setCompanyId($company->getId());
             $administrator->setUsername(array_var($form_data, 'admin_username'));
             $administrator->setPassword($admin_password);
             $administrator->setFirstname(array_var($form_data, 'admin_username'));
             $administrator->setObjectName();
             $administrator->save();
             $user_password = new ContactPassword();
             $user_password->setContactId($administrator->getId());
             $user_password->password_temp = $admin_password;
             $user_password->setPasswordDate(DateTimeValueLib::now());
             $user_password->setPassword(cp_encrypt($admin_password, $user_password->getPasswordDate()->getTimestamp()));
             $user_password->save();
             //Add email after save because is needed.
             $administrator->addEmail(array_var($form_data, 'admin_email'), 'personal', true);
             //permissions
             $permission_group = new PermissionGroup();
             $permission_group->setName('Account Owner');
             $permission_group->setContactId($administrator->getId());
             $permission_group->setIsContext(false);
             $permission_group->setType("permission_groups");
             $permission_group->save();
             $administrator->setPermissionGroupId($permission_group->getId());
             $administrator->save();
             $company->setCreatedById($administrator->getId());
             $company->setUpdatedById($administrator->getId());
             $company->save();
             $contact_pg = new ContactPermissionGroup();
             $contact_pg->setContactId($administrator->getId());
             $contact_pg->setPermissionGroupId($permission_group->getId());
             $contact_pg->save();
             // tab panel permissions
             $panels = TabPanels::getEnabled();
             foreach ($panels as $panel) {
                 $tpp = new TabPanelPermission();
                 $tpp->setPermissionGroupId($administrator->getPermissionGroupId());
                 $tpp->setTabPanelId($panel->getId());
                 $tpp->save();
             }
             // dimension permissions
             $dimensions = Dimensions::findAll();
             foreach ($dimensions as $dimension) {
                 if ($dimension->getDefinesPermissions()) {
                     $cdp = ContactDimensionPermissions::findOne(array("conditions" => "`permission_group_id` = " . $administrator->getPermissionGroupId() . " AND `dimension_id` = " . $dimension->getId()));
                     if (!$cdp instanceof ContactDimensionPermission) {
                         $cdp = new ContactDimensionPermission();
                         $cdp->setPermissionGroupId($administrator->getPermissionGroupId());
                         $cdp->setContactDimensionId($dimension->getId());
                     }
                     $cdp->setPermissionType('allow all');
                     $cdp->save();
                     // contact member permisssion entries
                     $members = $dimension->getAllMembers();
                     foreach ($members as $member) {
                         $ots = DimensionObjectTypeContents::getContentObjectTypeIds($dimension->getId(), $member->getObjectTypeId());
                         $ots[] = $member->getObjectId();
                         foreach ($ots as $ot) {
                             $cmp = ContactMemberPermissions::findOne();
                             if (!$cmp instanceof ContactMemberPermission) {
                                 $cmp = new ContactMemberPermission(array("conditions" => "`permission_group_id` = " . $administrator->getPermissionGroupId() . " AND `member_id` = " . $member->getId() . " AND `object_type_id` = {$ot}"));
                                 $cmp->setPermissionGroupId($administrator->getPermissionGroupId());
                                 $cmp->setMemberId($member->getId());
                                 $cmp->setObjectTypeId($ot);
                             }
                             $cmp->setCanWrite(1);
                             $cmp->setCanDelete(1);
                             $cmp->save();
                         }
                     }
                 }
             }
             // system permissions
             $sp = new SystemPermission();
             $sp->setPermissionGroupId($administrator->getPermissionGroupId());
             $sp->setAllPermissions(true);
             $sp->save();
             // root permissions
             DB::executeAll("\r\n\t\t\t\tINSERT INTO " . TABLE_PREFIX . "contact_member_permissions (permission_group_id, member_id, object_type_id, can_delete, can_write)\r\n\t\t\t\t  SELECT " . $administrator->getPermissionGroupId() . ", 0, rtp.object_type_id, rtp.can_delete, rtp.can_write FROM " . TABLE_PREFIX . "role_object_type_permissions rtp \r\n\t\t\t\t  WHERE rtp.object_type_id NOT IN (SELECT id FROM " . TABLE_PREFIX . "object_types WHERE name IN ('mail','template','file_revision')) AND rtp.role_id in (\r\n\t\t\t\t    SELECT pg.id FROM " . TABLE_PREFIX . "permission_groups pg WHERE pg.type='roles' AND pg.name IN ('Super Administrator','Administrator','Manager','Executive')\r\n\t\t\t\t  )\r\n\t\t\t\tON DUPLICATE KEY UPDATE member_id=0;");
             Hook::fire('after_user_add', $administrator, $null);
             DB::commit();
             $this->redirectTo('access', 'login');
         } catch (Exception $e) {
             tpl_assign('error', $e);
             DB::rollback();
         }
         // try
     }
     // if
 }
示例#8
0
function logrotate_rotatenow()
{
    global $config;
    $log = $config['base_path'] . '/log/cacti.log';
    set_config_option('logrotate_lastrun', time());
    clearstatcache();
    if (is_writable($config['base_path'] . '/log/') && is_writable($log)) {
        $perms = octdec(substr(decoct(fileperms($log)), 2));
        $owner = fileowner($log);
        $group = filegroup($log);
        if ($owner !== FALSE) {
            $ext = date('Ymd');
            if (file_exists($log . '-' . $ext)) {
                $ext = date('YmdHis');
            }
            if (rename($log, $log . '-' . $ext)) {
                touch($log);
                chown($log, $owner);
                chgrp($log, $group);
                chmod($log, $perms);
                cacti_log('Cacti Log Rotation - Created Log cacti.log-' . $ext);
            } else {
                cacti_log('Cacti Log Rotation - ERROR: Could not rename cacti.log to ' . $log . '-' . $ext);
            }
        } else {
            cacti_log('Cacti Log Rotation - ERROR: Permissions issue.  Please check your log directory');
        }
    } else {
        cacti_log('Cacti Log Rotation - ERROR: Permissions issue.  Directory / Log not writable.');
    }
    logrotate_cleanold();
}
 function set_getting_started_step()
 {
     ajx_current("empty");
     if (!logged_user()->isAdminGroup()) {
         ajx_current("empty");
         return;
     }
     $step = array_var($_REQUEST, 'step');
     $current_step = config_option('getting_started_step');
     if ($current_step < $step) {
         set_config_option('getting_started_step', $step);
         // change tab title and icon
         if ($step >= 99) {
             DB::execute("UPDATE " . TABLE_PREFIX . "tab_panels SET title='settings', icon_cls='ico-administration' WHERE id='more-panel';");
         }
     }
     if (array_var($_REQUEST, 'reload_panel')) {
         ajx_add('more-panel', 'reload');
     }
 }
示例#10
0
function syslog_upgrade_pre_oneoh_tables($options = false, $isbackground = false)
{
    global $config, $cnn_id, $syslog_levels, $database_default, $syslog_upgrade;
    include dirname(__FILE__) . "/config.php";
    $syslog_levels = array(1 => 'emerg', 2 => 'crit', 3 => 'alert', 4 => 'err', 5 => 'warn', 6 => 'notice', 7 => 'info', 8 => 'debug', 9 => 'other');
    if ($isbackground) {
        $table = 'syslog_pre_upgrade';
    } else {
        $table = 'syslog';
    }
    /* validate some simple information */
    $mysqlVersion = syslog_get_mysql_version("syslog");
    $truncate = isset($options["upgrade_type"]) && $options["upgrade_type"] == "truncate" ? true : false;
    $upgrade_type = isset($options["upgrade_type"]) ? $options["upgrade_type"] : "inline";
    $engine = isset($options["engine"]) && $options["engine"] == "innodb" ? "InnoDB" : "MyISAM";
    $partitioned = isset($options["db_type"]) && $options["db_type"] == "part" ? true : false;
    $syslogexists = sizeof(syslog_db_fetch_row("SHOW TABLES FROM `" . $syslogdb_default . "` LIKE '{$table}'"));
    /* disable collection for a bit */
    set_config_option('syslog_enabled', '');
    if ($upgrade_type == "truncate") {
        return;
    }
    if ($upgrade_type == "inline" || $isbackground) {
        syslog_setup_table_new($options);
        api_plugin_register_realm('syslog', 'syslog.php', 'Plugin -> Syslog User', 1);
        api_plugin_register_realm('syslog', 'syslog_alerts.php,syslog_removal.php,syslog_reports.php', 'Plugin -> Syslog Administration', 1);
        /* get the realm id's and change from old to new */
        $user = db_fetch_cell("SELECT id FROM plugin_realms WHERE file='syslog.php'") + 100;
        $admin = db_fetch_cell("SELECT id FROM plugin_realms WHERE file='syslog_alerts.php'") + 100;
        if ($user > 100) {
            $users = db_fetch_assoc("SELECT user_id FROM user_auth_realm WHERE realm_id=37");
            if (sizeof($users)) {
                foreach ($users as $u) {
                    db_execute("INSERT INTO user_auth_realm\n\t\t\t\t\t(realm_id, user_id) VALUES ({$user}, " . $u["user_id"] . ")\n\t\t\t\t\tON DUPLICATE KEY UPDATE realm_id=VALUES(realm_id)");
                    db_execute("DELETE FROM user_auth_realm\n\t\t\t\t\tWHERE user_id=" . $u["user_id"] . "\n\t\t\t\t\tAND realm_id=37");
                }
            }
        }
        if ($admin > 100) {
            $admins = db_fetch_assoc("SELECT user_id FROM user_auth_realm WHERE realm_id=38");
            if (sizeof($admins)) {
                foreach ($admins as $user) {
                    db_execute("INSERT INTO user_auth_realm\n\t\t\t\t\t(realm_id, user_id) VALUES ({$admin}, " . $user["user_id"] . ")\n\t\t\t\t\tON DUPLICATE KEY UPDATE realm_id=VALUES(realm_id)");
                    db_execute("DELETE FROM user_auth_realm\n\t\t\t\t\tWHERE user_id=" . $user["user_id"] . "\n\t\t\t\t\tAND realm_id=38");
                }
            }
        }
        /* get the database table names */
        $rows = syslog_db_fetch_assoc("SHOW TABLES FROM `" . $syslogdb_default . "`");
        if (sizeof($rows)) {
            foreach ($rows as $row) {
                $tables[] = $row["Tables_in_" . $syslogdb_default];
            }
        }
        /* create the reports table */
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_logs` (\n\t\t\talert_id integer unsigned not null default '0',\n\t\t\tlogseq bigint unsigned NOT NULL,\n\t\t\tlogtime TIMESTAMP NOT NULL default '0000-00-00 00:00:00',\n\t\t\tlogmsg " . ($mysqlVersion > 5 ? "varchar(1024)" : "text") . " default NULL,\n\t\t\thost varchar(32) default NULL,\n\t\t\tfacility varchar(10) default NULL,\n\t\t\tpriority varchar(10) default NULL,\n\t\t\tcount integer unsigned NOT NULL default '0',\n\t\t\thtml blob default NULL,\n\t\t\tseq bigint unsigned NOT NULL auto_increment,\n\t\t\tPRIMARY KEY (seq),\n\t\t\tKEY logseq (logseq),\n\t\t\tKEY alert_id (alert_id),\n\t\t\tKEY host (host),\n\t\t\tKEY seq (seq),\n\t\t\tKEY logtime (logtime),\n\t\t\tKEY priority (priority),\n\t\t\tKEY facility (facility)) ENGINE={$engine};");
        /* create the soft removal table */
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_host_facilities` (\n\t\t\t`host_id` int(10) unsigned NOT NULL,\n\t\t\t`facility_id` int(10) unsigned NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY  (`host_id`,`facility_id`)) ENGINE={$engine};");
        /* create the host reference table */
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_hosts` (\n\t\t\t`host_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`host` VARCHAR(128) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`host`),\n\t\t\tKEY host_id (`host_id`),\n\t\t\tKEY last_updated (`last_updated`)) ENGINE={$engine}\n\t\t\tCOMMENT='Contains all hosts currently in the syslog table'");
        /* check upgrade of syslog_alert */
        $sql = "DESCRIBE `" . $syslogdb_default . "`.`syslog_alert`";
        $columns = array();
        $array = syslog_db_fetch_assoc($sql);
        if (sizeof($array)) {
            foreach ($array as $row) {
                $columns[] = $row["Field"];
            }
        }
        if (!in_array("enabled", $columns)) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` MODIFY COLUMN message varchar(128) DEFAULT NULL, ADD COLUMN enabled CHAR(2) DEFAULT 'on' AFTER type;");
        }
        if (!in_array("method", $columns)) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN method int(10) unsigned NOT NULL default '0' AFTER name");
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN num int(10) unsigned NOT NULL default '1' AFTER method");
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN severity INTEGER UNSIGNED NOT NULL default '0' AFTER name");
        }
        if (!in_array("command", $columns)) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_alert` ADD COLUMN command varchar(255) DEFAULT NULL AFTER email;");
        }
        /* check upgrade of syslog_alert */
        $sql = "DESCRIBE `" . $syslogdb_default . "`.`syslog_remove`";
        $columns = array();
        $array = syslog_db_fetch_assoc($sql);
        if (sizeof($array)) {
            foreach ($array as $row) {
                $columns[] = $row["Field"];
            }
        }
        if (!in_array("enabled", $columns)) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_remove` MODIFY COLUMN message varchar(128) DEFAULT NULL, ADD COLUMN enabled CHAR(2) DEFAULT 'on' AFTER type;");
        }
        if (!in_array("method", $columns)) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`syslog_remove` ADD COLUMN method CHAR(5) DEFAULT 'del' AFTER enabled;");
        }
        syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_hosts`");
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_hosts` (\n\t\t\t`host_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`host` VARCHAR(128) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`host`),\n\t\t\tKEY host_id (`host_id`),\n\t\t\tKEY last_updated (`last_updated`)) TYPE={$engine}\n\t\t\tCOMMENT='Contains all hosts currently in the syslog table'");
        syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_facilities`");
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_facilities` (\n\t\t\t`facility_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`facility` varchar(10) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY (`facility`),\n\t\t\tKEY facility_id (`facility_id`)) ENGINE={$engine};");
        syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_priorities`");
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_priorities` (\n\t\t\t`priority_id` int(10) unsigned NOT NULL auto_increment,\n\t\t\t`priority` varchar(10) NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY  (`priority`),\n\t\t\tKEY priority_id (`priority_id`)) ENGINE={$engine};");
        syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_host_facilities`");
        syslog_db_execute("CREATE TABLE IF NOT EXISTS `" . $syslogdb_default . "`.`syslog_host_facilities` (\n\t\t\t`host_id` int(10) unsigned NOT NULL,\n\t\t\t`facility_id` int(10) unsigned NOT NULL,\n\t\t\t`last_updated` TIMESTAMP NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\t\t\tPRIMARY KEY  (`host_id`,`facility_id`)) ENGINE={$engine};");
        /* populate the tables */
        syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog_hosts` (host) SELECT DISTINCT host FROM `" . $syslogdb_default . "`.`{$table}`");
        syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog_facilities` (facility) SELECT DISTINCT facility FROM `" . $syslogdb_default . "`.`{$table}`");
        foreach ($syslog_levels as $id => $priority) {
            syslog_db_execute("REPLACE INTO `" . $syslogdb_default . "`.`syslog_priorities` (priority_id, priority) VALUES ({$id}, '{$priority}')");
        }
        /* a bit more horsepower please */
        syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog_host_facilities`\n\t\t\t(host_id, facility_id)\n\t\t\tSELECT host_id, facility_id\n\t\t\tFROM ((SELECT DISTINCT host, facility\n\t\t\t\tFROM `" . $syslogdb_default . "`.`{$table}`) AS s\n\t\t\t\tINNER JOIN `" . $syslogdb_default . "`.`syslog_hosts` AS sh\n\t\t\t\tON s.host=sh.host\n\t\t\t\tINNER JOIN `" . $syslogdb_default . "`.`syslog_facilities` AS sf\n\t\t\t\tON sf.facility=s.facility)");
        /* change the structure of the syslog table for performance sake */
        $mysqlVersion = syslog_get_mysql_version("syslog");
        if ($mysqlVersion >= 5) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tMODIFY COLUMN message varchar(1024) DEFAULT NULL,\n\t\t\t\tADD COLUMN facility_id int(10) UNSIGNED NULL AFTER facility,\n\t\t\t\tADD COLUMN priority_id int(10) UNSIGNED NULL AFTER facility_id,\n\t\t\t\tADD COLUMN host_id int(10) UNSIGNED NULL AFTER priority_id,\n\t\t\t\tADD COLUMN logtime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER priority,\n\t\t\t\tADD INDEX facility_id (facility_id),\n\t\t\t\tADD INDEX priority_id (priority_id),\n\t\t\t\tADD INDEX host_id (host_id),\n\t\t\t\tADD INDEX logtime(logtime);");
        } else {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tADD COLUMN facility_id int(10) UNSIGNED NULL AFTER host,\n\t\t\t\tADD COLUMN priority_id int(10) UNSIGNED NULL AFTER facility_id,\n\t\t\t\tADD COLUMN host_id int(10) UNSIGNED NULL AFTER priority_id,\n\t\t\t\tADD COLUMN logtime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER priority,\n\t\t\t\tADD INDEX facility_id (facility_id),\n\t\t\t\tADD INDEX priority_id (priority_id),\n\t\t\t\tADD INDEX host_id (host_id),\n\t\t\t\tADD INDEX logtime(logtime);");
        }
        /* convert dates and times to timestamp */
        syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}` SET logtime=TIMESTAMP(`date`, `time`)");
        /* update the host_ids */
        $hosts = syslog_db_fetch_assoc("SELECT * FROM `" . $syslogdb_default . "`.`syslog_hosts`");
        if (sizeof($hosts)) {
            foreach ($hosts as $host) {
                syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tSET host_id=" . $host["host_id"] . "\n\t\t\t\tWHERE host='" . $host["host"] . "'");
            }
        }
        /* update the priority_ids */
        $priorities = $syslog_levels;
        if (sizeof($priorities)) {
            foreach ($priorities as $id => $priority) {
                syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tSET priority_id=" . $id . "\n\t\t\t\tWHERE priority='" . $priority . "'");
            }
        }
        /* update the facility_ids */
        $fac = syslog_db_fetch_assoc("SELECT * FROM `" . $syslogdb_default . "`.`syslog_facilities`");
        if (sizeof($fac)) {
            foreach ($fac as $f) {
                syslog_db_execute("UPDATE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tSET facility_id=" . $f["facility_id"] . "\n\t\t\t\tWHERE facility='" . $f["facility"] . "'");
            }
        }
        if (!$isbackground) {
            syslog_db_execute("ALTER TABLE `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\tDROP COLUMN `date`,\n\t\t\t\tDROP COLUMN `time`,\n\t\t\t\tDROP COLUMN `host`,\n\t\t\t\tDROP COLUMN `facility`,\n\t\t\t\tDROP COLUMN `priority`");
        } else {
            while (true) {
                $fetch_size = '10000';
                $sequence = syslog_db_fetch_cell("SELECT max(seq) FROM (SELECT seq FROM `" . $syslogdb_default . "`.`{$table}` ORDER BY seq LIMIT {$fetch_size}) AS preupgrade");
                if ($sequence > 0 && $sequence != '') {
                    syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`syslog` (facility_id, priority_id, host_id, logtime, message)\n\t\t\t\t\t\tSELECT facility_id, priority_id, host_id, logtime, message\n\t\t\t\t\t\tFROM `" . $syslogdb_default . "`.`{$table}`\n\t\t\t\t\t\tWHERE seq<{$sequence}");
                    syslog_db_execute("DELETE FROM `" . $syslogdb_default . "`.`{$table}` WHERE seq<={$sequence}");
                } else {
                    syslog_db_execute("DROP TABLE `" . $syslogdb_default . "`.`{$table}`");
                    break;
                }
            }
        }
        /* create the soft removal table */
        syslog_db_execute("DROP TABLE IF EXISTS `" . $syslogdb_default . "`.`syslog_removed`");
        syslog_db_execute("CREATE TABLE `" . $syslogdb_default . "`.`syslog_removed` LIKE `" . $syslogdb_default . "`.`syslog`");
    } else {
        include_once $config['base_path'] . "/lib/poller.php";
        $p = dirname(__FILE__);
        $command_string = read_config_option("path_php_binary");
        $extra_args = ' -q ' . $config['base_path'] . '/plugins/syslog/syslog_upgrade.php --type=' . $options["db_type"] . ' --engine=' . $engine . ' --days=' . $options["days"];
        cacti_log("SYSLOG NOTE: Launching Background Syslog Database Upgrade Process", false, "SYSTEM");
        exec_background($command_string, $extra_args);
    }
    /* reenable syslog xferral */
    set_config_option('syslog_enabled', 'on');
}
 function save_instantiated_parameters($template, $parameters, $parameterValues)
 {
     $instantiation_id = config_option('last_template_instantiation_id') + 1;
     foreach ($parameters as $param) {
         /* @var $param TemplateParameter */
         $param_val = array_var($parameterValues, $param->getName(), '');
         $param_val = escape_character($param_val);
         DB::execute("INSERT INTO `" . TABLE_PREFIX . "template_instantiated_parameters` (`template_id`, `instantiation_id`, `parameter_name`, `value`) VALUES\r\n\t\t\t\t\t('" . $template->getId() . "', '{$instantiation_id}', '" . escape_character($param->getName()) . "', '{$param_val}') ON DUPLICATE KEY UPDATE template_id=template_id");
     }
     set_config_option('last_template_instantiation_id', $instantiation_id);
     return $instantiation_id;
 }
	/**
	 * Finish the installation - create owner company and administrator
	 *
	 * @param void
	 * @return null
	 */
	function complete_installation() {
		
		if(Contacts::getOwnerCompany() instanceof Contact) {
			die('Owner company already exists'); // Somebody is trying to access this method even if the user already exists
		} // if

		$form_data = array_var($_POST, 'form');
		tpl_assign('form_data', $form_data);

		if(array_var($form_data, 'submited') == 'submited') {
			try {
				$admin_password = trim(array_var($form_data, 'admin_password'));
				$admin_password_a = trim(array_var($form_data, 'admin_password_a'));

				if(trim($admin_password) == '') {
					throw new Error(lang('password value required'));
				} // if

				if($admin_password <> $admin_password_a) {
					throw new Error(lang('passwords dont match'));
				} // if

				DB::beginWork();

				Contacts::delete(); // clear users table

				// Create a company
				$company = new Contact();
				$company->setFirstName(array_var($form_data, 'company_name'));
				$company->setObjectName();
				$company->setIsCompany(true);
				$company->save();
				
				// Init default colors
				set_config_option('brand_colors_head_back', "000000");
				set_config_option('brand_colors_tabs_back', "14780e");
				set_config_option('brand_colors_head_font', "ffffff");
				set_config_option('brand_colors_tabs_font', "ffffff");

				// Create the administrator user
				$administrator = new Contact();
				$pergroup = PermissionGroups::findOne(array('conditions'=>"`name`='Super Administrator'"));
				$administrator->setUserType($pergroup->getId());
				$administrator->setCompanyId($company->getId());
				$administrator->setUsername(array_var($form_data, 'admin_username'));
				
				
				$administrator->setPassword($admin_password);
				$administrator->setFirstname(array_var($form_data, 'admin_username'));
				$administrator->setObjectName();
				$administrator->save();
				
				$user_password = new ContactPassword();
				$user_password->setContactId($administrator->getId());
				$user_password->password_temp = $admin_password;
				$user_password->setPasswordDate(DateTimeValueLib::now());
				$user_password->setPassword(cp_encrypt($admin_password, $user_password->getPasswordDate()->getTimestamp()));
				$user_password->save();
				
				//Add email after save because is needed. 
				$administrator->addEmail(array_var($form_data, 'admin_email'), 'personal', true);
				
				//permissions
				$permission_group = new PermissionGroup();
				$permission_group->setName('Account Owner');
				$permission_group->setContactId($administrator->getId());
				$permission_group->setIsContext(false);
				$permission_group->setType("permission_groups");
				$permission_group->save();
				
				$administrator->setPermissionGroupId($permission_group->getId());
				$administrator->save();
				
				$company->setCreatedById($administrator->getId());
				$company->setUpdatedById($administrator->getId());
				$company->save();
				
				$contact_pg = new ContactPermissionGroup();
				$contact_pg->setContactId($administrator->getId());
				$contact_pg->setPermissionGroupId($permission_group->getId());
				$contact_pg->save();
				
				// tab panel permissions
				$panels = TabPanels::getEnabled();
				foreach ($panels as $panel) {
					$tpp = new TabPanelPermission();
					$tpp->setPermissionGroupId($administrator->getPermissionGroupId());
					$tpp->setTabPanelId($panel->getId());
					$tpp->save();
				}
				
				// dimension permissions
				$dimensions = Dimensions::findAll();
				foreach ($dimensions as $dimension) {
					if ($dimension->getDefinesPermissions()) {
						$cdp = ContactDimensionPermissions::findOne(array("conditions" => "`permission_group_id` = ".$administrator->getPermissionGroupId()." AND `dimension_id` = ".$dimension->getId()));
						if (!$cdp instanceof ContactDimensionPermission) {
							$cdp = new ContactDimensionPermission();
							$cdp->setPermissionGroupId($administrator->getPermissionGroupId());
							$cdp->setContactDimensionId($dimension->getId());
						}
						$cdp->setPermissionType('allow all');
						$cdp->save();
						
						// contact member permisssion entries
						$members = $dimension->getAllMembers();
						foreach ($members as $member) {
							$ots = DimensionObjectTypeContents::getContentObjectTypeIds($dimension->getId(), $member->getObjectTypeId());
							$ots[]=$member->getObjectId();
							foreach ($ots as $ot) {
								$cmp = ContactMemberPermissions::findOne();
								if (!$cmp instanceof ContactMemberPermission) {
									$cmp = new ContactMemberPermission(array("conditions" => "`permission_group_id` = ".$administrator->getPermissionGroupId()." AND `member_id` = ".$member->getId()." AND `object_type_id` = $ot"));
									$cmp->setPermissionGroupId($administrator->getPermissionGroupId());
									$cmp->setMemberId($member->getId());
									$cmp->setObjectTypeId($ot);
								}
								$cmp->setCanWrite(1);
								$cmp->setCanDelete(1);
								$cmp->save();
							}
						}
					}
				}
				
				// system permissions
				$sp = new SystemPermission();
				$sp->setPermissionGroupId($administrator->getPermissionGroupId());
				$sp->setAllPermissions(true);
				$sp->save();
				
				Hook::fire('after_user_add', $administrator, $null);
				
				DB::commit();

				$this->redirectTo('access', 'login');
			} catch(Exception $e) {
				tpl_assign('error', $e);
				DB::rollback();
			} // try
		} // if
	} // complete_installation
 /**
  * Save object. If object is searchable this function will add content of searchable fields
  * to search index
  *
  * @param void
  * @return boolean
  */
 function save()
 {
     $disk_space_used = config_option('disk_space_used');
     if ($disk_space_used && $disk_space_used > config_option('disk_space_max')) {
         throw new Exception(lang('maximum disk space reached'));
     }
     // Insert into base table
     $this->setObjectTypeId($this->manager()->getObjectTypeId());
     if ($this->getObject()->save()) {
         $id = $this->getObject()->getId();
         if (is_numeric($id)) {
             $this->setObjectId($id);
         } else {
             throw new Exception(lang('unable to save'));
         }
         if (config_option('getting_started_step') < 98) {
             if (in_array($this->getObjectTypeName(), array('task', 'message', 'weblink', 'file', 'expense', 'objective', 'event'))) {
                 set_config_option('getting_started_step', 98);
                 evt_add('reload tab panel', 'more-panel');
             }
         }
         parent::save();
         return true;
     }
     return false;
 }
<?php

include_once '../../include/db.php';
include_once '../../include/general.php';
include_once '../../include/authenticate.php';
include_once '../../include/config_functions.php';
// Set success to false if there is an expected error
// You can provide feedback to the user by adding a message
$response['success'] = true;
$response['message'] = '';
$autosave_option_name = getvalescaped('autosave_option_name', '');
$autosave_option_value = getvalescaped('autosave_option_value', '');
if (getval('autosave', '') === 'true' && !set_config_option($userref, $autosave_option_name, $autosave_option_value)) {
    $response['success'] = false;
}
echo json_encode($response);
exit;