insertUpdate() public method

public insertUpdate ( )
コード例 #1
0
 function saveBase($formvars = array())
 {
     global $SERVER_EXTENSIONS;
     $mdb = $this->mdb;
     // add all missing keys to array
     fixFormVars($formvars, array('IDbase', 'basename', 'crypt_key', 'IDclient', 'timezone', 'dst'));
     $return_to_edit = false;
     // adjust crypt key if it is not valid
     if (strlen($formvars['crypt_key']) != 32 || !ctype_xdigit($formvars['crypt_key'])) {
         $formvars['crypt_key'] = randomHex(32);
         $return_to_edit = true;
         $this->notifs['key_generated'] = true;
     }
     // From MOMENT.JS (moment.fn.zone): If the input is less than 16 and greater than -16, it will interpret your input as hours instead.
     // Because of that, we don't let user enter offset in this range.
     if ($formvars['timezone'] > -16 && $formvars['timezone'] < 16) {
         $formvars['timezone'] = 0;
     }
     if ($formvars['dst'] > 2 || $formvars['dst'] < 0) {
         $formvars['dst'] = 0;
     }
     // inserting new
     if ($formvars['IDbase'] <= 0) {
         $baseid = $this->generateReallyUniqueBaseId(50);
         if ($baseid == '') {
             die('System error: Couldn\'t generate unique BaseID!');
         }
         if (strlen($formvars['basename']) <= 0) {
             $formvars['basename'] = 'Base ' . date('y-m-d H:i:s', time());
         }
         $mdb->insert('base', array('IDaccount' => $_SESSION['IDaccount'], 'baseid' => $baseid, 'basename' => $formvars['basename'], 'timezone' => $formvars['timezone'], 'dst' => $formvars['dst'], 'crypt_key' => $formvars['crypt_key']));
         $this->notifs['base_added'] = true;
         $formvars['IDbase'] = $mdb->insertId();
         // continue as we were updating...
         $return_to_edit = true;
     } else {
         $mdb->update('base', array('basename' => $formvars['basename'], 'crypt_key' => $formvars['crypt_key'], 'timezone' => $formvars['timezone'], 'dst' => $formvars['dst']), "IDbase = %i AND IDaccount = %i", $formvars['IDbase'], $_SESSION['IDaccount']);
         $this->notifs['base_updated'] = true;
     }
     // insert/update linked clients table
     // delete all and add new, that's easier than updating :)
     $mdb->delete('base_client', "IDbase = %i AND IDbase IN (SELECT IDbase FROM base WHERE IDaccount = %i)", $formvars['IDbase'], $_SESSION['IDaccount']);
     // add link, securelly
     settype($formvars['IDclient'], 'array');
     $available_IDclients = $mdb->queryOneColumn("IDclient", "SELECT IDclient FROM client WHERE IDaccount = %i", $_SESSION['IDaccount']);
     foreach ($available_IDclients as $IDclient) {
         if (in_array($IDclient, $formvars['IDclient'])) {
             $mdb->insert("base_client", array('IDbase' => $formvars['IDbase'], 'IDclient' => $IDclient));
         }
     }
     // Handle Server Extensions management
     // first lets check if we own this IDbase... easiest way, not the smartest
     $is_my_base = $this->getBase($formvars['IDbase']);
     if (count($is_my_base) <= 0) {
         return false;
     }
     // Android GCM is here?
     if (isset($SERVER_EXTENSIONS['se_android_gcm']) && $SERVER_EXTENSIONS['se_android_gcm']['enabled'] == 1) {
         $se_mdb = new MeekroDB(mysql_host, mysql_username, mysql_password, $SERVER_EXTENSIONS['se_android_gcm']['mysql_database']);
         // insert, on duplicate update
         $se_mdb->insertUpdate('base_config', array('IDbase' => $formvars['IDbase'], 'disable_status_change_event' => isset($formvars['se_android_gcm_disable_status_change_event']) ? '1' : '0', 'disable_new_data_event' => isset($formvars['se_android_gcm_disable_new_data_event']) ? '1' : '0'));
     }
     return array('return_to_edit' => $return_to_edit, 'IDbase' => $formvars['IDbase']);
 }
コード例 #2
0
 function saveClient($formvars = array())
 {
     global $SERVER_EXTENSIONS;
     $mdb = $this->mdb;
     // add all missing keys to array
     fixFormVars($formvars, array('IDclient', 'clientname', 'IDbase'));
     $return_to_edit = false;
     // inserting new
     if ($formvars['IDclient'] <= 0) {
         $auth_token = $this->generateReallyUniqueAuthToken(50);
         if ($auth_token == '') {
             die('System error: Couldn\'t generate unique Auth Token!');
         }
         if (strlen($formvars['clientname']) <= 0) {
             $formvars['clientname'] = 'Client ' . date('y-m-d H:i:s', time());
         }
         $mdb->insert('client', array('IDaccount' => $_SESSION['IDaccount'], 'auth_token' => $auth_token, 'clientname' => $formvars['clientname']));
         $this->notifs['client_added'] = true;
         $formvars['IDclient'] = $mdb->insertId();
         // continue as we were updating...
         $return_to_edit = true;
     } else {
         $mdb->update('client', array('clientname' => $formvars['clientname']), "IDclient = %i AND IDaccount = %i", $formvars['IDclient'], $_SESSION['IDaccount']);
         $this->notifs['client_updated'] = true;
     }
     // insert/update linked bases table
     // delete all and add new, that's easier than updating :)
     $mdb->delete('base_client', "IDclient = %i AND IDclient IN (SELECT IDclient FROM client WHERE IDaccount = %i)", $formvars['IDclient'], $_SESSION['IDaccount']);
     // add link, securelly
     settype($formvars['IDbase'], 'array');
     $available_IDbases = $mdb->queryOneColumn("IDbase", "SELECT IDbase FROM base WHERE IDaccount = %i", $_SESSION['IDaccount']);
     foreach ($available_IDbases as $IDbase) {
         if (in_array($IDbase, $formvars['IDbase'])) {
             $mdb->insert("base_client", array('IDbase' => $IDbase, 'IDclient' => $formvars['IDclient']));
         }
     }
     // Handle Server Extensions management
     // first lets check if we own this IDbase... easiest way, not the smartest
     $is_my_client = $this->getClient($formvars['IDclient']);
     if (count($is_my_client) <= 0) {
         return false;
     }
     // Android GCM is here?
     if (isset($SERVER_EXTENSIONS['se_android_gcm']) && $SERVER_EXTENSIONS['se_android_gcm']['enabled'] == 1) {
         $se_mdb = new MeekroDB(mysql_host, mysql_username, mysql_password, $SERVER_EXTENSIONS['se_android_gcm']['mysql_database']);
         // insert, on duplicate update
         $se_mdb->insertUpdate('client_config', array('IDclient' => $formvars['IDclient'], 'disable_status_change_event' => isset($formvars['se_android_gcm_disable_status_change_event']) ? '1' : '0', 'disable_new_data_event' => isset($formvars['se_android_gcm_disable_new_data_event']) ? '1' : '0'));
     }
     return array('return_to_edit' => $return_to_edit, 'IDclient' => $formvars['IDclient']);
 }