コード例 #1
0
 public function is_allowed_for_invoice($invoice_id)
 {
     if (!self::is_enabled()) {
         return false;
     }
     $old_default = module_config::c('__inv_google_' . $invoice_id);
     if ($old_default !== false) {
         $this->set_allowed_for_invoice($invoice_id, $old_default);
         delete_from_db('config', 'key', '__inv_google_' . $invoice_id);
         module_cache::clear('config');
         return $old_default;
     }
     // check for manually enabled invoice payment method.
     $invoice_payment_methods = module_invoice::get_invoice_payment_methods($invoice_id);
     if (isset($invoice_payment_methods['google'])) {
         return $invoice_payment_methods['google']['enabled'];
     }
     return module_config::c('payment_method_google_enabled_default', 1);
 }
コード例 #2
0
 public function is_allowed_for_invoice($invoice_id)
 {
     if (!self::is_enabled()) {
         return false;
     }
     $old_default = module_config::c('__inv_coinbase_' . $invoice_id);
     if ($old_default !== false) {
         $this->set_allowed_for_invoice($invoice_id, $old_default);
         delete_from_db('config', 'key', '__inv_coinbase_' . $invoice_id);
         module_cache::clear('config');
         return $old_default;
     }
     // check for manually enabled invoice payment method.
     $invoice_payment_methods = module_invoice::get_invoice_payment_methods($invoice_id);
     if (isset($invoice_payment_methods['coinbase'])) {
         return $invoice_payment_methods['coinbase']['enabled'];
     }
     // check currency and value amounts
     $invoice_data = module_invoice::get_invoice($invoice_id);
     $cur = trim(strtolower(module_config::c('payment_method_coinbase_currency', '')));
     $dollar_limit = module_config::c('payment_method_coinbase_limit_type', 'above');
     $dollar_value = module_config::c('payment_method_coinbase_limit_value', 0);
     if ($dollar_limit == 'above' && $invoice_data['total_amount_due'] < $dollar_value) {
         return false;
     } else {
         if ($dollar_limit == 'below' && $invoice_data['total_amount_due'] > $dollar_value) {
             return false;
         }
     }
     if (strlen($cur) > 1) {
         $allowed_currencies = explode(',', $cur);
         if (count($allowed_currencies)) {
             $currency = module_config::get_currency($invoice_data['currency_id']);
             if (!in_array(strtolower($currency['code']), $allowed_currencies)) {
                 return false;
             }
         }
     }
     return module_config::c('payment_method_coinbase_enabled_default', 1);
 }
コード例 #3
0
ファイル: invoice.php プロジェクト: sgh1986915/php-crm
 public function run_cron($debug = false)
 {
     // we only want to perform these cron actions if we're after a certain time of day
     // because we dont want to be generating these renewals and sending them at midnight, can get confusing
     $after_time = module_config::c('invoice_automatic_after_time', 7);
     $time_of_day = date('G');
     if ($time_of_day < $after_time) {
         if ($debug) {
             echo "Not performing automatic invoice operations until after {$after_time}:00 - it is currently {$time_of_day}:" . date('i') . "<br>\n";
         }
         return;
     }
     // find automaitic invoice overdues
     $sql = "SELECT * FROM `" . _DB_PREFIX . "invoice`  ";
     $sql .= " WHERE date_due != '0000-00-00' AND date_due <= '" . date('Y-m-d') . "' AND date_paid = '0000-00-00' AND date_cancel = '0000-00-00'";
     $invoice_items = qa($sql);
     if ($debug) {
         echo "Processing " . count($invoice_items) . " overdue invoices:  <br>\n";
     }
     foreach ($invoice_items as $invoice_item) {
         module_cache::clear('invoice');
         $invoice = module_invoice::get_invoice($invoice_item['invoice_id']);
         if ($invoice['overdue'] && $invoice['overdue_email_auto']) {
             if ($debug) {
                 echo "Processing overdue for invoice: " . module_invoice::link_open($invoice['invoice_id'], true) . " <br>\n";
             }
             if ($debug) {
                 echo " - last sent: " . $invoice['date_sent'] . " <br>\n";
             }
             if ($debug) {
                 echo " - due date: " . $invoice['date_due'] . " <br>\n";
             }
             if ($debug) {
                 echo " - now: " . date('Y-m-d') . " ( " . time() . " ) <br>\n";
             }
             // if you change this calculation make sure it is changed in the dashboard alerts above to
             $send_email_on = false;
             if ($invoice['date_sent'] && $invoice['date_sent'] != '0000-00-00' && strtotime($invoice['date_sent']) > strtotime($invoice['date_due'])) {
                 // we have sent a reminder already (todo: this isn't correct logic, fix it up so it can tell for sure if we have sent a reminder already or not (eg: look through email history table)
                 $last_invoice_sent = strtotime($invoice['date_sent']);
                 if (module_config::c('overdue_email_auto_days_repeat', 7) <= 0) {
                     continue;
                     // skip sendin repeat reminders.
                 }
                 $send_email_on = strtotime('+' . module_config::c('overdue_email_auto_days_repeat', 7) . ' days', $last_invoice_sent);
             } else {
                 if ($invoice['date_sent'] && $invoice['date_sent'] != '0000-00-00') {
                     $invoice_is_due = strtotime($invoice['date_due']);
                     $send_email_on = strtotime('+' . module_config::c('overdue_email_auto_days', 3) . ' days', $invoice_is_due);
                     if ($debug) {
                         echo module_config::c('overdue_email_auto_days', 3) . " days from " . $invoice['date_due'] . " is " . date('Y-m-d', $send_email_on) . "<br>\n";
                     }
                 } else {
                     // this invoice has not been sent yet, so we don't send an automated overdue notice.
                     // the user has to pick a "sent datE" before the system will send overdue notices.
                     if ($debug) {
                         echo " - NOT Sending Overdue Invoice Notice for " . module_invoice::link_open($invoice['invoice_id'], true) . " because it has no SENT DATE.<br>\n";
                     }
                     $send_email_on = false;
                 }
             }
             if ($invoice['date_sent'] && $invoice['date_sent'] != '0000-00-00' && date('Y-m-d', $send_email_on) == $invoice['date_sent']) {
                 if ($debug) {
                     echo " - NOT Sending Overdue Invoice Notice for " . module_invoice::link_open($invoice['invoice_id'], true) . " because it was last sent today already.<br>\n";
                 }
                 $send_email_on = false;
             }
             if ($send_email_on !== false && $debug) {
                 echo " - will send next invoice at: " . date('Y-m-d', $send_email_on) . " ( {$send_email_on} ) <br>\n";
             }
             if ($send_email_on !== false && $send_email_on <= strtotime(date('Y-m-d'))) {
                 if ($debug) {
                     echo " - Automatically Sending Overdue Invoice Notice for " . module_invoice::link_open($invoice['invoice_id'], true) . "<br>\n";
                 }
                 if ($debug) {
                     echo " - Emailing invoice to customer...";
                 }
                 if (module_invoice::email_invoice_to_customer($invoice['invoice_id'], $debug)) {
                     if ($debug) {
                         echo "sent successfully<br>\n";
                     }
                 } else {
                     echo "sending overdue invoice email failed for " . module_invoice::link_open($invoice['invoice_id'], true) . "<br>\n";
                 }
                 if ($debug) {
                     echo "<br>\n";
                 }
             }
         }
     }
     // find automatic invoice renewals
     $sql = "SELECT i.* FROM `" . _DB_PREFIX . "invoice` i ";
     $sql .= " WHERE i.date_renew != '0000-00-00'";
     $sql .= " AND i.date_create != '0000-00-00'";
     $sql .= " AND i.date_cancel = '0000-00-00'";
     $sql .= " AND i.date_renew <= '" . date('Y-m-d') . "'";
     $sql .= " AND (i.renew_invoice_id IS NULL OR i.renew_invoice_id = 0)";
     $sql .= " AND (i.renew_auto = 1)";
     $renew_invoices = qa($sql);
     foreach ($renew_invoices as $renew_invoice) {
         // time to automatically renew this invoice! woo!
         if ($debug) {
             echo "Automatically Renewing invoice " . module_invoice::link_open($renew_invoice['invoice_id'], true) . "<br>\n";
         }
         $invoice_data = module_invoice::get_invoice($renew_invoice['invoice_id']);
         if (module_config::c('invoice_auto_renew_only_paid_invoices', 1) && $invoice_data['total_amount_due'] > 0) {
             // invoice hasnt been paid, dont continue with renewl
             if ($debug) {
                 echo "NOT RENEWING INVOICE because it hasn't been paid yet !!! <br>\n";
             }
         } else {
             $new_invoice_id = $this->renew_invoice($renew_invoice['invoice_id']);
             if ($new_invoice_id) {
                 //module_cache::clear_cache();
                 if ($debug) {
                     echo "invoice Automatically Renewed: " . module_invoice::link_open($new_invoice_id, true) . "<br>\n";
                 }
                 if ($renew_invoice['renew_email']) {
                     if ($debug) {
                         echo "Emailing invoice to customer...";
                     }
                     if (module_invoice::email_invoice_to_customer($new_invoice_id, $debug)) {
                         if ($debug) {
                             echo "send successfully";
                         }
                     } else {
                         echo "sending renewed invoice email failed for " . module_invoice::link_open($new_invoice_id, true) . "<br>\n";
                     }
                     if ($debug) {
                         echo "<br>\n";
                     }
                 }
             }
         }
     }
 }
コード例 #4
0
ファイル: job.php プロジェクト: sgh1986915/php-crm
 private static function update_job_completion_status($job_id)
 {
     module_cache::clear('job');
     //module_cache::clear_cache();
     $data = self::save_job_cache($job_id);
     $return_status = $data['status'];
     $tasks = self::get_tasks($job_id);
     $all_completed = count($tasks) > 0;
     foreach ($tasks as $task) {
         if (module_config::c('job_task_log_all_hours', 1) && $task['fully_completed'] || !module_config::c('job_task_log_all_hours', 1) && ($task['fully_completed'] || $task['hours'] > 0 && $task['completed'] >= $task['hours'] || $task['hours'] <= 0 && $task['completed'] > 0)) {
             // this one is done!
         } else {
             $all_completed = false;
             break;
         }
     }
     if ($all_completed) {
         if (!isset($data['date_completed']) || !$data['date_completed'] || $data['date_completed'] == '0000-00-00') {
             // update, dont complete if no tasks.
             //if(count($tasks)){
             $return_status = $data['status'] == module_config::s('job_status_default', 'New') ? _l('Completed') : $data['status'];
             update_insert("job_id", $job_id, "job", array('date_completed' => date('Y-m-d'), 'status' => $return_status));
             //}
         }
     } else {
         // not completed. remove compelted date and reset the job status
         $return_status = $data['status'] == _l('Completed') ? module_config::s('job_status_default', 'New') : $data['status'];
         update_insert("job_id", $job_id, "job", array('date_completed' => '0000-00-00', 'status' => $return_status));
     }
     module_cache::clear('job');
     return $return_status;
 }
コード例 #5
0
ファイル: quote.php プロジェクト: sgh1986915/php-crm
 private static function update_quote_completion_status($quote_id)
 {
     //module_cache::clear_cache();
     module_cache::clear('quote');
     $data = self::get_quote($quote_id);
     // save our cacheable items
     foreach (array('total_amount_invoicable') as $cacheable_item) {
         if (isset($data[$cacheable_item])) {
             // cacheable items can be the same name or prefixed with c_
             update_insert('quote_id', $quote_id, 'quote', array($cacheable_item => $data[$cacheable_item], "c_{$cacheable_item}" => $data[$cacheable_item]));
         }
     }
     $return_status = $data['status'];
     module_cache::clear('quote');
     return $return_status;
 }
コード例 #6
0
ファイル: read_emails.php プロジェクト: sgh1986915/php-crm
 * Envato: 4ffca17e-861e-4921-86c3-8931978c40ca
 * Package Date: 2015-11-25 02:55:20 
 * IP Address: 67.79.165.254
 */
$autoreply_queue = array();
//set_time_limit(10);
// find all the mail setting accounts to check.
foreach (module_ticket::get_accounts() as $account) {
    $updated_tickets = module_ticket::import_email($account['ticket_account_id']);
    if (is_array($updated_tickets)) {
        $autoreply_queue = array_merge($autoreply_queue, $updated_tickets);
    }
}
imap_errors();
//print_r($autoreply_queue);
module_cache::clear('ticket');
foreach ($autoreply_queue as $ticket_id) {
    ob_start();
    handle_hook('ticket_sidebar', $ticket_id);
    // to get envato hook working quicker
    ob_end_clean();
    // we have to send the email to admin notifying them about this ticket too.
    // if this latest email came from an admin user (ie: the user is replying to a customer via email)
    // then we don't send_admin_alert or autoreply, we just send reply back to customer.
    $ticket_data = module_ticket::get_ticket($ticket_id);
    $last_ticket_message = module_ticket::get_ticket_message($ticket_data['last_ticket_message_id']);
    $admins_rel = module_ticket::get_ticket_staff_rel();
    // if the last email was from admin, send customer alert.
    if (isset($admins_rel[$last_ticket_message['from_user_id']])) {
        //        echo "sending a customer alert ";
        //        print_r($last_ticket_message);
コード例 #7
0
ファイル: class.upgrade.php プロジェクト: sgh1986915/php-crm
 public function complete_plugin_installation($plugin_name)
 {
     global $plugins;
     $result = array('message' => '');
     $new_system_version = module_config::current_version();
     $fail = false;
     if (isset($plugins[$plugin_name])) {
         $result['message'] .= "Processing update: <span style='text-decoration:underline;'>" . $plugin_name . "</span> - Current Version: " . $plugins[$plugin_name]->get_plugin_version() . ".... ";
         ob_start();
         if ($version = $plugins[$plugin_name]->install_upgrade()) {
             $result['message'] .= '<span class="success_text">all good</span>';
             $new_system_version = max($version, $new_system_version);
             $plugins[$plugin_name]->init();
             // lol typo - oh well.
             $plugins[$plugin_name]->set_insatlled_plugin_version($version);
         } else {
             $fail = true;
             $result['message'] .= '<span class="error_text">failed</span> ';
         }
         $result['message'] .= ob_get_clean() . '<br/>';
         $result['message'] .= '<br/>';
         if ($fail) {
             $result['message'] .= _('Some things failed. Please go back and try again.');
         } else {
             $result['message'] .= '<strong>' . _l('Success! Everything worked.') . '</strong>';
             module_config::set_system_version($new_system_version);
             module_config::save_config('last_update', time());
         }
         if (isset($_SESSION['_message']) && count($_SESSION['_message'])) {
             $result['message'] .= '<br/>';
             $result['message'] .= implode('<br/>', $_SESSION['_message']);
             unset($_SESSION['_errors']);
         }
         if (isset($_SESSION['_errors']) && count($_SESSION['_errors'])) {
             $result['message'] .= '<br/>';
             $result['message'] .= implode('<br/>', $_SESSION['_errors']);
             unset($_SESSION['_errors']);
         }
     } else {
         if ($plugin_name == 'corefiles' || $plugin_name == 'database') {
         } else {
             $fail = true;
         }
     }
     // hack to clear db field cache:
     module_cache::clear('db');
     if (!$fail) {
         $result['success'] = 1;
     }
     return $result;
 }
コード例 #8
0
ファイル: customer.php プロジェクト: sgh1986915/php-crm
 public static function remove_credit($customer_id, $credit, $note = false)
 {
     $customer_data = self::get_customer($customer_id);
     $customer_data['credit'] -= $credit;
     update_insert('customer_id', $customer_id, 'customer', array('credit' => $customer_data['credit']));
     module_cache::clear('customer');
     //self::add_history($customer_id,'Added '.dollar($credit).' credit to customers account.');
 }
コード例 #9
0
ファイル: user.php プロジェクト: sgh1986915/php-crm
 public function save_user($user_id, $data, $from_public = false)
 {
     $use_master_key = $this->get_contact_master_key();
     if ($from_public) {
         $user_id = 0;
     } else {
         if ($use_master_key && isset($data[$use_master_key]) && $data[$use_master_key]) {
             if (!module_user::can_i('edit', 'Contacts', 'Customer')) {
                 set_error('Unable to edit contacts.');
                 return false;
             }
         } else {
             if (!self::can_i('edit', 'Users', 'Config')) {
                 set_error('Unable to edit users.');
                 return false;
             }
         }
         $user_id = (int) $user_id;
     }
     $temp_user = array();
     if ($user_id > 0) {
         // check permissions
         $temp_user = $this->get_user($user_id, true, false);
         if (!$temp_user || $temp_user['user_id'] != $user_id || isset($temp_user['_perms'])) {
             $user_id = false;
         }
     }
     if (!$user_id && !$from_public) {
         if ($use_master_key && isset($data[$use_master_key]) && $data[$use_master_key]) {
             if (!module_user::can_i('create', 'Contacts', 'Customer')) {
                 set_error('Unable to create new contacts.');
                 return false;
             }
         } else {
             if (!self::can_i('create', 'Users', 'Config')) {
                 set_error('Unable to create new users.');
                 return false;
             }
         }
     } else {
         if ($user_id == 1 && module_security::get_loggedin_id() != 1) {
             set_error('Sorry only the administrator can modify this account');
         }
     }
     // check the customer id is valid assignment to someone who has these perms.
     if (!$from_public) {
         if (isset($data['customer_id']) && (int) $data['customer_id'] > 0) {
             $temp_customer = module_customer::get_customer($data['customer_id']);
             if (!$temp_customer || $temp_customer['customer_id'] != $data['customer_id']) {
                 unset($data['customer_id']);
             }
         }
         if (isset($data['vendor_id']) && (int) $data['vendor_id'] > 0) {
             $temp_vendor = module_vendor::get_vendor($data['vendor_id']);
             if (!$temp_vendor || $temp_vendor['vendor_id'] != $data['vendor_id']) {
                 unset($data['vendor_id']);
             }
         }
     }
     if (isset($data['password'])) {
         unset($data['password']);
     }
     // we do the password hash thing here.
     if (isset($data['password_new']) && strlen($data['password_new'])) {
         // an admin is trying to set the password for this account.
         // same permissions checks as on the user_admin_edit_login.php page
         if (!$user_id || isset($temp_user['password']) && !$temp_user['password'] || module_user::can_i('create', 'Users Passwords', 'Config') || isset($_REQUEST['reset_password']) && $_REQUEST['reset_password'] == module_security::get_auto_login_string($user_id)) {
             // we allow the admin to set a new password without typing in previous password.
             $data['password'] = $data['password_new'];
         } else {
             set_error('Sorry, no permissions to set a new password.');
         }
     } else {
         if ($user_id && isset($data['password_new1']) && isset($data['password_new2']) && strlen($data['password_new1'])) {
             // the user is trying to change their password.
             // only do this if the user has edit password permissions and their password matches.
             if (module_user::can_i('edit', 'Users Passwords', 'Config') || $user_id == module_security::get_loggedin_id()) {
                 if (isset($data['password_old']) && (md5($data['password_old']) == $temp_user['password'] || $data['password_old'] == $temp_user['password'])) {
                     // correct old password
                     // verify new password.
                     if ($data['password_new1'] == $data['password_new2']) {
                         $data['password'] = $data['password_new1'];
                     } else {
                         set_error('Verified password mismatch. Password unchanged.');
                     }
                 } else {
                     set_error('Old password does not match. Password unchanged.');
                 }
             } else {
                 set_error('No permissions to change passwords');
             }
         }
     }
     // and we finally hash our password
     if (isset($data['password']) && strlen($data['password']) > 0) {
         $data['password'] = md5($data['password']);
         // if you change md5 also change it in customer import.
         // todo - salt? meh.
     }
     $user_id = update_insert("user_id", $user_id, "user", $data);
     $use_master_key = $this->get_contact_master_key();
     // this will be customer_id or supplier_id
     if ($use_master_key && (isset($data[$use_master_key]) && $data[$use_master_key])) {
         if ($user_id) {
             if (isset($data['customer_primary']) && $data['customer_primary']) {
                 // update the customer/supplier to mark them as primary or not..
                 switch ($use_master_key) {
                     case 'customer_id':
                         module_customer::set_primary_user_id($data['customer_id'], $user_id);
                         break;
                     case 'vendor_id':
                         module_vendor::set_primary_user_id($data['vendor_id'], $user_id);
                         break;
                 }
             } else {
                 // check if this contact was the old customer/supplier primary and
                 switch ($use_master_key) {
                     case 'customer_id':
                         $customer_data = module_customer::get_customer($data['customer_id']);
                         if ($customer_data['primary_user_id'] == $user_id) {
                             module_customer::set_primary_user_id($data['customer_id'], 0);
                         }
                         break;
                     case 'vendor_id':
                         $vendor_data = module_vendor::get_vendor($data['vendor_id']);
                         if ($vendor_data['primary_user_id'] == $user_id) {
                             module_vendor::set_primary_user_id($data['vendor_id'], 0);
                         }
                         break;
                 }
             }
         }
     }
     if (!$from_public) {
         // hack for linked user accounts.
         if ($user_id && isset($data['link_customers']) && $data['link_customers'] == 'yes' && isset($data['link_user_ids']) && is_array($data['link_user_ids']) && isset($data['email']) && $data['email']) {
             $others = module_user::get_contacts(array('email' => $data['email']));
             foreach ($data['link_user_ids'] as $link_user_id) {
                 if (!(int) $link_user_id) {
                     continue;
                 }
                 if ($link_user_id == $user_id) {
                     continue;
                 }
                 // shouldnt happen
                 foreach ($others as $other) {
                     if ($other['user_id'] == $link_user_id) {
                         // success! they'renot trying to hack us.
                         $sql = "REPLACE INTO `" . _DB_PREFIX . "user_customer_rel` SET user_id = '" . (int) $link_user_id . "', customer_id = '" . (int) $other['customer_id'] . "', `primary` = " . (int) $user_id;
                         query($sql);
                         update_insert('user_id', $link_user_id, 'user', array('linked_parent_user_id' => $user_id));
                     }
                 }
             }
             update_insert('user_id', $user_id, 'user', array('linked_parent_user_id' => $user_id));
         }
         if ($user_id && isset($data['unlink']) && $data['unlink'] == 'yes') {
             $sql = "DELETE FROM `" . _DB_PREFIX . "user_customer_rel` WHERE user_id = '" . (int) $user_id . "'";
             query($sql);
             update_insert('user_id', $user_id, 'user', array('linked_parent_user_id' => 0));
         }
         handle_hook("address_block_save", $this, "physical", "user", "user_id", $user_id);
         handle_hook("address_block_save", $this, "postal", "user", "user_id", $user_id);
         if (class_exists('module_extra', false) && module_extra::is_plugin_enabled()) {
             module_extra::save_extras('user', 'user_id', $user_id);
         }
         // find current role / permissions
         $user_data = $this->get_user($user_id);
         $previous_user_roles = $user_data['roles'];
         $re_save_role_perms = false;
         // hack to support only 1 role (we may support multi-role in the future)
         // TODO: check we have permissions to set this role id, otherwise anyone can set their own role.
         if (isset($_REQUEST['role_id'])) {
             $sql = "DELETE FROM `" . _DB_PREFIX . "user_role` WHERE user_id = '" . (int) $user_id . "'";
             query($sql);
             if ((int) $_REQUEST['role_id'] > 0) {
                 if (!isset($previous_user_roles[$_REQUEST['role_id']])) {
                     $re_save_role_perms = (int) $_REQUEST['role_id'];
                 }
                 $_REQUEST['role'] = array($_REQUEST['role_id'] => 1);
             }
         }
         // save users roles (support for multi roles in future - but probably will never happen)
         if (isset($_REQUEST['role']) && is_array($_REQUEST['role'])) {
             foreach ($_REQUEST['role'] as $role_id => $tf) {
                 $this->add_user_to_role($user_id, $role_id);
             }
         }
         if ($re_save_role_perms) {
             // copy role permissiosn to user permissions
             $sql = "DELETE FROM `" . _DB_PREFIX . "user_perm` WHERE user_id = " . (int) $user_id;
             query($sql);
             // update - we are not relying on these permissions any more.
             // if the user has a role assigned, we use those permissions period
             // we ignore all permissions in the user_perm table if the user has a role.
             // if the user doesn't have a role, then we use these user_perm permissions.
             /*$security_role = module_security::get_security_role($re_save_role_perms);
             		foreach($security_role['permissions'] as $security_permission_id => $d){
             			$sql = "INSERT INTO `"._DB_PREFIX."user_perm` SET user_id = ".(int)$user_id.", security_permission_id = '".(int)$security_permission_id."'";
             			foreach(module_security::$available_permissions as $perm){
             				$sql .= ", `".$perm."` = ".(int)$d[$perm];
             			}
             			query($sql);
             		}*/
         } else {
             if (isset($_REQUEST['permission']) && is_array($_REQUEST['permission'])) {
                 $sql = "DELETE FROM `" . _DB_PREFIX . "user_perm` WHERE user_id = '" . (int) $user_id . "'";
                 query($sql);
                 // update permissions for this user.
                 foreach ($_REQUEST['permission'] as $security_permission_id => $permissions) {
                     $actions = array();
                     foreach (module_security::$available_permissions as $permission) {
                         if (isset($permissions[$permission]) && $permissions[$permission]) {
                             $actions[$permission] = 1;
                         }
                     }
                     $sql = "REPLACE INTO `" . _DB_PREFIX . "user_perm` SET user_id = '" . (int) $user_id . "', security_permission_id = '" . (int) $security_permission_id . "' ";
                     foreach ($actions as $permission => $tf) {
                         $sql .= ", `" . mysql_real_escape_string($permission) . "` = 1";
                     }
                     query($sql);
                 }
             }
         }
         /*global $plugins;
         		if($user_id && isset($data['user_type_id']) && $data['user_type_id'] == 1 && $data['site_id']){
         			// update the site.
         			$plugins['site']->set_primary_user_id($data['site_id'],$user_id);
         		}else{
         			//this use isn't (or isnt any more) the sites primary user.
         			// unset this if he was the primary user before
         			$site_data = $plugins['site']->get_site($data['site_id']);
         			if(isset($site_data['primary_user_id']) && $site_data['primary_user_id'] == $user_id){
         				$plugins['site']->set_primary_user_id($data['site_id'],0);
         			}
         		}*/
         // save the company information if it's available
         if (class_exists('module_company', false) && module_company::can_i('edit', 'Company') && module_company::is_enabled() && module_user::can_i('edit', 'User')) {
             if (isset($_REQUEST['available_user_company']) && is_array($_REQUEST['available_user_company'])) {
                 $selected_companies = isset($_POST['user_company']) && is_array($_POST['user_company']) ? $_POST['user_company'] : array();
                 foreach ($_REQUEST['available_user_company'] as $company_id => $tf) {
                     if (!isset($selected_companies[$company_id]) || !$selected_companies[$company_id]) {
                         // remove user from this company
                         module_company::delete_user($company_id, $user_id);
                     } else {
                         // add user to this company (if they are not already existing)
                         module_company::add_user_to_company($company_id, $user_id);
                     }
                 }
             }
         }
     }
     module_cache::clear('user');
     return $user_id;
 }
コード例 #10
0
ファイル: ticket.php プロジェクト: sgh1986915/php-crm
 public static function bulk_handle_status()
 {
     if (isset($_REQUEST['bulk_action']) && isset($_REQUEST['bulk_action']['status_resolved']) && $_REQUEST['bulk_action']['status_resolved'] == 'yes' && isset($_REQUEST['bulk_change_status_id']) && $_REQUEST['bulk_change_status_id'] > 0) {
         // confirm deletion of these tickets:
         $ticket_ids = isset($_REQUEST['bulk_operation']) && is_array($_REQUEST['bulk_operation']) ? $_REQUEST['bulk_operation'] : array();
         foreach ($ticket_ids as $ticket_id => $k) {
             if ($k != 'yes') {
                 unset($ticket_ids[$ticket_id]);
             } else {
                 $ticket_ids[$ticket_id] = '#' . self::ticket_number($ticket_id);
             }
         }
         if (count($ticket_ids) > 0) {
             foreach ($ticket_ids as $ticket_id => $ticket_number) {
                 update_insert('ticket_id', $ticket_id, 'ticket', array('status_id' => $_REQUEST['bulk_change_status_id']));
             }
             module_cache::clear('ticket');
             $statuses = self::get_statuses();
             set_message(_l("%s tickets marked as %s", count($ticket_ids), $statuses[$_REQUEST['bulk_change_status_id']]));
             //redirect_browser(self::link_open(false));
         }
     }
 }