Ejemplo n.º 1
0
 public function __construct()
 {
     parent::__construct();
     $this->StyleSheets[] = new WebStyleSheet("~/StyleSheets/Main.css");
     $this->StyleSheets[] = new WebStyleSheet("http://static.alcehosting.net/dropins/WebFramework/StyleSheets/Professional/Main.css");
     $tenants = Tenant::Get();
     $tenantsNavigationButtons = array();
     foreach ($tenants as $tenant) {
         $tenantsNavigationButtons[] = new NavigationButton("~/tenant/modify/" . $tenant->URL, $tenant->URL, null, null, null);
     }
     $this->HeaderButtons = array();
     $this->SidebarButtons = array(new NavigationSeparator("Quick Start"), new NavigationButton("~/", "Dashboard", "dashboard"), new NavigationSeparator("Management"), new NavigationButton("~/tenant", "Tenants", "th-list", null, null, count($tenants), $tenantsNavigationButtons), new NavigationButton("~/modules", "Modules", "puzzle-piece", null, null, Module::Count()), new NavigationButton("~/data-centers", "Data Centers", "building-o", null, null, DataCenter::Count()), new NavigationButton("~/payment-plans", "Payment Plans", "money", null, null, PaymentPlan::Count()), new NavigationButton("~/organizations", "Organizations", "suitcase", null, null, Organization::Count()), new NavigationButton("~/users", "Users", "users", null, null, User::Count()), new NavigationButton("~/data-types", "Data Types", "sitemap", null, null, DataType::Count()), new NavigationButton("~/tenant-types", "Tenant Types", "tenant-types", null, null, TenantType::Count()), new NavigationSeparator("Help and Support"), new NavigationButton("~/support/documentation", "Documentation", "book"), new NavigationButton("~/support/bugspray", "Report a Bug", "bug"), new NavigationButton("~/system-log", "System Log", "file-text-o"));
     $this->RenderHeader = true;
     $this->RenderSidebar = true;
 }
Ejemplo n.º 2
0
 public static function GetByID($id)
 {
     if (!is_numeric($id)) {
         return null;
     }
     global $MySQL;
     $query = "SELECT * FROM " . System::$Configuration["Database.TablePrefix"] . "PaymentPlans WHERE paymentplan_ID = " . $id;
     $result = $MySQL->query($query);
     $count = $result->num_rows;
     if ($count == 0) {
         return null;
     }
     $values = $result->fetch_assoc();
     return PaymentPlan::GetByAssoc($values);
 }
Ejemplo n.º 3
0
 /**
  * Creates a new Tenant object based on the given values from the database.
  * @param array $values
  * @return \PhoenixSNS\Objects\Tenant based on the values of the fields in the given associative array
  */
 public static function GetByAssoc($values)
 {
     $item = new Tenant();
     $item->ID = $values["tenant_ID"];
     $item->URL = $values["tenant_URL"];
     $item->Description = $values["tenant_Description"];
     switch ($values["tenant_Status"]) {
         case 1:
             $item->Status = TenantStatus::Enabled;
             break;
         case 0:
             $item->Status = TenantStatus::Disabled;
             break;
     }
     $item->Type = TenantType::GetByID($values["tenant_TypeID"]);
     $item->PaymentPlan = PaymentPlan::GetByID($values["tenant_PaymentPlanID"]);
     $item->BeginTimestamp = $values["tenant_BeginTimestamp"];
     $item->EndTimestamp = $values["tenant_EndTimestamp"];
     // get the data centers associated with this tenant
     global $MySQL;
     $query = "SELECT " . System::$Configuration["Database.TablePrefix"] . "DataCenters.* FROM " . System::$Configuration["Database.TablePrefix"] . "DataCenters, " . System::$Configuration["Database.TablePrefix"] . "TenantDataCenters WHERE " . System::$Configuration["Database.TablePrefix"] . "TenantDataCenters.tdc_TenantID = " . $item->ID . " AND " . System::$Configuration["Database.TablePrefix"] . "TenantDataCenters.tdc_DataCenterID = " . System::$Configuration["Database.TablePrefix"] . "DataCenters.datacenter_ID";
     $result = $MySQL->query($query);
     $count = $result->num_rows;
     $retval = array();
     for ($i = 0; $i < $count; $i++) {
         $values = $result->fetch_assoc();
         $retval[] = DataCenter::GetByAssoc($values);
     }
     $item->DataCenters->Items = $retval;
     return $item;
 }
Ejemplo n.º 4
0
 public static function GetByAssoc($values)
 {
     $this->PaymentPlan = PaymentPlan::GetByID($values["paymentplanpayment_PaymentPlanID"]);
     $this->FixedAmount = $values["paymentplanpayment_FixedAmount"];
     $this->VariableAmount = $values["paymentplanpayment_VariableAmount"];
     $this->IntervalValue = $values["paymentplanpayment_IntervalValue"];
     $this->IntervalType = $values["paymentplanpayment_IntervalType"];
 }
    protected function RenderContent()
    {
        ?>
			<form method="POST" onsubmit="return form_OnSubmit();">
				<?php 
        $tbs = new TabContainer("tbsTabs");
        $tbs->TabPages[] = new TabPage("tabGeneralInformation", "General Information", null, null, null, function () {
            $fv = new FormView();
            $fv->Items[] = new FormViewItemText("txtTenantURL", "tenant_URL", "Name", $this->Tenant->URL);
            $fvTenantTypes = array();
            $tenanttypes = TenantType::Get();
            foreach ($tenanttypes as $tenanttype) {
                $fvTenantType = new FormViewItemChoiceValue($tenanttype->Title, $tenanttype->ID);
                $fvTenantType->Selected = $this->Tenant != null && $this->Tenant->Type != null && $tenanttype->ID == $this->Tenant->Type->ID;
                $fvTenantTypes[] = $fvTenantType;
            }
            $fv->Items[] = new FormViewItemChoice("cboTenantType", "tenant_TypeID", "Type", null, $fvTenantTypes);
            $fv->Items[] = new FormViewItemBoolean("chkStatus", "tenant_Status", "Status", $this->Tenant->Status == TenantStatus::Enabled);
            $fvDataCenters = array();
            $datacenters = DataCenter::Get();
            foreach ($datacenters as $datacenter) {
                $fvDataCenter = new FormViewItemChoiceValue($datacenter->Title, $datacenter->ID);
                $fvDataCenter->Selected = $this->Tenant != null && $this->Tenant->DataCenters->Contains($datacenter);
                $fvDataCenters[] = $fvDataCenter;
            }
            $fv->Items[] = new FormViewItemChoice("cboDataCenter", "tenant_DataCenterIDs", "Data centers", null, $fvDataCenters, true);
            $fvPaymentPlans = array();
            $paymentplans = PaymentPlan::Get();
            foreach ($paymentplans as $paymentplan) {
                $fvPaymentPlan = new FormViewItemChoiceValue($paymentplan->Title, $paymentplan->ID);
                $fvPaymentPlan->Selected = $this->Tenant != null && $this->Tenant->PaymentPlan != null && $paymentplan->ID == $this->Tenant->PaymentPlan->ID;
                $fvPaymentPlans[] = $fvPaymentPlan;
            }
            $fv->Items[] = new FormViewItemChoice("cboPaymentPlan", "tenant_PaymentPlanID", "Payment plan", null, $fvPaymentPlans);
            $fv->Items[] = new FormViewItemDateTime("txtActivationDate", "tenant_BeginTimestamp", "Activation date", $this->Tenant != null ? $this->Tenant->BeginTimestamp : null, true);
            $fv->Items[] = new FormViewItemDateTime("txtTerminationDate", "tenant_EndTimestamp", "Termination date", $this->Tenant != null ? $this->Tenant->EndTimestamp : null, true);
            $fv->Items[] = new FormViewItemMemo("txtDescription", "tenant_Description", "Description", $this->Tenant->Description);
            $fv->Render();
        });
        $path = System::GetVirtualPath();
        if ($path[1] != "clone") {
            $tbs->TabPages[] = new TabPage("tabCustomProperties", "Custom Properties", null, null, null, function () {
                $lv = new ListView();
                $lv->Width = "100%";
                $lv->EnableAddRemoveRows = true;
                $lv->Columns = array(new ListViewColumn("lvcProperty", "Property"), new ListViewColumn("lvcDescription", "Description"), new ListViewColumn("lvcValue", "Value"));
                $properties = $this->Tenant->GetProperties();
                foreach ($properties as $property) {
                    $lv->Items[] = new ListViewItem(array(new ListViewItemColumn("lvcProperty", $property->Name), new ListViewItemColumn("lvcDescription", $property->Description), new ListViewItemColumn("lvcValue", null, null, function ($property) {
                        $property->DataType->RenderEditor($this->Tenant->GetPropertyValue($property), "Property_" . $property->ID);
                    }, $property)));
                }
                $lv->Render();
            });
            $tbs->TabPages[] = new TabPage("tabEnabledModules", "Enabled Modules", null, null, null, function () {
                $lv = new ListView();
                $lv->Width = "100%";
                $lv->EnableRowCheckBoxes = true;
                $lv->Columns = array(new ListViewColumn("lvcModule", "Module"), new ListViewColumn("lvcDescription", "Description"));
                $modules = Module::Get(null);
                foreach ($modules as $module) {
                    $item = new ListViewItem(array(new ListViewItemColumn("lvcModule", "<a href=\"" . System::ExpandRelativePath("~/tenant/modify/" . $this->Tenant->URL . "/modules/" . $module->ID . "\">" . $module->Title . "</a>", $module->Title)), new ListViewItemColumn("lvcDescription", $module->Description)));
                    $item->Checked = $this->Tenant->HasModule($module);
                    $lv->Items[] = $item;
                }
                $lv->Render();
            });
            $tbs->TabPages[] = new TabPage("tabGlobalObjects", "Global Objects", null, null, null, function () {
                $lv = new ListView();
                $lv->Width = "100%";
                $lv->EnableAddRemoveRows = true;
                $lv->Columns = array(new ListViewColumn("lvcObject", "Object"), new ListViewColumn("lvcDescription", "Description"), new ListViewColumn("lvcInstances", "Instances"));
                $objects = TenantObject::Get(null, $this->Tenant);
                foreach ($objects as $object) {
                    $lv->Items[] = new ListViewItem(array(new ListViewItemColumn("lvcObject", $object->Name), new ListViewItemColumn("lvcDescription", $object->Description), new ListViewItemColumn("lvcInstances", "<a href=\"" . System::ExpandRelativePath("~/tenant/modify/" . $this->Tenant->URL . "/objects/" . $object->ID . "/instances") . "\">" . $object->CountInstances() . "</a>")));
                }
                $lv->Render();
            });
        }
        $tbs->SelectedTab = $tbs->TabPages[0];
        $tbs->Render();
        ?>
				<div class="Buttons">
					<input class="Button Default" type="submit" value="Save Changes" />
					<a class="Button" onclick="return nav('/tenant');" href="<?php 
        echo System::ExpandRelativePath("~/tenant");
        ?>
">Cancel</a>
				</div>
			</form>
			<script type="text/javascript">
			var TenantManagementPageMode =
			{
				"Create": 1,
				"Modify": 2
			}
			<?php 
        if ($this->Mode == TenantManagementPageMode::Create) {
            echo "var Mode = TenantManagementPageMode.Create;";
        } else {
            if ($this->Mode == TenantManagementPageMode::Modify) {
                echo "var Mode = TenantManagementPageMode.Modify;";
            }
        }
        ?>
			function form_OnSubmit()
			{
				if (Mode == TenantManagementPageMode.Create)
				{
					var xhr = new XMLHttpRequest();
					var tenantName = document.getElementById('txtTenantURL').value;
					
					xhr.open("GET", "/API/Tenant.php?action=exists&q=" + tenantName, false);
					xhr.send(null);
					
					var obj = JSON.parse(xhr.responseText);
					if (obj.result == "success" && obj.exists)
					{
						Notification.Show("Tenant '" + tenantName + "' already exists", "Please specify a unique tenant name", "Error");
						return false;
					}
				}
				
				Notification.Show("Changes were saved successfully", "Taking you back to the Tenant Management page", "Success");
				return true;
			}
			</script>
			<?php 
    }
 protected function RenderContent()
 {
     $items = PaymentPlan::Get();
     $lv = new ListView();
     $lv->Columns = array(new ListViewColumn("chPaymentPlanTitle", "Title"), new ListViewColumn("chPaymentPlanDescription", "Description"));
     foreach ($items as $item) {
         $lv->Items[] = new ListViewItem(array(new ListViewItemColumn("chPaymentPlanTitle", "<a href=\"" . System::ExpandRelativePath("~/payment-plans/modify/" . $item->ID) . "\">" . $item->Title . "</a>"), new ListViewItemColumn("chPaymentPlanDescription", $item->Description)));
     }
     $lv->Render();
 }
Ejemplo n.º 7
0
        $page = new ConfirmOperationPage();
        $page->ReturnButtonURL = "~/tenant";
        $page->Message = "Are you sure you want to delete the tenant '" . $path[0] . "'? This action cannot be undone, and will destroy any and all data associated with that tenant.";
        $page->Render();
        return true;
    }
}), new ModulePage("modify", function ($page, $path) {
    if (!isset($path[1]) || $path[1] == "") {
        $tenant = Tenant::GetByURL($path[0]);
        System::$TenantName = $path[0];
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            $tenant->URL = $_POST["tenant_URL"];
            $tenant->Description = $_POST["tenant_Description"];
            $tenant->Status = isset($_POST["tenant_Status"]) ? TenantStatus::Enabled : TenantStatus::Disabled;
            $tenant->Type = TenantType::GetByID($_POST["tenant_TypeID"]);
            $tenant->PaymentPlan = PaymentPlan::GetByID($_POST["tenant_PaymentPlanID"]);
            $tenant->BeginTimestamp = $_POST["tenant_BeginTimestampValid"] == "on" ? null : $_POST["tenant_BeginTimestamp"];
            $tenant->EndTimestamp = $_POST["tenant_EndTimestampValid"] == "on" ? null : $_POST["tenant_EndTimestamp"];
            $retval = $tenant->Update();
            if (!$retval) {
                global $MySQL;
                echo $MySQL->error . " (" . $MySQL->errno . ")";
            } else {
                System::$TenantName = $tenant->URL;
                $properties = $tenant->GetProperties();
                foreach ($properties as $property) {
                    $tenant->SetPropertyValue($property, $_POST["Property_" . $property->ID]);
                }
                System::Redirect("~/tenant");
            }
            return true;