capability)){ $cap = AAM_Core_ConfigPress::get( 'aam.feature.capability', 'administrator' ); } else { $cap = $feature->capability; } if (self::accessGranted($feature->uid, $cap)) { self::$_features[] = $feature; $response = true; } return $response; } /** * Initiate the Controller * * @param stdClass $feature * * @return stdClass * * @access public * @static */ public static function initView(stdClass $feature){ if (is_string($feature->view)){ $feature->view = new $feature->view; } return $feature; } /** * Retrieve list of features * * Retrieve sorted list of featured based on current subject * * @return array * * @access public * @static */ public static function retriveList() { $response = array(); $subject = AAM_Backend_View::getSubject(); foreach (self::$_features as $feature) { if (in_array(get_class($subject), $feature->subjects)) { $response[] = self::initView($feature); } } usort($response, 'AAM_Backend_Feature::reorder'); return $response; } /** * Check if current user can use feature * * Make sure that current user has enough capabilities to use feature * * @param string $feature * @param string $cap * * @return boolean * * @access protected * @static */ protected static function accessGranted($feature, $cap = 'administrator') { $capability = AAM_Core_ConfigPress::get( "aam.feature.{$feature}.capability", $cap ); return current_user_can($capability); } /** * Order list of features or subjectes * * Reorganize the list based on "position" attribute * * @param array $features * * @return array * * @access public * @static */ public static function reorder($feature_a, $feature_b){ $pos_a = (empty($feature_a->position) ? 9999 : $feature_a->position); $pos_b = (empty($feature_b->position) ? 9999 : $feature_b->position); if ($pos_a == $pos_b){ $response = 0; } else { $response = ($pos_a < $pos_b ? -1 : 1); } return $response; } }