Example #1
0
 function widget($args, $instance)
 {
     extract($args);
     $title = $this->get_title($instance);
     $username = $this->get_username($instance);
     $project_count = $this->get_project_count($instance);
     $show_parent = $this->get_show_parent($instance);
     echo $before_widget;
     echo $before_title . $title . $after_title;
     // Init the cache system.
     $cache = new Cache();
     // Set custom timeout in seconds.
     $cache->timeout = get_option('wpgithub_cache_time', 600);
     $repositories = $cache->get($username . '.repositories.json');
     if ($repositories == null) {
         $github = new Github($username);
         $repositories = $github->get_repositories();
         $cache->set($username . '.repositories.json', $repositories);
     }
     if ($repositories == null || count($repositories) == 0) {
         echo $username . ' does not have any public repositories.';
     } else {
         $repositories = array_slice($repositories, 0, $project_count);
         echo '<ul>';
         foreach ($repositories as $repository) {
             echo '<li><a href="' . $repository->html_url . '" title="' . $repository->description . '">' . $repository->name . '</a>';
             if ((int) $repository->fork && $show_parent) {
                 $parent_repository = $cache->get($username . '.' . $repository->name . '.repositories.json');
                 if ($parent_repository == null) {
                     if (!isset($github)) {
                         $github = new Github($username);
                     }
                     $parent_repository = $github->get_parent_repository($repository->name);
                     $cache->set($username . '.' . $repository->name . '.repositories.json', array($parent_repository));
                 }
                 if (is_array($parent_repository)) {
                     $parent_repository = end($parent_repository);
                 }
                 echo '<span class="forked_from">forked from ';
                 echo '<a href="' . $parent_repository->html_url . '">' . $parent_repository->full_name . '</a>';
                 echo '</span>';
             }
             echo '</li>';
         }
         echo '</ul>';
     }
     echo $after_widget;
 }