/**
  * Gets a list of the actions that can be performed.
  *
  * @param   \JUser  $user       The user object.
  * @param   string  $component  The component access file path, component base path or option name.
  * @param   string  $assetName  The asset name
  * @param   integer $categoryId The category ID.
  * @param   integer $id         The item ID.
  *
  * @return  Object
  */
 public static function getActions(\JUser $user, $component, $assetName, $categoryId = 0, $id = 0)
 {
     $result = new Object();
     // New rules: If path is access file
     $path = $component;
     if (!is_file($path)) {
         // New rules: If path is component base path
         $path = $path . '/access.xml';
     }
     if (!is_file($path)) {
         $path = PathHelper::getAdmin($component) . '/etc/access.xml';
     }
     if (!is_file($path)) {
         $path = PathHelper::getAdmin($component) . '/access.xml';
     }
     if (!$id && !$categoryId) {
         $section = 'component';
     } elseif (!$id && $categoryId) {
         $section = 'category';
         $assetName .= '.category.' . $categoryId;
     } elseif ($id && !$categoryId) {
         $section = $assetName;
         $assetName .= '.' . $assetName . '.' . $id;
     } else {
         $section = $assetName;
         $assetName .= '.' . $assetName;
     }
     $actions = \JAccess::getActionsFromFile($path, "/access/section[@name='" . $section . "']/");
     foreach ($actions as $action) {
         $result->set($action->name, $user->authorise($action->name, $assetName));
     }
     return $result;
 }
 /**
  * Check button access.
  *
  * @param string $name   The button name.
  * @param array  $button The button config array.
  *
  * @return  boolean Allow this button or not.
  */
 protected function checkAccess($name, $button)
 {
     // No access set, means yes.
     if (!isset($button['access'])) {
         return true;
     } elseif (is_string($button['access'])) {
         return $this->access->get($button['access']);
     }
     // If we get FALSE, just return it.
     return $button['access'];
 }
 /**
  * Get a page and save it as file.
  *
  * @param   string $url    A url to request.
  * @param   string $path   A system path with file name to save it.
  * @param   array  $option An option array to override CURL OPT.
  *
  * @return  Object Object with success or fail information.
  */
 public static function download($url, $path = null, $option = array())
 {
     jimport('joomla.filesystem.file');
     jimport('joomla.filesystem.folder');
     jimport('joomla.filesystem.path');
     $url = new \JUri($url);
     $path = \JPath::clean($path);
     // $folder_path = JPATH_ROOT.DS.'files'.DS.$url->task_id ;
     if (substr($path, -1) == DIRECTORY_SEPARATOR) {
         $file_name = basename($url);
         $file_path = $path . $file_name;
         $folder_path = $path;
     } else {
         $file_path = $path;
         $folder_path = str_replace(basename($path), '', $file_path);
     }
     \JPath::setPermissions($folder_path, 644, 755);
     if (!\is_dir($folder_path)) {
         \JFolder::create($folder_path);
     }
     $fp = fopen($file_path, 'w+');
     $ch = curl_init();
     $options = array(CURLOPT_URL => UriHelper::safe($url), CURLOPT_RETURNTRANSFER => true, CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1", CURLOPT_FOLLOWLOCATION => !ini_get('open_basedir') ? true : false, CURLOPT_FILE => $fp, CURLOPT_SSL_VERIFYPEER => false);
     // Merge option
     foreach ($option as $key => $opt) {
         if (isset($option[$key])) {
             $options[$key] = $option[$key];
         }
     }
     curl_setopt_array($ch, $options);
     curl_exec($ch);
     $errno = curl_errno($ch);
     $errmsg = curl_error($ch);
     curl_close($ch);
     fclose($fp);
     if ($errno) {
         $return = new Object();
         $return->set('errorCode', $errno);
         $return->set('errorMsg', $errmsg);
         return $return;
     } else {
         $return = new Object();
         $return->set('filePath', $file_path);
         return $return;
     }
 }
 /**
  * Method to test isNull().
  *
  * @param \Windwalker\Object\Object $object
  * @param bool                      $expect
  *
  * @return void
  *
  * @covers       \Windwalker\Object\Object::isNull
  * @dataProvider objectProvider
  */
 public function testIsNull(Object $object, $expect)
 {
     $this->assertSame($expect, $object->isNull());
 }