function get_available_addons($include_cloud = false)
 {
     $addons = array();
     $addon_directories = $this->get_addon_directories();
     foreach ($addon_directories as $addon_dir) {
         $list_dir = @opendir($addon_dir[0]);
         if ($list_dir) {
             while (($f = readdir($list_dir)) !== false) {
                 // Skip common files in each directory
                 if ($this->should_skip_file($f)) {
                     continue;
                 }
                 $addon_info = $this->get_addon_information($addon_dir[0] . '/' . $f, $addon_dir[1] . '/' . $f);
                 if ($addon_info) {
                     $addons[$addon_info->name] = $addon_info;
                 }
             }
             closedir($list_dir);
         }
     }
     if ($include_cloud) {
         if (false === ($cloud_addons = get_transient('_wptouch_available_cloud_addons'))) {
             $cloud_addons = wptouch_get_available_cloud_addons();
             set_transient('_wptouch_available_cloud_addons', $cloud_addons, WPTOUCH_THEME_ADDON_TRANSIENT_TIME);
         }
         $to_add = array();
         if (is_array($cloud_addons) && count($cloud_addons)) {
             foreach ($cloud_addons as $cloud_addon) {
                 if (!isset($addons[$cloud_addon['name']])) {
                     $this_addon = new stdClass();
                     $this_addon->name = $cloud_addon['name'];
                     $this_addon->description = $cloud_addon['description'];
                     $this_addon->author = $cloud_addon['author'];
                     $this_addon->version = $cloud_addon['version'];
                     $this_addon->screenshot = $cloud_addon['screenshot'];
                     $this_addon->base = $cloud_addon['base'];
                     $this_addon->location = 'cloud';
                     if (isset($cloud_addon['upgrade_url'])) {
                         $this_addon->download_url = $cloud_addon['upgrade_url'];
                     }
                     if (isset($cloud_addon['buy_url'])) {
                         $this_addon->buy_url = $cloud_addon['buy_url'];
                     }
                     if (isset($cloud_addon['info_url'])) {
                         $this_addon->info_url = $cloud_addon['info_url'];
                     }
                     $to_add[$this_addon->name] = $this_addon;
                 } else {
                     $this_addon = $addons[$cloud_addon['name']];
                     $this_addon->cloud_version = $cloud_addon['version'];
                     $this_addon->upgrade_available = $cloud_addon['version'] != $this_addon->version;
                     if (isset($cloud_addon['upgrade_url'])) {
                         $this_addon->download_url = $cloud_addon['upgrade_url'];
                     }
                     $addons[$cloud_addon['name']] = $this_addon;
                 }
             }
             $addons = array_merge($addons, $to_add);
         }
     }
     return $addons;
 }
Example #2
0
 function get_available_addons($include_cloud = false)
 {
     $addons = array();
     $addon_directories = $this->get_addon_directories();
     foreach ($addon_directories as $addon_dir) {
         $list_dir = @opendir($addon_dir[0]);
         if ($list_dir) {
             while (($f = readdir($list_dir)) !== false) {
                 // Skip common files in each directory
                 if ($this->should_skip_file($f)) {
                     continue;
                 }
                 $addon_info = $this->get_addon_information($addon_dir[0] . DIRECTORY_SEPARATOR . $f, $addon_dir[1] . DIRECTORY_SEPARATOR . $f);
                 if ($addon_info) {
                     $addons[$addon_info->name] = $addon_info;
                 }
             }
             closedir($list_dir);
         }
     }
     if ($include_cloud) {
         if (defined('WPTOUCH_FORCE_CLOUD_REFRESH')) {
             delete_site_transient('_wptouch_available_cloud_addons');
         }
         if (false === ($cloud_addons = get_site_transient('_wptouch_available_cloud_addons'))) {
             $cloud_addons = wptouch_get_available_cloud_addons();
             set_site_transient('_wptouch_available_cloud_addons', $cloud_addons, WPTOUCH_THEME_ADDON_TRANSIENT_TIME);
         }
         $to_add = array();
         if (is_array($cloud_addons) && count($cloud_addons)) {
             foreach ($cloud_addons as $cloud_addon) {
                 if (!isset($addons[$cloud_addon['name']])) {
                     $this_addon = new stdClass();
                     $this_addon->name = $cloud_addon['name'];
                     $this_addon->description = $cloud_addon['description'];
                     $this_addon->author = $cloud_addon['author'];
                     $this_addon->version = $cloud_addon['version'];
                     $this_addon->screenshot = $cloud_addon['screenshot'];
                     $this_addon->base = $cloud_addon['base'];
                     $this_addon->location = 'cloud';
                     $this_addon->long_description = '';
                     $this_addon->changelog = '';
                     if (isset($cloud_addon['changelog'])) {
                         $this_addon->changelog = $cloud_addon['changelog'];
                     }
                     if (isset($cloud_addon['long_description'])) {
                         $this_addon->long_description = $cloud_addon['long_description'];
                     }
                     if (isset($cloud_addon['upgrade_url'])) {
                         $this_addon->download_url = $cloud_addon['upgrade_url'];
                     }
                     if (isset($cloud_addon['buy_url'])) {
                         $this_addon->buy_url = $cloud_addon['buy_url'];
                     }
                     if (isset($cloud_addon['info_url'])) {
                         $this_addon->info_url = $cloud_addon['info_url'];
                     }
                     $to_add[$this_addon->name] = $this_addon;
                 } else {
                     $this_addon = $addons[$cloud_addon['name']];
                     $this_addon->cloud_version = $cloud_addon['version'];
                     $this_addon->extension_upgrade_available = version_compare($cloud_addon['version'], $this_addon->version, '>');
                     if (isset($cloud_addon['changelog'])) {
                         $this_addon->changelog = $cloud_addon['changelog'];
                     } else {
                         $this_addon->changelog = '';
                     }
                     if ($this_addon->long_description == '' && isset($cloud_addon['long_description'])) {
                         $this_addon->long_description = $cloud_addon['long_description'];
                     }
                     if (isset($cloud_addon['upgrade_url'])) {
                         $this_addon->download_url = $cloud_addon['upgrade_url'];
                     }
                     if ($this_addon->extension_upgrade_available) {
                         $this->extension_upgrades_available = true;
                     }
                     $addons[$cloud_addon['name']] = $this_addon;
                 }
             }
             $addons = array_merge($addons, $to_add);
         }
     }
     uksort($addons, 'strnatcasecmp');
     return $addons;
 }