Ejemplo n.º 1
0
 public function can_view($user = null)
 {
     if (midgardmvc_core::get_instance()->context->mimetype === 'text/html') {
         return true;
     }
     return false;
 }
Ejemplo n.º 2
0
 /**
  * Loads a program
  */
 public function load_object(array $args)
 {
     $this->object = com_meego_devprogram_devutils::get_device_by_name($args['device_name']);
     if (is_object($this->object)) {
         midgardmvc_core::get_instance()->head->set_title($this->object->name);
     }
 }
Ejemplo n.º 3
0
 public function action_messages($route_id, &$data, $args)
 {
     if (!midgardmvc_core::get_instance()->uimessages->supports('comet') || !midgardmvc_core::get_instance()->uimessages->can_view()) {
         return;
     }
     $type = null;
     $name = null;
     if (isset(midgardmvc_core::get_instance()->dispatcher->get["cometType"])) {
         $type = midgardmvc_core::get_instance()->dispatcher->get["cometType"];
     }
     if (isset(midgardmvc_core::get_instance()->dispatcher->get["cometName"])) {
         $name = midgardmvc_core::get_instance()->dispatcher->get["cometName"];
     }
     if ($type == null && $name == null) {
         throw new midgardmvc_exception_notfound("No comet name or type defined");
     }
     if (ob_get_level() == 0) {
         ob_start();
     }
     while (true) {
         $messages = '';
         if (midgardmvc_core::get_instance()->uimessages->has_messages()) {
             $messages = midgardmvc_core::get_instance()->uimessages->render_as('comet');
         } else {
             midgardmvc_core::get_instance()->uimessages->add(array('title' => 'Otsikko from comet', 'message' => 'viesti from comet...'));
         }
         midgardmvc_core_helpers_comet::pushdata($messages, $type, $name);
         ob_flush();
         flush();
         sleep(5);
     }
     // $data['messages'] = $messages;
 }
Ejemplo n.º 4
0
 public function tearDown()
 {
     // Delete the context
     $this->_core->context->delete();
     midgardmvc_core::clear_instance();
     parent::tearDown();
 }
Ejemplo n.º 5
0
 public function get_avatar(array $args)
 {
     $storage = new midgard_query_storage('midgard_user');
     $q = new midgard_query_select($storage);
     $cnstr1 = new midgard_query_constraint(new midgard_query_property('username', $storage), 'LIKE', new midgard_query_value('%' . $args['username'] . '%'));
     $q->execute();
     $cnt = $q->get_results_count();
     if ($cnt > 0) {
         $user = $q->list_objects();
         if ($user[0]) {
             $attachments = $user[0]->list_attachments();
             //Check if attachement exists
             if (count($attachments) == 0) {
                 //fetch avatar from meego.com
                 $employeenumber = $user[0]->get_person()->get_parameter('midgardmvc_core_services_authentication_ldap', 'employeenumber');
                 $attachment = $user[0]->create_attachment('meego:avatar', 'meego:avatar', 'image/png');
                 midgardmvc_helper_attachmentserver::copy_file_to_attachment('http://meego.com/sites/all/files/imagecache/user_pics/user_pics/picture-' . $employeenumber . '.png', $attachment);
                 $attachments[0] = $attachment;
             }
             if (count($attachments) > 0) {
                 //serve attachment
                 $this->serve_attachement($attachments[0]);
                 return;
             }
         }
     }
     //redirect to default avatar
     midgardmvc_core::get_instance()->head->relocate('http://meego.com/sites/all/themes/meego/images/peep_skate.png');
 }
Ejemplo n.º 6
0
 public function &set_translation_domain($component_name)
 {
     // If no component name is set, then it's from the core
     // translations are going to get searched.
     if (!$component_name) {
         $component_name = 'midgardmvc_core';
     }
     // Checking if TAL translator is already available
     if (isset($this->tr[$component_name])) {
         // useDomain must be called. Otherwise gettext context is not changed
         $this->tr[$component_name]->useDomain($component_name);
         return $this->tr[$component_name];
     }
     try {
         $this->tr[$component_name] = new PHPTAL_GetTextTranslator();
         $this->tr[$component_name]->setLanguage($this->language . '.utf8', $this->language);
     } catch (Exception $e) {
         echo $e;
     }
     // register gettext domain to use
     $path = midgardmvc_core::get_component_path($component_name) . '/locale/';
     $this->tr[$component_name]->addDomain($component_name, $path);
     // specify current domain
     $this->tr[$component_name]->useDomain($component_name);
     return $this->tr[$component_name];
 }
Ejemplo n.º 7
0
 private function get_cache_name()
 {
     if (!isset(midgardmvc_core::get_instance()->context->host)) {
         return 'MidgardMVC';
     }
     return midgardmvc_core::get_instance()->context->host->name;
 }
Ejemplo n.º 8
0
 public function get_invalidate(array $args)
 {
     midgardmvc_core::get_instance()->authorization->require_user();
     midgardmvc_core::get_instance()->cache->invalidate_all();
     midgardmvc_core::get_instance()->context->cache_enabled = false;
     midgardmvc_core::get_instance()->head->relocate(midgardmvc_core::get_instance()->dispatcher->generate_url('index', array(), $this->request));
 }
Ejemplo n.º 9
0
 /**
  *
  */
 public function post_start_package_instance(array $args)
 {
     $this->mvc->log(__CLASS__, 'Posted start QA', 'info');
     $this->package = self::load_package_instance($args);
     if (!$this->package->metadata->hidden) {
         $workflow_class = self::load_workflow($args);
         $this->mvc->component->load_library('Workflow');
         $workflow = new $workflow_class();
         $values = $workflow->start($this->package);
         if (isset($values['execution'])) {
             // Workflow suspended and needs input, redirect to workflow page
             $formurl = $this->mvc->dispatcher->generate_url('package_instance_workflow_resume', array('package' => $this->package->name, 'version' => $this->package->version, 'project' => $args['project'], 'repository' => $args['repository'], 'arch' => $args['arch'], 'workflow' => $args['workflow'], 'execution' => $values['execution']), $this->request);
             $this->mvc->head->relocate($formurl);
         }
     }
     // Workflow completed, redirect to package instance
     if ($this->request->isset_data_item('redirect_link')) {
         $redirect_link = $this->request->get_data_item('redirect_link');
     } elseif (isset($_POST['redirect_link'])) {
         $redirect_link = $_POST['redirect_link'];
     } else {
         $redirect_link = midgardmvc_core::get_instance()->dispatcher->generate_url('package_instance', array('package' => $this->package->name, 'version' => $this->package->version, 'project' => $args['project'], 'repository' => $args['repository'], 'arch' => $args['arch']), $this->request);
     }
     $this->mvc->log(__CLASS__, 'Posted start QA finished', 'info');
     // Workflow completed, redirect to package instance
     midgardmvc_core::get_instance()->head->relocate($redirect_link);
 }
Ejemplo n.º 10
0
 /**
  * The constructor will initialize the sessioning, set the output nocacheable
  * and initialize the session data. This might involve creating an empty
  * session array.
  */
 public function __construct()
 {
     static $started = false;
     if ($started) {
         throw new Exception("Midgard MVC Sessioning has already been started, it must not be started twice. Aborting");
     }
     $started = true;
     $this->dispatcher = midgardmvc_core::get_instance()->dispatcher;
     try {
         if (!$this->dispatcher->headers_sent()) {
             $this->dispatcher->session_start();
         }
     } catch (Exception $e) {
         midgardmvc_core::get_instance()->log(__CLASS__, "Couldn't start session: " . $e->getMessage(), 'warn');
         $this->enabled = false;
         return;
     }
     /* Cache disabling made conditional based on domain/key existence */
     // Check for session data and load or initialize it, if necessary
     if ($this->dispatcher->session_has_var(self::ROOT)) {
         $this->data = $this->dispatcher->session_get_var(self::ROOT);
     } else {
         $this->data['midgardmvc_core_services_sessioning'] = array();
         $this->data['midgardmvc_core_services_sessioning']['startup'] = array();
         $this->dispatcher->session_set_var(self::ROOT, $this->data);
     }
 }
Ejemplo n.º 11
0
 private function start()
 {
     if (self::$started) {
         return;
     }
     self::$started = true;
     $this->dispatcher = midgardmvc_core::get_instance()->dispatcher;
     try {
         if (!$this->dispatcher->headers_sent()) {
             $this->dispatcher->session_start();
         }
     } catch (Exception $e) {
         midgardmvc_core::get_instance()->log(__CLASS__, "Couldn't start session: " . $e->getMessage(), 'warning');
         $this->enabled = false;
         return;
     }
     /* Cache disabling made conditional based on domain/key existence */
     // Check for session data and load or initialize it, if necessary
     if ($this->dispatcher->session_has_var(self::ROOT)) {
         $this->data = $this->dispatcher->session_get_var(self::ROOT);
     } else {
         $this->data['midgardmvc_core_services_sessioning'] = array();
         $this->data['midgardmvc_core_services_sessioning']['startup'] = array();
         $this->dispatcher->session_set_var(self::ROOT, $this->data);
     }
 }
Ejemplo n.º 12
0
 public function test_singleton()
 {
     $this->_core->newproperty = true;
     $midcom_new = midgardmvc_core::get_instance();
     $this->assertEquals($midcom_new->newproperty, true);
     unset($this->_core->newproperty);
 }
Ejemplo n.º 13
0
 public function get_feed(array $args)
 {
     // Read items from Content Repository
     $this->get_items($args);
     // Set up feed
     midgardmvc_core::get_instance()->component->load_library('Feed');
     $feed = new ezcFeed();
     $feed->title = $this->data['title'];
     $feed->description = '';
     $now = new DateTime();
     $feed->published = $now->format(DateTime::RSS);
     $link = $feed->add('link');
     $link->href = midgardmvc_core::get_instance()->dispatcher->generate_url('index', array(), $this->request);
     array_walk($this->data['items'], function ($item) use($feed) {
         $feeditem = $feed->add('item');
         $feeditem->title = $item->title;
         $feeditem->description = $item->content;
         $feeditem->published = $item->published->format(DateTime::RSS);
         $author = $feeditem->add('author');
         $author->name = $item->firstname;
         $link = $feeditem->add('link');
         $link->href = $item->url;
     });
     $this->data['feed'] = $feed;
 }
Ejemplo n.º 14
0
 /**
  * Adds some handy properties to provider object
  *
  * @param object com_meego_devprogram_provider object
  * @return object extended com_meego_devprogram_provider object
  */
 private function extend_provider($object = null)
 {
     // q->toggle_readonly(false) does not work so we need a new object
     $provider = new com_meego_devprogram_provider($object->guid);
     $provider->read_url = com_meego_devprogram_utils::get_url('provider_read', array('provider_name' => $provider->name));
     $provider->update_url = com_meego_devprogram_utils::get_url('provider_update', array('provider_name' => $provider->name));
     $provider->delete_url = com_meego_devprogram_utils::get_url('provider_delete', array('provider_name' => $provider->name));
     $provider->join_url = com_meego_devprogram_utils::get_url('my_membership_create', array('provider_name' => $provider->name));
     // if current user is owner then we can add more goodies
     $user = com_meego_devprogram_utils::get_current_user();
     $provider->number_of_members = false;
     $mvc = midgardmvc_core::get_instance();
     // set the can join flag to true by default
     $provider->can_join = true;
     // set management fflag to false by default
     $provider->can_manage = false;
     // can current user manage the provider
     if (com_meego_devprogram_utils::is_current_user_creator_or_admin($object) || com_meego_devprogram_membutils::is_current_user_member_of_provider($object->id)) {
         $provider->can_manage = true;
         $provider->can_join = false;
         // set the url for the membership list page
         $provider->list_memberships_url = com_meego_devprogram_utils::get_url('provider_members', array('provider_name' => $provider->name));
         // set the approved number of members (all but the cancelled ones) of this provider
         $provider->number_of_members = count(com_meego_devprogram_membutils::get_memberships_by_provider($provider->id));
         // set the number of pending membership requests
         $provider->number_of_members = count(com_meego_devprogram_membutils::get_memberships_by_provider($provider->id));
     }
     // can the provider be deleted; ie. check if provider has devices that belong to open programs
     $provider->can_not_delete = com_meego_devprogram_provutils::has_provider_devices($object->id);
     return $provider;
 }
Ejemplo n.º 15
0
 public function __construct(array $local_configuration = null)
 {
     if (!is_null($local_configuration)) {
         $this->local_configuration = $local_configuration;
     }
     $this->mvc = midgardmvc_core::get_instance();
 }
Ejemplo n.º 16
0
 public function handle_exception(Exception $exception)
 {
     if (!(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) && isset($_SERVER['HTTP_AUTHORIZATION'])) {
         $auth_params = explode(":", base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
         $_SERVER['PHP_AUTH_USER'] = $auth_params[0];
         unset($auth_params[0]);
         $_SERVER['PHP_AUTH_PW'] = implode('', $auth_params);
     }
     if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
         $app = midgardmvc_core::get_instance();
         $app->dispatcher->header("WWW-Authenticate: Basic realm=\"MidgardMVC\"");
         $app->dispatcher->header('HTTP/1.0 401 Unauthorized');
         // TODO: more fancy 401 output ?
         echo "<h1>Authorization required</h1>\n";
         // Clean up the context
         $app->context->delete();
         $app->dispatcher->end_request();
     }
     $tokens = array('login' => $_SERVER['PHP_AUTH_USER'], 'password' => $_SERVER['PHP_AUTH_PW']);
     if (!$this->login($tokens)) {
         // Wrong password: Recurse until auth ok or user gives up
         unset($_SERVER['HTTP_AUTHORIZATION'], $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
         $this->handle_exception($exception);
     }
 }
Ejemplo n.º 17
0
 public function clean_store()
 {
     $mvc = midgardmvc_core::get_instance();
     if (!$mvc->sessioning->exists('midgardmvc_helper_forms', "stored_{$this->namespace}")) {
         return;
     }
     $mvc->sessioning->remove('midgardmvc_helper_forms', "stored_{$this->namespace}");
 }
Ejemplo n.º 18
0
 public function __construct($name, $required = false, array $actions = array())
 {
     $this->name = $name;
     //Name is always prefixed with group name
     $this->required = $required;
     $this->actions = $actions;
     $this->mvc = midgardmvc_core::get_instance();
 }
Ejemplo n.º 19
0
 public static function unlock(&$object)
 {
     midgardmvc_core::get_instance()->authorization->require_do('midgard:update', $object);
     if (!$object->is_locked()) {
         return;
     }
     $object->unlock();
 }
Ejemplo n.º 20
0
 public function test_render_key()
 {
     $message = array('title' => 'Foo', 'message' => 'Bar', 'type' => 'ok');
     $id = midgardmvc_core::get_instance()->uimessages->add($message);
     $content = midgardmvc_core::get_instance()->uimessages->render($id);
     $this->assertTrue(strpos($content, '<div class="midgardmvc_services_uimessages_message_title">Foo</div>') !== false);
     $this->assertEquals(null, midgardmvc_core::get_instance()->uimessages->get($id), 'Ensure the message was removed after rendering');
 }
Ejemplo n.º 21
0
 /**
  * Add our own stuff to the templates
  */
 public function inject_template(midgardmvc_core_request $request)
 {
     // Replace the default MeeGo sidebar with our own
     $route = $request->get_route();
     $route->template_aliases['content-sidebar'] = 'cmp-show-sidebar';
     $route->template_aliases['main-menu'] = 'cmp-show-main_menu';
     midgardmvc_core::get_instance()->head->add_link(array('rel' => 'stylesheet', 'type' => 'text/css', 'href' => MIDGARDMVC_STATIC_URL . '/com_meego_planet/planet.css'));
 }
Ejemplo n.º 22
0
 public function post_item(array $args)
 {
     midgardmvc_core::get_instance()->authorization->require_user();
     // GET will handle loading the item
     $this->get_item($args);
     $vote_obj = com_meego_planet_votes::vote($this->item, (int) $_POST['vote']);
     // Refresh votes before sending
     $this->data['votes'] = com_meego_planet_votes::get($this->item);
 }
Ejemplo n.º 23
0
 /**
  * Starts up the authorization service and connects to various signals
  */
 public function __construct()
 {
     $this->_core = midgardmvc_core::get_instance();
     $this->_authentication = $this->_core->authentication;
     $mgdschemas = $this->_core->dispatcher->get_mgdschema_classes();
     foreach ($mgdschemas as $mgdschema) {
         $this->connect_to_signals($mgdschema);
     }
 }
Ejemplo n.º 24
0
 /**
  * Loads a program
  */
 public function load_object(array $args)
 {
     if (array_key_exists('provider_name', $args)) {
         $this->object = com_meego_devprogram_provutils::get_provider_by_name($args['provider_name']);
     }
     if (is_object($this->object)) {
         midgardmvc_core::get_instance()->head->set_title($this->object->name);
     }
 }
Ejemplo n.º 25
0
 /**
  * Extends an application object with some handy properties
  *
  * @param object com_meego_devprogram_application object
  * @return object extended com_meego_devprogram_application object
  */
 private static function extend_application($object = null)
 {
     $application = new com_meego_devprogram_application($object->guid);
     if ($application) {
         // some urls
         $application->read_url = com_meego_devprogram_utils::get_url('my_application_read', array('application_guid' => $application->guid));
         $application->update_url = com_meego_devprogram_utils::get_url('my_application_update', array('application_guid' => $application->guid));
         $application->delete_url = com_meego_devprogram_utils::get_url('my_application_delete', array('application_guid' => $application->guid));
         $application->judge_url = com_meego_devprogram_utils::get_url('application_judge', array('application_guid' => $application->guid));
         // submitter's username
         $user = com_meego_devprogram_utils::get_user_by_person_guid($application->metadata->creator);
         if (is_object($user)) {
             $application->submitter = $user->firstname;
             #. ' ' . $user->lastname;
         }
         // human readable decision state of the application
         $mvc = midgardmvc_core::get_instance();
         switch ($application->status) {
             case CMD_APPLICATION_PENDING:
                 $state = $mvc->i18n->get('label_application_state_pending');
                 $css = 'pending';
                 break;
             case CMD_APPLICATION_APPROVED:
                 $state = $mvc->i18n->get('label_application_state_approved');
                 $css = 'approved';
                 break;
             case CMD_APPLICATION_MOREINFO:
                 $state = $mvc->i18n->get('label_application_state_moreinfo');
                 $css = 'moreinfo';
                 break;
             case CMD_APPLICATION_CANCELLED:
                 $state = $mvc->i18n->get('label_application_state_cancelled');
                 $css = 'cancelled';
                 break;
             case CMD_APPLICATION_DENIED:
                 $state = $mvc->i18n->get('label_application_state_denied');
                 $css = 'denied';
                 break;
             default:
                 $state = $mvc->i18n->get('label_application_state_pending');
                 $css = 'pending';
         }
         $application->decision = ucfirst($state);
         $application->state_css = $css;
         // now check if the applicant has actually updated since the last decision of the program owner
         $application->has_update = false;
         if ($application->status == 1 && $application->metadata->revisor == $application->metadata->creator) {
             $application->has_update = true;
         }
         // get the program this app is submitted for; get the provider and set it a new property to the app
         $programs = com_meego_devprogram_progutils::get_programs(array('id' => $application->program));
         $application->programobject = $programs[0];
         $application->provider = $programs[0]->provider;
         return $application;
     }
 }
Ejemplo n.º 26
0
 /**
  * Extends an membership object with some handy properties
  *
  * @param object com_meego_devprogram_provider_membership object
  * @return object extended com_meego_devprogram_provider_membership object
  */
 private static function extend_membership($object = null)
 {
     $membership = new com_meego_devprogram_provider_membership($object->guid);
     if ($membership) {
         // some urls
         $membership->read_url = com_meego_devprogram_utils::get_url('my_membership_read', array('membership_guid' => $membership->guid));
         $membership->update_url = com_meego_devprogram_utils::get_url('my_membership_update', array('membership_guid' => $membership->guid));
         $membership->delete_url = com_meego_devprogram_utils::get_url('my_membership_delete', array('membership_guid' => $membership->guid));
         $membership->judge_url = com_meego_devprogram_utils::get_url('membership_judge', array('membership_guid' => $membership->guid));
         // submitter's username
         $user = com_meego_devprogram_utils::get_user_by_person_guid($membership->person);
         if (is_object($user)) {
             // name of the person requested membership
             $membership->submitter = $user->firstname;
             //. ' ' . $user->lastname;
         }
         // pretty name of the provider
         $provider = new com_meego_devprogram_provider($membership->provider);
         $membership->providertitle = $provider->title;
         // human readable decision state of the application
         $mvc = midgardmvc_core::get_instance();
         switch ($membership->status) {
             case CMD_MEMBERSHIP_PENDING:
                 $state = $mvc->i18n->get('label_membership_state_pending');
                 $css = 'pending';
                 break;
             case CMD_MEMBERSHIP_APPROVED:
                 $state = $mvc->i18n->get('label_membership_state_approved');
                 $css = 'approved';
                 break;
             case CMD_MEMBERSHIP_MOREINFO:
                 $state = $mvc->i18n->get('label_membership_state_moreinfo');
                 $css = 'moreinfo';
                 break;
             case CMD_MEMBERSHIP_CANCELLED:
                 $state = $mvc->i18n->get('label_membership_state_cancelled');
                 $css = 'cancelled';
                 break;
             case CMD_MEMBERSHIP_DENIED:
                 $state = $mvc->i18n->get('label_membership_state_denied');
                 $css = 'denied';
                 break;
             default:
                 $state = $mvc->i18n->get('label_membership_state_pending');
                 $css = 'pending';
         }
         $membership->decision = ucfirst($state);
         $membership->state_css = $css;
         // now check if the applicant has actually updated since the last decision of the provider owner
         $membership->has_update = false;
         if ($membership->status == 1 && $membership->metadata->revisor == $membership->metadata->creator) {
             $membership->has_update = true;
         }
         return $membership;
     }
 }
Ejemplo n.º 27
0
 public function test_contexts()
 {
     $initial_value = midgardmvc_core::get_instance()->configuration->get('services_authentication');
     // Then enter another context
     $request = new midgardmvc_core_request();
     midgardmvc_core::get_instance()->context->create($request);
     $new_value = midgardmvc_core::get_instance()->configuration->get('services_authentication');
     midgardmvc_core::get_instance()->context->delete();
     $this->assertEquals($initial_value, $new_value);
 }
Ejemplo n.º 28
0
 public function generate_url($path)
 {
     $protocol = midgardmvc_core::get_instance()->configuration->ocs_protocol;
     $host = midgardmvc_core::get_instance()->configuration->ocs_host;
     $port = midgardmvc_core::get_instance()->configuration->ocs_port;
     if ($port != 80 && $port != 443) {
         $host = "{$host}:{$port}";
     }
     return "{$protocol}://{$host}{$path}";
 }
Ejemplo n.º 29
0
 public function test_get_child_nodes()
 {
     $node = midgardmvc_core::get_instance()->hierarchy->get_node_by_path('/subdir');
     $this->assertEquals(0, count($node->get_child_nodes()));
     $node = midgardmvc_core::get_instance()->hierarchy->get_node_by_path('/');
     $children = $node->get_child_nodes();
     $this->assertEquals(1, count($children));
     $node = midgardmvc_core::get_instance()->hierarchy->get_node_by_path('/subdir');
     $this->assertEquals('/subdir/', $children[0]->get_path());
 }
Ejemplo n.º 30
0
 public static function handle_created(fi_openkeidas_groups_group $group, $params)
 {
     // Set current user as admin of the group
     $member = new fi_openkeidas_groups_group_member();
     $member->person = midgardmvc_core::get_instance()->authentication->get_person()->id;
     $member->grp = $group->id;
     $member->admin = true;
     $member->create();
     $member->approve();
 }