function cancel_translation_request($translation_id) { global $wpdb; if (is_array($translation_id)) { foreach ($translation_id as $id) { $this->cancel_translation_request($id); } } else { list($rid, $translator_id) = $wpdb->get_row($wpdb->prepare("SELECT rid, translator_id FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id), ARRAY_N); $job_id = $wpdb->get_var($wpdb->prepare("SELECT job_id FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d AND revision IS NULL ", $rid)); if ($this->settings['notification']['resigned'] == ICL_TM_NOTIFICATION_IMMEDIATELY && !empty($translator_id)) { require_once ICL_PLUGIN_PATH . '/inc/translation-management/tm-notification.class.php'; $tn_notification = new TM_Notification(); $tn_notification->translator_removed($translator_id, $job_id); $tn_notification->mail_queue(); } $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id)); $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translate WHERE job_id=%d", $job_id)); $max_job_id = $wpdb->get_var($wpdb->prepare("SELECT MAX(job_id) FROM {$wpdb->prefix}icl_translate_job WHERE rid=%d", $rid)); if ($max_job_id) { $wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}icl_translate_job SET revision = NULL WHERE job_id=%d", $max_job_id)); $_prevstate = $wpdb->get_var($wpdb->prepare("SELECT _prevstate FROM {$wpdb->prefix}icl_translation_status WHERE translation_id = %d", $translation_id)); if (!empty($_prevstate)) { $_prevstate = unserialize($_prevstate); $wpdb->update($wpdb->prefix . 'icl_translation_status', array('status' => $_prevstate['status'], 'translator_id' => $_prevstate['translator_id'], 'needs_update' => $_prevstate['needs_update'], 'md5' => $_prevstate['md5'], 'translation_service' => $_prevstate['translation_service'], 'translation_package' => $_prevstate['translation_package'], 'timestamp' => $_prevstate['timestamp'], 'links_fixed' => $_prevstate['links_fixed']), array('translation_id' => $translation_id)); } } else { $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translation_status WHERE translation_id=%d", $translation_id)); } // delete record from icl_translations if trid is null $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}icl_translations WHERE translation_id=%d AND element_id IS NULL", $translation_id)); } }
function assign_translation_job($job_id, $translator_id, $service = 'local') { global $wpdb; list($prev_translator_id, $rid) = $wpdb->get_row($wpdb->prepare("SELECT translator_id, rid FROM {$wpdb->prefix}icl_translate_job WHERE job_id=%d", $job_id), ARRAY_N); require_once ICL_PLUGIN_PATH . '/inc/translation-management/tm-notification.class.php'; $tn_notification = new TM_Notification(); if (!empty($prev_translator_id) && $prev_translator_id != $translator_id) { if ($job_id) { $tn_notification->translator_removed($prev_translator_id, $job_id); } } if ($this->settings['notification']['new-job'] == ICL_TM_NOTIFICATION_IMMEDIATELY) { if (empty($translator_id)) { $tn_notification->new_job_any($job_id); } else { $tn_notification->new_job_translator($job_id, $translator_id); } } $wpdb->update($wpdb->prefix . 'icl_translation_status', array('translator_id' => $translator_id, 'status' => ICL_TM_WAITING_FOR_TRANSLATOR, 'translation_service' => $service), array('rid' => $rid)); $wpdb->update($wpdb->prefix . 'icl_translate_job', array('translator_id' => $translator_id), array('job_id' => $job_id)); return true; }