Example #1
0
 public function test_handler_delete()
 {
     midcom::get('auth')->request_sudo('org.openpsa.user');
     $data = $this->run_handler('org.openpsa.user', array('delete', self::$_user->guid));
     $this->assertEquals('user_delete', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #2
0
 public function testHandler_render()
 {
     midcom::get('auth')->request_sudo('org.openpsa.relatedto');
     $data = $this->run_handler('org.openpsa.invoices', array('__mfa', 'org.openpsa.relatedto', 'render', self::$_object_from->guid, 'both'));
     $this->assertEquals('____mfa-org.openpsa.relatedto-render', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #3
0
 public function test_handler_json()
 {
     midcom::get('auth')->request_sudo('org.openpsa.user');
     $data = $this->run_handler('org.openpsa.user', array('json'));
     $this->assertEquals('user_list_json', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #4
0
 /**
  * Function to unblock an account after too many failed to login attempts
  *
  * @param array $args Contains the guid, parameter & parameter names to get username&password
  */
 function reopen_account($args, &$handler)
 {
     midcom::get('auth')->request_sudo($this->_component);
     try {
         $person = new midcom_db_person($args['guid']);
     } catch (midcom_error $e) {
         $msg = 'Person with guid #' . $args['guid'] . ' does not exist';
         debug_add($msg, MIDCOM_LOG_ERROR);
         $handler->print_error($msg);
         midcom::get('auth')->drop_sudo();
         return false;
     }
     $accounthelper = new org_openpsa_user_accounthelper($person);
     try {
         $accounthelper->reopen_account();
     } catch (midcom_error $e) {
         midcom::get('auth')->drop_sudo();
         $e->log();
         $handler->print_error($e->getMessage());
         midcom::get('auth')->drop_sudo();
         return false;
     }
     midcom::get('auth')->drop_sudo();
     return true;
 }
Example #5
0
 /**
  * Initialization script placeholder. Not yet needed.
  *
  * @return boolean Indicating success
  */
 public function _on_initialize()
 {
     // Enable jQuery. This will not work without
     midcom::get('head')->enable_jquery();
     midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/midcom.helper.datamanager2/datamanager2.tablesorter.js');
     // Default values
     $sortable_rows = 'false';
     $sortable_columns = 'false';
     if (!$this->_type->row_limit) {
         $this->_type->row_limit = 0;
     }
     if (!$this->_type->column_limit) {
         $this->_type->column_limit = 0;
     }
     if ($this->_type->sortable_rows) {
         $sortable_rows = 'true';
     }
     if ($this->_type->sortable_columns) {
         $sortable_columns = 'true';
     }
     $preserve_columns = '|' . implode('|,|', array_keys($this->_type->columns)) . '|';
     // Configuration options
     midcom::get('head')->add_jscript("\n            jQuery(document).ready(function()\n            {\n                jQuery('#midcom_helper_datamanager2_{$this->_type->name}_widget_tabledata')\n                    .create_tablesorter({\n                        table_id: '#midcom_helper_datamanager2_{$this->_type->name}_widget_tabledata',\n                        field_name: '{$this->_type->name}',\n                        max_row_count: {$this->_type->row_limit},\n                        max_column_count: {$this->_type->column_limit},\n                        sortable_rows: {$sortable_rows},\n                        sortable_columns: {$sortable_columns},\n                        preserve_columns: '{$preserve_columns}',\n                        allow_delete: true\n                    });\n            });\n\n            COLUMN_TITLE = '" . $this->_type->_l10n->get('please enter the column title') . "';\n        ");
     return true;
 }
Example #6
0
 public function testCRUD()
 {
     midcom::get('auth')->request_sudo('org.openpsa.invoices');
     $data = new org_openpsa_invoices_billing_data_dba();
     $data->linkGuid = self::$_contact->guid;
     $data->useContactAddress = true;
     $stat = $data->create();
     $this->assertTrue($stat, midcom_connection::get_error_string());
     $this->register_object($data);
     $parent = $data->get_parent();
     $this->assertEquals($parent->guid, self::$_contact->guid);
     self::$_contact->refresh();
     $this->assertEquals(self::$_contact->street, $data->street);
     $data->vat = 12;
     $data->due = 12;
     $stat = $data->update();
     $this->assertTrue($stat);
     self::$_contact->refresh();
     $invoice = new org_openpsa_invoices_invoice_dba();
     $invoice->customerContact = self::$_contact->id;
     $invoice_data = $invoice->get_billing_data();
     $this->assertEquals($data->guid, $invoice_data->guid);
     $this->assertEquals($data->vat, $invoice->get_default('vat'));
     $this->assertEquals($data->due, $invoice->get_default('due'));
     $stat = $data->delete();
     $this->assertTrue($stat);
     midcom::get('auth')->drop_sudo();
 }
Example #7
0
 public function testHandler_index_timestamp()
 {
     midcom::get('auth')->request_sudo('org.openpsa.expenses');
     $data = $this->run_handler('org.openpsa.expenses', array('2011-01-26'));
     $this->assertEquals('index_timestamp', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #8
0
 /**
  * Handler for folder metadata. Checks for updating permissions, initializes
  * the metadata and the content topic itself. Handles also the sent form.
  *
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  * @return boolean Indicating success
  */
 public function _handler_edit($handler_id, array $args, array &$data)
 {
     $this->_object = midcom::get('dbfactory')->get_object_by_guid($args[0]);
     // FIXME: We should modify the schema according to whether or not scheduling is used
     $this->_object->require_do('midgard:update');
     midcom::get('auth')->require_user_do('midgard.admin.asgard:manage_objects', null, 'midgard_admin_asgard_plugin');
     if (is_a($this->_object, 'midcom_db_topic')) {
         // This is a topic
         $this->_topic->require_do('midgard.admin.asgard:topic_management');
     }
     $this->_metadata = midcom_helper_metadata::retrieve($this->_object);
     if (!$this->_metadata) {
         throw new midcom_error("Failed to retrieve Metadata for " . get_class($this->_object) . " {$this->_object->guid}.");
     }
     // Load the DM2 controller instance
     $this->_controller = $this->get_controller('simple', $this->_object);
     switch ($this->_controller->process_form()) {
         case 'save':
             // Reindex the object
             //$indexer = midcom::get('indexer');
             //net_nemein_wiki_viewer::index($this->_request_data['controller']->datamanager, $indexer, $this->_topic);
             // *** FALL-THROUGH ***
             midcom::get('cache')->invalidate($this->_object->guid);
             return new midcom_response_relocate("__mfa/asgard/object/metadata/{$this->_object->guid}");
         case 'cancel':
             return new midcom_response_relocate("__mfa/asgard/object/view/{$this->_object->guid}");
     }
     $this->_prepare_request_data();
     midgard_admin_asgard_plugin::bind_to_object($this->_object, $handler_id, $data);
 }
Example #9
0
function org_routamc_positioning_send_sms($to, $message, $from, $config)
{
    $sms_lib = 'org.openpsa.smslib';
    midcom::get('componentloader')->load_library($sms_lib);
    $sms_lib_api = $config->get('smslib_api');
    $sms_lib_location = $config->get('smslib_uri');
    $sms_lib_client_id = $config->get('smslib_client_id');
    $sms_lib_user = $config->get('smslib_user');
    $sms_lib_password = $config->get('smslib_password');
    if (!$sms_lib_api || !$sms_lib_location || !$sms_lib_user) {
        return false;
    }
    @ini_set('max_execution_time', 0);
    //Initializing SMS broker
    $smsbroker = call_user_func(array(str_replace('.', '_', $sms_lib), 'factory'), $sms_lib_api);
    if (!is_object($smsbroker)) {
        debug_add(str_replace('.', '_', $sms_lib) . "::factory({$sms_lib_api}) returned: {$smsbroker}", MIDCOM_LOG_ERROR);
        return false;
    }
    $smsbroker->location = $sms_lib_location;
    $smsbroker->client_id = $sms_lib_client_id;
    $smsbroker->user = $sms_lib_user;
    $smsbroker->password = $sms_lib_password;
    return $smsbroker->send_sms($to, $message, $from);
}
Example #10
0
 public function testHandler_edit()
 {
     midcom::get('auth')->request_sudo('org.openpsa.products');
     $data = $this->run_handler('org.openpsa.products', array('product', 'edit', self::$_product->guid));
     $this->assertEquals('edit_product', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #11
0
 /**
  * Transfers all parameters attachments and privileges on the current object to another
  * existing Midgard object. You need to have midgard:update, midgard:parameter,
  * midgard:privileges and midgard:attachments privileges on the target object,
  * which must be a persistent MidCOM DBA class instance. (For ease of use, it is recommended
  * to have midgard:owner rights for the target object, which includes the above
  * privileges).
  *
  * <b>Important notes:</b>
  *
  * All records in question will just be moved, not copied!
  * Also, there will be <i>no</i> integrity checking in terms of already existing
  * parameters etc. This feature is mainly geared towards preparing a freshly
  * created final object with the data associated with this temporary object.
  *
  * Any invalid object / missing privilege will trigger a midcom_error.
  *
  * @param midcom_dba_object $object The object to transfer the extensions to.
  */
 function move_extensions_to_object($object)
 {
     if (!midcom::get('dbclassloader')->is_midcom_db_object($object)) {
         throw new midcom_error('The object passed is no valid for move_extensions_to_object.');
     }
     // Validate Privileges
     $object->require_do('midgard:update');
     $object->require_do('midgard:privileges');
     $object->require_do('midgard:parameters');
     $object->require_do('midgard:attachments');
     // Copy parameters from temporary object
     $parameters = $this->list_parameters();
     foreach ($parameters as $domain => $array) {
         foreach ($array as $name => $value) {
             $object->set_parameter($domain, $name, $value);
         }
     }
     // Move attachments from temporary object
     $attachments = $this->list_attachments();
     foreach ($attachments as $attachment) {
         $attachment->parentguid = $object->guid;
         $attachment->update();
     }
     // Privileges are moved using the DBA API as well.
     $privileges = $this->get_privileges();
     if ($privileges) {
         foreach ($privileges as $privilege) {
             $privilege->set_object($object);
             $privilege->store();
         }
     }
 }
Example #12
0
 /**
  * Checks the integrity of the content topic and gets the stored approvals of
  * the content folder.
  *
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_approval($handler_id, array $args, array &$data)
 {
     if (!array_key_exists('guid', $_REQUEST) || !array_key_exists('return_to', $_REQUEST)) {
         throw new midcom_error('Cannot process approval request, request is incomplete.');
     }
     $object = midcom::get('dbfactory')->get_object_by_guid($_REQUEST['guid']);
     $object->require_do('midcom:approve');
     $metadata = midcom_helper_metadata::retrieve($object);
     if (!$metadata) {
         throw new midcom_error("Failed to retrieve Metadata for " . get_class($object) . " {$object->guid}.");
     }
     /**
      * This flag is used to make it possible to explicitly recognize user intent
      * to for example do special operations in midcom.helper.replicator
      */
     if (!isset($GLOBALS['midcom_admin_folder_handler_approvals']) || !is_array($GLOBALS['midcom_admin_folder_handler_approvals'])) {
         $GLOBALS['midcom_admin_folder_handler_approvals'] = array();
     }
     if ($handler_id == '____ais-folder-approve') {
         $GLOBALS['midcom_admin_folder_handler_approvals'][$object->guid] = 'approve';
         $metadata->approve();
     } else {
         $GLOBALS['midcom_admin_folder_handler_approvals'][$object->guid] = 'unapprove';
         $metadata->unapprove();
     }
     return new midcom_response_relocate($_REQUEST['return_to']);
 }
Example #13
0
 /**
  * Loads all entries that need to be processed and processes them.
  */
 public function _on_execute()
 {
     $qb = midcom_services_at_entry_dba::new_query_builder();
     // (to be) start(ed) AND last touched over two days ago
     $qb->add_constraint('start', '<=', time() - 3600 * 24 * 2);
     $qb->begin_group('OR');
     $qb->add_constraint('host', '=', midcom_connection::get('host'));
     $qb->add_constraint('host', '=', 0);
     $qb->end_group();
     $qb->add_constraint('metadata.revised', '<=', date('Y-m-d H:i:s', time() - 3600 * 24 * 2));
     $qb->add_constraint('status', '>=', midcom_services_at_entry_dba::RUNNING);
     midcom::get('auth')->request_sudo('midcom.services.at');
     $qbret = $qb->execute();
     if (empty($qbret)) {
         debug_add('Got empty resultset, exiting');
         midcom::get('auth')->drop_sudo();
         return;
     }
     foreach ($qbret as $entry) {
         debug_add("Deleting dangling entry #{$entry->id}\n", MIDCOM_LOG_INFO);
         debug_print_r("Entry #{$entry->id} dump: ", $entry);
         $entry->delete();
     }
     midcom::get('auth')->drop_sudo();
 }
Example #14
0
 public function testHandler_groupsblock()
 {
     midcom::get('auth')->request_sudo('org.openpsa.products');
     $data = $this->run_handler('org.openpsa.products', array('groupsblock', self::$_group->code, 'foo'));
     $this->assertEquals('groupsblock', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #15
0
 public function test_get_default()
 {
     $config = array('type_config' => array('allow_multiple' => false, 'options' => array(1 => 'value 1', 2 => 'value 2')));
     $default_values = array('test_select_1' => array(2));
     midcom::get('auth')->request_sudo('midcom.helper.datamanager2');
     $dm2_helper = new openpsa_test_dm2_helper();
     $widget = $dm2_helper->get_widget('select', 'select', $config);
     $this->assertNull($widget->get_default(), 'nullstorage test failed');
     $dm2_helper->defaults = array('test_select_1' => 2);
     $widget = $dm2_helper->get_widget('select', 'select', $config);
     $this->assertEquals($default_values, $widget->get_default(), 'nullstorage/default test failed');
     $config['storage'] = 'type';
     $event = new midcom_db_event();
     $dm2_helper = new openpsa_test_dm2_helper($event);
     $widget = $dm2_helper->get_widget('select', 'select', $config);
     $this->assertNull($widget->get_default(), 'create test failed');
     $dm2_helper->defaults = array('test_select_1' => 2);
     $widget = $dm2_helper->get_widget('select', 'select', $config);
     $this->assertEquals($default_values, $widget->get_default(), 'create/default test failed');
     $event = $this->create_object('midcom_db_event');
     $dm2_helper = new openpsa_test_dm2_helper($event);
     $widget = $dm2_helper->get_widget('select', 'select', $config);
     $this->assertEquals('', $widget->get_default(), 'simple test failed');
     $event->type = 2;
     $event->update();
     $dm2_helper = new openpsa_test_dm2_helper($event);
     //Lazy workaround to reuse the default array from above
     $dm2_helper->get_widget('select', 'select', $config);
     $widget = $dm2_helper->get_widget('select', 'select', $config);
     $this->assertEquals($default_values, $widget->get_default(), 'simple/storage test failed');
     midcom::get('auth')->drop_sudo();
 }
Example #16
0
 public function test_handler_notifications()
 {
     midcom::get('auth')->request_sudo('org.openpsa.user');
     $data = $this->run_handler('org.openpsa.user', array('person', 'notifications', self::$_user->guid));
     $this->assertEquals('person_notifications', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #17
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_frontpage($handler_id, array $args, array &$data)
 {
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'salesproject/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create salesproject'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_people.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_sales_salesproject_dba')));
     org_openpsa_widgets_ui::enable_ui_tab();
     $sales_url = org_openpsa_core_siteconfig::get_instance()->get_node_relative_url('org.openpsa.sales');
     $data['tabs'] = array(array('url' => $sales_url . "list/active/", 'title' => $this->_l10n->get('active')), array('url' => $sales_url . "list/won/", 'title' => $this->_l10n->get('won')), array('url' => $sales_url . "list/delivered/", 'title' => $this->_l10n->get('delivered')), array('url' => $sales_url . "list/invoiced/", 'title' => $this->_l10n->get('invoiced')), array('url' => $sales_url . "list/canceled/", 'title' => $this->_l10n->get('canceled')), array('url' => $sales_url . "list/lost/", 'title' => $this->_l10n->get('lost')));
 }
Example #18
0
 public function testCreate()
 {
     midcom::get('auth')->request_sudo('org.openpsa.relatedto');
     $invoice = $this->create_object('org_openpsa_invoices_invoice_dba');
     $salesproject = $this->create_object('org_openpsa_sales_salesproject_dba');
     $relatedto = org_openpsa_relatedto_plugin::create($invoice, 'org.openpsa.invoices', $salesproject, 'org.openpsa.sales');
     $this->assertTrue(is_a($relatedto, 'org_openpsa_relatedto_dba'));
     $this->register_object($relatedto);
     $this->assertEquals($relatedto->status, org_openpsa_relatedto_dba::CONFIRMED);
     $this->assertEquals($relatedto->fromGuid, $invoice->guid);
     $this->assertEquals($relatedto->fromComponent, 'org.openpsa.invoices');
     $this->assertEquals($relatedto->fromClass, 'org_openpsa_invoices_invoice_dba');
     $this->assertEquals($relatedto->toGuid, $salesproject->guid);
     $this->assertEquals($relatedto->toComponent, 'org.openpsa.sales');
     $this->assertEquals($relatedto->toClass, 'org_openpsa_sales_salesproject_dba');
     $relatedto2 = org_openpsa_relatedto_plugin::create($invoice, 'org.openpsa.invoices', $salesproject, 'org.openpsa.sales');
     $this->assertEquals($relatedto2->guid, $relatedto->guid);
     $x = null;
     $stat = org_openpsa_relatedto_plugin::create($x, 'org.openpsa.invoices', $salesproject, 'org.openpsa.sales');
     $this->assertFalse($stat);
     $stat = org_openpsa_relatedto_plugin::create($invoice, 'org.openpsa.invoices', $x, 'org.openpsa.sales');
     $this->assertFalse($stat);
     $relatedto2 = org_openpsa_relatedto_plugin::create($invoice, 'org.openpsa.invoices', $salesproject, 'org.openpsa.sales', org_openpsa_relatedto_dba::NOTRELATED);
     $this->assertEquals($relatedto2->guid, $relatedto->guid);
     $this->assertEquals($relatedto2->status, org_openpsa_relatedto_dba::NOTRELATED);
     $stat = $relatedto->delete();
     $this->assertTrue($stat);
     midcom::get('auth')->drop_sudo();
 }
Example #19
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_frontpage($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'project/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get("create project"), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new-dir.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_projects_project')));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'task/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get("create task"), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new_task.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_projects_task_dba')));
     // List current projects, sort by customer
     $data['customers'] = array();
     $project_qb = org_openpsa_projects_project::new_query_builder();
     $project_qb->add_constraint('status', '<', org_openpsa_projects_task_status_dba::CLOSED);
     $project_qb->add_order('customer.official');
     $project_qb->add_order('end');
     $projects = $project_qb->execute();
     foreach ($projects as $project) {
         if (!isset($data['customers'][$project->customer])) {
             $data['customers'][$project->customer] = array();
         }
         $data['customers'][$project->customer][] = $project;
     }
     // Projects without customer have to be queried separately, see #97
     $nocustomer_qb = org_openpsa_projects_project::new_query_builder();
     $nocustomer_qb->add_constraint('status', '<', org_openpsa_projects_task_status_dba::CLOSED);
     $nocustomer_qb->add_constraint('customer', '=', 0);
     $nocustomer_qb->add_order('end');
     if ($nocustomer_qb->count() > 0) {
         $data['customers'][0] = $nocustomer_qb->execute();
     }
     $closed_qb = org_openpsa_projects_project::new_query_builder();
     $closed_qb->add_constraint('status', '=', org_openpsa_projects_task_status_dba::CLOSED);
     $data['closed_count'] = $closed_qb->count();
     $this->add_stylesheet(MIDCOM_STATIC_URL . "/org.openpsa.core/list.css");
     midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/org.openpsa.projects/frontpage.js');
     midcom::get('head')->set_pagetitle($this->_l10n->get('current projects'));
 }
Example #20
0
 public function testHandler_delete()
 {
     midcom::get('auth')->request_sudo('net.nehmer.static');
     $data = $this->run_handler(self::$_topic, array('delete', self::$_article->guid));
     $this->assertEquals('delete', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #21
0
 public function test_handler_create()
 {
     midcom::get('auth')->request_sudo('org.openpsa.user');
     $data = $this->run_handler('org.openpsa.user', array('group', 'create'));
     $this->assertEquals('group_create', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #22
0
 /**
  * Handle the creation phase
  *
  * @param String $handler_id    Name of the request handler
  * @param array $args           Variable arguments
  * @param array &$data          Public request data, passed by reference
  */
 public function _handler_create($handler_id, array $args, array &$data)
 {
     // Get the root event
     $this->_root_event = org_openpsa_calendar_interface::find_root_event();
     // ACL handling: require create privileges
     $this->_root_event->require_do('midgard:create');
     if (isset($args[0])) {
         $this->_person = new midcom_db_person($args[0]);
     }
     if (isset($args[1])) {
         $this->_requested_time = (int) $args[1];
     }
     // Load the controller instance
     $data['controller'] = $this->get_controller('create');
     // Process form
     switch ($data['controller']->process_form()) {
         case 'save':
             $indexer = new org_openpsa_calendar_midcom_indexer($this->_topic);
             $indexer->index($data['controller']->datamanager);
             //FALL-THROUGH
         //FALL-THROUGH
         case 'cancel':
             midcom::get('head')->add_jsonload('window.opener.location.reload();');
             midcom::get('head')->add_jsonload('window.close();');
             break;
     }
     // Add toolbar items
     org_openpsa_helpers::dm2_savecancel($this);
     // Hide the ROOT style
     midcom::get()->skip_page_style = true;
 }
Example #23
0
 public function testHandler_new()
 {
     midcom::get('auth')->request_sudo('org.openpsa.sales');
     $data = $this->run_handler('org.openpsa.sales', array('salesproject', 'new'));
     $this->assertEquals('salesproject_new', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }
Example #24
0
 /**
  * Loads all (not-archived) smart campaigns and schedules a separate background update for each
  */
 public function _on_execute()
 {
     debug_add('_on_execute called');
     $qb = org_openpsa_directmarketing_campaign_dba::new_query_builder();
     $qb->add_constraint('archived', '=', 0);
     $qb->add_constraint('orgOpenpsaObtype', '=', org_openpsa_directmarketing_campaign_dba::TYPE_SMART);
     midcom::get('auth')->request_sudo('org.openpsa.directmarketing');
     $ret = $qb->execute();
     midcom::get('auth')->drop_sudo();
     if ($ret === false || !is_array($ret)) {
         //TODO: display some error ?
         return false;
     }
     if (empty($ret)) {
         return;
     }
     $i = 1;
     foreach ($ret as $campaign) {
         $next_time = time() + $i++ * 60;
         debug_add("Scheduling member update for campaign #{$campaign->id} ({$campaign->title}) to happen on " . date('Y-m-d H:i:s', $next_time));
         $stat = $campaign->schedule_update_smart_campaign_members($next_time);
         if (!$stat) {
             //TODO: Display some error ?
         }
     }
     debug_add('Done');
     return;
 }
Example #25
0
 public function testCRUD()
 {
     midcom::get('auth')->request_sudo('org.openpsa.calendar');
     $event = new org_openpsa_calendar_event_dba();
     $stat = $event->create();
     $this->assertTrue($stat);
     $this->register_object($event);
     $root_event = org_openpsa_calendar_interface::find_root_event();
     $this->assertEquals($root_event->id, $event->up);
     $stat = $event->update();
     $this->assertFalse($stat);
     $start = $this->_mktime(time() - 60 * 60);
     $event->start = $start;
     $stat = $event->update();
     $this->assertFalse($stat);
     $end = $this->_mktime(time() + 60 * 60);
     $event->end = $end;
     $stat = $event->update();
     $this->assertTrue($stat);
     $this->assertEquals($start + 1, $event->start);
     $this->assertEquals($end, $event->end);
     $stat = $event->delete();
     $this->assertTrue($stat);
     midcom::get('auth')->drop_sudo();
 }
Example #26
0
 /**
  * Find all old temporary reports and clear them.
  */
 public function _on_execute()
 {
     //Disable limits, TODO: think if this could be done in smaller chunks to save memory.
     midcom::get()->disable_limits();
     debug_add('_on_execute called');
     $days = $this->_config->get('temporary_report_max_age');
     if ($days == 0) {
         debug_add('temporary_report_max_age evaluates to zero, aborting');
         return;
     }
     $th = time() - $days * 3600 * 24;
     $qb = org_openpsa_reports_query_dba::new_query_builder();
     $qb->add_constraint('metadata.created', '<', $th);
     $qb->add_constraint('orgOpenpsaObtype', '=', ORG_OPENPSA_OBTYPE_REPORT_TEMPORARY);
     $ret = $qb->execute_unchecked();
     if ($ret === false || !is_array($ret)) {
         //TODO: display some error ?
         return false;
     }
     if (empty($ret)) {
         debug_add('No results, returning early.');
         return;
     }
     foreach ($ret as $query) {
         debug_add("removing temporary query #{$query->id}");
         $stat = $query->delete();
         if (!$stat) {
             debug_add("FAILED to delete query #{$query->id}, errstr: " . midcom_connection::get_error_string(), MIDCOM_LOG_WARN);
         }
     }
     debug_add('Done');
     return;
 }
Example #27
0
 /**
  * Handler method for edit page
  *
  * @param string $handler_id Name of the used handler
  * @param mixed $args Array containing the variable arguments passed to the handler
  * @param mixed &$data Data passed to the show method
  */
 public function _handler_edit($handler_id, array $args, array &$data)
 {
     $qb = org_openpsa_slideshow_image_dba::new_query_builder();
     $qb->add_constraint('topic', '=', $this->_topic->id);
     $qb->add_order('position');
     $data['images'] = $qb->execute();
     $head = midcom::get('head');
     $head->enable_jquery();
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.core.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.widget.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.mouse.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.draggable.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.droppable.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.sortable.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.progressbar.min.js');
     $head->add_jsfile(MIDCOM_STATIC_URL . '/midcom.services.uimessages/jquery.midcom_services_uimessages.js');
     $head->add_jsfile(MIDCOM_STATIC_URL . '/jQuery/jquery.timers.src.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.effect.min.js');
     $head->add_jsfile(MIDCOM_JQUERY_UI_URL . '/ui/jquery.ui.effect-pulsate.min.js');
     $head->add_jsfile(MIDCOM_STATIC_URL . '/' . $this->_component . '/edit.js');
     $head->add_stylesheet(MIDCOM_STATIC_URL . '/' . $this->_component . '/edit.css');
     $head->add_jquery_ui_theme(array('progressbar'));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "", MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('view'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/view.png'));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "recreate/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('recreate derived images'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_refresh.png'));
 }
Example #28
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_create($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     midcom::get('auth')->require_user_do('midgard:create', null, 'org_openpsa_contacts_person_dba');
     if (count($args) > 0) {
         // Get the organization
         $this->_group = new org_openpsa_contacts_group_dba($args[0]);
         $this->_group->require_do('midgard:create');
         midcom::get('head')->set_pagetitle($this->_group->official);
     }
     $data['controller'] = $this->get_controller('create');
     switch ($data['controller']->process_form()) {
         case 'save':
             // Index the person
             $indexer = new org_openpsa_contacts_midcom_indexer($this->_topic);
             $indexer->index($data['controller']->datamanager);
             return new midcom_response_relocate("person/{$this->_person->guid}/");
         case 'cancel':
             return new midcom_response_relocate('');
     }
     // Add toolbar items
     org_openpsa_helpers::dm2_savecancel($this);
     org_openpsa_contacts_viewer::add_breadcrumb_path_for_group($this->_group, $this);
     $this->add_breadcrumb("", sprintf($this->_l10n_midcom->get('create %s'), $this->_l10n->get('person')));
 }
Example #29
0
 /**
  * This helper function searches for a snippet either in the Filesystem
  * or in the database and returns its content or code-field, respectively.
  *
  * Prefix the snippet Path with 'file:' for retrieval of a file relative to
  * MIDCOM_ROOT; omit it to get the code field of a Snippet.
  *
  * Any error (files not found) will return null. If you want to trigger an error,
  * look for midcom_helper_misc::get_snippet_content.
  *
  * @param string $path  The URL to the snippet.
  * @return string       The content of the snippet/file.
  */
 public static function get_snippet_content_graceful($path)
 {
     static $cached_snippets = array();
     if (array_key_exists($path, $cached_snippets)) {
         return $cached_snippets[$path];
     }
     if (substr($path, 0, 5) == 'file:') {
         $filename = MIDCOM_ROOT . substr($path, 5);
         if (!file_exists($filename)) {
             $cached_snippets[$path] = null;
             return null;
         }
         $data = file_get_contents($filename);
     } else {
         $snippet = new midgard_snippet();
         try {
             $snippet->get_by_path($path);
         } catch (Exception $e) {
             $cached_snippets[$path] = null;
             return null;
         }
         midcom::get('cache')->content->register($snippet->guid);
         $data = $snippet->code;
     }
     $cached_snippets[$path] = $data;
     return $data;
 }
Example #30
0
 public function testHandler_hours_create_task()
 {
     midcom::get('auth')->request_sudo('org.openpsa.expenses');
     $data = $this->run_handler('org.openpsa.expenses', array('hours', 'create', 'hour_report', self::$_task->guid));
     $this->assertEquals('hours_create_task', $data['handler_id']);
     midcom::get('auth')->drop_sudo();
 }