Ejemplo n.º 1
0
 function __destruct()
 {
     // Need $admin back if it's already been destroyed
     global $admin;
     $admin = new BigTreeAdmin();
     foreach ($this->AutoSaveSettings as $id => $obj) {
         if (is_object($obj)) {
             $admin->updateSettingValue($id, get_object_vars($obj));
         } else {
             $admin->updateSettingValue($id, $obj);
         }
     }
 }
Ejemplo n.º 2
0
 function __destruct()
 {
     foreach ($this->AutoSaveSettings as $id => $obj) {
         if (is_object($obj)) {
             BigTreeAdmin::updateSettingValue($id, get_object_vars($obj));
         } else {
             BigTreeAdmin::updateSettingValue($id, $obj);
         }
     }
 }
Ejemplo n.º 3
0
 function __construct()
 {
     $s = BigTreeAdmin::getSetting("bigtree-internal-email-service");
     // Setting doesn't exist? Create it.
     if ($s === false) {
         sqlquery("INSERT INTO bigtree_settings (`id`,`system`,`encrypted`) VALUES ('bigtree-internal-email-service','on','on')");
         $s = array("service" => "", "settings" => array());
         BigTreeAdmin::updateSettingValue("bigtree-internal-email-service", $s);
     }
     $this->Service = !empty($s["value"]["service"]) ? $s["value"]["service"] : "local";
     $this->Settings = !empty($s["value"]["settings"]) ? $s["value"]["settings"] : array();
 }
Ejemplo n.º 4
0
 function __construct()
 {
     global $cms;
     $geo_service = $cms->getSetting("bigtree-internal-geocoding-service");
     // If for some reason the setting doesn't exist, make one.
     if (!is_array($geo_service) || !$geo_service["service"]) {
         $this->Service = "google";
         $admin = new BigTreeAdmin();
         $admin->createSetting(array("id" => "bigtree-internal-geocoding-service", "encrypted" => "on", "system" => "on"));
         $admin->updateSettingValue("bigtree-internal-geocoding-service", array("service" => "google"));
     } else {
         $this->Service = $geo_service["service"];
         $this->Settings = $geo_service;
     }
     // Yahoo BOSS Geocoding uses the Yahoo BOSS API.
     if ($this->Service == "yahoo-boss") {
         $this->API = new BigTreeYahooBOSSAPI();
     }
 }
Ejemplo n.º 5
0
// We're loading a page in the admin, so let's pass some headers
header("Content-Type: text/html; charset=utf-8");
header("X-Frame-Options: SAMEORIGIN");
if (function_exists("header_remove")) {
    header_remove("Server");
    header_remove("X-Powered-By");
}
// Execute cron tab functions if they haven't been run in 24 hours
$last_check = $cms->getSetting("bigtree-internal-cron-last-run");
if ($last_check === false) {
    $admin->createSetting(array("id" => "bigtree-internal-cron-last-run", "system" => "on"));
}
// It's been more than 24 hours since we last ran cron.
if (time() - $last_check > 24 * 60 * 60) {
    // Update the setting.
    $admin->updateSettingValue("bigtree-internal-cron-last-run", time());
    // Email the daily digest
    $admin->emailDailyDigest();
    // Cache google analytics
    $ga = new BigTreeGoogleAnalyticsAPI();
    if ($ga->API && $ga->Profile) {
        // The Google Analytics wrappers can cause Exceptions and we don't want the page failing to load due to them.
        try {
            $ga->cacheInformation();
        } catch (Exception $e) {
            // We should log this in 4.1
        }
    }
}
// Normal page routing.
$ispage = false;
Ejemplo n.º 6
0
function _local_bigtree_update_200()
{
    global $cms, $admin;
    // Drop unused comments column
    sqlquery("ALTER TABLE bigtree_pending_changes DROP COLUMN `comments`");
    // Add extension columns
    sqlquery("ALTER TABLE bigtree_callouts ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_callouts ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    sqlquery("ALTER TABLE bigtree_feeds ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_feeds ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    sqlquery("ALTER TABLE bigtree_field_types ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_field_types ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    sqlquery("ALTER TABLE bigtree_modules ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_modules ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    sqlquery("ALTER TABLE bigtree_module_groups ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_module_groups ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    sqlquery("ALTER TABLE bigtree_settings ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_settings ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    sqlquery("ALTER TABLE bigtree_templates ADD COLUMN `extension` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_templates ADD FOREIGN KEY (extension) REFERENCES `bigtree_extensions` (id) ON DELETE CASCADE");
    // New publish_hook column, consolidate other hooks into one column
    sqlquery("ALTER TABLE bigtree_pending_changes ADD COLUMN `publish_hook` VARCHAR(255)");
    sqlquery("ALTER TABLE bigtree_module_forms ADD COLUMN `hooks` TEXT");
    sqlquery("ALTER TABLE bigtree_module_embeds ADD COLUMN `hooks` TEXT");
    $q = sqlquery("SELECT * FROM bigtree_module_forms");
    while ($f = sqlfetch($q)) {
        $hooks = array();
        $hooks["pre"] = $f["preprocess"];
        $hooks["post"] = $f["callback"];
        $hooks["publish"] = "";
        sqlquery("UPDATE bigtree_module_forms SET hooks = '" . BigTree::json($hooks, true) . "' WHERE id = '" . $f["id"] . "'");
    }
    $q = sqlquery("SELECT * FROM bigtree_module_embeds");
    while ($f = sqlfetch($q)) {
        $hooks = array();
        $hooks["pre"] = $f["preprocess"];
        $hooks["post"] = $f["callback"];
        $hooks["publish"] = "";
        sqlquery("UPDATE bigtree_module_embeds SET hooks = '" . BigTree::json($hooks, true) . "' WHERE id = '" . $f["id"] . "'");
    }
    sqlquery("ALTER TABLE bigtree_module_forms DROP COLUMN `preprocess`");
    sqlquery("ALTER TABLE bigtree_module_forms DROP COLUMN `callback`");
    sqlquery("ALTER TABLE bigtree_module_embeds DROP COLUMN `preprocess`");
    sqlquery("ALTER TABLE bigtree_module_embeds DROP COLUMN `callback`");
    // Adjust groups/callouts for multi-support -- first we drop the foreign key
    $table_desc = BigTree::describeTable("bigtree_callouts");
    foreach ($table_desc["foreign_keys"] as $name => $definition) {
        if ($definition["local_columns"][0] === "group") {
            sqlquery("ALTER TABLE bigtree_callouts DROP FOREIGN KEY `{$name}`");
        }
    }
    // Add the field to the groups
    sqlquery("ALTER TABLE bigtree_callout_groups ADD COLUMN `callouts` TEXT AFTER `name`");
    // Find all the callouts in each group
    $q = sqlquery("SELECT * FROM bigtree_callout_groups");
    while ($f = sqlfetch($q)) {
        $callouts = array();
        $qq = sqlquery("SELECT * FROM bigtree_callouts WHERE `group` = '" . $f["id"] . "' ORDER BY position DESC, id ASC");
        while ($ff = sqlfetch($qq)) {
            $callouts[] = $ff["id"];
        }
        sqlquery("UPDATE bigtree_callout_groups SET `callouts` = '" . BigTree::json($callouts, true) . "' WHERE id = '" . $f["id"] . "'");
    }
    // Drop the group column
    sqlquery("ALTER TABLE bigtree_callouts DROP COLUMN `group`");
    // Security policy setting
    sqlquery("INSERT INTO `bigtree_settings` (`id`,`value`,`system`) VALUES ('bigtree-internal-security-policy','{}','on')");
    sqlquery("CREATE TABLE `bigtree_login_attempts` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT, `ip` int(11) DEFAULT NULL, `user` int(11) DEFAULT NULL, `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8");
    sqlquery("CREATE TABLE `bigtree_login_bans` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT, `ip` int(11) DEFAULT NULL, `user` int(11) DEFAULT NULL, `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `expires` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8");
    // Media settings
    sqlquery("INSERT INTO `bigtree_settings` (`id`,`value`,`system`) VALUES ('bigtree-internal-media-settings','{}','on')");
    // New field types
    @unlink(SERVER_ROOT . "cache/bigtree-form-field-types.json");
    // Setup an anonymous function for converting a resource set
    $resource_converter = function ($resources) {
        $new_resources = array();
        foreach ($resources as $item) {
            // Array of Items no longer exists, switching to Matrix
            if ($item["type"] == "array") {
                $item["type"] = "matrix";
                $item["columns"] = array();
                $x = 0;
                foreach ($item["fields"] as $field) {
                    $x++;
                    $item["columns"][] = array("id" => $field["key"], "type" => $field["type"], "title" => $field["title"], "display_title" => $x == 1 ? "on" : "");
                }
                unset($item["fields"]);
            }
            $r = array("id" => $item["id"], "type" => $item["type"], "title" => $item["title"], "subtitle" => $item["subtitle"], "options" => array());
            foreach ($item as $key => $val) {
                if ($key != "id" && $key != "title" && $key != "subtitle" && $key != "type") {
                    $r["options"][$key] = $val;
                }
            }
            $new_resources[] = $r;
        }
        return BigTree::json($new_resources, true);
    };
    $field_converter = function ($fields) {
        $new_fields = array();
        foreach ($fields as $id => $field) {
            // Array of Items no longer exists, switching to Matrix
            if ($field["type"] == "array") {
                $field["type"] = "matrix";
                $field["columns"] = array();
                $x = 0;
                foreach ($field["fields"] as $subfield) {
                    $x++;
                    $field["columns"][] = array("id" => $subfield["key"], "type" => $subfield["type"], "title" => $subfield["title"], "display_title" => $x == 1 ? "on" : "");
                }
                unset($field["fields"]);
            }
            $r = array("column" => $id, "type" => $field["type"], "title" => $field["title"], "subtitle" => $field["subtitle"], "options" => array());
            foreach ($field as $key => $val) {
                if ($key != "id" && $key != "title" && $key != "subtitle" && $key != "type") {
                    $r["options"][$key] = $val;
                }
            }
            $new_fields[] = $r;
        }
        return $new_fields;
    };
    // New resource format to be less restrictive on option names
    $q = sqlquery("SELECT * FROM bigtree_callouts");
    while ($f = sqlfetch($q)) {
        $resources = $resource_converter(json_decode($f["resources"], true));
        sqlquery("UPDATE bigtree_callouts SET resources = '{$resources}' WHERE id = '" . $f["id"] . "'");
    }
    $q = sqlquery("SELECT * FROM bigtree_templates");
    while ($f = sqlfetch($q)) {
        $resources = $resource_converter(json_decode($f["resources"], true));
        sqlquery("UPDATE bigtree_templates SET resources = '{$resources}' WHERE id = '" . $f["id"] . "'");
    }
    // Forms and Embedded Forms
    $q = sqlquery("SELECT * FROM bigtree_module_forms");
    while ($f = sqlfetch($q)) {
        $fields = $field_converter(json_decode($f["fields"], true));
        sqlquery("UPDATE bigtree_module_forms SET fields = '" . BigTree::json($fields, true) . "' WHERE id = '" . $f["id"] . "'");
    }
    $q = sqlquery("SELECT * FROM bigtree_module_embeds");
    while ($f = sqlfetch($q)) {
        $fields = $field_converter(json_decode($f["fields"], true));
        sqlquery("UPDATE bigtree_module_embeds SET fields = '" . BigTree::json($fields, true) . "' WHERE id = '" . $f["id"] . "'");
    }
    // Settings
    $q = sqlquery("SELECT * FROM bigtree_settings WHERE type = 'array'");
    while ($f = sqlfetch($q)) {
        // Update settings options to turn array into matrix
        $options = json_decode($f["options"], true);
        $options["columns"] = array();
        $x = 0;
        foreach ($options["fields"] as $field) {
            $x++;
            $options["columns"][] = array("id" => $field["key"], "type" => $field["type"], "title" => $field["title"], "display_title" => $x == 1 ? "on" : "");
            if ($x == 1) {
                $display_key = $field["key"];
            }
        }
        unset($options["fields"]);
        // Update the value to set an internal title key
        $value = BigTreeCMS::getSetting($f["id"]);
        foreach ($value as &$entry) {
            $entry["__internal-title"] = $entry[$display_key];
        }
        unset($entry);
        // Update type/options
        sqlquery("UPDATE bigtree_settings SET type = 'matrix', options = '" . BigTree::json($options, true) . "' WHERE id = '" . $f["id"] . "'");
        // Update value separately
        BigTreeAdmin::updateSettingValue($f["id"], $value);
    }
}
Ejemplo n.º 7
0
 function saveSettings()
 {
     $admin = new BigTreeAdmin();
     $admin->updateSettingValue("bigtree-internal-payment-gateway", array("service" => $this->Service, "settings" => $this->Settings));
 }