Changeset 26271


Ignore:
Timestamp:
06/03/10 12:29:09 (7 years ago)
Author:
gudd
Message:

#Refs 1846

  • added notify date to schema
  • edit admin-handler to create/delete/edit the corresponding at_entries for the notification
  • edit locales & styles
  • added optional parameter to create of relatedto-objects (to pass extra-properties)
Location:
branches/ragnaroek/midcom
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/ragnaroek/midcom/org.openpsa.relatedto/plugin.php

    r25242 r26271  
    3434     * @param string $to_component The to component name
    3535     * @param int $status The status of the relation
     36     * @param array $extra Array with the possible extra-properties
    3637     * @return mixed The newly-created relatedto object or false on failure
    3738     */
    38     static function create(&$from_obj, $from_component, &$to_obj, $to_component, $status = false)
     39    static function create(&$from_obj, $from_component, &$to_obj, $to_component, $status = false , $extra = false)
    3940    {
    4041        if (   !is_object($from_obj)
     
    5960        $rel->toComponent = $to_component;
    6061        $rel->status = $status;
     62        if(!empty($extra))
     63        {
     64            foreach($extra as $extra_key => $extra_value)
     65            {
     66                $rel->$extra_key = $extra_value;
     67            }
     68        }
    6169
    6270        $stat = $rel->create();
  • branches/ragnaroek/midcom/org.openpsa.sales/config/mgdschema.xml

    r23133 r26271  
    113113                </description>
    114114        </property>
     115        <property name="notify" type="integer" />
    115116
    116117        <property name="state" type="integer">
  • branches/ragnaroek/midcom/org.openpsa.sales/config/schemadb_deliverable_default.inc

    r25546 r26271  
    8888            ),
    8989        ),
     90        'notify' => Array
     91        (
     92            'title' => 'notify date',
     93            'storage' => null,
     94            'type' => 'date',
     95            'type_config' => Array
     96            (
     97                'storage_type' => 'UNIXTIME'
     98            ),
     99            'widget' => 'jsdate',
     100            'widget_config' => Array
     101            (
     102                'show_time' => false,
     103            ),
     104        ),
    90105        'pricePerUnit' => Array
    91106        (
     
    304319            ),
    305320        ),
     321        'notify' => Array
     322        (
     323            'title' => 'notify date',
     324            'storage' => 'notify',
     325            'type' => 'date',
     326            'type_config' => Array
     327            (
     328                'storage_type' => 'UNIXTIME'
     329            ),
     330            'widget' => 'jsdate',
     331            'widget_config' => Array
     332            (
     333                'show_time' => false,
     334            ),
     335        ),
    306336
    307337        'at_entry' => Array
  • branches/ragnaroek/midcom/org.openpsa.sales/handler/deliverable/admin.php

    r25728 r26271  
    277277                    }
    278278                }
     279                $this->_process_notify_date($formdata);
    279280
    280281                // Reindex the deliverable
     
    385386        midcom_show_style('show-deliverable-delete');
    386387    }
     388    /**
     389     * function to process the notify date in the passed formdata of the datamanger
     390     * creates/edits/deletes the corresponding at_entry if needed
     391     *
     392     * @param object $formdata The Formdata of the datamanager containing the notify_date
     393     */
     394    private function _process_notify_date($formdata)
     395    {
     396        //get the time of passed notify date
     397        $unix_time = mktime($formdata['notify']->value->hour ,$formdata['notify']->value->minute, 1 , $formdata['notify']->value->month , $formdata['notify']->value->day , $formdata['notify']->value->year);
     398
     399        //check if there is already an at_entry
     400        $mc_entry = org_openpsa_relatedto_dba::new_collector('toGuid' , $this->_deliverable->guid);
     401        $mc_entry->set_key_property('guid');
     402        $mc_entry->add_value_property('fromGuid');
     403        $mc_entry->add_constraint('fromClass' , '=' , 'midcom_services_at_entry_dba');
     404        $mc_entry->add_constraint('toClass' , '=' , 'org_openpsa_sales_salesproject_deliverable_dba');
     405        $mc_entry->add_constraint('toExtra' , '=' , 'notify_at_entry');
     406        $mc_entry->execute();
     407        $entry_keys = $mc_entry->list_keys();
     408        //check date
     409        if($formdata['notify']->value->year != '0000' )//&& $unix_time > time())
     410        {
     411            $notification_entry = null;
     412
     413            if(count($entry_keys) == 0)
     414            {
     415                $notification_entry = new midcom_services_at_entry_dba();
     416                $notification_entry->create();
     417                //relatedto from notifcation to deliverable
     418                org_openpsa_relatedto_plugin::create($notification_entry, 'midcom.services.at', $this->_deliverable , 'org.openpsa.sales' , false , array('toExtra' => 'notify_at_entry'));
     419            }
     420            else
     421            {
     422                //get guid of at_entry
     423                foreach($entry_keys as $key => $empty)
     424                {
     425                    $notification_entry = new midcom_services_at_entry_dba($mc_entry->get_subkey($key , 'fromGuid'));
     426                    //check if related at_entry exists
     427                    if(empty($notification_entry->guid))
     428                    {
     429                        //relatedto links to a non-existing at_entry - so create a new one an link to it
     430                        $notification_entry = new midcom_services_at_entry_dba();
     431                        $notification_entry->create();
     432                        $relatedto = new org_openpsa_relatedto_dba($key);
     433                        $relatedto->fromGuid = $notification_entry->guid;
     434                        $relatedto->update();
     435                    }
     436                    break;
     437                }
     438            }
     439            $notification_entry->start = $unix_time;
     440            $notification_entry->method = 'new_notification_message';
     441            $notification_entry->component = 'org.openpsa.sales';
     442            $notification_entry->arguments = array('deliverable' => $this->_deliverable->guid);
     443            $notification_entry->update();
     444        }//void date - so delete existing at_entrys for this notify_date
     445        elseif($formdata['notify']->value->year == '0000')
     446        {
     447            foreach($entry_keys as $key => $empty)
     448            {
     449                $notification_entry = new midcom_services_at_entry_dba($mc_entry->get_subkey($key , 'fromGuid'));
     450                //check if related at_entry exists & delete it
     451                if(!empty($notification_entry->guid))
     452                {
     453                    $notification_entry->delete();
     454                }
     455            }
     456        }
     457    }
    387458}
    388459
  • branches/ragnaroek/midcom/org.openpsa.sales/locale/default.de.txt

    r25546 r26271  
    192192---STRINGEND
    193193
     194---STRING notify date
     195Benachrichtigungsdatum
     196---STRINGEND
     197
    194198---STRING ordered
    195199Bestellt
  • branches/ragnaroek/midcom/org.openpsa.sales/locale/default.en.txt

    r23448 r26271  
    192192---STRINGEND
    193193
     194---STRING notify date
     195Notification date
     196---STRINGEND
     197
    194198---STRING ordered
    195199Ordered
  • branches/ragnaroek/midcom/org.openpsa.sales/midcom/interfaces.php

    r25183 r26271  
    280280        return $deliverable->new_subscription_cycle($args['cycle']);
    281281    }
     282
     283    /**
     284     * function to send a notification to owner of the deliverable - guid of deliverable is passed
     285     */
     286    function new_notification_message($args , &$handler)
     287    {
     288        debug_push_class(__CLASS__, __FUNCTION__);
     289        if (!isset($args['deliverable']))
     290        {
     291            $msg = 'deliverable GUID not set, aborting';
     292            debug_add($msg, MIDCOM_LOG_ERROR);
     293            $handler->print_error($msg);
     294            debug_pop();
     295            return false;
     296        }
     297        $deliverable = new org_openpsa_sales_salesproject_deliverable_dba($args['deliverable']);
     298        if (empty($deliverable->guid))
     299        {
     300            $msg = 'no deliverable with passed GUID:' . $args['deliverable'] . ' , aborting';
     301            debug_add($msg, MIDCOM_LOG_ERROR);
     302            $handler->print_error($msg);
     303            debug_pop();
     304            return false;
     305        }
     306
     307        $notify_msg = $deliverable->title;
     308        //get the owner of the sales-project the deliverable belongs to
     309        $project = new org_openpsa_sales_salesproject_dba($deliverable->salesproject);
     310        if(empty($project->guid))
     311        {
     312            $msg = 'no project(id:' . $deliverable->salesproject . ') found for deliverable with passed GUID:' . $args['deliverable'] . ' , aborting';
     313            debug_add($msg, MIDCOM_LOG_ERROR);
     314            $handler->print_error($msg);
     315            debug_pop();
     316            return false;
     317        }
     318        $_MIDCOM->load_library('org.openpsa.notifications');
     319
     320        return org_openpsa_notifications::notify('org.openpsa.sales:new_notification_message', $project->owner, $notify_msg);
     321    }
    282322}
    283323?>
  • branches/ragnaroek/midcom/org.openpsa.sales/style/show-deliverable-subscription.php

    r25642 r26271  
    107107                </tr>
    108108                <?php
     109                if($data['deliverable']->notify)
     110                {
     111                    ?>
     112                    <tr>
     113                        <th><?php echo $data['l10n']->get('notify date'); ?></th>
     114                        <td><?php echo date('d.m.Y' , $data['deliverable']->notify); ?></td>
     115                    </tr>
     116                    <?php
     117                }
    109118                if ($data['deliverable']->supplier)
    110119                {
  • branches/ragnaroek/midcom/org.openpsa.sales/style/show-deliverable.php

    r22825 r26271  
    4646                        <th><?php echo $data['l10n']->get('supplier'); ?></th>
    4747                        <td>&(view['supplier']:h);</td>
     48                    </tr>
     49                    <?php
     50                }
     51                if($data['deliverable']->notify)
     52                {
     53                    ?>
     54                    <tr>
     55                        <th><?php echo $data['l10n']->get('notify date'); ?></th>
     56                        <td><?php echo date('d.m.Y' , $data['deliverable']->notify); ?></td>
    4857                    </tr>
    4958                    <?php
Note: See TracChangeset for help on using the changeset viewer.