Advertisement:

Author Topic: (SOLVED-core modif) Subject(optional) is not passed into the email_send_friend!  (Read 1959 times)

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
The field I'm talking about can be seen here: https://demo.osclass.org/general/item/send-friend/808

The bellow code is colecting the subject from the file: oc-content/themes/bender/item-send-friend.php


Code: [Select]
            <div class="control-group">
                <label class="control-label" for="subject">
                    <?php _e('Subject (optional)''bender'); ?>
                </label>
                <div class="controls">
                    <?php ContactForm::the_subject(); ?>
                </div>
            </div>

But in the admin area there is no {Subject} to relate to and put it in the email.

In oc-includes/osclass/emails.php the function does not have the subject.

Code: [Select]
    function fn_email_send_friend($aItem) {
        $mPages = new Page();
        $aPage = $mPages->findByInternalName('email_send_friend');
        $locale = osc_current_user_locale();

        if(isset($aPage['locale'][$locale]['s_title'])) {
            $content = $aPage['locale'][$locale];
        } else {
            $content = current($aPage['locale']);
        }

        $item_url = osc_item_url();
        $item_url = '<a href="'.$item_url.'" >'.$item_url.'</a>';

        $words   = array();
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}'
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url
        );

        $title = osc_apply_filter('email_send_friend_title_after', osc_mailBeauty(osc_apply_filter('email_title', osc_apply_filter('email_send_friend_title', $content['s_title'], $aItem)), $words), $aItem);
        $body  = osc_apply_filter('email_send_friend_description_after', osc_mailBeauty(osc_apply_filter('email_description', osc_apply_filter('email_send_friend_description', $content['s_text'], $aItem)), $words), $aItem);

        $params = array(
            'from'      => osc_contact_email(),
            'from_name' => osc_page_title(),
            'reply_to'  => $aItem['yourEmail'],
            'subject'   => $title,
            'to'        => $aItem['friendEmail'],
            'to_name'   => $aItem['friendName'],
            'body'      => $body
        );

        if( osc_notify_contact_friends() ) {
            $params['add_bcc'] = osc_contact_email();
        }

        osc_sendMail($params);
    }
    osc_add_hook('hook_email_send_friend', 'fn_email_send_friend');

Question:

Code: [Select]
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}',
            '{SUBJECT}' // new code
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url,
             code //what to insert here?
        );

aItem['subject']   ?

The function for that subject from oc-includes/osclass/frm/Contact.form.class.php

Code: [Select]
        static public function the_subject() {
            if( Session::newInstance()->_getForm("subject") != "" ) {
                $subject = Session::newInstance()->_getForm("subject");
                parent::generic_input_text("subject", $subject, null, false);
            } else {
                parent::generic_input_text("subject", "", null, false);
            }
            return true;
        }

and the generic_input_text function from oc-includes/osclass/frm/Form.form.class.php

Code: [Select]
        static protected function generic_input_text($name, $value, $maxLength = null, $readOnly = false, $autocomplete = true) {
            $name = osc_esc_html($name);
            echo '<input id="' . preg_replace('|([^_a-zA-Z0-9-]+)|', '', $name) . '" type="text" name="' . $name . '" value="' . osc_esc_html(htmlentities($value, ENT_COMPAT, "UTF-8")) . '"';
            if (isset($maxLength)) echo ' maxlength="' . osc_esc_html($maxLength) . '"';
            if (!$autocomplete) echo ' autocomplete="off"';
            if ($readOnly) echo ' disabled="disabled" readonly="readonly"';
            echo ' />';
        }
« Last Edit: July 16, 2017, 11:48:37 pm by marius-ciclistu »

SmaRTeY

  • Osclass Hero
  • Hero Member
  • *
  • Posts: 2519
Re: How to add subject(optional) in the email_send_friend?
« Reply #1 on: July 13, 2017, 03:58:55 am »
You mention in 'In oc-includes/osclass/emails.php the function does not have the subject.' there is no subject but there is; ''subject'   => $title,'

I am trying to understand what you want to do, can you explain a bit more?

The field I'm talking about can be seen here: https://demo.osclass.org/general/item/send-friend/808

The bellow code is colecting the subject from the file: oc-content/themes/bender/item-send-friend.php


Code: [Select]
            <div class="control-group">
                <label class="control-label" for="subject">
                    <?php _e('Subject (optional)''bender'); ?>
                </label>
                <div class="controls">
                    <?php ContactForm::the_subject(); ?>
                </div>
            </div>

But in the admin area there is no {Subject} to relate to and put it in the email.

In oc-includes/osclass/emails.php the function does not have the subject.

Code: [Select]
    function fn_email_send_friend($aItem) {
        $mPages = new Page();
        $aPage = $mPages->findByInternalName('email_send_friend');
        $locale = osc_current_user_locale();

        if(isset($aPage['locale'][$locale]['s_title'])) {
            $content = $aPage['locale'][$locale];
        } else {
            $content = current($aPage['locale']);
        }

        $item_url = osc_item_url();
        $item_url = '<a href="'.$item_url.'" >'.$item_url.'</a>';

        $words   = array();
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}'
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url
        );

        $title = osc_apply_filter('email_send_friend_title_after', osc_mailBeauty(osc_apply_filter('email_title', osc_apply_filter('email_send_friend_title', $content['s_title'], $aItem)), $words), $aItem);
        $body  = osc_apply_filter('email_send_friend_description_after', osc_mailBeauty(osc_apply_filter('email_description', osc_apply_filter('email_send_friend_description', $content['s_text'], $aItem)), $words), $aItem);

        $params = array(
            'from'      => osc_contact_email(),
            'from_name' => osc_page_title(),
            'reply_to'  => $aItem['yourEmail'],
            'subject'   => $title,
            'to'        => $aItem['friendEmail'],
            'to_name'   => $aItem['friendName'],
            'body'      => $body
        );

        if( osc_notify_contact_friends() ) {
            $params['add_bcc'] = osc_contact_email();
        }

        osc_sendMail($params);
    }
    osc_add_hook('hook_email_send_friend', 'fn_email_send_friend');

Question:

Code: [Select]
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}',
            '{SUBJECT}' // new code
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url,
             code //what to insert here?
        );

aItem['subject']   ?

The function for that subject from oc-includes/osclass/frm/Contact.form.class.php

Code: [Select]
        static public function the_subject() {
            if( Session::newInstance()->_getForm("subject") != "" ) {
                $subject = Session::newInstance()->_getForm("subject");
                parent::generic_input_text("subject", $subject, null, false);
            } else {
                parent::generic_input_text("subject", "", null, false);
            }
            return true;
        }

and the generic_input_text function from oc-includes/osclass/frm/Form.form.class.php

Code: [Select]
        static protected function generic_input_text($name, $value, $maxLength = null, $readOnly = false, $autocomplete = true) {
            $name = osc_esc_html($name);
            echo '<input id="' . preg_replace('|([^_a-zA-Z0-9-]+)|', '', $name) . '" type="text" name="' . $name . '" value="' . osc_esc_html(htmlentities($value, ENT_COMPAT, "UTF-8")) . '"';
            if (isset($maxLength)) echo ' maxlength="' . osc_esc_html($maxLength) . '"';
            if (!$autocomplete) echo ' autocomplete="off"';
            if ($readOnly) echo ' disabled="disabled" readonly="readonly"';
            echo ' />';
        }

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: How to add subject(optional) in the email_send_friend?
« Reply #2 on: July 13, 2017, 09:33:30 am »
That email does not pass the subject entered(optionally) by a user that sends a link to a friend.
See the attached picture. That field is not used/passed into the array that replaces the {....} with the values entered by the user in the email_send_friend email template.
« Last Edit: July 13, 2017, 09:47:12 pm by marius-ciclistu »

SmaRTeY

  • Osclass Hero
  • Hero Member
  • *
  • Posts: 2519
Re: How to add subject(optional) in the email_send_friend?
« Reply #3 on: July 13, 2017, 09:55:10 pm »
Ah okay, you want to add an optional subject that user can enter instead of the default subject created by Osclass, correct?

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: How to add subject(optional) in the email_send_friend?
« Reply #4 on: July 13, 2017, 10:10:40 pm »
I want to use that subject that the user enters (because it's default in osclass), and I want to insert it in the email title, yes, but I'm not shure how to put it in that array.

Code: [Select]
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url,
             code //what to insert here?
        );

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: How to add subject(optional) in the email_send_friend?
« Reply #5 on: July 13, 2017, 11:41:50 pm »
You mention in 'In oc-includes/osclass/emails.php the function does not have the subject.' there is no subject but there is; ''subject'   => $title,'

I am trying to understand what you want to do, can you explain a bit more?



''subject'   => $title, is the email's subject and gets the title string formed  here:

Code: [Select]
$title = osc_apply_filter('email_send_friend_title_after', osc_mailBeauty(osc_apply_filter('email_title', osc_apply_filter('email_send_friend_title', $content['s_title'], $aItem)), $words), $aItem);
But I'm talking about another subject as you saw in the previous picture.

If that value is lost, then I should remove that field from there, as it is useless.

EDIT: Where does this code put the subject string?

Code: [Select]
        static public function the_subject() {
            if( Session::newInstance()->_getForm("subject") != "" ) {
                $subject = Session::newInstance()->_getForm("subject");
                parent::generic_input_text("subject", $subject, null, false);
            } else {
                parent::generic_input_text("subject", "", null, false);
            }
            return true;
        }
« Last Edit: July 13, 2017, 11:58:39 pm by marius-ciclistu »

SmaRTeY

  • Osclass Hero
  • Hero Member
  • *
  • Posts: 2519
Re: How to add subject(optional) in the email_send_friend?
« Reply #6 on: July 15, 2017, 12:27:45 am »
Ok, I'll have a look at the sent-friends form, been a while since I looked at it 8)

The code:
Code: [Select]
static public function the_subject() {
            if( Session::newInstance()->_getForm("subject") != "" ) {
                $subject = Session::newInstance()->_getForm("subject");
                parent::generic_input_text("subject", $subject, null, false);
            } else {
                parent::generic_input_text("subject", "", null, false);
            }
            return true;
        }
seems to perform a GET (key) related to the 'form' key using the Osclass SESSION class.
The subject (or "") is returned to parent form (form used when calling this function) based on the FORM class.

Checkout the Session.php class in /osclass/core folder.

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: How to add subject(optional) in the email_send_friend?
« Reply #7 on: July 15, 2017, 01:00:49 am »
I'm learning as I write to you now:
In that file there is :
Code: [Select]
class Session {
        //attributes
        private $session;
        private static $instance;

        public static function newInstance() {
            if(!self::$instance instanceof self) {
                self::$instance = new self;
            }
            return self::$instance;
        }

And all I can understand is that  this Session::newInstance() means  that the newInstance() function from Session class is called.

SmaRTeY

  • Osclass Hero
  • Hero Member
  • *
  • Posts: 2519
Re: How to add subject(optional) in the email_send_friend?
« Reply #8 on: July 16, 2017, 03:24:12 pm »
Yes, the session class (object) keeps certain values, the instantiating of the class either creates a new class or re-opens the existing one and returns that one. This means there's Always one class to work with and prevents multiple classes from being created in memory. The session class is 'alive' during the session of a visitor. Each visitor will have it's own 'session' object holding values which are used by system. Similar working for cookie class etc.

I'm learning as I write to you now:
In that file there is :
Code: [Select]
class Session {
        //attributes
        private $session;
        private static $instance;

        public static function newInstance() {
            if(!self::$instance instanceof self) {
                self::$instance = new self;
            }
            return self::$instance;
        }

And all I can understand is that  this Session::newInstance() means  that the newInstance() function from Session class is called.

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: Subject(optional) is not passed into the email_send_friend!
« Reply #9 on: July 16, 2017, 04:42:47 pm »
Thanks for this, but just now, this is way over my head :D I didn't get so far with learning php, but leaving this aside, it seems strange to collect that field and then not use it, from osclass script's point of view.
So if someone could point out the line of code that can be inserted here:

Code: [Select]
Code: [Select]
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}',
            '{SUBJECT}' // new code
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            $aItem['s_title'],
            $aItem['message'],
            osc_item_url(),
            $item_url,
             code //what to insert here?
        );

I would apreciate it.

If not, I'll remove that field from that page, no big deal.

EDIT:
Is that field passed via aItem['subject']?
« Last Edit: July 16, 2017, 04:45:49 pm by marius-ciclistu »

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: Subject(optional) is not passed into the email_send_friend!
« Reply #10 on: July 16, 2017, 11:28:57 pm »
I just tested with
Code: [Select]
$aItem['subject']
It doesn't  work.

EDIT:

in oc-includes/osclass/ItemActions.php the following code calls the hook with the aItem as parameter.

Code: [Select]
public function send_friend()
        {
            // get data for this function
            $aItem = $this->prepareDataForFunction( 'send_friend' );

            $item       = $aItem['item'];
            $s_title    = $aItem['s_title'];
            View::newInstance()->_exportVariableToView('item', $item);

            osc_run_hook('hook_email_send_friend', $aItem);
            $item_url   = osc_item_url();
            $item_url = '<a href="'.$item_url.'" >'.$item_url.'</a>';
            Params::setParam('item_url', $item_url );
            osc_add_flash_ok_message( sprintf(_m('We just sent your message to %s'), $aItem['friendName']) );
            return true;
        }

And the following code does not have the subject:

Code: [Select]
/**
         * Return an array with all data necessary for do the action
         * @param <type> $action
         */
        private function prepareDataForFunction( $action )
        {
            $aItem = array();

            switch ( $action ){
                case 'send_friend':
                    $item = $this->manager->findByPrimaryKey( Params::getParam('id') );
                    if ($item===false || !is_array($item) || count($item)==0)
                        break;

                    $aItem['item']          = $item;
                    View::newInstance()->_exportVariableToView('item', $aItem['item']);
                    $aItem['yourName']      = Params::getParam('yourName');
                    $aItem['yourEmail']     = Params::getParam('yourEmail');

                    $aItem['friendName']    = Params::getParam('friendName');
                    $aItem['friendEmail']   = Params::getParam('friendEmail');

                    $aItem['s_title']       = $item['s_title'];
                    $aItem['message']       = Params::getParam('message');
                break;
                case 'contact':
« Last Edit: July 16, 2017, 11:35:46 pm by marius-ciclistu »

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: Subject(optional) is not passed into the email_send_friend!
« Reply #11 on: July 16, 2017, 11:45:35 pm »
Incredible simple solution.

PLEASE INTEGRATE THIS INTO THE DOWNLOAD PACKAGE.

Step 1:
EDIT /oc-includes/osclass/ItemActions.php

put this code:

Code: [Select]
        /**
         * Return an array with all data necessary for do the action
         * @param <type> $action
         */
        private function prepareDataForFunction( $action )
        {
            $aItem = array();

            switch ( $action ){
                case 'send_friend':
                    $item = $this->manager->findByPrimaryKey( Params::getParam('id') );
                    if ($item===false || !is_array($item) || count($item)==0)
                        break;

                    $aItem['item']          = $item;
                    View::newInstance()->_exportVariableToView('item', $aItem['item']);
                    $aItem['yourName']      = Params::getParam('yourName');
                    $aItem['yourEmail']     = Params::getParam('yourEmail');

                    $aItem['friendName']    = Params::getParam('friendName');
                    $aItem['friendEmail']   = Params::getParam('friendEmail');

                    $aItem['s_title']       = $item['s_title'];
                    $aItem['message']       = Params::getParam('message');
                    $aItem['subject']       = Params::getParam('subject');
                break;

instead of this

Code: [Select]
        /**
         * Return an array with all data necessary for do the action
         * @param <type> $action
         */
        private function prepareDataForFunction( $action )
        {
            $aItem = array();

            switch ( $action ){
                case 'send_friend':
                    $item = $this->manager->findByPrimaryKey( Params::getParam('id') );
                    if ($item===false || !is_array($item) || count($item)==0)
                        break;

                    $aItem['item']          = $item;
                    View::newInstance()->_exportVariableToView('item', $aItem['item']);
                    $aItem['yourName']      = Params::getParam('yourName');
                    $aItem['yourEmail']     = Params::getParam('yourEmail');

                    $aItem['friendName']    = Params::getParam('friendName');
                    $aItem['friendEmail']   = Params::getParam('friendEmail');

                    $aItem['s_title']       = $item['s_title'];
                    $aItem['message']       = Params::getParam('message');
                break;

Step 2.
oc-includes/osclass/emails.php

put this code:

Code: [Select]
    function fn_email_send_friend($aItem) {
        $mPages = new Page();
        $aPage = $mPages->findByInternalName('email_send_friend');
        $locale = osc_current_user_locale();

        if(isset($aPage['locale'][$locale]['s_title'])) {
            $content = $aPage['locale'][$locale];
        } else {
            $content = current($aPage['locale']);
        }

        $item_url = osc_item_url();
        $item_url = '<a href="'.$item_url.'" >'.$item_url.'</a>';

        $words   = array();
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}',
            '{SUBJECT}'
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url,
            $aItem['subject']
        );

instead of:

Code: [Select]
    function fn_email_send_friend($aItem) {
        $mPages = new Page();
        $aPage = $mPages->findByInternalName('email_send_friend');
        $locale = osc_current_user_locale();

        if(isset($aPage['locale'][$locale]['s_title'])) {
            $content = $aPage['locale'][$locale];
        } else {
            $content = current($aPage['locale']);
        }

        $item_url = osc_item_url();
        $item_url = '<a href="'.$item_url.'" >'.$item_url.'</a>';

        $words   = array();
        $words[] = array(
            '{FRIEND_NAME}',
            '{USER_NAME}',
            '{USER_EMAIL}',
            '{FRIEND_EMAIL}',
            '{ITEM_TITLE}',
            '{COMMENT}',
            '{ITEM_URL}',
            '{ITEM_LINK}'
        );
        $words[] = array(
            $aItem['friendName'],
            $aItem['yourName'],
            $aItem['yourEmail'],
            $aItem['friendEmail'],
            removeunderline($aItem['s_title']),
            $aItem['message'],
            osc_item_url(),
            $item_url
        );

Step 3
/oc-includes/osclass/classes/EmailVariables.php

Add this code

Code: [Select]
                ),'email_send_friend' => array(
                    '{FRIEND_NAME}',
                    '{USER_NAME}',
                    '{USER_EMAIL}',
                    '{FRIEND_EMAIL}',
                    '{ITEM_TITLE}',
                    '{COMMENT}',
                    '{ITEM_URL}',
                    '{ITEM_LINK}',
                    '{SUBJECT}'


instead of:

Code: [Select]
                ),'email_send_friend' => array(
                    '{FRIEND_NAME}',
                    '{USER_NAME}',
                    '{USER_EMAIL}',
                    '{FRIEND_EMAIL}',
                    '{ITEM_TITLE}',
                    '{COMMENT}',
                    '{ITEM_URL}',
                    '{ITEM_LINK}'

Final step: Edit email_send_friend in admin area so it includes the {SUBJECT}
« Last Edit: July 16, 2017, 11:47:48 pm by marius-ciclistu »

SmaRTeY

  • Osclass Hero
  • Hero Member
  • *
  • Posts: 2519
Re: Subject(optional) is not passed into the email_send_friend!
« Reply #12 on: July 17, 2017, 02:05:22 pm »
Nice catch!
I 'd rather see this as an Admin config option 8)

Incredible simple solution.

PLEASE INTEGRATE THIS INTO THE DOWNLOAD PACKAGE.

marius-ciclistu

  • issues
  • Hero Member
  • *
  • Posts: 1652
  • "BE GRATEFUL TO THOSE THAT SUPPORTED YOU"
Re: Subject(optional) is not passed into the email_send_friend!
« Reply #13 on: July 17, 2017, 04:11:22 pm »
Nice catch!
I 'd rather see this as an Admin config option 8)

Incredible simple solution.

PLEASE INTEGRATE THIS INTO THE DOWNLOAD PACKAGE.

Well if you do the above modifications, you will see {SUBJECT} in your email model send friend right sidebar.
« Last Edit: July 18, 2017, 09:45:17 am by marius-ciclistu »

SmaRTeY

  • Osclass Hero
  • Hero Member
  • *
  • Posts: 2519
Well it's nice to see another 'mod' in the forums anyway, there are several more and it definately helps getting ideas and helping others so thank you is in place ;)