Browse Source

added new function for homepageItemPermissions

CauseFX 5 years ago
parent
commit
31fcfa0f1c
1 changed files with 93 additions and 1 deletions
  1. 93 1
      api/functions/homepage-functions.php

+ 93 - 1
api/functions/homepage-functions.php

@@ -2,5 +2,97 @@
 
 trait HomepageFunctions
 {
-
+	public function getHomepageSettingsList()
+	{
+		$methods = get_class_methods($this);
+		$searchTerm = 'SettingsArray';
+		return array_filter($methods, function ($k) use ($searchTerm) {
+			return stripos($k, $searchTerm) !== false;
+		}, 0);
+	}
+	
+	public function getHomepageSettingsCombined()
+	{
+		$list = $this->getHomepageSettingsList();
+		$combined = [];
+		foreach ($list as $item) {
+			$combined[] = $this->$item();
+		}
+		return $combined;
+	}
+	
+	public function homepageItemPermissions($settings = false, $api = false)
+	{
+		if (!$settings) {
+			if ($api) {
+				$this->setAPIResponse('error', 'No settings were supplied', 422);
+			}
+			return false;
+		}
+		foreach ($settings as $type => $setting) {
+			$settingsType = gettype($setting);
+			switch ($type) {
+				case 'enabled':
+					if ($settingsType == 'string') {
+						if (!$this->config[$setting]) {
+							if ($api) {
+								$this->setAPIResponse('error', $setting . ' module is not enabled', 409);
+							}
+							return false;
+						}
+					} else {
+						foreach ($setting as $item) {
+							if (!$this->config[$item]) {
+								if ($api) {
+									$this->setAPIResponse('error', $item . ' module is not enabled', 409);
+								}
+								return false;
+							}
+						}
+					}
+					break;
+				case 'auth':
+					if ($settingsType == 'string') {
+						if (!$this->qualifyRequest($this->config[$setting])) {
+							if ($api) {
+								$this->setAPIResponse('error', 'User not approved to view this homepage item', 401);
+							}
+							return false;
+						}
+					} else {
+						foreach ($setting as $item) {
+							if (!$this->qualifyRequest($this->config[$item])) {
+								if ($api) {
+									$this->setAPIResponse('error', 'User not approved to view this homepage item', 401);
+								}
+								return false;
+							}
+						}
+					}
+					break;
+				case 'not_empty':
+					if ($settingsType == 'string') {
+						if (empty($this->config[$setting])) {
+							if ($api) {
+								$this->setAPIResponse('error', $setting . 'was not supplied', 422);
+							}
+							return false;
+						}
+					} else {
+						foreach ($setting as $item) {
+							if (empty($this->config[$item])) {
+								if ($api) {
+									$this->setAPIResponse('error', $item . 'was not supplied', 422);
+								}
+								return false;
+							}
+						}
+					}
+					break;
+				default:
+					//return false;
+			}
+		}
+		return true;
+	}
 }