// //
// This is a simple helper file pulled from a project //
// (built on Laravel 4.1). Is it not fancy (just static methods), //
// but can be easily understood out of context. As well, it contains //
// various functionality types that can give you an idea of my //
// coding style. //
//__________________________________________________________________________//
/****************************************************************************|
| |
| Hlp |
| |
| Misc helpers: |
| - Resources |
| - Browser |
| - Utility |
| |
| (Yes, these are static) |
| |
|****************************************************************************/
class Hlp
{
/****************************************************************************|
|****************************************************************************|
| RESOURCE HELPERS |
|****************************************************************************|
|****************************************************************************/
/***************************************************************************|
| |
| resourceUrl |
| |
| Returns secure resource URL for filename or id (faux overloading) |
| |
| @param int/string $resource - id or name of resource |
| @param int $expire - min link is valid |
| @param int $groupId - if checking for group rather than |
| logged user |
| @return string url for resource |
| |
****************************************************************************/
public static function resourceUrl($resource, $expire = 30, $groupId = NULL)
{
if (!self::resourceRights($resource, $groupId)) {
return App::abort(401, 'You are not authorized to view this resource.');
}
$fileName = self::resourceBuildName($resource);
return Cdn::getSignedURL(Path::resource().$fileName, $expire);
}
/***************************************************************************|
| |
| resourceRights |
| |
| Determines rights for a resource id or name (faux overloading) |
| |
| @param int/string $resource - id or name of resource |
| @param int $groupId - if checking for group rather than |
| logged user |
| @return bool Whether rights exist for resource |
| |
| NOTE: If groupId is provided, this method assumes user has |
| rights to the group |
| |
****************************************************************************/
public static function resourceRights($resource, $groupId = NULL)
{
$hasRights = false;
$groupId = ($groupId) ? $groupId : Auth::user()->group_id;
$resourceId = is_numeric($resource) ? $resource : Resource::where('file_name', $resource)->pluck('id');
$resGroupRight = Resource::group($groupId, $resourceId);
// If group doesn't have rights, see if the org group is in has rights
if (!$resGroupRight) {
$groupOrg = Group::find($groupId)->pluck('organization_id');
$resOrg = Resource::find($resourceId)->pluck('organization_id');
$hasRights = ($groupOrg == $resOrg) ? true : false;
}
else {
$hasRights = true;
}
return $hasRights;
}
/***************************************************************************|
| |
| resourceBuildName |
| |
| Build resource file name from id or filename (faux overloading) |
| |
| @param int/string $resource - id or name of resource |
| @param string $ext - file extension |
| @return string Resource filename |
| |
****************************************************************************/
public static function resourceBuildName($res, $ext = NULL)
{
$resource = (is_numeric($res)) ? Resource::findOrFail($res) : Resource::where('file_name', $res)->firstOrFail();
if(!isset($resource)) {
return App::abort(404, 'Resource does not exist.');
}
if (!$ext) {
switch ($resource->type) {
case 'video':
$ext = IVID; break;
case 'pdf':
$ext = IPDF; break;
default:
$ext = IIMG; break; //assume we are trying to get an image
}
}
return $resource->file_name.$ext;
}
/***************************************************************************|
| |
| isSigned |
| |
| Determines if url is signed for access |
| |
| @param string $url - resource url |
| @return bool Whether url is signed |
| |
****************************************************************************/
public static function isSigned($url)
{
return strpos($url, SIGNATURE) !== false;
}
/****************************************************************************|
|****************************************************************************|
| BROWSER HELPERS |
|****************************************************************************|
|****************************************************************************/
/***************************************************************************|
| |
| browserValid |
| |
| Determines if browser meets min version requirements (from config) |
| |
| Note: based on current session and config settings |
| |
****************************************************************************/
public static function browserValid()
{
$browser = new Browser\valBrowser();
$browserErrMsg = 'cust.browser.incompatible';
try {
if ($browser->Detect()->isDetected()) {
$validBrowsers = Config::get('settings.valid_browser');
$userBrowserType = $browser->getBrowser();
$userBrowserVersion = floor($browser->getVersion());
if (array_key_exists($userBrowserType, $validBrowsers)) {
$topVersion = $validBrowsers[$userBrowserType];
if ($userBrowserVersion < (intval($topVersion)-1)) {
return $browserErrMsg;
} else {
return false;
}
} else {
return $browserErrMsg;
}
} else {
return $browserErrMsg;
}
} catch(Exception $ex) {
return $browserErrMsg;
}
}
/***************************************************************************|
|***************************************************************************|
| UTILITIES |
|***************************************************************************|
|***************************************************************************/
/***************************************************************************|
| |
| getGroup |
| |
| Returns current group as object (collection) |
| |
| Note: Based on current session or URL context |
| |
****************************************************************************/
public static function getGroup()
{
return Auth::check() ? Auth::user()->group : Group::fromUrl();
}
/***************************************************************************|
| |
| isMarkup |
| |
| Simple test to determines if string is markup |
| |
| @param string $str - string to check |
| @return bool Whether string is markup |
| |
| Note: Assumes string is not null |
| |
****************************************************************************/
public static function isMarkup($str)
{
return strlen($str) != strlen(strip_tags($str) ? true : false;
}
/***************************************************************************|
| |
| removeItemsByKey |
| |
| Removes array items by key |
| |
| @param array $arrArray - Array from which to remove items |
| @param array $arrKeys - Keys of items to remove |
| @return array Cleaned array |
| |
****************************************************************************/
public static function removeItemsByKey($arrArray, $arrKeys)
{
foreach ($arrKeys as $arrKey) {
unset($arrArray[$arrKey]);
}
return $arrArray;
}
/***************************************************************************|
| |
| removeItemsByValue |
| |
| Removes array items by key |
| |
| @param array $arrArray - Array from which to remove items |
| @param array $arrValues - Values of items to remove |
| @return array Cleaned array |
| |
****************************************************************************/
public static function removeItemsByValue($arrArray, $arrValues)
{
foreach ($arrValues as $arrValue) {
while (($key = array_search($arrValue, $arrArray)) !== false) {
unset($arrArray[$key]);
}
}
return $arrArray;
}
}