/**
  * @param array $attributes
  * @return PaymentLog
  * @throws CException
  */
 public static function create(array $attributes)
 {
     $model = new PaymentLog();
     $model->attributes = $attributes;
     $model->createdAt = date('Y-m-d H:i:s');
     if (!$model->save()) {
         throw new CException('Failed to save payment log.');
     }
     return $model;
 }
 public function run()
 {
     try {
         $params = Yii::app()->order->getPaymentFormParams();
     } catch (Exception $e) {
         header("Content-type: application/json");
         $params = array();
         $params['error'] = $e->getMessage();
         echo json_encode($params);
         exit;
     }
     // FIXME move to config
     $params['url'] = "https://secure.payonlinesystem.com/ru/payment/ivoyanga/";
     $params['ReturnUrl'] = "http://test.voyanga.com/buy/waitpayment";
     $params['FailUrl'] = "http://test.voyanga.com/buy/waitpayment";
     header("Content-type: application/json");
     $result = array();
     $result['payonline'] = $params;
     $entry = PaymentLog::forMethod('payonlineForm');
     $entry->request = json_encode($params);
     $entry->orderId = $params['OrderId'];
     $entry->save();
     $result['breakdown'] = Yii::app()->order->getPaymentTransactions();
     echo json_encode($result);
 }
Exemple #3
0
 /**
  * getInstanceメソッド
  *
  * このクラスのオブジェクトを生成する。
  * 既に生成されていたら、前回と同じものを返す。
  *
  * @return object $instance
  */
 public static function getInstance()
 {
     if (!self::$_instance) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Exemple #4
0
 public function run()
 {
     if ($this->failure) {
         $method = 'FailureCallback';
     } else {
         $method = 'SuccessCallback';
     }
     $this->logEntry = PaymentLog::forMethod($method);
     $this->logEntry->request = '{"callback":1}';
     $this->logEntry->response = json_encode($_REQUEST);
     if (isset($_REQUEST['TransactionID'])) {
         $this->logEntry->transactionId = $_REQUEST['TransactionID'];
     }
     if (isset($_REQUEST['OrderId'])) {
         $this->logEntry->orderId = $_REQUEST['OrderId'];
     }
     $this->logEntry->save();
     foreach ($this->keys as $key) {
         if (!isset($_REQUEST[$key])) {
             $e = new RequestError("{$key} not found.");
             $this->handleException($e);
             return;
         }
         $params[$key] = $_REQUEST[$key];
     }
     $parts = explode('-', $params['OrderId']);
     if (count($parts) < 2) {
         $e = new RequestError("Wrong OrderId format: " . $params['OrderId']);
         $this->handleException($e);
         return;
     }
     list($orderId, $billId) = $parts;
     $bill = Bill::model()->findByPk($billId);
     $channel = $bill->getChannel();
     $sign = $channel->getSignature($params);
     if ($sign != $params['SecurityKey']) {
         $e = new SignatureError("Signature mismatch actual: " . $params['SecurityKey'] . ". Expected: " . $sign . ".");
         $this->handleException($e);
         //            return;
     }
     $booker = $channel->booker;
     if ($booker instanceof FlightBooker) {
         $booker = new FlightBookerComponent();
         $booker->setFlightBookerFromId($channel->booker->id);
     }
     // Hoteles are allways wrapped into metabooker
     //FIXME logme
     #        if($this->getStatus($booker)=='paid')
     #            return;
     if ($this->getStatus($booker) == 'paymentInProgress') {
         return;
     }
     $this->logEntry->startProfile();
     $this->handle($bill, $booker, $channel, $orderId);
     $this->logEntry->finishProfile();
     $this->logEntry->save();
 }
 function processPaymentExtraAmt($idpaylog)
 {
     $q = new sqlQuery($this->getDbCon());
     $do_paymentlog = new PaymentLog();
     $do_paymentlog->getId($idpaylog);
     $inv_log_amt = $do_paymentlog->amount;
     $qry = "Select sum(payment_invoice.amount ) as amount,payment_invoice.idpayment\r\n                from payment_invoice \r\n                Where payment_invoice.idpayment = " . $idpaylog . " GROUP BY payment_invoice.idpayment ";
     //echo $qry.'<br />';
     $q->query($qry);
     if ($q->getNumRows()) {
         $q->fetch();
         $total_added_amt = $q->getData("amount");
         $diff = $inv_log_amt - $total_added_amt;
         if ($diff == 0 || $diff == 0.0) {
             $this->updatePaymentExtraAmount($idpaylog, $diff, "delete");
         } elseif ($diff > 0) {
             $this->updatePaymentExtraAmount($idpaylog, $diff, "update");
         }
     }
 }
 public function actionGetInfo($id)
 {
     $model = PaymentLog::model()->findByPk(new MongoID($id));
     $retArr = array();
     $widget = new CTextHighlighter();
     $widget->language = 'javascript';
     $retArr['methodName'] = $model->methodName;
     $retArr['request'] = $widget->highlight($this->prettyJson($model->request));
     if ($model->response) {
         $retArr['response'] = $widget->highlight($this->prettyJson($model->response));
     }
     $retArr['timestamp'] = date("Y-m-d H:i:s", $model->timestamp);
     $retArr['executionTime'] = Yii::app()->format->formatNumber($model->executionTime);
     $retArr['errorDescription'] = $model->errorDescription;
     //$retArr['responseXml'] = $model->responseXml;
     //echo $model->requestXml);
     echo json_encode($retArr);
     exit;
 }
 public function refund()
 {
     $allParams = $this->formParams();
     $entry = PaymentLog::forMethod('refund');
     $entry->orderId = $allParams['OrderId'];
     $params = array();
     $params['MerchantId'] = $this->credentials['id'];
     //! FIXME: can this amount change?
     //        $params['Amount'] = sprintf("%.2f", $this->amount);//  $this->bill->amount);
     $params['TransactionId'] = $this->bill->transactionId;
     $params['SecurityKey'] = $this->getSignature($params);
     $entry->request = json_encode($params);
     $entry->save();
     $entry->startProfile();
     list($code, $result) = $this->callApi('transaction/void', $params);
     $entry->finishProfile();
     $entry->response = json_encode($result);
     $entry->save();
     if ($result['Result'] == 'Ok') {
         if (isset($result['Id'])) {
             $entry->transactionId = $result['Id'];
         }
         return true;
     }
     $entry->errorDescription = "RefundError: " . $this->rawResponse;
     $entry->save();
     return false;
 }
Exemple #8
0
 /**
  * Event Method for Authnet Payment Process
  * test with credit card 4111111111111111
  * American Express Card Test : 378282246310005
  * @param $evtcl -- Object
  */
 function eventProcessAuthNetPayment(Eventcontroler $evtcl)
 {
     $flag = true;
     if ($evtcl->tot_amt > $_SESSION['do_invoice']->amt_due) {
         $_SESSION['in_page_message'] = _("The Total Amount entered is greater than the invoice amount. Please re-enter.");
         $flag = false;
     }
     if ($flag) {
         // $this->Authnet_message = "";
         include_once 'class/Authnet.class.php';
         $payment_type = $evtcl->payment_type;
         $cc_number = $evtcl->cc;
         $cvv = trim($evtcl->cvv);
         $expire_year = $evtcl->expire_year;
         $expire_month = $evtcl->expire_month;
         $expiration = $evtcl->expire_month . $evtcl->expire_year;
         if ($evtcl->tot_amt > 0) {
             $total = $evtcl->tot_amt;
         } else {
             $total = $_SESSION['do_invoice']->amt_due;
         }
         $idinvoice = $_SESSION['do_invoice']->idinvoice;
         $idcontact = $_SESSION['do_invoice']->idcontact;
         $goto = $evtcl->goto;
         $do_contact = new Contact();
         $arr_user_info = $do_contact->getContactInfo_For_Invoice($idcontact);
         $auth_login = $_SESSION['do_invoice']->authnet_login;
         $inv_info_arr = array();
         $inv_info_arr['description'] = $_SESSION['do_invoice']->description;
         $inv_info_arr['inv_num'] = $_SESSION['do_invoice']->num;
         $auth_merchant_id = $_SESSION['do_invoice']->authnet_merchant_id;
         /* @param true = test mode
         			@param false = non test mode i.e live  
         			*/
         $payment = new Authnet(false, $arr_user_info, $auth_login, $auth_merchant_id, $inv_info_arr);
         $cc_msg = $payment->validateCreditCard($cc_number, $payment_type, $cvv, $expire_year, $expire_month);
         if ($cc_msg == "") {
             $invoice = uniqid('ofuz_', true);
             $payment->transaction($cc_number, $expiration, $total, $cvv, $invoice);
             $payment->process();
             if ($payment->isApproved()) {
                 $reason = $payment->getResponseText();
                 // Display a printable receipt
                 $_SESSION['in_page_message'] = _("This transaction has been approved. Thank you for your payment");
                 $transactionID = $payment->getTransactionID();
                 $do_pay_log = new PaymentLog();
                 $do_pay_log->addPaymentLog($transactionID, "AuthNet", $_SESSION['do_invoice']->idinvoice, $total);
                 $idpayment_log = $do_pay_log->getPrimaryKeyValue();
                 $do_payment_inv = new PaymentInvoice();
                 $do_payment_inv->addPaymentInvoice($idpayment_log, $_SESSION['do_invoice']->idinvoice, $total);
                 $this->updatePayment($total);
                 $this->sendPaymentApprovedEmail($total, "Authorized.net", $transactionID);
                 // Sending to customer
                 $this->sendPaymentApprovedEmail($total, "Authorized.net", $transactionID, true);
                 // Sending to user
                 /*
                 	Lets check if the invoice has an call back URL and process that
                 */
                 $do_inv_callback = new InvoiceCallback();
                 $do_User = $_SESSION['do_invoice']->getParentUser();
                 $do_inv_callback->processCallBack($this->idinvoice, $this->num, $total, $do_User->iduser, "ok", "AuthNet", $transactionID);
                 /*
                 Check if there is a next URL if so then set goto variable to that URL. Userful if we want the user to go to someother page
                 Than in the goto page. This is triggered only when full payment is done.
                 */
                 $next_url = $do_inv_callback->isNextUrl($this->idinvoice);
                 //if($next_url !== false){
                 //     $due_amt = $this->getDueAmount($this->idinvoice);
                 //     if($due_amt == '0.00'){
                 $goto = $next_url;
                 //     }
                 //}
                 $_SESSION['autologin_paid'] = True;
                 // Add the CC info in the RecurrentInvoiceCC
                 if ($evtcl->is_rec != 0 && $evtcl->is_cc == 0) {
                     $RecurrentInvoiceCC = new RecurrentInvoiceCC();
                     $RecurrentInvoiceCC->add_cc_info($cc_number, $expire_year, $expire_month, $evtcl->payment_type, $evtcl->is_rec);
                 }
             } else {
                 if ($payment->isDeclined()) {
                     $reason = $payment->getResponseText();
                     $do_inv_callback = new InvoiceCallback();
                     $do_inv_callback->processCallBack($this->idinvoice, $this->num, $total, $_SESSION['do_User']->iduser, "fail", "AuthNet", "", $reason);
                     $goto = $evtcl->error_page;
                     // As for another form of payment
                     $_SESSION['in_page_message'] = _("The transaction has been declined.'{$reason}'");
                 } else {
                     $reason = $payment->getResponseText();
                     //$reason .= $payment->getResponseCode();
                     $do_inv_callback = new InvoiceCallback();
                     $do_inv_callback->processCallBack($this->idinvoice, $this->num, $total, $_SESSION['do_User']->iduser, "fail", "AuthNet", "", $reason);
                     $goto = $evtcl->error_page;
                     // Ask the merchant to call us
                     $_SESSION['in_page_message'] = _("The transaction failed.'{$reason}'");
                 }
             }
         } else {
             $_SESSION['in_page_message'] = $cc_msg;
         }
     }
     $evtcl->setDisplayNext(new Display($goto));
 }
 /**
  * Back up Inactive users data from all the fields and Delete Inactive User's account.
  * This function is used to generate the xml back up file for the user information from the DB
  * This function is differnt from exportUserAccount as we have added more table to the backup
  * And we have function to delete the table once back up is done. And the function exportUserAccount  
  * was not disturbed as this was already in use. 
  * @param int : $iduser
  * @return void
  */
 public function exportUserAccountandDelete($iduser)
 {
     $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n";
     $do_user = new User();
     $do_user->getId($iduser);
     $xml .= "<document>\n";
     $xml .= "<user>\n";
     $xml .= " <iduser><![CDATA[" . $do_user->iduser . "]]></iduser>\n";
     $xml .= " <firstname><![CDATA[" . $do_user->firstname . "]]></firstname>\n";
     $xml .= " <middlename><![CDATA[" . $do_user->middlename . "]]></middlename>\n";
     $xml .= " <lastname><![CDATA[" . $do_user->lastname . "]]></lastname>\n";
     $xml .= " <email><![CDATA[" . $do_user->email . "]]></email>\n";
     $xml .= " <phone><![CDATA[" . $do_user->phone . "]]></phone>\n";
     $xml .= " <company><![CDATA[" . $do_user->company . "]]></company>\n";
     $xml .= " <position><![CDATA[" . $do_user->position . "]]></position>\n";
     $xml .= " <address1><![CDATA[" . $do_user->address1 . "]]></address1>\n";
     $xml .= " <address2><![CDATA[" . $do_user->address2 . "]]></address2>\n";
     $xml .= " <city><![CDATA[" . $do_user->city . "]]></city>\n";
     $xml .= " <zip><![CDATA[" . $do_user->zip . "]]></zip>\n";
     $xml .= " <state><![CDATA[" . $do_user->state . "]]></state>\n";
     $xml .= " <country><![CDATA[" . $do_user->country . "]]></country>\n";
     $xml .= " <username><![CDATA[" . $do_user->username . "]]></username>\n";
     $xml .= " <password><![CDATA[" . $do_user->password . "]]></password>\n";
     $xml .= " <isadmin><![CDATA[" . $do_user->isadmin . "]]></isadmin>\n";
     $xml .= " <regdate><![CDATA[" . $do_user->regdate . "]]></regdate>\n";
     $xml .= " <openid><![CDATA[" . $do_user->openid . "]]></openid>\n";
     $xml .= " <last_login><![CDATA[" . $do_user->last_login . "]]></last_login>\n";
     $xml .= " <drop_box_code><![CDATA[" . $do_user->drop_box_code . "]]></drop_box_code>\n";
     $xml .= " <idcontact><![CDATA[" . $do_user->idcontact . "]]></idcontact>\n";
     $xml .= " <fb_user_id><![CDATA[" . $do_user->fb_user_id . "]]></fb_user_id>\n";
     $xml .= " <api_key><![CDATA[" . $do_user->api_key . "]]></api_key>\n";
     $xml .= " <plan><![CDATA[" . $do_user->plan . "]]></plan>\n";
     $xml .= " <status><![CDATA[" . $do_user->status . "]]></status>\n";
     $xml .= " <google_openid_identity><![CDATA[" . $do_user->google_openid_identity . "]]></google_openid_identity>\n";
     $xml .= "</user>\n";
     $i = 1;
     //$tbl_name = "userid".$iduser."_contact";
     $do_contact = new Contact(NULL, NULL, $iduser);
     $do_contact->getUserContacts($iduser);
     $nums = $do_contact->GetNumRows();
     if ($nums >= 1) {
         $xml .= "<contacts>\n";
         while ($do_contact->next()) {
             $xml .= " <contact>\n";
             $xml .= "  <idcontact><![CDATA[" . $do_contact->getData("idcontact") . "]]></idcontact>\n";
             $xml .= "  <firstname><![CDATA[" . $do_contact->getData("firstname") . "]]></firstname>\n";
             $xml .= "  <lastname><![CDATA[" . $do_contact->getData("lastname") . "]]></lastname>\n";
             $xml .= "  <position><![CDATA[" . $do_contact->getData("position") . "]]></position>\n";
             $xml .= "  <company><![CDATA[" . $do_contact->getData("company") . "]]></company>\n";
             $xml .= "  <idcompany><![CDATA[" . $do_contact->getData("idcompany") . "]]></idcompany>\n";
             $xml .= "  <iduser><![CDATA[" . $do_contact->getData("iduser") . "]]></iduser>\n";
             $xml .= "  <picture><![CDATA[" . $do_contact->getData("picture") . "]]></picture>\n";
             $xml .= "  <summary><![CDATA[" . $do_contact->getData("summary") . "]]></summary>\n";
             $xml .= "  <birthday><![CDATA[" . $do_contact->getData("birthday") . "]]></birthday>\n";
             $xml .= "  <portal_code><![CDATA[" . $do_contact->getData("portal_code") . "]]></portal_code>\n";
             $xml .= "  <fb_userid><![CDATA[" . $do_contact->getData("fb_userid") . "]]></fb_userid>\n";
             $xml .= "  <tw_user_id><![CDATA[" . $do_contact->getData("tw_user_id") . "]]></tw_user_id>\n";
             $xml .= "  <email_optout><![CDATA[" . $do_contact->getData("email_optout") . "]]></email_optout>\n\n";
             $contact_address = $do_contact->getChildContactAddress();
             while ($contact_address->next()) {
                 $xml .= "  <contact_address>\n";
                 $xml .= "   <idcontact_address><![CDATA[" . $contact_address->idcontact_address . "]]></idcontact_address>\n";
                 $xml .= "   <city><![CDATA[" . $contact_address->city . "]]></city>\n";
                 $xml .= "   <country><![CDATA[" . $contact_address->country . "]]></country>\n";
                 $xml .= "   <state><![CDATA[" . $contact_address->state . "]]></state>\n";
                 $xml .= "   <street><![CDATA[" . $contact_address->street . "]]></street>\n";
                 $xml .= "   <zipcode><![CDATA[" . $contact_address->zipcode . "]]></zipcode>\n";
                 $xml .= "   <idcontact><![CDATA[" . $contact_address->idcontact . "]]></idcontact>\n";
                 $xml .= "   <address><![CDATA[" . $contact_address->address . "]]></address>\n";
                 $xml .= "   <address_type><![CDATA[" . $contact_address->address_type . "]]></address_type>\n";
                 $xml .= "  </contact_address>\n";
             }
             $contact_email = $do_contact->getChildContactEmail();
             while ($contact_email->next()) {
                 $xml .= "  <contact_email>\n";
                 $xml .= "   <idcontact_email><![CDATA[" . $contact_email->idcontact_email . "]]></idcontact_email>\n";
                 $xml .= "   <idcontact><![CDATA[" . $contact_email->idcontact . "]]></idcontact>\n";
                 $xml .= "   <email_address><![CDATA[" . $contact_email->email_address . "]]></email_address>\n";
                 $xml .= "   <email_type><![CDATA[" . $contact_email->email_type . "]]></email_type>\n";
                 $xml .= "   <email_isdefault><![CDATA[" . $contact_email->email_isdefault . "]]></email_isdefault>\n";
                 $xml .= "  </contact_email>\n";
             }
             $contact_phone = $do_contact->getChildContactPhone();
             while ($contact_phone->next()) {
                 $xml .= "  <contact_phone>\n";
                 $xml .= "   <idcontact_phone><![CDATA[" . $contact_phone->idcontact_phone . "]]></idcontact_phone>\n";
                 $xml .= "   <phone_number><![CDATA[" . $contact_phone->phone_number . "]]></phone_number>\n";
                 $xml .= "   <phone_type><![CDATA[" . $contact_phone->phone_type . "]]></phone_type>\n";
                 $xml .= "   <idcontact><![CDATA[" . $contact_phone->email_type . "]]></idcontact>\n";
                 $xml .= "  </contact_phone>\n";
             }
             $contact_note = $do_contact->getChildContactNotes();
             while ($contact_note->next()) {
                 $xml .= "  <contact_note>\n";
                 $xml .= "   <idcontact_note><![CDATA[" . $contact_note->idcontact_note . "]]></idcontact_note>\n";
                 $xml .= "   <idcontact><![CDATA[" . $contact_note->idcontact . "]]></idcontact>\n";
                 $xml .= "   <note><![CDATA[" . $contact_note->note . "]]></note>\n";
                 $xml .= "   <date_added><![CDATA[" . $contact_note->date_added . "]]></date_added>\n";
                 $xml .= "   <document><![CDATA[" . $contact_note->document . "]]></document>\n";
                 $xml .= "   <idcompany><![CDATA[" . $contact_note->idcompany . "]]></idcompany>\n";
                 $xml .= "   <iduser><![CDATA[" . $contact_note->iduser . "]]></iduser>\n";
                 $xml .= "   <priority><![CDATA[" . $contact_note->priority . "]]></priority>\n";
                 $xml .= "   <send_email><![CDATA[" . $contact_note->send_email . "]]></send_email>\n";
                 $xml .= "   <hours_work><![CDATA[" . $contact_note->hours_work . "]]></hours_work>\n";
                 $xml .= "   <note_visibility><![CDATA[" . $contact_note->note_visibility . "]]></note_visibility>\n";
                 $xml .= "  </contact_note>\n";
             }
             if ($i == '1') {
                 $do_task = new Task();
                 $do_task->getContactTaskWithoutProjectAndWithUser($iduser);
                 while ($do_task->next()) {
                     $xml .= "  <contact_task>\n";
                     $xml .= "   <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
                     $xml .= "   <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
                     $xml .= "   <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
                     $xml .= "   <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
                     $xml .= "   <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
                     $xml .= "   <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
                     $xml .= "   <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
                     $xml .= "   <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
                     $xml .= "   <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
                     $xml .= "   <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
                     $xml .= "   <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
                     $xml .= "   <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n";
                     $xml .= "  </contact_task>\n";
                 }
                 $do_task->free();
             }
             $do_task = new Task();
             $do_task->getContactTaskWithoutProjectAndWithContact($do_contact->getData("idcontact"));
             while ($do_task->next()) {
                 $xml .= "  <contact_task>\n";
                 $xml .= "   <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
                 $xml .= "   <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
                 $xml .= "   <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
                 $xml .= "   <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
                 $xml .= "   <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
                 $xml .= "   <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
                 $xml .= "   <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
                 $xml .= "   <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
                 $xml .= "   <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
                 $xml .= "   <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
                 $xml .= "   <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
                 $xml .= "   <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n";
                 $xml .= "  </contact_task>\n";
             }
             $do_task->free();
             /**
              * For all the contact tasks which are associated with Project.
              */
             $do_task = new Task();
             //$do_task->getContactTasksAssociatedWithProject($do_contact->getData("idcontact"));
             $do_task->getContactTasksAssociatedWithProjectWithContact($do_contact->getData("idcontact"));
             while ($do_task->next()) {
                 $do_project = new Project();
                 $do_project->getId($do_task->idproject);
                 $xml .= "  <contact_task_with_project>\n";
                 $xml .= "   <idproject><![CDATA[" . $do_project->idproject . "]]></idproject>\n";
                 $xml .= "   <iduser><![CDATA[" . $do_project->iduser . "]]></iduser>\n";
                 $xml .= "   <name><![CDATA[" . $do_project->name . "]]></name>\n";
                 $xml .= "   <end_date_dateformat><![CDATA[" . $do_project->end_date_dateformat . "]]></end_date_dateformat>\n";
                 $xml .= "   <idcompany><![CDATA[" . $do_project->idcompany . "]]></idcompany>\n";
                 $xml .= "   <status><![CDATA[" . $do_project->status . "]]></status>\n";
                 $xml .= "   <effort_estimated_hrs><![CDATA[" . $do_project->effort_estimated_hrs . "]]></effort_estimated_hrs>\n";
                 $xml .= "   <is_public><![CDATA[" . $do_project->is_public . "]]></is_public>\n\n";
                 $xml .= "   <project_task>\n";
                 $xml .= "    <idproject_task><![CDATA[" . $do_task->getData("idproject_task") . "]]></idproject_task>\n";
                 $xml .= "    <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
                 $xml .= "    <idproject><![CDATA[" . $do_task->getData("idproject") . "]]></idproject>\n";
                 $xml .= "    <progress><![CDATA[" . $do_task->getData("progress") . "]]></progress>\n";
                 $xml .= "    <drop_box_code><![CDATA[" . $do_task->getData("drop_box_code") . "]]></drop_box_code>\n";
                 $xml .= "    <priority><![CDATA[" . $do_task->getData("priority") . "]]></priority>\n";
                 $xml .= "    <hrs_work_expected><![CDATA[" . $do_task->getData("hrs_work_expected") . "]]></hrs_work_expected>\n";
                 $xml .= "    <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
                 $xml .= "    <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
                 $xml .= "    <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
                 $xml .= "    <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
                 $xml .= "    <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
                 $xml .= "    <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
                 $xml .= "    <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
                 $xml .= "    <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
                 $xml .= "    <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
                 $xml .= "    <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
                 $xml .= "    <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n\n";
                 $do_prj_discuss = new ProjectDiscuss();
                 $do_prj_discuss->getProjectTaskDiscussions($do_task->getData("idproject_task"));
                 while ($do_prj_discuss->next()) {
                     $xml .= "    <project_discuss>\n";
                     $xml .= "     <idproject_discuss><![CDATA[" . $do_prj_discuss->getData("idproject_discuss") . "]]></idproject_discuss>\n";
                     $xml .= "     <idproject_task><![CDATA[" . $do_prj_discuss->getData("idproject_task") . "]]></idproject_task>\n";
                     $xml .= "     <idtask><![CDATA[" . $do_prj_discuss->getData("idtask") . "]]></idtask>\n";
                     $xml .= "     <idproject><![CDATA[" . $do_prj_discuss->getData("idproject") . "]]></idproject>\n";
                     $xml .= "     <discuss><![CDATA[" . $do_prj_discuss->getData("discuss") . "]]></discuss>\n";
                     $xml .= "     <date_added><![CDATA[" . $do_prj_discuss->getData("date_added") . "]]></date_added>\n";
                     $xml .= "     <document><![CDATA[" . $do_prj_discuss->getData("document") . "]]></document>\n";
                     $xml .= "     <iduser><![CDATA[" . $do_prj_discuss->getData("iduser") . "]]></iduser>\n";
                     $xml .= "     <drop_box_sender><![CDATA[" . $do_prj_discuss->getData("drop_box_sender") . "]]></drop_box_sender>\n";
                     $xml .= "     <priority><![CDATA[" . $do_prj_discuss->getData("priority") . "]]></priority>\n";
                     $xml .= "     <hours_work><![CDATA[" . $do_prj_discuss->getData("hours_work") . "]]></hours_work>\n";
                     $xml .= "     <discuss_edit_access><![CDATA[" . $do_prj_discuss->getData("discuss_edit_access") . "]]></discuss_edit_access>\n";
                     $xml .= "    </project_discuss>\n";
                 }
                 $do_prj_discuss->free();
                 $xml .= "   </project_task>\n";
                 $xml .= "  </contact_task_with_project>\n";
                 $do_project->free();
             }
             $do_task->free();
             if ($i == '1') {
                 $do_task = new Task();
                 $do_task->getContactTasksAssociatedWithProjectWithUser($iduser);
                 while ($do_task->next()) {
                     $do_project = new Project();
                     $do_project->getId($do_task->idproject);
                     $xml .= "  <contact_task_with_project>\n";
                     $xml .= "   <idproject><![CDATA[" . $do_project->idproject . "]]></idproject>\n";
                     $xml .= "   <iduser><![CDATA[" . $do_project->iduser . "]]></iduser>\n";
                     $xml .= "   <name><![CDATA[" . $do_project->name . "]]></name>\n";
                     $xml .= "   <end_date_dateformat><![CDATA[" . $do_project->end_date_dateformat . "]]></end_date_dateformat>\n";
                     $xml .= "   <idcompany><![CDATA[" . $do_project->idcompany . "]]></idcompany>\n";
                     $xml .= "   <status><![CDATA[" . $do_project->status . "]]></status>\n";
                     $xml .= "   <effort_estimated_hrs><![CDATA[" . $do_project->effort_estimated_hrs . "]]></effort_estimated_hrs>\n";
                     $xml .= "   <is_public><![CDATA[" . $do_project->is_public . "]]></is_public>\n\n";
                     $xml .= "   <project_task>\n";
                     $xml .= "    <idproject_task><![CDATA[" . $do_task->getData("idproject_task") . "]]></idproject_task>\n";
                     $xml .= "    <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
                     $xml .= "    <idproject><![CDATA[" . $do_task->getData("idproject") . "]]></idproject>\n";
                     $xml .= "    <progress><![CDATA[" . $do_task->getData("progress") . "]]></progress>\n";
                     $xml .= "    <drop_box_code><![CDATA[" . $do_task->getData("drop_box_code") . "]]></drop_box_code>\n";
                     $xml .= "    <priority><![CDATA[" . $do_task->getData("priority") . "]]></priority>\n";
                     $xml .= "    <hrs_work_expected><![CDATA[" . $do_task->getData("hrs_work_expected") . "]]></hrs_work_expected>\n";
                     $xml .= "    <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
                     $xml .= "    <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
                     $xml .= "    <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
                     $xml .= "    <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
                     $xml .= "    <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
                     $xml .= "    <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
                     $xml .= "    <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
                     $xml .= "    <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
                     $xml .= "    <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
                     $xml .= "    <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
                     $xml .= "    <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n\n";
                     $do_prj_discuss = new ProjectDiscuss();
                     $do_prj_discuss->getProjectTaskDiscussions($do_task->getData("idproject_task"));
                     while ($do_prj_discuss->next()) {
                         $xml .= "    <project_discuss>\n";
                         $xml .= "     <idproject_discuss><![CDATA[" . $do_prj_discuss->getData("idproject_discuss") . "]]></idproject_discuss>\n";
                         $xml .= "     <idproject_task><![CDATA[" . $do_prj_discuss->getData("idproject_task") . "]]></idproject_task>\n";
                         $xml .= "     <idtask><![CDATA[" . $do_prj_discuss->getData("idtask") . "]]></idtask>\n";
                         $xml .= "     <idproject><![CDATA[" . $do_prj_discuss->getData("idproject") . "]]></idproject>\n";
                         $xml .= "     <discuss><![CDATA[" . $do_prj_discuss->getData("discuss") . "]]></discuss>\n";
                         $xml .= "     <date_added><![CDATA[" . $do_prj_discuss->getData("date_added") . "]]></date_added>\n";
                         $xml .= "     <document><![CDATA[" . $do_prj_discuss->getData("document") . "]]></document>\n";
                         $xml .= "     <iduser><![CDATA[" . $do_prj_discuss->getData("iduser") . "]]></iduser>\n";
                         $xml .= "     <drop_box_sender><![CDATA[" . $do_prj_discuss->getData("drop_box_sender") . "]]></drop_box_sender>\n";
                         $xml .= "     <priority><![CDATA[" . $do_prj_discuss->getData("priority") . "]]></priority>\n";
                         $xml .= "     <hours_work><![CDATA[" . $do_prj_discuss->getData("hours_work") . "]]></hours_work>\n";
                         $xml .= "     <discuss_edit_access><![CDATA[" . $do_prj_discuss->getData("discuss_edit_access") . "]]></discuss_edit_access>\n";
                         $xml .= "    </project_discuss>\n";
                     }
                     $do_prj_discuss->free();
                     $xml .= "   </project_task>\n";
                     $xml .= "  </contact_task_with_project>\n";
                     $do_project->free();
                 }
                 $do_task->free();
             }
             $do_invoice = new Invoice();
             $do_invoice->getContactInvoiceDetailsWithUser($do_contact->getData("idcontact"), $do_user->iduser);
             while ($do_invoice->next()) {
                 $xml .= "  <invoice>\n";
                 $xml .= "   <idinvoice><![CDATA[" . $do_invoice->getData("idinvoice") . "]]></idinvoice>\n";
                 $xml .= "   <num><![CDATA[" . $do_invoice->getData("num") . "]]></num>\n";
                 $xml .= "   <iduser><![CDATA[" . $do_invoice->getData("iduser") . "]]></iduser>\n";
                 $xml .= "   <description><![CDATA[" . $do_invoice->getData("description") . "]]></description>\n";
                 $xml .= "   <amount><![CDATA[" . $do_invoice->getData("amount") . "]]></amount>\n";
                 $xml .= "   <datepaid><![CDATA[" . $do_invoice->getData("datepaid") . "]]></datepaid>\n";
                 $xml .= "   <datecreated><![CDATA[" . $do_invoice->getData("datecreated") . "]]></datecreated>\n";
                 $xml .= "   <status><![CDATA[" . $do_invoice->getData("status") . "]]></status>\n";
                 $xml .= "   <discount><![CDATA[" . $do_invoice->getData("discount") . "]]></discount>\n";
                 $xml .= "   <idcontact><![CDATA[" . $do_invoice->getData("idcontact") . "]]></idcontact>\n";
                 $xml .= "   <due_date><![CDATA[" . $do_invoice->getData("due_date") . "]]></due_date>\n";
                 $xml .= "   <invoice_address><![CDATA[" . $do_invoice->getData("invoice_address") . "]]></invoice_address>\n";
                 $xml .= "   <invoice_term><![CDATA[" . $do_invoice->getData("invoice_term") . "]]></invoice_term>\n";
                 $xml .= "   <invoice_note><![CDATA[" . $do_invoice->getData("invoice_note") . "]]></invoice_note>\n";
                 $xml .= "   <sub_total><![CDATA[" . $do_invoice->getData("sub_total") . "]]></sub_total>\n";
                 $xml .= "   <net_total><![CDATA[" . $do_invoice->getData("net_total") . "]]></net_total>\n";
                 $xml .= "   <amt_due><![CDATA[" . $do_invoice->getData("amt_due") . "]]></amt_due>\n";
                 $xml .= "   <idcompany><![CDATA[" . $do_invoice->getData("idcompany") . "]]></idcompany>\n";
                 $xml .= "   <tax><![CDATA[" . $do_invoice->getData("tax") . "]]></tax>\n";
                 $xml .= "   <set_delete><![CDATA[" . $do_invoice->getData("set_delete") . "]]></set_delete>\n";
                 $xml .= "   <total_discounted_amt><![CDATA[" . $do_invoice->getData("total_discounted_amt") . "]]></total_discounted_amt>\n";
                 $xml .= "   <total_taxed_amount><![CDATA[" . $do_invoice->getData("total_taxed_amount") . "]]></total_taxed_amount>\n";
                 $invoice_line = $do_invoice->getChildInvoiceLine();
                 while ($invoice_line->next()) {
                     $xml .= "   <invoiceline>\n";
                     $xml .= "    <idinvoiceline><![CDATA[" . $invoice_line->idinvoiceline . "]]></idinvoiceline>\n";
                     $xml .= "    <idinvoice><![CDATA[" . $invoice_line->idinvoice . "]]></idinvoice>\n";
                     $xml .= "    <description><![CDATA[" . $invoice_line->description . "]]></description>\n";
                     $xml .= "    <price><![CDATA[" . $invoice_line->price . "]]></price>\n";
                     $xml .= "    <qty><![CDATA[" . $invoice_line->qty . "]]></qty>\n";
                     $xml .= "    <total><![CDATA[" . $invoice_line->total . "]]></total>\n";
                     $xml .= "    <item><![CDATA[" . $invoice_line->item . "]]></item>\n";
                     $xml .= "    <line_tax><![CDATA[" . $invoice_line->line_tax . "]]></line_tax>\n";
                     $xml .= "    <discounted_amount><![CDATA[" . $invoice_line->discounted_amount . "]]></discounted_amount>\n";
                     $xml .= "    <taxed_amount><![CDATA[" . $invoice_line->taxed_amount . "]]></taxed_amount>\n";
                     $xml .= "   </invoiceline>\n";
                 }
                 $invoice_line->free();
                 $do_recurrent_invoice = new RecurrentInvoice();
                 $do_recurrent_invoice->getRecurrentInvoiceDetail($do_invoice->getData("idinvoice"));
                 while ($do_recurrent_invoice->next()) {
                     $xml .= "   <recurrentinvoice>\n";
                     $xml .= "    <idrecurrentinvoice><![CDATA[" . $do_recurrent_invoice->getData("idrecurrentinvoice") . "]]></idrecurrentinvoice>\n";
                     $xml .= "    <iduser><![CDATA[" . $do_recurrent_invoice->getData("iduser") . "]]></iduser>\n";
                     $xml .= "    <idinvoice><![CDATA[" . $do_recurrent_invoice->getData("idinvoice") . "]]></idinvoice>\n";
                     $xml .= "    <nextdate><![CDATA[" . $do_recurrent_invoice->getData("nextdate") . "]]></nextdate>\n";
                     $xml .= "    <recurrence><![CDATA[" . $do_recurrent_invoice->getData("recurrence") . "]]></recurrence>\n";
                     $xml .= "    <recurrencetype><![CDATA[" . $do_recurrent_invoice->getData("recurrencetype") . "]]></recurrencetype>\n";
                     $xml .= "   </recurrentinvoice>\n";
                 }
                 $do_recurrent_invoice->free();
                 $do_paymentlog = new PaymentLog();
                 $do_paymentlog->getPaymentLogDetails($do_invoice->getData("idinvoice"));
                 while ($do_paymentlog->next()) {
                     $xml .= "   <paymentlog>\n";
                     $xml .= "    <idpaymentlog ><![CDATA[" . $do_paymentlog->getData("idpaymentlog") . "]]></idpaymentlog >\n";
                     $xml .= "    <timestamp><![CDATA[" . $do_paymentlog->getData("timestamp") . "]]></timestamp>\n";
                     $xml .= "    <idinvoice><![CDATA[" . $do_paymentlog->getData("idinvoice") . "]]></idinvoice>\n";
                     $xml .= "    <amount><![CDATA[" . $do_paymentlog->getData("amount") . "]]></amount>\n";
                     $xml .= "    <payment_type><![CDATA[" . $do_paymentlog->getData("payment_type") . "]]></payment_type>\n";
                     $xml .= "    <ref_num><![CDATA[" . $do_paymentlog->getData("ref_num") . "]]></ref_num>\n";
                     $xml .= "    <date_added><![CDATA[" . $do_paymentlog->getData("date_added") . "]]></date_added>\n";
                     $do_payment_invoice = new PaymentInvoice();
                     $do_payment_invoice->getInvDetails($do_paymentlog->getData("idpaymentlog"));
                     while ($do_payment_invoice->next()) {
                         $xml .= "    <payment_invoice>\n";
                         $xml .= "     <idpayment_invoice><![CDATA[" . $do_payment_invoice->getData("idpayment_invoice") . "]]></idpayment_invoice>\n";
                         $xml .= "     <idpayment><![CDATA[" . $do_payment_invoice->getData("idpayment") . "]]></idpayment>\n";
                         $xml .= "     <idinvoice><![CDATA[" . $do_payment_invoice->getData("idinvoice") . "]]></idinvoice>\n";
                         $xml .= "     <amount><![CDATA[" . $do_payment_invoice->getData("amount") . "]]></amount>\n";
                         $xml .= "    </payment_invoice>\n";
                     }
                     $do_payment_invoice->free();
                     $do_paymentlog_extra_amount = new PaymentLog();
                     $do_paymentlog_extra_amount->getPaymentLogExtraAmountDetails($do_paymentlog->getData("idpaymentlog"));
                     while ($do_paymentlog_extra_amount->next()) {
                         $xml .= "    <paymentlog_extra_amount>\n";
                         $xml .= "     <idpaymentlog_extra_amount><![CDATA[" . $do_paymentlog_extra_amount->getData("idpaymentlog_extra_amount") . "]]></idpaymentlog_extra_amount>\n";
                         $xml .= "     <idpaymentlog><![CDATA[" . $do_paymentlog_extra_amount->getData("idpaymentlog") . "]]></idpaymentlog>\n";
                         $xml .= "     <extra_amt><![CDATA[" . $do_paymentlog_extra_amount->getData("extra_amt") . "]]></extra_amt>\n";
                         $xml .= "     <iduser><![CDATA[" . $do_paymentlog_extra_amount->getData("iduser") . "]]></iduser>\n";
                         $xml .= "    </paymentlog_extra_amount>\n";
                     }
                     $do_paymentlog_extra_amount->free();
                     $xml .= "   </paymentlog>\n";
                 }
                 $do_paymentlog->free();
                 $xml .= "  </invoice>\n";
             }
             $do_invoice->free();
             $do_tag = new Tag();
             $do_tag->getUserContactTags($iduser, $do_contact->getData("idcontact"));
             while ($do_tag->next()) {
                 $xml .= "  <tag>\n";
                 $xml .= "   <idtag><![CDATA[" . $do_tag->idtag . "]]></idtag>\n";
                 $xml .= "   <tag_name><![CDATA[" . $do_tag->tag_name . "]]></tag_name>\n";
                 $xml .= "   <iduser><![CDATA[" . $do_tag->iduser . "]]></iduser>\n";
                 $xml .= "   <reference_type><![CDATA[" . $do_tag->reference_type . "]]></reference_type>\n";
                 $xml .= "   <idreference><![CDATA[" . $do_tag->idreference . "]]></idreference>\n";
                 $xml .= "   <date_added><![CDATA[" . $do_tag->date_added . "]]></date_added>\n";
                 $xml .= "  </tag>\n";
             }
             $do_tag->free();
             $xml .= " </contact>\n";
             $i++;
         }
         //end line
         $xml .= "</contacts>\n";
     } else {
         // if no contact
         $do_task = new Task();
         $do_task->getContactTasksAssociatedWithProjectWithUser($iduser);
         while ($do_task->next()) {
             $do_project = new Project();
             $do_project->getId($do_task->idproject);
             $xml .= "  <project>\n";
             $xml .= "   <idproject><![CDATA[" . $do_project->idproject . "]]></idproject>\n";
             $xml .= "   <iduser><![CDATA[" . $do_project->iduser . "]]></iduser>\n";
             $xml .= "   <name><![CDATA[" . $do_project->name . "]]></name>\n";
             $xml .= "   <end_date_dateformat><![CDATA[" . $do_project->end_date_dateformat . "]]></end_date_dateformat>\n";
             $xml .= "   <idcompany><![CDATA[" . $do_project->idcompany . "]]></idcompany>\n";
             $xml .= "   <status><![CDATA[" . $do_project->status . "]]></status>\n";
             $xml .= "   <effort_estimated_hrs><![CDATA[" . $do_project->effort_estimated_hrs . "]]></effort_estimated_hrs>\n";
             $xml .= "   <is_public><![CDATA[" . $do_project->is_public . "]]></is_public>\n\n";
             $xml .= "   <project_task>\n";
             $xml .= "    <idproject_task><![CDATA[" . $do_task->getData("idproject_task") . "]]></idproject_task>\n";
             $xml .= "    <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
             $xml .= "    <idproject><![CDATA[" . $do_task->getData("idproject") . "]]></idproject>\n";
             $xml .= "    <progress><![CDATA[" . $do_task->getData("progress") . "]]></progress>\n";
             $xml .= "    <drop_box_code><![CDATA[" . $do_task->getData("drop_box_code") . "]]></drop_box_code>\n";
             $xml .= "    <priority><![CDATA[" . $do_task->getData("priority") . "]]></priority>\n";
             $xml .= "    <hrs_work_expected><![CDATA[" . $do_task->getData("hrs_work_expected") . "]]></hrs_work_expected>\n";
             $xml .= "    <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
             $xml .= "    <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
             $xml .= "    <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
             $xml .= "    <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
             $xml .= "    <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
             $xml .= "    <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
             $xml .= "    <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
             $xml .= "    <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
             $xml .= "    <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
             $xml .= "    <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
             $xml .= "    <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n\n";
             $do_prj_discuss = new ProjectDiscuss();
             $do_prj_discuss->getProjectTaskDiscussions($do_task->getData("idproject_task"));
             while ($do_prj_discuss->next()) {
                 $xml .= "    <project_discuss>\n";
                 $xml .= "     <idproject_discuss><![CDATA[" . $do_prj_discuss->getData("idproject_discuss") . "]]></idproject_discuss>\n";
                 $xml .= "     <idproject_task><![CDATA[" . $do_prj_discuss->getData("idproject_task") . "]]></idproject_task>\n";
                 $xml .= "     <idtask><![CDATA[" . $do_prj_discuss->getData("idtask") . "]]></idtask>\n";
                 $xml .= "     <idproject><![CDATA[" . $do_prj_discuss->getData("idproject") . "]]></idproject>\n";
                 $xml .= "     <discuss><![CDATA[" . $do_prj_discuss->getData("discuss") . "]]></discuss>\n";
                 $xml .= "     <date_added><![CDATA[" . $do_prj_discuss->getData("date_added") . "]]></date_added>\n";
                 $xml .= "     <document><![CDATA[" . $do_prj_discuss->getData("document") . "]]></document>\n";
                 $xml .= "     <iduser><![CDATA[" . $do_prj_discuss->getData("iduser") . "]]></iduser>\n";
                 $xml .= "     <drop_box_sender><![CDATA[" . $do_prj_discuss->getData("drop_box_sender") . "]]></drop_box_sender>\n";
                 $xml .= "     <priority><![CDATA[" . $do_prj_discuss->getData("priority") . "]]></priority>\n";
                 $xml .= "     <hours_work><![CDATA[" . $do_prj_discuss->getData("hours_work") . "]]></hours_work>\n";
                 $xml .= "     <discuss_edit_access><![CDATA[" . $do_prj_discuss->getData("discuss_edit_access") . "]]></discuss_edit_access>\n";
                 $xml .= "    </project_discuss>\n";
             }
             $do_prj_discuss->free();
             $xml .= "   </project_task>\n";
             $xml .= "  </project>\n";
             $do_project->free();
         }
         $do_task->free();
         $do_task = new Task();
         $do_task->getProjectsWithNoTask($iduser);
         while ($do_task->next()) {
             $do_project = new Project();
             $do_project->getId($do_task->idproject);
             $xml .= "  <project>\n";
             $xml .= "   <idproject><![CDATA[" . $do_project->idproject . "]]></idproject>\n";
             $xml .= "   <iduser><![CDATA[" . $do_project->iduser . "]]></iduser>\n";
             $xml .= "   <name><![CDATA[" . $do_project->name . "]]></name>\n";
             $xml .= "   <end_date_dateformat><![CDATA[" . $do_project->end_date_dateformat . "]]></end_date_dateformat>\n";
             $xml .= "   <idcompany><![CDATA[" . $do_project->idcompany . "]]></idcompany>\n";
             $xml .= "   <status><![CDATA[" . $do_project->status . "]]></status>\n";
             $xml .= "   <effort_estimated_hrs><![CDATA[" . $do_project->effort_estimated_hrs . "]]></effort_estimated_hrs>\n";
             $xml .= "   <is_public><![CDATA[" . $do_project->is_public . "]]></is_public>\n";
             $xml .= "  </project>\n";
         }
         $do_task->free();
     }
     $do_login_audit = new LoginAudit();
     $do_login_audit->getLoginAuditDetails($iduser);
     while ($do_login_audit->next()) {
         $xml .= "  <login_audit>\n";
         $xml .= "   <idlogin_audit><![CDATA[" . $do_login_audit->idlogin_audit . "]]></idlogin_audit>\n";
         $xml .= "   <iduser><![CDATA[" . $do_login_audit->iduser . "]]></iduser>\n";
         $xml .= "   <last_login><![CDATA[" . $do_login_audit->last_login . "]]></last_login>\n";
         $xml .= "   <ip_address><![CDATA[" . $do_login_audit->ip_address . "]]></ip_address>\n";
         $xml .= "   <login_type><![CDATA[" . $do_login_audit->login_type . "]]></login_type>\n";
         $xml .= "  </login_audit>\n";
         $xml .= "  </document>\n";
     }
     $do_login_audit->free();
     if (!is_dir(XML_EXPORT)) {
         mkdir(XML_EXPORT);
     }
     $xml_file = XML_EXPORT . "adm_" . $iduser . "_inactiveuser_bkp.xml";
     $handle_xml = fopen($xml_file, "w+");
     if (fwrite($handle_xml, $xml) === FALSE) {
         //$_SESSION['in_page_message'] = "ofuz_export_xml_failure";
         echo 'could not write';
         exit;
     } else {
         $_SESSION['in_page_message'] = "ofuz_export_xml_success";
     }
     fclose($handle_xml);
     //Below method deletes user information
     $deleteuser = new OfuzCancelAccount();
     $deleteuser->deleteUserAccount($iduser);
     $do_login_audit = new LoginAudit();
     $id = $do_login_audit->getLastLogin($iduser);
     $do_login_audit->getId($id);
     $do_login_audit->delete();
     $do_login_audit->free();
 }
 /**
  * A custom method within the Plugin to generate the content
  * 
  */
 function generatePaymentLogDetails()
 {
     $output = '';
     $do_company = new Company();
     $output .= '<div class="center_elem center_text">';
     $button_payment = new DynamicButton();
     $output .= $button_payment->CreateButton('#', 'receive payment', '', 'addPayment();return false;', 'dyn_button_receive_payment', 'width:138px;margin:0 auto;');
     $output .= '</div><div class="spacerblock_20"></div>' . "\n";
     if ($_SESSION['extra_amt'] != '') {
         $cancel_payment = new Event("do_invoice->eventCancelMultiPayment");
         $cancel_payment->setLevel(10);
         $cancel_link = $cancel_payment->getLink(_('Cancel'));
         $msg = '<div style="margin-left:0px;">';
         $msg .= '<div class="messages_unauthorized">';
         $msg .= _('Add payment ') . $_SESSION['do_invoice']->viewAmount($_SESSION['extra_amt']) . _(' with the Note: ') . '"' . $_SESSION['ref_num'] . '"' . _(' or with the amount you want.') . '  &nbsp;' . $cancel_link;
         $msg .= '</div></div>';
         $output .= "\n" . '<div id="add_payment" style="display:block;">';
         $output .= $msg;
     } else {
         /*$do_payment_invoice = new PaymentInvoice();
           if($do_payment_invoice->getExtraAmoutNotPaid() !== false ){
               $msg = '<div style="margin-left:0px;">';
               $msg .= '<div class="messages_unauthorized">';
               $msg .= _('You have some extra amount not yet applied to invoices, do you want to apply them now ? ');
               $e_apply_extra_amt = new Event("do_invoice->eventSetApplyExtraAmount");
               $apply_link = $e_apply_extra_amt->getLink(_('apply'));
               $msg .='<br />'.$apply_link;
               $msg .='</div></div>';  
               $output .= $msg ;
               $output .= "\n".'<div id="add_payment" style="display:block;">';
           }else{
               $output .= "\n".'<div id="add_payment" style="display:none;">';
           }*/
         $output .= "\n" . '<div id="add_payment" style="display:none;">';
     }
     $e_add_pay = new Event("do_invoice->eventAddPayment");
     $e_add_pay->setLevel(20);
     $e_add_pay->addParam("goto", $_SERVER['PHP_SELF']);
     $e_add_pay->addParam('id', $_SESSION['do_invoice']->idinvoice);
     $output .= $e_add_pay->getFormHeader();
     $output .= $e_add_pay->getFormEvent();
     if ($_SESSION['extra_amt'] != '') {
         $output .= _('Amount :') . ' <br /><input type="Text" name="payment_amt" id="payment_amt" value="' . $_SESSION['extra_amt'] . '"><br />';
     } else {
         $output .= _('Amount :') . ' <br /><input type="Text" name="payment_amt" id="payment_amt" value="' . $_SESSION['do_invoice']->amt_due . '"><br />';
         $output .= _('Note :') . ' <br /><input type="Text" name="payment_ref_num" id="payment_ref_num" value=""><br />';
     }
     $output .= '<input type="submit" name="psubmit" value="' . _('Add Payment') . '">';
     $output .= '</form>';
     $output .= '        <br /><a href="#" onclick="hidePayment();return false;">' . _('No, I\'ll add later') . '</a><br /><br />';
     $output .= "\n" . '</div>';
     $do_inv_payment_log = new PaymentLog();
     $do_inv_payment_log->getPaymentLog($_SESSION['do_invoice']->idinvoice);
     while ($do_inv_payment_log->next()) {
         $count = 0;
         $e_del_log = new Event("PaymentLog->eventDeletePaymentLog");
         $e_del_log->addParam("goto", $_SERVER['PHP_SELF']);
         $e_del_log->addParam("id", $do_inv_payment_log->idpaymentlog);
         $e_del_log->addParam("amt", $do_inv_payment_log->amount);
         $output .= "\n" . '<div id="templt' . $count . '" class="co_worker_item co_worker_desc">';
         $output .= "\n" . '<div style="position: relative;">';
         $output .= "\n" . '<span class="text12"><span class="text_lightblue">' . $do_inv_payment_log->ref_num . '</span> <span class="sep1">|</span> <b>' . $_SESSION['do_invoice']->viewAmount($do_inv_payment_log->amount) . '</b><br />' . '<b>' . (isset($_SESSION['do_invoice']->idcompany) ? $do_company->getCompanyName($_SESSION['do_invoice']->idcompany) : $do_contact->getContactName($_SESSION['do_invoice']->idcontact)) . '</b><br />' . '<span class="text_darkgray">Received: ' . date('F j, Y', $do_inv_payment_log->timestamp) . '</span></span>';
         $img_del = '<img class="delete_icon_tag" border="0" width="14px" height="14px" src="/images/delete.gif">';
         $output .= "\n" . '<div width="15px" id="trashcan' . $count . '" class="deletenote" style="right:0;">' . $e_del_log->getLink($img_del, ' title="' . _('Remove') . '"') . '</div>';
         $output .= "\n" . '</div></div>';
         $output .= "\n" . '<div class="invoiceline12"></div>';
         $count++;
     }
     $output .= "\n" . '</div>';
     return $output;
 }
Exemple #11
0
    if ($_SESSION['extra_amt'] != '') {
        echo _('Amount :') . ' <br /><input type="Text" name="payment_amt" id="payment_amt" value="' . $_SESSION['extra_amt'] . '"><br />';
    } else {
        echo _('Amount :') . ' <br /><input type="Text" name="payment_amt" id="payment_amt" value="0.00"><br />';
        echo _('Note :') . ' <br /><input type="Text" name="payment_ref_num" id="payment_ref_num" value=""><br />';
    }
    echo '<input type="submit" name="psubmit" value="' . _('Add Payment') . '">';
    echo '</form>';
    ?>
                <br /><a href="#" onclick="hidePayment();return false;"><?php 
    echo _('No, I\'ll add later');
    ?>
</a><br /><br />
                </div>
                <?php 
    $do_inv_payment_log = new PaymentLog();
    $do_inv_payment_log->getPaymentLog($_SESSION['do_invoice']->idinvoice);
    while ($do_inv_payment_log->next()) {
        $count = 0;
        $e_del_log = new Event("PaymentLog->eventDeletePaymentLog");
        $e_del_log->addParam("goto", $_SERVER['PHP_SELF']);
        $e_del_log->addParam("id", $do_inv_payment_log->idpaymentlog);
        $e_del_log->addParam("amt", $do_inv_payment_log->amount);
        echo '<div id="templt', $count, '" class="co_worker_item co_worker_desc">';
        echo '<div style="position: relative;">';
        echo '<span class="text12"><span class="text_lightblue">', $do_inv_payment_log->ref_num, '</span> <span class="sep1">|</span> <b>', $_SESSION['do_invoice']->viewAmount($do_inv_payment_log->amount), '</b><br />', '<b>', isset($_SESSION['do_invoice']->idcompany) ? $do_company->getCompanyName($_SESSION['do_invoice']->idcompany) : $do_contact->getContactName($_SESSION['do_invoice']->idcontact), '</b><br />', '<span class="text_darkgray">Received: ', date('F j, Y', $do_inv_payment_log->timestamp), '</span></span>';
        $img_del = '<img class="delete_icon_tag" border="0" width="14px" height="14px" src="/images/delete.gif">';
        echo '<div width="15px" id="trashcan', $count, '" class="deletenote" style="right:0;">' . $e_del_log->getLink($img_del, ' title="' . _('Remove') . '"') . '</div>';
        echo '</div></div>';
        echo '<div class="invoiceline12"></div>';
        $count++;
Exemple #12
0
 /**
  * Event Method for Stripe Payment Process
  * test with credit card 4242424242424242
  * @param object $evtcl 
  */
 function eventProcessStripePayment(Eventcontroler $evtcl)
 {
     $flag = true;
     if ($evtcl->tot_amt > $_SESSION['do_invoice']->amt_due) {
         $_SESSION['in_page_message'] = _("The Total Amount entered is greater than the invoice amount. Please re-enter.");
         $flag = false;
     }
     if ($flag) {
         include_once 'class/Stripe.class.php';
         include_once "stripe-lib/Stripe.php";
         $token = $evtcl->stripeToken;
         $name = $evtcl->name;
         //$email = $evtcl->email;
         $description = $name;
         $srtipecustomer_id = $evtcl->stripecustomer_id;
         if ($evtcl->tot_amt > 0) {
             $total = $evtcl->tot_amt;
         } else {
             $total = $_SESSION['do_invoice']->amt_due;
         }
         //Amount need to conver to cents
         $total = $total * 100;
         $idinvoice = $_SESSION['do_invoice']->idinvoice;
         $idcontact = $_SESSION['do_invoice']->idcontact;
         $goto = $evtcl->goto;
         $error_page = $evtcl->error_page;
         $updateStripecustomer = $evtcl->updateStripecustomer;
         $do_contact = new Contact();
         $arr_user_info = $do_contact->getContactInfo_For_Invoice($idcontact);
         $inv_info_arr = array();
         $inv_info_arr['description'] = $_SESSION['do_invoice']->description;
         $inv_info_arr['inv_num'] = $_SESSION['do_invoice']->num;
         $stripe_api_key = $evtcl->stripe_api_key;
         $payment = new StripeGateWay(false, $stripe_api_key);
         if (empty($srtipecustomer_id)) {
             $result = $payment->CreateCustomer($token, $name, $total, $email = "", $description);
         } else {
             if ($updateStripecustomer === 'Yes') {
                 $result = $payment->UpdateExistingCustomer($srtipecustomer_id, $token, $name, $total, $email = "", $description = "");
                 if ($result['update'] == 1) {
                     $payment = new StripeGateWay(false, $stripe_api_key);
                     $result = $payment->CreateCustomer($token, $name, $total, $email = "", $description);
                 }
             } else {
                 $result = $payment->ChargeExsistingCustomer($srtipecustomer_id, $total);
             }
         }
         if ($result['success'] == '1') {
             //set the amout back to $ value
             $total = $total / 100;
             //echo $result['customer_id'];die();
             //Add the customer id in to stripe details class
             if (isset($result['customer_id'])) {
                 $this->saveStripeCustomerId($_SESSION['do_invoice']->iduser, $_SESSION['do_invoice']->idcontact, $result['customer_id']);
             }
             // Display a printable receipt
             $_SESSION['in_page_message'] = _("This transaction has been approved. Thank you for your payment");
             $do_pay_log = new PaymentLog();
             $do_pay_log->addPaymentLog($result['response']['id'], "Stripe", $_SESSION['do_invoice']->idinvoice, $total);
             $idpayment_log = $do_pay_log->getPrimaryKeyValue();
             $do_payment_inv = new PaymentInvoice();
             $do_payment_inv->addPaymentInvoice($idpayment_log, $_SESSION['do_invoice']->idinvoice, $total);
             $this->updatePayment($total);
             //$this->sendPaymentApprovedEmail($total,"Stripe.com",$transactionID);// Sending to customer
             //$this->sendPaymentApprovedEmail($total,"Stripe.com",$transactionID,true); // Sending to user
             if (isset($_SESSION["upgrade"])) {
                 $do_user = new User();
                 $date = date('Y-m-d');
                 $do_user->query("update user set plan='paid', regdate = '{$date}' where iduser="******"Y-m-d"), $_SESSION['do_User']->iduser);
                 $do_ccdetails = new CcDetails();
                 $do_ccdetails->iduser = $_SESSION['do_User']->iduser;
                 $do_ccdetails->token = $result['customer_id'];
                 $do_ccdetails->type = 'Stripe';
                 $do_ccdetails->add();
                 $goto = 'index.php';
                 unset($_SESSION['upgrade']);
             } else {
                 /*
                   Lets check if the invoice has an call back URL and process that
                 */
                 $do_inv_callback = new InvoiceCallback();
                 $do_User = $_SESSION['do_invoice']->getParentUser();
                 $do_inv_callback->processCallBack($this->idinvoice, $this->num, $total, $do_User->iduser, "ok", "Stripe", $transactionID);
                 /*
                 Check if there is a next URL if so then set goto variable to that URL. Userful if we want the user to go to someother page
                 Than in the goto page. This is triggered only when full payment is done.
                 */
                 $next_url = $do_inv_callback->isNextUrl($this->idinvoice);
             }
             //$goto = $next_url;
             $_SESSION['autologin_paid'] = True;
         } else {
             $rr = json_decode($result, true);
             //echo'<pre>';print_r($rr);echo'</pre>';die();
             $r = $rr['error']['message'];
             $error_code = $rr['error']['code'];
             $error_type = $rr['error']['type'];
             if ($error_code == 'invalid_expiry_month' || $error_code == 'invalid_expiry_year' || $error_code == 'expired_card' || $error_code == 'missing') {
                 $goto = $error_page;
                 $_SESSION['updatecustomer'] = 'Yes';
             } elseif ($error_type == 'invalid_request_error') {
                 $goto = $error_page;
                 $_SESSION['updatecustomer'] = 'Yes';
             }
             $_SESSION['in_page_message'] = $r;
         }
     }
     $disp_next = new Display($goto);
     if (isset($_SESSION['upgrade'])) {
         $msg = "Thank You . Your payment has been apporved and now you are paid user.";
         $disp_next->addParam("message", $msg);
     }
     $evtcl->setDisplayNext($disp_next);
 }
Exemple #13
0
?>
    <div class="grayline1"></div>
    <div class="spacerblock_20"></div>
    <?php 
if (!$invoice_access) {
    $msg = new Message();
    echo '<div class="messageshadow_unauthorized">';
    echo '<div class="messages_unauthorized">';
    echo $msg->getMessage("wrong_invoice_url");
    echo '</div></div><br /><br />';
    exit;
}
?>
    <table class="layout_columns"><tr><td class="layout_lcolumn">
<?php 
$do_inv_payment_log = new PaymentLog();
$do_inv_payment_log->getPaymentLog($_SESSION['do_invoice']->idinvoice);
$num_pay = $do_inv_payment_log->getNumRows();
if ($num_pay) {
    ?>
        <div class="left_menu_header">
            <div class="left_menu_header_content"><?php 
    echo _('Payments');
    ?>
</div>
        </div>
        <div class="left_menu">
            <div class="left_menu_content">
            <?php 
    //Payment Log Starts Here
    while ($do_inv_payment_log->next()) {
 $expire_month = $do_recurrent->cc_exp_mon;
 /* @param true = test mode
      @param false = non test mode i.e live  
    */
 $payment = new Authnet(false, $arr_user_info, $_SESSION['do_invoice']->authnet_login, $_SESSION['do_invoice']->authnet_merchant_id, $inv_info_arr);
 $cc_msg = $payment->validateCreditCard($cc_number, $payment_type, "", $expire_year, $expire_month, false);
 //echo '<br />'.$cc_msg;
 if ($cc_msg == "") {
     $invoice = uniqid('ofuz_', true);
     $expiration = $expire_month . $expire_year;
     $payment->transaction($cc_number, $expiration, $do_recurrent->net_total, "", $do_recurrent->idinvoice);
     $payment->process();
     if ($payment->isApproved()) {
         $transactionID = $payment->getTransactionID();
         echo '<br />Payment Processed for invoice ID::: ' . $do_recurrent->idinvoice . ' Transaction ID ::: ' . $transactionID . '<br />';
         $do_pay_log = new PaymentLog();
         $do_pay_log->addPaymentLog($transactionID, "AuthNet", $do_recurrent->idinvoice, $do_recurrent->net_total);
         $idpayment_log = $do_pay_log->getPrimaryKeyValue();
         $do_payment_inv = new PaymentInvoice();
         $do_payment_inv->addPaymentInvoice($idpayment_log, $_SESSION['do_invoice']->idinvoice, $do_recurrent->net_total);
         $_SESSION['do_invoice']->updatePayment($do_recurrent->net_total);
         $_SESSION['do_invoice']->sendPaymentApprovedEmail($do_recurrent->net_total, "Authorized.net", $transactionID);
         $do_inv_callback = new InvoiceCallback();
         $do_inv_callback->processCallBack($_SESSION['do_invoice']->idinvoice, $_SESSION['do_invoice']->num, $do_recurrent->net_total, $_SESSION['do_invoice']->iduser, "AuthNet", $transactionID);
         $do_inv_callback->free();
     } elseif ($payment->isDeclined()) {
         $reason = $payment->getResponseText();
         $do_inv_callback = new InvoiceCallback();
         $do_inv_callback->processCallBack($_SESSION['do_invoice']->idinvoice, $_SESSION['do_invoice']->num, $do_recurrent->net_total, $_SESSION['do_invoice']->iduser, "fail", "AuthNet", "", $reason);
     } else {
         $reason = $payment->getResponseText();
 function eventImportAccount(EventControler $evtcl)
 {
     $msg = "";
     $uploaded_file = $_FILES['fields']['name']['import_account'];
     $target_path = 'files/' . $uploaded_file;
     if (!move_uploaded_file($_FILES['fields']['tmp_name']['import_account'], $target_path)) {
         $msg = "There was an error uploading the file, please try again!";
     } else {
         chmod($target_path, 0755);
         if (file_exists($target_path)) {
             //$xml = simplexml_load_file($_SERVER['DOCUMENT_ROOT']."/".$target_path);
             $str_xml = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/" . $target_path);
             $str_xml = preg_replace('/[^(\\x20-\\x7F)]*/', '', $str_xml);
             $xml = simplexml_load_string($str_xml);
             echo '<pre>';
             print_r($xml);
             echo '</pre>';
             die;
             if ($xml !== FALSE) {
                 $c_cnt = count($xml->contact);
                 if ($c_cnt) {
                     for ($i = 0; $i < $c_cnt; $i++) {
                         $do_contact = new Contact();
                         $contact = $xml->contact[$i];
                         $do_contact->firstname = $contact->firstname;
                         $do_contact->lastname = $contact->lastname;
                         $do_contact->position = $contact->position;
                         $do_contact->company = $contact->company;
                         $do_contact->idcompany = $contact->idcompany;
                         $do_contact->iduser = $_SESSION['do_User']->iduser;
                         $do_contact->picture = $contact->picture;
                         $do_contact->summary = $contact->summary;
                         $do_contact->birthday = $contact->birthday;
                         $do_contact->portal_code = $contact->portal_code;
                         $do_contact->fb_userid = $contact->fb_userid;
                         $do_contact->tw_user_id = $contact->tw_user_id;
                         $do_contact->email_optout = $contact->email_optout;
                         $do_contact->add();
                         $lastInsertedContId = $do_contact->getPrimaryKeyValue();
                         /**
                          *Contact Address	
                          */
                         $ca_cnt = count($contact->contact_address);
                         if ($ca_cnt) {
                             for ($ca_cnt_i = 0; $ca_cnt_i < $ca_cnt; $ca_cnt_i++) {
                                 $do_contact_address = new ContactAddress();
                                 $contact_address = $contact->contact_address[$ca_cnt_i];
                                 $do_contact_address->city = $contact_address->city;
                                 $do_contact_address->country = $contact_address->country;
                                 $do_contact_address->state = $contact_address->state;
                                 $do_contact_address->street = $contact_address->street;
                                 $do_contact_address->zipcode = $contact_address->zipcode;
                                 $do_contact_address->idcontact = $lastInsertedContId;
                                 $do_contact_address->address = $contact_address->address;
                                 $do_contact_address->address_type = $contact_address->address_type;
                                 $do_contact_address->add();
                                 $do_contact_address->free();
                             }
                         }
                         /**
                          *Contact Email	
                          */
                         $ce_cnt = count($contact->contact_email);
                         if ($ce_cnt) {
                             for ($ce_cnt_i = 0; $ce_cnt_i < $ce_cnt; $ce_cnt_i++) {
                                 $do_contact_email = new ContactEmail();
                                 $contact_email = $contact->contact_email[$ce_cnt_i];
                                 $do_contact_email->idcontact = $lastInsertedContId;
                                 $do_contact_email->email_address = $contact_email->email_address;
                                 $do_contact_email->email_type = $contact_email->email_type;
                                 $do_contact_email->email_isdefault = $contact_email->email_isdefault;
                                 $do_contact_email->add();
                                 $do_contact_email->free();
                             }
                         }
                         /**
                          *Contact Phone 
                          */
                         $cp_cnt = count($contact->contact_phone);
                         if ($cp_cnt) {
                             for ($cp_cnt_i = 0; $cp_cnt_i < $cp_cnt; $cp_cnt_i++) {
                                 $do_contact_phone = new ContactPhone();
                                 $contact_phone = $contact->contact_phone[$cp_cnt_i];
                                 $do_contact_phone->phone_number = $contact_phone->phone_number;
                                 $do_contact_phone->phone_type = $contact_phone->phone_type;
                                 $do_contact_phone->idcontact = $lastInsertedContId;
                                 $do_contact_phone->add();
                                 $do_contact_phone->free();
                             }
                         }
                         /**
                          *Contact Note	
                          */
                         $cn_cnt = count($contact->contact_note);
                         if ($cn_cnt) {
                             for ($cn_cnt_i = 0; $cn_cnt_i < $cn_cnt; $cn_cnt_i++) {
                                 $do_contact_note = new ContactNotes();
                                 $contact_note = $contact->contact_note[$cn_cnt_i];
                                 $do_contact_note->idcontact = $lastInsertedContId;
                                 $do_contact_note->note = $contact_note->note;
                                 $do_contact_note->date_added = $contact_note->date_added;
                                 $do_contact_note->document = $contact_note->document;
                                 $do_contact_note->idcompany = $contact_note->idcompany;
                                 $do_contact_note->iduser = $_SESSION['do_User']->iduser;
                                 $do_contact_note->priority = $contact_note->priority;
                                 $do_contact_note->send_email = $contact_note->send_email;
                                 $do_contact_note->hours_work = $contact_note->hours_work;
                                 $do_contact_note->note_visibility = $contact_note->note_visibility;
                                 $do_contact_note->type = $contact_note->type;
                                 $do_contact_note->add();
                                 $do_contact_note->free();
                             }
                         }
                         /**
                          *Contact Tag	
                          */
                         $ctag_cnt = count($contact->contact_tag);
                         if ($ctag_cnt) {
                             for ($ctag_cnt_i = 0; $ctag_cnt_i < $ctag_cnt; $ctag_cnt_i++) {
                                 $do_tag = new Tag();
                                 $contact_tag = $contact->contact_tag[$ctag_cnt_i];
                                 $do_tag->tag_name = $contact_tag->tag_name;
                                 $do_tag->iduser = $_SESSION['do_User']->iduser;
                                 $do_tag->reference_type = $contact_tag->reference_type;
                                 $do_tag->idreference = $lastInsertedContId;
                                 $do_tag->date_added = $contact_tag->date_added;
                                 $do_tag->add();
                                 $do_tag->free();
                             }
                         }
                         /**
                          *Contact tasks which are not associated with Project	
                          */
                         //Contact tasks which are not associated with Project
                         $ctwop_cnt = count($contact->contact_task_without_project);
                         if ($ctwop_cnt) {
                             for ($ctwop_cnt_i = 0; $ctwop_cnt_i < $ctwop_cnt; $ctwop_cnt_i++) {
                                 $do_task = new Task();
                                 $contact_task_wo_p = $contact->contact_task_without_project[$ctwop_cnt_i];
                                 $do_task->task_description = $contact_task_wo_p->task_description;
                                 $do_task->due_date = $contact_task_wo_p->due_date;
                                 $do_task->category = $contact_task_wo_p->category;
                                 $do_task->iduser = $_SESSION['do_User']->iduser;
                                 $do_task->due_date_dateformat = $contact_task_wo_p->due_date_dateformat;
                                 $do_task->status = $contact_task_wo_p->status;
                                 $do_task->date_completed = $contact_task_wo_p->date_completed;
                                 $do_task->idcontact = $lastInsertedContId;
                                 $do_task->from_note = $contact_task_wo_p->from_note;
                                 $do_task->is_sp_date_set = $contact_task_wo_p->is_sp_date_set;
                                 $do_task->task_category = $contact_task_wo_p->task_category;
                                 $do_task->add();
                                 $do_task->free();
                             }
                         }
                         /**
                          *Contact tasks which are associated with Project	
                          */
                         $arr_prj = array();
                         $cont_task_with_prj_cnt = count($contact->contact_task_with_project);
                         if ($cont_task_with_prj_cnt) {
                             for ($i = 0; $i < $cont_task_with_prj_cnt; $i++) {
                                 $do_project = new Project();
                                 $project = $contact->contact_task_with_project[$i];
                                 $do_project->iduser = $_SESSION['do_User']->iduser;
                                 $do_project->name = $project->name;
                                 $do_project->end_date_dateformat = $project->end_date_dateformat;
                                 $do_project->idcompany = $project->idcompany;
                                 $do_project->status = $project->status;
                                 $do_project->effort_estimated_hrs = $project->effort_estimated_hrs;
                                 $do_project->is_public = $project->is_public;
                                 $do_project->add();
                                 $lastInsertedPrjId = $do_project->getPrimaryKeyValue();
                                 //$arr_prj[$lastInsertedPrjId] = $project->idproject;
                                 $pt_cnt = count($project->project_task);
                                 if ($pt_cnt) {
                                     for ($pt_cnt_i = 0; $pt_cnt_i < $pt_cnt; $pt_cnt_i++) {
                                         $do_task = new Task();
                                         $project_task = $project->project_task[$pt_cnt_i];
                                         $do_task->task_description = $project_task->task_description;
                                         $do_task->due_date = $project_task->due_date;
                                         $do_task->category = $project_task->category;
                                         $do_task->iduser = $_SESSION['do_User']->iduser;
                                         $do_task->due_date_dateformat = $project_task->due_date_dateformat;
                                         $do_task->status = $project_task->status;
                                         $do_task->date_completed = $project_task->date_completed;
                                         $do_task->idcontact = $lastInsertedContId;
                                         $do_task->from_note = $project_task->from_note;
                                         $do_task->is_sp_date_set = $project_task->is_sp_date_set;
                                         $do_task->task_category = $project_task->task_category;
                                         $do_task->add();
                                         $lastInsertedTaskId = $do_task->getPrimaryKeyValue();
                                         $do_project_task = new ProjectTask();
                                         $do_project_task->idtask = $lastInsertedTaskId;
                                         $do_project_task->idproject = $lastInsertedPrjId;
                                         $do_project_task->progress = $project_task->progress;
                                         $do_project_task->drop_box_code = $project_task->drop_box_code;
                                         $do_project_task->priority = $project_task->priority;
                                         $do_project_task->hrs_work_expected = $project_task->hrs_work_expected;
                                         $do_project_task->add();
                                         $lastInsertedPrjTaskId = $do_project_task->getPrimaryKeyValue();
                                         $pd_cnt = count($project_task->project_discuss);
                                         if ($pd_cnt) {
                                             for ($i = 0; $i < $pd_cnt; $i++) {
                                                 $do_project_discuss = new ProjectDiscuss();
                                                 $project_discuss = $project_task->project_discuss[$i];
                                                 $do_project_discuss->idproject_task = $lastInsertedPrjTaskId;
                                                 $do_project_discuss->idtask = $lastInsertedTaskId;
                                                 $do_project_discuss->idproject = $lastInsertedPrjId;
                                                 $do_project_discuss->discuss = $project_discuss->discuss;
                                                 $do_project_discuss->date_added = $project_discuss->date_added;
                                                 $do_project_discuss->document = $project_discuss->document;
                                                 $do_project_discuss->iduser = $_SESSION['do_User']->iduser;
                                                 $do_project_discuss->drop_box_sender = $project_discuss->drop_box_sender;
                                                 $do_project_discuss->priority = $project_discuss->priority;
                                                 $do_project_discuss->hours_work = $project_discuss->hours_work;
                                                 $do_project_discuss->discuss_edit_access = $project_discuss->discuss_edit_access;
                                                 $do_project_discuss->type = $project_discuss->type;
                                                 $do_project_discuss->add();
                                                 $do_project_discuss->free();
                                             }
                                         }
                                         $do_project_task->free();
                                         $do_task->free();
                                     }
                                 }
                                 $do_project->free();
                             }
                         }
                         /**
                          *Invoice import
                          */
                         $msg_inv = "";
                         $inv_cnt = count($contact->invoice);
                         if ($inv_cnt) {
                             for ($inv_cnt_i = 0; $inv_cnt_i < $inv_cnt; $inv_cnt_i++) {
                                 $do_invoice = new Invoice();
                                 $invoice = $contact->invoice[$inv_cnt_i];
                                 $do_invoice->num = $invoice->num;
                                 $do_invoice->iduser = $_SESSION['do_User']->iduser;
                                 $do_invoice->description = $invoice->description;
                                 $do_invoice->amount = $invoice->amount;
                                 $do_invoice->datepaid = $invoice->datepaid;
                                 $do_invoice->datecreated = $invoice->datecreated;
                                 $do_invoice->status = $invoice->status;
                                 $do_invoice->discount = $invoice->discount;
                                 $do_invoice->idcontact = $lastInsertedContId;
                                 $do_invoice->due_date = $invoice->due_date;
                                 $do_invoice->invoice_address = $invoice->invoice_address;
                                 $do_invoice->invoice_term = $invoice->invoice_term;
                                 $do_invoice->invoice_note = $invoice->invoice_note;
                                 $do_invoice->sub_total = $invoice->sub_total;
                                 $do_invoice->net_total = $invoice->net_total;
                                 $do_invoice->amt_due = $invoice->amt_due;
                                 $do_invoice->idcompany = $invoice->idcompany;
                                 $do_invoice->tax = $invoice->tax;
                                 $do_invoice->set_delete = $invoice->set_delete;
                                 $do_invoice->total_discounted_amt = $invoice->total_discounted_amt;
                                 $do_invoice->total_taxed_amount = $invoice->total_taxed_amount;
                                 $do_invoice->add();
                                 $lastInsertedInvoiceId = $do_invoice->getPrimaryKeyValue();
                                 $invline_cnt = count($invoice->invoiceline);
                                 if ($invline_cnt) {
                                     for ($invline_cnt_i = 0; $invline_cnt_i < $invline_cnt; $invline_cnt_i++) {
                                         $do_invoiceline = new InvoiceLine();
                                         $invoiceline = $invoice->invoiceline[$invline_cnt_i];
                                         $do_invoiceline->idinvoice = $lastInsertedInvoiceId;
                                         $do_invoiceline->description = $invoiceline->description;
                                         $do_invoiceline->price = $invoiceline->price;
                                         $do_invoiceline->qty = $invoiceline->qty;
                                         $do_invoiceline->total = $invoiceline->total;
                                         $do_invoiceline->item = $invoiceline->item;
                                         $do_invoiceline->line_tax = $invoiceline->line_tax;
                                         $do_invoiceline->discounted_amount = $invoiceline->discounted_amount;
                                         $do_invoiceline->taxed_amount = $invoiceline->taxed_amount;
                                         $do_invoiceline->add();
                                         $do_invoiceline->free();
                                     }
                                 }
                                 //invoiceline import ends
                                 // recurrentinvoice
                                 $recinv_cnt = count($invoice->recurrentinvoice);
                                 if ($recinv_cnt) {
                                     for ($recinv_cnt_i = 0; $recinv_cnt_i < $recinv_cnt; $recinv_cnt_i++) {
                                         $do_recurrentinvoice = new RecurrentInvoice();
                                         $recurrentinvoice = $invoice->recurrentinvoice[$recinv_cnt_i];
                                         $do_recurrentinvoice->iduser = $_SESSION['do_User']->iduser;
                                         $do_recurrentinvoice->idinvoice = $lastInsertedInvoiceId;
                                         $do_recurrentinvoice->nextdate = $recurrentinvoice->nextdate;
                                         $do_recurrentinvoice->recurrence = $recurrentinvoice->recurrence;
                                         $do_recurrentinvoice->recurrencetype = $recurrentinvoice->recurrencetype;
                                         $do_recurrentinvoice->add();
                                         $do_recurrentinvoice->free();
                                     }
                                 }
                                 //recurrentinvoice import ends
                                 // Payment Log import
                                 $paymentlog_cnt = count($invoice->paymentlog);
                                 if ($paymentlog_cnt) {
                                     for ($paymentlog_cnt_i = 0; $paymentlog_cnt_i < $paymentlog_cnt; $paymentlog_cnt_i++) {
                                         $do_paymentlog = new PaymentLog();
                                         $paymentlog = $invoice->paymentlog[$paymentlog_cnt_i];
                                         $do_paymentlog->timestamp = $paymentlog->timestamp;
                                         $do_paymentlog->idinvoice = $lastInsertedInvoiceId;
                                         $do_paymentlog->amount = $paymentlog->amount;
                                         $do_paymentlog->payment_type = $paymentlog->payment_type;
                                         $do_paymentlog->ref_num = $paymentlog->ref_num;
                                         $do_paymentlog->date_added = $paymentlog->date_added;
                                         $do_paymentlog->add();
                                         $lastInsertedPaymentLogId = $do_paymentlog->getPrimaryKeyValue();
                                         //payment_invoice : Payment Invoice import
                                         $paymentinv_cnt = count($paymentlog->payment_invoice);
                                         if ($paymentinv_cnt) {
                                             for ($paymentinv_cnt_i = 0; $paymentinv_cnt_i < $paymentinv_cnt; $paymentinv_cnt_i++) {
                                                 $do_payment_invoice = new PaymentInvoice();
                                                 $paymentinvoice = $paymentlog->payment_invoice[$paymentinv_cnt_i];
                                                 $do_payment_invoice->idpayment = $lastInsertedPaymentLogId;
                                                 $do_payment_invoice->idinvoice = $lastInsertedInvoiceId;
                                                 $do_payment_invoice->amount = $paymentinvoice->amount;
                                                 $do_payment_invoice->add();
                                                 $do_payment_invoice->free();
                                             }
                                         }
                                         // payment_invoice import ends
                                         //paymentlog_extra_amount import
                                         $paymentlog_ext_amt_cnt = count($paymentlog->paymentlog_extra_amount);
                                         if ($paymentlog_ext_amt_cnt) {
                                             for ($paymentlog_ext_amt_cnt_i = 0; $paymentlog_ext_amt_cnt_i < $paymentlog_ext_amt_cnt; $paymentlog_ext_amt_cnt_i++) {
                                                 $paymentlog_extra_amount = $paymentlog->paymentlog_extra_amount[$paymentlog_ext_amt_cnt_i];
                                                 $q = new sqlQuery($GLOBALS['conx']);
                                                 $query = "INSERT INTO paymentlog_extra_amount (`idpaymentlog`,`extra_amt`,`iduser`)\n            VALUES (" . $lastInsertedPaymentLogId . "," . $paymentlog_extra_amount->extra_amt . "," . $_SESSION['do_User']->iduser . ")\n            ";
                                                 $q->query($query);
                                                 $q->free();
                                             }
                                         }
                                         // paymentlog_extra_amount import ends
                                         $do_paymentlog->free();
                                     }
                                 }
                                 //Payment Log import ends
                                 $msg_inv = ", Invoices";
                                 $do_invoice->free();
                             }
                         }
                         // Invoice import ends
                         /************************************************************************************************************************/
                         $do_contact->free();
                     }
                     $msg = "Your Contacts" . $msg_inv;
                 }
                 /**
                  *Company insert
                  */
                 $compani_id = array();
                 $lastInsertedCompani_id = array();
                 $companies_cnt = count($xml->companies);
                 if ($companies_cnt) {
                     for ($i = 0; $i < $companies_cnt; $i++) {
                         $do_company = new Company();
                         $company = $xml->companies[$i];
                         array_push($compani_id, "{$company->idcompany}");
                         // $do_company->idcompany=$company->idcompany;
                         $do_company->name = $company->name;
                         $do_company->iduser = $_SESSION['do_User']->iduser;
                         $do_company->add();
                         array_push($lastInsertedCompani_id, $do_company->getPrimaryKeyValue());
                         $do_company->free();
                     }
                 }
                 //tasks which are neither associated with Contact nor with project
                 $task_wop_cnt = count($xml->task_without_project);
                 if ($task_wop_cnt) {
                     for ($i = 0; $i < $task_wop_cnt; $i++) {
                         $do_task = new Task();
                         $task_wop = $xml->task_without_project[$i];
                         $do_task->task_description = $task_wop->task_description;
                         $do_task->due_date = $task_wop->due_date;
                         $do_task->category = $task_wop->category;
                         $do_task->iduser = $_SESSION['do_User']->iduser;
                         $do_task->due_date_dateformat = $task_wop->due_date_dateformat;
                         $do_task->status = $task_wop->status;
                         $do_task->date_completed = $task_wop->date_completed;
                         $do_task->idcontact = $task_wop->idcontact;
                         //it would be 0 since not associated with contact.
                         $do_task->from_note = $task_wop->from_note;
                         $do_task->is_sp_date_set = $task_wop->is_sp_date_set;
                         $do_task->task_category = $task_wop->task_category;
                         $do_task->add();
                         $do_task->free();
                     }
                     $msg .= ", Tasks";
                 }
                 //tasks which are associated with Project
                 $prj_cnt = count($xml->project);
                 if ($prj_cnt) {
                     for ($i = 0; $i < $prj_cnt; $i++) {
                         $do_project = new Project();
                         $project = $xml->project[$i];
                         $do_project->iduser = $_SESSION['do_User']->iduser;
                         $do_project->name = $project->name;
                         $do_project->end_date_dateformat = $project->end_date_dateformat;
                         $do_project->idcompany = $project->idcompany;
                         $do_project->status = $project->status;
                         $do_project->effort_estimated_hrs = $project->effort_estimated_hrs;
                         $do_project->is_public = $project->is_public;
                         $do_project->add();
                         $lastInsertedPrjId = $do_project->getPrimaryKeyValue();
                         $pt_cnt = count($project->project_task);
                         if ($pt_cnt) {
                             for ($pt_cnt_i = 0; $pt_cnt_i < $pt_cnt; $pt_cnt_i++) {
                                 $do_task = new Task();
                                 $project_task = $project->project_task[$pt_cnt_i];
                                 $do_task->task_description = $project_task->task_description;
                                 $do_task->due_date = $project_task->due_date;
                                 $do_task->category = $project_task->category;
                                 $do_task->iduser = $_SESSION['do_User']->iduser;
                                 $do_task->due_date_dateformat = $project_task->due_date_dateformat;
                                 $do_task->status = $project_task->status;
                                 $do_task->date_completed = $project_task->date_completed;
                                 $do_task->idcontact = $project_task->idcontact;
                                 $do_task->from_note = $project_task->from_note;
                                 $do_task->is_sp_date_set = $project_task->is_sp_date_set;
                                 $do_task->task_category = $project_task->task_category;
                                 $do_task->add();
                                 $lastInsertedTskId = $do_task->getPrimaryKeyValue();
                                 $q = new sqlQuery($GLOBALS['conx']);
                                 if ($project_task->progress == '') {
                                     $project_task_progress = 0;
                                 } else {
                                     $project_task_progress = $project_task->progress;
                                 }
                                 $sql = "INSERT INTO \n\t\t\tproject_task (idtask, idproject, progress,drop_box_code,priority,hrs_work_expected) \n\t\t\tVALUES ({$lastInsertedTskId},{$lastInsertedPrjId},{$project_task_progress},{$project_task->drop_box_code},{$project_task->priority},{$project_task->hrs_work_expected})";
                                 echo $sql;
                                 echo "<br>";
                                 $q->query($sql);
                                 $lastInsertedPrjTaskId = $q->getInsertId('project_task', 'idproject_task');
                                 $pd_cnt = count($project_task->project_discuss);
                                 if ($pd_cnt) {
                                     for ($pd_cnt_i = 0; $pd_cnt_i < $pd_cnt; $pd_cnt_i++) {
                                         $do_project_discuss = new ProjectDiscuss();
                                         $project_discuss = $project_task->project_discuss[$pd_cnt_i];
                                         $do_project_discuss->idproject_task = $lastInsertedPrjTaskId;
                                         $do_project_discuss->idtask = $lastInsertedTskId;
                                         $do_project_discuss->idproject = $lastInsertedPrjId;
                                         $do_project_discuss->discuss = $project_discuss->discuss;
                                         $do_project_discuss->date_added = $project_discuss->date_added;
                                         $do_project_discuss->document = $project_discuss->document;
                                         $do_project_discuss->iduser = $_SESSION['do_User']->iduser;
                                         $do_project_discuss->drop_box_sender = $project_discuss->drop_box_sender;
                                         $do_project_discuss->priority = $project_discuss->priority;
                                         $do_project_discuss->hours_work = $project_discuss->hours_work;
                                         $do_project_discuss->discuss_edit_access = $project_discuss->discuss_edit_access;
                                         $do_project_discuss->type = $project_discuss->type;
                                         $do_project_discuss->add();
                                         $do_project_discuss->free();
                                     }
                                 }
                                 // $do_project_task->free();
                                 $do_task->free();
                             }
                         }
                         $do_project->free();
                     }
                     $compani_id_cnt = count($compani_id);
                     if ($compani_id_cnt) {
                         $j = 0;
                         foreach ($compani_id as $cmp_id) {
                             $q = new sqlQuery($GLOBALS['conx']);
                             $sql = "UPDATE  contact SET idcompany ={$lastInsertedCompani_id[$j]}  WHERE  iduser={$_SESSION['do_User']->iduser} AND idcompany ={$cmp_id}";
                             $q->query($sql);
                             $sql1 = "UPDATE  invoice SET idcompany ={$lastInsertedCompani_id[$j]}  WHERE  iduser={$_SESSION['do_User']->iduser} AND idcompany ={$cmp_id}";
                             $q->query($sql1);
                             $sql2 = "UPDATE  project SET idcompany ={$lastInsertedCompani_id[$j]}  WHERE  iduser={$_SESSION['do_User']->iduser} AND idcompany ={$cmp_id}";
                             $q->query($sql2);
                             $q->free();
                             $j++;
                         }
                     }
                     $do_create_usrtbl = new ContactView();
                     $do_create_usrtbl->rebuildContactUserTable($_SESSION['do_User']->iduser);
                     $msg .= " and Projects have been imported successfully.";
                 }
             } else {
                 $msg = "Sorry! The data could not be imported.";
             }
         } else {
             $msg = "Sorry! Could not find the uploaded file.";
         }
     }
     $_SESSION['in_page_message'] = $msg;
 }
$do_task = new Task($GLOBALS['conx']);
$do_task_category = new TaskCategory($GLOBALS['conx']);
$do_contact_task = new Contact();
$invoice_access = true;
if (!empty($_POST)) {
    $status = $_POST["payment_status"];
    $ref_num = $_POST["txn_id"];
    $amt_paid = $_POST["mc_gross"];
    $id = $_POST["item_number"];
    if (!is_object($_SESSION['do_invoice'])) {
        $do_invoice = new Invoice();
        $do_invoice->sessionPersistent("do_invoice", "index.php", OFUZ_TTL);
    }
    $_SESSION['do_invoice']->getId($id);
    if ($status == "Completed") {
        $do_pay_log = new PaymentLog();
        $do_pay_log->addPaymentLog($ref_num, "Paypal", $_SESSION['do_invoice']->idinvoice, $amt_paid);
        $idpayment_log = $do_pay_log->getPrimaryKeyValue();
        $do_payment_inv = new PaymentInvoice();
        $do_payment_inv->addPaymentInvoice($idpayment_log, $_SESSION['do_invoice']->idinvoice, $amt_paid);
        $_SESSION['do_invoice']->updatePayment($amt_paid);
        // if(!$do_pay_log->isTransRefExists($ref_num,$_SESSION['do_invoice']->idinvoice,"Paypal")){
        // $do_pay_log->addPaymentLog($ref_num,"Paypal",$_SESSION['do_invoice']->idinvoice,$amt_paid);
        // $_SESSION['do_invoice']->updatePayment($amt_paid);
        $_SESSION['do_invoice']->sendPaymentApprovedEmail($amt_paid, "Paypal", $ref_num);
        $_SESSION['do_invoice']->sendPaymentApprovedEmail($amt_paid, "Paypal", $ref_num, true);
        // True for sending the ofuz user
        /*
           Lets check if the invoice has an call back URL and process that
        */
        $do_inv_callback = new InvoiceCallback();
 /**
  * @param int $status
  * @param PaymentTransaction $transaction
  * @throws CException
  */
 public function changeTransactionStatus($status, PaymentTransaction $transaction)
 {
     if (!$transaction->changeStatus($status)) {
         throw new CException(sprintf('Failed to change payment transaction status to %d.', $status));
     }
     PaymentLog::create(array('transactionId' => $transaction->id, 'transactionStatus' => $transaction->status));
 }
     }
 } else {
     if (!empty($_SESSION['do_invoice']->stripe_api_key) && !empty($_SESSION['do_invoice']->stripe_publish_key)) {
         $payment_mode = true;
     }
 }
 if ($payment_mode == true) {
     echo $_SESSION['do_invoice']->idcontact;
     $stripe_customer_id = $_SESSION['do_invoice']->getStripeCustomerId($_SESSION['do_invoice']->iduser, $_SESSION['do_invoice']->idcontact);
     if (!empty($stripe_customer_id)) {
         $total = $do_recurrent->net_total * 100;
         $payment = new StripeGateWay(false, $_SESSION['do_invoice']->stripe_api_key);
         $result = $payment->ChargeExsistingCustomer($stripe_customer_id, $total);
         if ($result['success'] == '1') {
             $total = $total / 100;
             $do_pay_log = new PaymentLog();
             $do_pay_log->addPaymentLog($result['response']['id'], "Stripe", $_SESSION['do_invoice']->idinvoice, $total);
             $idpayment_log = $do_pay_log->getPrimaryKeyValue();
             $do_payment_inv = new PaymentInvoice();
             $do_payment_inv->addPaymentInvoice($idpayment_log, $_SESSION['do_invoice']->idinvoice, $total);
             //$this->sendPaymentApprovedEmail($total,"Stripe.com",$transactionID);// Sending to customer
             //$this->sendPaymentApprovedEmail($total,"Stripe.com",$transactionID,true); // Sending to user
             $inv_qry = new sqlQuery($conx);
             $date_paid = date("Y-m-d");
             $status = 'Paid';
             $invoice_note = 'Thanks for the business';
             $sub_total = $total;
             $net_total = $total;
             $amt_due = '0.00';
             $sql_update_invoice = "UPDATE invoice set\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  amount = '{$sub_total}',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  sub_total = '{$sub_total}',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  net_total = '{$net_total}', \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  status = '{$status}',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  amt_due = '{$amt_due}',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t  datepaid  = '{$date_paid}'\n\t\t\t\t\t\t\t\t\t\t\t\twhere idinvoice = " . $_SESSION['do_invoice']->idinvoice;
             echo $sql_update_invoice;
 private function XMLExport($iduser)
 {
     $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n";
     $do_user = new User();
     $do_user->getId($iduser);
     $xml .= "<user>\n";
     $xml .= " <iduser><![CDATA[" . $do_user->iduser . "]]></iduser>\n";
     $xml .= " <firstname><![CDATA[" . $do_user->firstname . "]]></firstname>\n";
     $xml .= " <middlename><![CDATA[" . $do_user->middlename . "]]></middlename>\n";
     $xml .= " <lastname><![CDATA[" . $do_user->lastname . "]]></lastname>\n";
     $xml .= " <email><![CDATA[" . $do_user->email . "]]></email>\n";
     $xml .= " <phone><![CDATA[" . $do_user->phone . "]]></phone>\n";
     $xml .= " <company><![CDATA[" . $do_user->company . "]]></company>\n";
     $xml .= " <position><![CDATA[" . $do_user->position . "]]></position>\n";
     $xml .= " <address1><![CDATA[" . $do_user->address1 . "]]></address1>\n";
     $xml .= " <address2><![CDATA[" . $do_user->address2 . "]]></address2>\n";
     $xml .= " <city><![CDATA[" . $do_user->city . "]]></city>\n";
     $xml .= " <zip><![CDATA[" . $do_user->zip . "]]></zip>\n";
     $xml .= " <state><![CDATA[" . $do_user->state . "]]></state>\n";
     $xml .= " <country><![CDATA[" . $do_user->country . "]]></country>\n";
     $xml .= " <username><![CDATA[" . $do_user->username . "]]></username>\n";
     $xml .= " <password><![CDATA[" . $do_user->password . "]]></password>\n";
     $xml .= " <isadmin><![CDATA[" . $do_user->isadmin . "]]></isadmin>\n";
     $xml .= " <regdate><![CDATA[" . $do_user->regdate . "]]></regdate>\n";
     $xml .= " <openid><![CDATA[" . $do_user->openid . "]]></openid>\n";
     $xml .= " <last_login><![CDATA[" . $do_user->last_login . "]]></last_login>\n";
     $xml .= " <drop_box_code><![CDATA[" . $do_user->drop_box_code . "]]></drop_box_code>\n";
     $xml .= " <idcontact><![CDATA[" . $do_user->idcontact . "]]></idcontact>\n";
     $xml .= " <fb_user_id><![CDATA[" . $do_user->fb_user_id . "]]></fb_user_id>\n";
     $xml .= " <api_key><![CDATA[" . $do_user->api_key . "]]></api_key>\n";
     $xml .= " <plan><![CDATA[" . $do_user->plan . "]]></plan>\n";
     $xml .= " <status><![CDATA[" . $do_user->status . "]]></status>\n";
     $xml .= " <google_openid_identity><![CDATA[" . $do_user->google_openid_identity . "]]></google_openid_identity>\n";
     $xml .= "</user>\n";
     if (!$this->appendToFile($xml)) {
         return false;
     }
     $xml = ' ';
     $i = 1;
     $do_contact = new Contact();
     $do_contact->getUserContacts($iduser);
     $xml .= "<contacts>\n";
     while ($do_contact->next()) {
         set_time_limit(3600);
         //1 hr
         $xml .= " <contact>\n";
         $xml .= "  <idcontact><![CDATA[" . $do_contact->getData("idcontact") . "]]></idcontact>\n";
         $xml .= "  <firstname><![CDATA[" . $do_contact->getData("firstname") . "]]></firstname>\n";
         $xml .= "  <lastname><![CDATA[" . $do_contact->getData("lastname") . "]]></lastname>\n";
         $xml .= "  <position><![CDATA[" . $do_contact->getData("position") . "]]></position>\n";
         $xml .= "  <company><![CDATA[" . $do_contact->getData("company") . "]]></company>\n";
         $xml .= "  <idcompany><![CDATA[" . $do_contact->getData("idcompany") . "]]></idcompany>\n";
         $xml .= "  <iduser><![CDATA[" . $do_contact->getData("iduser") . "]]></iduser>\n";
         $xml .= "  <picture><![CDATA[" . $do_contact->getData("picture") . "]]></picture>\n";
         $xml .= "  <summary><![CDATA[" . $do_contact->getData("summary") . "]]></summary>\n";
         $xml .= "  <birthday><![CDATA[" . $do_contact->getData("birthday") . "]]></birthday>\n";
         $xml .= "  <portal_code><![CDATA[" . $do_contact->getData("portal_code") . "]]></portal_code>\n";
         $xml .= "  <fb_userid><![CDATA[" . $do_contact->getData("fb_userid") . "]]></fb_userid>\n";
         $xml .= "  <tw_user_id><![CDATA[" . $do_contact->getData("tw_user_id") . "]]></tw_user_id>\n";
         $xml .= "  <email_optout><![CDATA[" . $do_contact->getData("email_optout") . "]]></email_optout>\n\n";
         $contact_address = $do_contact->getChildContactAddress();
         while ($contact_address->next()) {
             $xml .= "  <contact_address>\n";
             $xml .= "   <idcontact_address><![CDATA[" . $contact_address->idcontact_address . "]]></idcontact_address>\n";
             $xml .= "   <city><![CDATA[" . $contact_address->city . "]]></city>\n";
             $xml .= "   <country><![CDATA[" . $contact_address->country . "]]></country>\n";
             $xml .= "   <state><![CDATA[" . $contact_address->state . "]]></state>\n";
             $xml .= "   <street><![CDATA[" . $contact_address->street . "]]></street>\n";
             $xml .= "   <zipcode><![CDATA[" . $contact_address->zipcode . "]]></zipcode>\n";
             $xml .= "   <idcontact><![CDATA[" . $contact_address->idcontact . "]]></idcontact>\n";
             $xml .= "   <address><![CDATA[" . $contact_address->address . "]]></address>\n";
             $xml .= "   <address_type><![CDATA[" . $contact_address->address_type . "]]></address_type>\n";
             $xml .= "  </contact_address>\n";
         }
         $contact_email = $do_contact->getChildContactEmail();
         while ($contact_email->next()) {
             $xml .= "  <contact_email>\n";
             $xml .= "   <idcontact_email><![CDATA[" . $contact_email->idcontact_email . "]]></idcontact_email>\n";
             $xml .= "   <idcontact><![CDATA[" . $contact_email->idcontact . "]]></idcontact>\n";
             $xml .= "   <email_address><![CDATA[" . $contact_email->email_address . "]]></email_address>\n";
             $xml .= "   <email_type><![CDATA[" . $contact_email->email_type . "]]></email_type>\n";
             $xml .= "   <email_isdefault><![CDATA[" . $contact_email->email_isdefault . "]]></email_isdefault>\n";
             $xml .= "  </contact_email>\n";
         }
         $contact_phone = $do_contact->getChildContactPhone();
         while ($contact_phone->next()) {
             $xml .= "  <contact_phone>\n";
             $xml .= "   <idcontact_phone><![CDATA[" . $contact_phone->idcontact_phone . "]]></idcontact_phone>\n";
             $xml .= "   <phone_number><![CDATA[" . $contact_phone->phone_number . "]]></phone_number>\n";
             $xml .= "   <phone_type><![CDATA[" . $contact_phone->phone_type . "]]></phone_type>\n";
             $xml .= "   <idcontact><![CDATA[" . $contact_phone->email_type . "]]></idcontact>\n";
             $xml .= "  </contact_phone>\n";
         }
         $contact_note = $do_contact->getChildContactNotes();
         while ($contact_note->next()) {
             $xml .= "  <contact_note>\n";
             $xml .= "   <idcontact_note><![CDATA[" . $contact_note->idcontact_note . "]]></idcontact_note>\n";
             $xml .= "   <idcontact><![CDATA[" . $contact_note->idcontact . "]]></idcontact>\n";
             $xml .= "   <note><![CDATA[" . $contact_note->note . "]]></note>\n";
             $xml .= "   <date_added><![CDATA[" . $contact_note->date_added . "]]></date_added>\n";
             $xml .= "   <document><![CDATA[" . $contact_note->document . "]]></document>\n";
             $xml .= "   <idcompany><![CDATA[" . $contact_note->idcompany . "]]></idcompany>\n";
             $xml .= "   <iduser><![CDATA[" . $contact_note->iduser . "]]></iduser>\n";
             $xml .= "   <priority><![CDATA[" . $contact_note->priority . "]]></priority>\n";
             $xml .= "   <send_email><![CDATA[" . $contact_note->send_email . "]]></send_email>\n";
             $xml .= "   <hours_work><![CDATA[" . $contact_note->hours_work . "]]></hours_work>\n";
             $xml .= "   <note_visibility><![CDATA[" . $contact_note->note_visibility . "]]></note_visibility>\n";
             $xml .= "  </contact_note>\n";
         }
         if (!$this->appendToFile($xml)) {
             return false;
         }
         $xml = ' ';
         if ($i == '1') {
             $do_task = new Task();
             $do_task->getTaskWithoutProject();
             while ($do_task->next()) {
                 $xml .= "  <contact_task>\n";
                 $xml .= "   <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
                 $xml .= "   <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
                 $xml .= "   <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
                 $xml .= "   <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
                 $xml .= "   <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
                 $xml .= "   <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
                 $xml .= "   <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
                 $xml .= "   <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
                 $xml .= "   <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
                 $xml .= "   <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
                 $xml .= "   <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
                 $xml .= "   <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n";
                 $xml .= "  </contact_task>\n";
                 if (!$this->appendToFile($xml)) {
                     return false;
                 }
                 $xml = ' ';
             }
             $do_task->free();
         }
         $do_task = new Task();
         $do_task->getContactTaskWithoutProject($do_contact->getData("idcontact"));
         while ($do_task->next()) {
             $xml .= "  <contact_task>\n";
             $xml .= "   <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
             $xml .= "   <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
             $xml .= "   <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
             $xml .= "   <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
             $xml .= "   <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
             $xml .= "   <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
             $xml .= "   <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
             $xml .= "   <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
             $xml .= "   <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
             $xml .= "   <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
             $xml .= "   <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
             $xml .= "   <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n";
             $xml .= "  </contact_task>\n";
         }
         $do_task->free();
         if (!$this->appendToFile($xml)) {
             return false;
         }
         $xml = ' ';
         /**
          * For all the contact tasks which are associated with Project.
          */
         $do_task = new Task();
         //$do_task->getContactTasksAssociatedWithProject($do_contact->getData("idcontact"));
         $do_task->getContactTasksAssociatedWithProject($do_contact->getData("idcontact"));
         while ($do_task->next()) {
             $do_project = new Project();
             $do_project->getId($do_task->idproject);
             $xml .= "  <contact_task_with_project>\n";
             $xml .= "   <idproject><![CDATA[" . $do_project->idproject . "]]></idproject>\n";
             $xml .= "   <iduser><![CDATA[" . $do_project->iduser . "]]></iduser>\n";
             $xml .= "   <name><![CDATA[" . $do_project->name . "]]></name>\n";
             $xml .= "   <end_date_dateformat><![CDATA[" . $do_project->end_date_dateformat . "]]></end_date_dateformat>\n";
             $xml .= "   <idcompany><![CDATA[" . $do_project->idcompany . "]]></idcompany>\n";
             $xml .= "   <status><![CDATA[" . $do_project->status . "]]></status>\n";
             $xml .= "   <effort_estimated_hrs><![CDATA[" . $do_project->effort_estimated_hrs . "]]></effort_estimated_hrs>\n";
             $xml .= "   <is_public><![CDATA[" . $do_project->is_public . "]]></is_public>\n\n";
             $xml .= "   <project_task>\n";
             $xml .= "    <idproject_task><![CDATA[" . $do_task->getData("idproject_task") . "]]></idproject_task>\n";
             $xml .= "    <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
             $xml .= "    <idproject><![CDATA[" . $do_task->getData("idproject") . "]]></idproject>\n";
             $xml .= "    <progress><![CDATA[" . $do_task->getData("progress") . "]]></progress>\n";
             $xml .= "    <drop_box_code><![CDATA[" . $do_task->getData("drop_box_code") . "]]></drop_box_code>\n";
             $xml .= "    <priority><![CDATA[" . $do_task->getData("priority") . "]]></priority>\n";
             $xml .= "    <hrs_work_expected><![CDATA[" . $do_task->getData("hrs_work_expected") . "]]></hrs_work_expected>\n";
             $xml .= "    <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
             $xml .= "    <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
             $xml .= "    <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
             $xml .= "    <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
             $xml .= "    <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
             $xml .= "    <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
             $xml .= "    <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
             $xml .= "    <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
             $xml .= "    <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
             $xml .= "    <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
             $xml .= "    <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n\n";
             if (!$this->appendToFile($xml)) {
                 return false;
             }
             $xml = ' ';
             $do_prj_discuss = new ProjectDiscuss();
             $do_prj_discuss->getProjectTaskDiscussions($do_task->getData("idproject_task"));
             while ($do_prj_discuss->next()) {
                 $xml .= "    <project_discuss>\n";
                 $xml .= "     <idproject_discuss><![CDATA[" . $do_prj_discuss->getData("idproject_discuss") . "]]></idproject_discuss>\n";
                 $xml .= "     <idproject_task><![CDATA[" . $do_prj_discuss->getData("idproject_task") . "]]></idproject_task>\n";
                 $xml .= "     <idtask><![CDATA[" . $do_prj_discuss->getData("idtask") . "]]></idtask>\n";
                 $xml .= "     <idproject><![CDATA[" . $do_prj_discuss->getData("idproject") . "]]></idproject>\n";
                 $xml .= "     <discuss><![CDATA[" . $do_prj_discuss->getData("discuss") . "]]></discuss>\n";
                 $xml .= "     <date_added><![CDATA[" . $do_prj_discuss->getData("date_added") . "]]></date_added>\n";
                 $xml .= "     <document><![CDATA[" . $do_prj_discuss->getData("document") . "]]></document>\n";
                 $xml .= "     <iduser><![CDATA[" . $do_prj_discuss->getData("iduser") . "]]></iduser>\n";
                 $xml .= "     <drop_box_sender><![CDATA[" . $do_prj_discuss->getData("drop_box_sender") . "]]></drop_box_sender>\n";
                 $xml .= "     <priority><![CDATA[" . $do_prj_discuss->getData("priority") . "]]></priority>\n";
                 $xml .= "     <hours_work><![CDATA[" . $do_prj_discuss->getData("hours_work") . "]]></hours_work>\n";
                 $xml .= "     <discuss_edit_access><![CDATA[" . $do_prj_discuss->getData("discuss_edit_access") . "]]></discuss_edit_access>\n";
                 $xml .= "    </project_discuss>\n";
                 if (!$this->appendToFile($xml)) {
                     return false;
                 }
                 $xml = ' ';
             }
             $do_prj_discuss->free();
             $xml .= "   </project_task>\n";
             $xml .= "  </contact_task_with_project>\n";
             $do_project->free();
         }
         $do_task->free();
         if (!$this->appendToFile($xml)) {
             return false;
         }
         $xml = '';
         if ($i == '1') {
             $do_task = new Task();
             $do_task->getTasksWithProject();
             while ($do_task->next()) {
                 $do_project = new Project();
                 $do_project->getId($do_task->idproject);
                 $xml .= "  <contact_task_with_project>\n";
                 $xml .= "   <idproject><![CDATA[" . $do_project->idproject . "]]></idproject>\n";
                 $xml .= "   <iduser><![CDATA[" . $do_project->iduser . "]]></iduser>\n";
                 $xml .= "   <name><![CDATA[" . $do_project->name . "]]></name>\n";
                 $xml .= "   <end_date_dateformat><![CDATA[" . $do_project->end_date_dateformat . "]]></end_date_dateformat>\n";
                 $xml .= "   <idcompany><![CDATA[" . $do_project->idcompany . "]]></idcompany>\n";
                 $xml .= "   <status><![CDATA[" . $do_project->status . "]]></status>\n";
                 $xml .= "   <effort_estimated_hrs><![CDATA[" . $do_project->effort_estimated_hrs . "]]></effort_estimated_hrs>\n";
                 $xml .= "   <is_public><![CDATA[" . $do_project->is_public . "]]></is_public>\n\n";
                 $xml .= "   <project_task>\n";
                 $xml .= "    <idproject_task><![CDATA[" . $do_task->getData("idproject_task") . "]]></idproject_task>\n";
                 $xml .= "    <idtask><![CDATA[" . $do_task->getData("idtask") . "]]></idtask>\n";
                 $xml .= "    <idproject><![CDATA[" . $do_task->getData("idproject") . "]]></idproject>\n";
                 $xml .= "    <progress><![CDATA[" . $do_task->getData("progress") . "]]></progress>\n";
                 $xml .= "    <drop_box_code><![CDATA[" . $do_task->getData("drop_box_code") . "]]></drop_box_code>\n";
                 $xml .= "    <priority><![CDATA[" . $do_task->getData("priority") . "]]></priority>\n";
                 $xml .= "    <hrs_work_expected><![CDATA[" . $do_task->getData("hrs_work_expected") . "]]></hrs_work_expected>\n";
                 $xml .= "    <task_description><![CDATA[" . $do_task->getData("task_description") . "]]></task_description>\n";
                 $xml .= "    <due_date><![CDATA[" . $do_task->getData("due_date") . "]]></due_date>\n";
                 $xml .= "    <category><![CDATA[" . $do_task->getData("category") . "]]></category>\n";
                 $xml .= "    <iduser><![CDATA[" . $do_task->getData("iduser") . "]]></iduser>\n";
                 $xml .= "    <due_date_dateformat><![CDATA[" . $do_task->getData("due_date_dateformat") . "]]></due_date_dateformat>\n";
                 $xml .= "    <status><![CDATA[" . $do_task->getData("status") . "]]></status>\n";
                 $xml .= "    <date_completed><![CDATA[" . $do_task->getData("date_completed") . "]]></date_completed>\n";
                 $xml .= "    <idcontact><![CDATA[" . $do_task->getData("idcontact") . "]]></idcontact>\n";
                 $xml .= "    <from_note><![CDATA[" . $do_task->getData("from_note") . "]]></from_note>\n";
                 $xml .= "    <is_sp_date_set><![CDATA[" . $do_task->getData("is_sp_date_set") . "]]></is_sp_date_set>\n";
                 $xml .= "    <task_category><![CDATA[" . $do_task->getData("task_category") . "]]></task_category>\n\n";
                 if (!$this->appendToFile($xml)) {
                     return false;
                 }
                 $xml = ' ';
                 $do_prj_discuss = new ProjectDiscuss();
                 $do_prj_discuss->getProjectTaskDiscussions($do_task->getData("idproject_task"));
                 while ($do_prj_discuss->next()) {
                     $xml .= "    <project_discuss>\n";
                     $xml .= "     <idproject_discuss><![CDATA[" . $do_prj_discuss->getData("idproject_discuss") . "]]></idproject_discuss>\n";
                     $xml .= "     <idproject_task><![CDATA[" . $do_prj_discuss->getData("idproject_task") . "]]></idproject_task>\n";
                     $xml .= "     <idtask><![CDATA[" . $do_prj_discuss->getData("idtask") . "]]></idtask>\n";
                     $xml .= "     <idproject><![CDATA[" . $do_prj_discuss->getData("idproject") . "]]></idproject>\n";
                     $xml .= "     <discuss><![CDATA[" . $do_prj_discuss->getData("discuss") . "]]></discuss>\n";
                     $xml .= "     <date_added><![CDATA[" . $do_prj_discuss->getData("date_added") . "]]></date_added>\n";
                     $xml .= "     <document><![CDATA[" . $do_prj_discuss->getData("document") . "]]></document>\n";
                     $xml .= "     <iduser><![CDATA[" . $do_prj_discuss->getData("iduser") . "]]></iduser>\n";
                     $xml .= "     <drop_box_sender><![CDATA[" . $do_prj_discuss->getData("drop_box_sender") . "]]></drop_box_sender>\n";
                     $xml .= "     <priority><![CDATA[" . $do_prj_discuss->getData("priority") . "]]></priority>\n";
                     $xml .= "     <hours_work><![CDATA[" . $do_prj_discuss->getData("hours_work") . "]]></hours_work>\n";
                     $xml .= "     <discuss_edit_access><![CDATA[" . $do_prj_discuss->getData("discuss_edit_access") . "]]></discuss_edit_access>\n";
                     $xml .= "    </project_discuss>\n";
                     if (!$this->appendToFile($xml)) {
                         return false;
                     }
                     $xml = ' ';
                 }
                 $do_prj_discuss->free();
                 $xml .= "   </project_task>\n";
                 $xml .= "  </contact_task_with_project>\n";
                 $do_project->free();
             }
             $do_task->free();
         }
         if (!$this->appendToFile($xml)) {
             return false;
         }
         $xml = ' ';
         $do_invoice = new Invoice();
         $do_invoice->getContactInvoiceDetailsWithUser($do_contact->getData("idcontact"), $do_user->iduser);
         while ($do_invoice->next()) {
             $xml .= "  <invoice>\n";
             $xml .= "   <idinvoice><![CDATA[" . $do_invoice->getData("idinvoice") . "]]></idinvoice>\n";
             $xml .= "   <num><![CDATA[" . $do_invoice->getData("num") . "]]></num>\n";
             $xml .= "   <iduser><![CDATA[" . $do_invoice->getData("iduser") . "]]></iduser>\n";
             $xml .= "   <description><![CDATA[" . $do_invoice->getData("description") . "]]></description>\n";
             $xml .= "   <amount><![CDATA[" . $do_invoice->getData("amount") . "]]></amount>\n";
             $xml .= "   <datepaid><![CDATA[" . $do_invoice->getData("datepaid") . "]]></datepaid>\n";
             $xml .= "   <datecreated><![CDATA[" . $do_invoice->getData("datecreated") . "]]></datecreated>\n";
             $xml .= "   <status><![CDATA[" . $do_invoice->getData("status") . "]]></status>\n";
             $xml .= "   <discount><![CDATA[" . $do_invoice->getData("discount") . "]]></discount>\n";
             $xml .= "   <idcontact><![CDATA[" . $do_invoice->getData("idcontact") . "]]></idcontact>\n";
             $xml .= "   <due_date><![CDATA[" . $do_invoice->getData("due_date") . "]]></due_date>\n";
             $xml .= "   <invoice_address><![CDATA[" . $do_invoice->getData("invoice_address") . "]]></invoice_address>\n";
             $xml .= "   <invoice_term><![CDATA[" . $do_invoice->getData("invoice_term") . "]]></invoice_term>\n";
             $xml .= "   <invoice_note><![CDATA[" . $do_invoice->getData("invoice_note") . "]]></invoice_note>\n";
             $xml .= "   <sub_total><![CDATA[" . $do_invoice->getData("sub_total") . "]]></sub_total>\n";
             $xml .= "   <net_total><![CDATA[" . $do_invoice->getData("net_total") . "]]></net_total>\n";
             $xml .= "   <amt_due><![CDATA[" . $do_invoice->getData("amt_due") . "]]></amt_due>\n";
             $xml .= "   <idcompany><![CDATA[" . $do_invoice->getData("idcompany") . "]]></idcompany>\n";
             $xml .= "   <tax><![CDATA[" . $do_invoice->getData("tax") . "]]></tax>\n";
             $xml .= "   <set_delete><![CDATA[" . $do_invoice->getData("set_delete") . "]]></set_delete>\n";
             $xml .= "   <total_discounted_amt><![CDATA[" . $do_invoice->getData("total_discounted_amt") . "]]></total_discounted_amt>\n";
             $xml .= "   <total_taxed_amount><![CDATA[" . $do_invoice->getData("total_taxed_amount") . "]]></total_taxed_amount>\n";
             $invoice_line = $do_invoice->getChildInvoiceLine();
             while ($invoice_line->next()) {
                 $xml .= "   <invoiceline>\n";
                 $xml .= "    <idinvoiceline><![CDATA[" . $invoice_line->idinvoiceline . "]]></idinvoiceline>\n";
                 $xml .= "    <idinvoice><![CDATA[" . $invoice_line->idinvoice . "]]></idinvoice>\n";
                 $xml .= "    <description><![CDATA[" . $invoice_line->description . "]]></description>\n";
                 $xml .= "    <price><![CDATA[" . $invoice_line->price . "]]></price>\n";
                 $xml .= "    <qty><![CDATA[" . $invoice_line->qty . "]]></qty>\n";
                 $xml .= "    <total><![CDATA[" . $invoice_line->total . "]]></total>\n";
                 $xml .= "    <item><![CDATA[" . $invoice_line->item . "]]></item>\n";
                 $xml .= "    <line_tax><![CDATA[" . $invoice_line->line_tax . "]]></line_tax>\n";
                 $xml .= "    <discounted_amount><![CDATA[" . $invoice_line->discounted_amount . "]]></discounted_amount>\n";
                 $xml .= "    <taxed_amount><![CDATA[" . $invoice_line->taxed_amount . "]]></taxed_amount>\n";
                 $xml .= "   </invoiceline>\n";
             }
             $invoice_line->free();
             if (!$this->appendToFile($xml)) {
                 return false;
             }
             $xml = ' ';
             $do_recurrent_invoice = new RecurrentInvoice();
             $do_recurrent_invoice->getRecurrentInvoiceDetail($do_invoice->getData("idinvoice"));
             while ($do_recurrent_invoice->next()) {
                 $xml .= "   <recurrentinvoice>\n";
                 $xml .= "    <idrecurrentinvoice><![CDATA[" . $do_recurrent_invoice->getData("idrecurrentinvoice") . "]]></idrecurrentinvoice>\n";
                 $xml .= "    <iduser><![CDATA[" . $do_recurrent_invoice->getData("iduser") . "]]></iduser>\n";
                 $xml .= "    <idinvoice><![CDATA[" . $do_recurrent_invoice->getData("idinvoice") . "]]></idinvoice>\n";
                 $xml .= "    <nextdate><![CDATA[" . $do_recurrent_invoice->getData("nextdate") . "]]></nextdate>\n";
                 $xml .= "    <recurrence><![CDATA[" . $do_recurrent_invoice->getData("recurrence") . "]]></recurrence>\n";
                 $xml .= "    <recurrencetype><![CDATA[" . $do_recurrent_invoice->getData("recurrencetype") . "]]></recurrencetype>\n";
                 $xml .= "   </recurrentinvoice>\n";
             }
             $do_recurrent_invoice->free();
             $do_paymentlog = new PaymentLog();
             $do_paymentlog->getPaymentLogDetails($do_invoice->getData("idinvoice"));
             while ($do_paymentlog->next()) {
                 $xml .= "   <paymentlog>\n";
                 $xml .= "    <idpaymentlog ><![CDATA[" . $do_paymentlog->getData("idpaymentlog") . "]]></idpaymentlog >\n";
                 $xml .= "    <timestamp><![CDATA[" . $do_paymentlog->getData("timestamp") . "]]></timestamp>\n";
                 $xml .= "    <idinvoice><![CDATA[" . $do_paymentlog->getData("idinvoice") . "]]></idinvoice>\n";
                 $xml .= "    <amount><![CDATA[" . $do_paymentlog->getData("amount") . "]]></amount>\n";
                 $xml .= "    <payment_type><![CDATA[" . $do_paymentlog->getData("payment_type") . "]]></payment_type>\n";
                 $xml .= "    <ref_num><![CDATA[" . $do_paymentlog->getData("ref_num") . "]]></ref_num>\n";
                 $xml .= "    <date_added><![CDATA[" . $do_paymentlog->getData("date_added") . "]]></date_added>\n";
                 $do_payment_invoice = new PaymentInvoice();
                 $do_payment_invoice->getInvDetails($do_paymentlog->getData("idpaymentlog"));
                 while ($do_payment_invoice->next()) {
                     $xml .= "    <payment_invoice>\n";
                     $xml .= "     <idpayment_invoice><![CDATA[" . $do_payment_invoice->getData("idpayment_invoice") . "]]></idpayment_invoice>\n";
                     $xml .= "     <idpayment><![CDATA[" . $do_payment_invoice->getData("idpayment") . "]]></idpayment>\n";
                     $xml .= "     <idinvoice><![CDATA[" . $do_payment_invoice->getData("idinvoice") . "]]></idinvoice>\n";
                     $xml .= "     <amount><![CDATA[" . $do_payment_invoice->getData("amount") . "]]></amount>\n";
                     $xml .= "    </payment_invoice>\n";
                 }
                 $do_payment_invoice->free();
                 $do_paymentlog_extra_amount = new PaymentLog();
                 $do_paymentlog_extra_amount->getPaymentLogExtraAmountDetails($do_paymentlog->getData("idpaymentlog"));
                 while ($do_paymentlog_extra_amount->next()) {
                     $xml .= "    <paymentlog_extra_amount>\n";
                     $xml .= "     <idpaymentlog_extra_amount><![CDATA[" . $do_paymentlog_extra_amount->getData("idpaymentlog_extra_amount") . "]]></idpaymentlog_extra_amount>\n";
                     $xml .= "     <idpaymentlog><![CDATA[" . $do_paymentlog_extra_amount->getData("idpaymentlog") . "]]></idpaymentlog>\n";
                     $xml .= "     <extra_amt><![CDATA[" . $do_paymentlog_extra_amount->getData("extra_amt") . "]]></extra_amt>\n";
                     $xml .= "     <iduser><![CDATA[" . $do_paymentlog_extra_amount->getData("iduser") . "]]></iduser>\n";
                     $xml .= "    </paymentlog_extra_amount>\n";
                 }
                 $do_paymentlog_extra_amount->free();
                 $xml .= "   </paymentlog>\n";
                 if (!$this->appendToFile($xml)) {
                     return false;
                 }
                 $xml = ' ';
             }
             $do_paymentlog->free();
             $xml .= "  </invoice>\n";
         }
         $do_invoice->free();
         $do_tag = new Tag();
         $do_tag->getUserContactTags($iduser, $do_contact->getData("idcontact"));
         while ($do_tag->next()) {
             $xml .= "  <tag>\n";
             $xml .= "   <idtag><![CDATA[" . $do_tag->idtag . "]]></idtag>\n";
             $xml .= "   <tag_name><![CDATA[" . $do_tag->tag_name . "]]></tag_name>\n";
             $xml .= "   <iduser><![CDATA[" . $do_tag->iduser . "]]></iduser>\n";
             $xml .= "   <reference_type><![CDATA[" . $do_tag->reference_type . "]]></reference_type>\n";
             $xml .= "   <idreference><![CDATA[" . $do_tag->idreference . "]]></idreference>\n";
             $xml .= "   <date_added><![CDATA[" . $do_tag->date_added . "]]></date_added>\n";
             $xml .= "  </tag>\n";
             if (!$this->appendToFile($xml)) {
                 return false;
             }
             $xml = ' ';
         }
         $do_tag->free();
         $xml .= " </contact>\n";
         $i++;
     }
     //end line
     $xml .= "</contacts>\n";
     if (!$this->appendToFile($xml)) {
         return false;
     } else {
         return true;
     }
 }
 public function actionIndex()
 {
     //error_reporting(E_ALL ^ E_NOTICE);
     // Read the post from PayPal and add 'cmd'
     $req = 'cmd=_notify-validate';
     if (function_exists('get_magic_quotes_gpc')) {
         $get_magic_quotes_exists = true;
     }
     $txt = '';
     foreach ($_REQUEST as $key => $value) {
         $txt .= $key . " = " . $value . "\r\n";
     }
     Utils::logToPaymentFile('paypal_ipn', $txt);
     // save also to DB
     $pLog = new PaymentLog();
     $pLog->date_created = date("Y-m-d h:i:s");
     $pLog->log = $txt;
     $pLog->save();
     foreach ($_REQUEST as $key => $value) {
         if ($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
             $value = urlencode(stripslashes($value));
         } else {
             $value = urlencode($value);
         }
         $req .= "&{$key}={$value}";
     }
     // Post back to PayPal to validate
     $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
     $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
     $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
     if (Yii::app()->params['paymentsTestMode']) {
         $fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
     } else {
         $fp = fsockopen('ssl://www.paypal.com', 443, $errno, $errstr, 30);
     }
     // Process validation from PayPal
     // TODO: This sample does not test the HTTP response code. All
     // HTTP response codes must be handles or you should use an HTTP
     // library, such as cUrl
     if (!$fp) {
         // HTTP ERROR
         Utils::logToPaymentFile('paypal_ipn', $_REQUEST['subscr_id'] . " - HTTP ERROR!");
     } else {
         // NO HTTP ERROR
         fputs($fp, $header . $req);
         while (!feof($fp)) {
             $res = fgets($fp, 1024);
             if (strcmp($res, "VERIFIED") == 0) {
                 Utils::logToPaymentFile('paypal_ipn', $_REQUEST['subscr_id'] . " - RESULT: {$res}\n");
                 // TODO:
                 // Check the payment_status is Completed
                 // Check that txn_id has not been previously processed
                 // Check that receiver_email is your Primary PayPal email
                 // Check that payment_amount/payment_currency are correct
                 // Process payment
                 // If 'VERIFIED', send an email of IPN variables and values to the
                 // specified email address
                 try {
                     Utils::logToPaymentFile('paypal_ipn', $_REQUEST['subscr_id'] . ' - Processing Payment');
                     $this->processPayment();
                     Utils::logToPaymentFile('paypal_ipn', $_REQUEST['subscr_id'] . ' - Processed OK');
                 } catch (Exception $e) {
                     Utils::logToPaymentFile('paypal_ipn', $_REQUEST['subscr_id'] . ' - Processing Exception: ' . $e->getMessage());
                 }
             } else {
                 if (strcmp($res, "INVALID") == 0) {
                     Utils::logToPaymentFile('paypal_ipn', $_REQUEST['subscr_id'] . " - RESULT: {$res}\n");
                 }
             }
         }
         fclose($fp);
     }
     exit;
 }