Esempio n. 1
0
 public function index()
 {
     if (isset($_GET['error'])) {
         throw new \Goteo\Core\Error('418', Text::html('fatal-error-teapot'));
     }
     // orden de los elementos en portada
     $order = Home::getAll();
     // si estamos en easy mode, quitamos el feed
     if (defined('GOTEO_EASY') && \GOTEO_EASY === true && isset($order['feed'])) {
         unset($order['feed']);
     }
     // entradas de blog
     if (isset($order['posts'])) {
         // entradas en portada
         $posts = Post::getAll();
     }
     // Proyectos destacados
     if (isset($order['promotes'])) {
         $promotes = Promote::getAll(true);
         foreach ($promotes as $key => &$promo) {
             try {
                 $promo->projectData = Project::getMedium($promo->project, LANG);
             } catch (\Goteo\Core\Error $e) {
                 unset($promotes[$key]);
             }
         }
     }
     // actividad reciente
     if (isset($order['feed'])) {
         $feed = array();
         $feed['goteo'] = Feed::getAll('goteo', 'public', 15);
         $feed['projects'] = Feed::getAll('projects', 'public', 15);
         $feed['community'] = Feed::getAll('community', 'public', 15);
     }
     // Banners siempre
     $banners = Banner::getAll(true);
     foreach ($banners as $id => &$banner) {
         if (!empty($banner->project)) {
             try {
                 $banner->project = Project::get($banner->project, LANG);
             } catch (\Goteo\Core\Error $e) {
                 unset($banners[$id]);
             }
         }
     }
     return new View('view/index.html.php', array('banners' => $banners, 'posts' => $posts, 'promotes' => $promotes, 'feed' => $feed, 'order' => $order));
 }
Esempio n. 2
0
 public static function process($action = 'list', $id = null, $filters = array(), $flag = null)
 {
     $errors = array();
     $node = isset($_SESSION['admin_node']) ? $_SESSION['admin_node'] : \GOTEO_NODE;
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         // objeto
         $banner = new Model\Banner(array('id' => $_POST['id'], 'node' => $node, 'project' => $_POST['project'], 'title' => $_POST['title'], 'description' => $_POST['description'], 'url' => $_POST['url'], 'order' => $_POST['order'], 'active' => $_POST['active']));
         // imagen
         if (!empty($_FILES['image']['name'])) {
             $banner->image = $_FILES['image'];
         } else {
             $banner->image = $_POST['prev_image'];
         }
         if ($banner->save($errors)) {
             Message::Info('Datos guardados');
             if ($_POST['action'] == 'add') {
                 $projectData = Model\Project::getMini($_POST['project']);
                 // Evento Feed
                 $log = new Feed();
                 $log->setTarget($projectData->id);
                 $log->populate('nuevo banner de proyecto destacado en portada (admin)', '/admin/promote', \vsprintf('El admin %s ha %s', array(Feed::item('user', $_SESSION['user']->name, $_SESSION['user']->id), Feed::item('relevant', 'Publicado un banner', '/'))));
                 $log->doAdmin('admin');
                 unset($log);
             }
             throw new Redirection('/admin/banners');
         } else {
             Message::Error(implode('<br />', $errors));
             switch ($_POST['action']) {
                 case 'add':
                     return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'add', 'banner' => $banner, 'status' => $status));
                     break;
                 case 'edit':
                     return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'edit', 'banner' => $banner));
                     break;
             }
         }
     }
     switch ($action) {
         case 'active':
             $set = $flag == 'on' ? true : false;
             Model\Banner::setActive($id, $set);
             throw new Redirection('/admin/banners');
             break;
         case 'up':
             Model\Banner::up($id, $node);
             throw new Redirection('/admin/banners');
             break;
         case 'down':
             Model\Banner::down($id, $node);
             throw new Redirection('/admin/banners');
             break;
         case 'remove':
             if (Model\Banner::delete($id)) {
                 Message::Info('Banner quitado correctamente');
             } else {
                 Message::Error('No se ha podido quitar el banner');
             }
             throw new Redirection('/admin/banners');
             break;
         case 'add':
             // siguiente orden
             $next = Model\Banner::next($node);
             return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'add', 'banner' => (object) array('order' => $next), 'status' => $status));
             break;
         case 'edit':
             $banner = Model\Banner::get($id);
             return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'edit', 'action' => 'edit', 'banner' => $banner));
             break;
     }
     $bannered = Model\Banner::getAll(false, $node);
     return new View('view/admin/index.html.php', array('folder' => 'banners', 'file' => 'list', 'bannered' => $bannered, 'node' => $node));
 }