Skip to content

Instantly share code, notes, and snippets.

@oojacoboo
Created May 17, 2013 03:38
Show Gist options
  • Select an option

  • Save oojacoboo/5596762 to your computer and use it in GitHub Desktop.

Select an option

Save oojacoboo/5596762 to your computer and use it in GitHub Desktop.
/**
* Returns back true/false for a given permission or the raw value if not 1/0 bool
* @param string $name
* @return mixed
*/
public function getPermission($name) {
$companyId = $this->getId();
$planId = $this->getPlan()->getId();
$con = Propel::getConnection();
$query = '
SELECT cp.value
FROM company_permission cp
LEFT JOIN default_permission dp
ON cp.default_permission_id = dp.id
WHERE cp.company_id = :companyId
AND dp.name = :permissionName
AND cp.value IS NOT NULL
INTO @companyPermissionValue;
SELECT pp.value
FROM plan_permission pp
LEFT JOIN default_permission dp
ON pp.default_permission_id = dp.id
WHERE pp.plan_id = :planId
AND dp.name = :permissionName
AND pp.value IS NOT NULL
INTO @planPermissionValue;
SELECT dp.value
FROM default_permission dp
WHERE dp.name = :permissionName
INTO @defaultPermissionValue;
SELECT (@defaultPermissionValue * @planPermissionValue * @companyPermissionValue) AS value';
$stmt = $con->prepare($query);
$stmt->bindParam(":permissionName", $name, PDO::PARAM_STR);
$stmt->bindParam(":companyId", $companyId, PDO::PARAM_INT);
$stmt->bindParam(":planId", $planId, PDO::PARAM_INT);
$stmt->execute();
$setting = $stmt->fetch(PDO::FETCH_NUM);
if($setting[0] == 1)
$value = true;
elseif($setting[0] == 0)
$value = false;
else
$value = $setting[0];
return $value;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment