%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/devcapijob/www/clients/
Upload File :
Create Path :
Current File : /home/devcapijob/www/clients/neuvoo.php

<?php
define('PATH_BASE',dirname(__DIR__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( PATH_BASE .DS.'clients'.DS.'db.php' );
error_reporting(E_ALL);
ini_set('display_errors',0);
if($_GET['action']=="delete"){
  //echo 'qsqs';exit;
$select_annonce ="select id_annonce from cap_annonce WHERE id_annonceur = 515082";

$execute_select_annonce = $conn->query($select_annonce);

$array =array();
while ($del = $execute_select_annonce->fetch()){
  echo $i;
  array_push($array, $del['id_annonce']);

 
  $i++;

}
$ids = implode(',', $array);
  
 $delete_annonce_departement = "DELETE FROM cap_annonce_departement WHERE id_annonce in (".$ids.")";
 $conn->query($delete_annonce_departement);

 $delete_annonce_domaine = "DELETE FROM cap_annonce_domaine WHERE id_annonce in (".$ids.")";
$conn->query($delete_annonce_domaine);

 $delete_annonce_email_sup = "DELETE FROM cap_annonce_email_sup WHERE id_annonce in (".$ids.")";
 $conn->query($delete_annonce_email_sup);
  
$conn->query("DELETE FROM  cap_annonce_site WHERE id_annonce in (".$ids.")");

 $delete_annonce = "DELETE FROM cap_annonce WHERE id_annonce in (".$ids.")";
$conn->query($delete_annonce);
echo 'ok--';



exit;
}

$select_annonceur =$conn->query("select email,raison_social  from cap_annonceur WHERE id_annonceur = 515082");
$data = $select_annonceur->fetch();
$email  = $data['email'];
$raison_social  = $data['raison_social'];
/*****/
$last_id_table = "select max(id_annonce) from cap_annonce";
$requete_last_id    = $conn->query($last_id_table);
$last_id=$requete_last_id->fetch();

/***/
////https://neuvoo.com/services/feeds/generatesV3/generate.php?partner=capijob&country=fr
//echo PATH_BASE .DS.'clients'.DS.'neuvoo.xml';exit;

// Affichage des erreurs pour le débogage
ini_set('display_errors', 1);
error_reporting(E_ALL);



// Ouvrir le flux XML avec XMLReader pour éviter de charger tout le fichier en mémoire
$reader = new XMLReader();
if (!$reader->open('/home/capijobnew/public_html/clients/capijob_bulk.xml')) {
    die("Impossible d'ouvrir le flux XML");
}

// Afficher la mémoire utilisée après ouverture du flux XML
echo 'Mémoire utilisée après ouverture du flux: ' . memory_get_usage() . ' bytes';

// Paramètres pour le traitement par lots
$batch_size = 10000;  // Taille du lot pour les opérations SQL
$batch_count = 0;  // Compteur pour le nombre d'enregistrements dans le lot
$max_length = 255;
// Tableaux pour stocker les requêtes
$reqs = [];
$reqs_content = [];
$sites = [];
$sql_depart = [];
$sql_domaine = [];
$email_sup = [];
$i=1;
// Parcourir le flux XML et traiter les éléments "job"
while ($reader->read()) {
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'job') {
        $xmlJob = simplexml_load_string($reader->readOuterXML());

        if ($xmlJob === false) {
            echo "Erreur lors du chargement du XML";
            continue;  // Passez à l'itération suivante
        }

        // Récupérer les données nécessaires
        $jobid = $xmlJob->jobid ?? null;
        $title = $xmlJob->title ?? null;
        $company = $xmlJob->company ?? null;
        $region = trim($xmlJob->state ?? '');
        $description = utf8_decode(addslashes($xmlJob->description)) ?? '';
        $value_domaine['id_domaine'] ='1682';
        // S'assurer que les données essentielles sont présentes
        if ($jobid === null || $title === null || $company === null) {
            continue;  // Passer si des données critiques sont manquantes
        }

        // Récupérer des informations de base de données
        $regionsQuery = $conn->prepare(
            'SELECT cap_region.id_region FROM cap_region_new
             INNER JOIN cap_region ON cap_region_new.id_region_new = cap_region.parent_new
             WHERE cap_region_new.nom_reg_new LIKE ?'
        );
        $regionsQuery->execute(['%' . $region . '%']);
        $regionData = $regionsQuery->fetch();
        $id_region = $regionData['id_region'] ?? '89'; // Valeur par défaut

        // Obtenir les départements pour la région
        $departements = [];
        $departQuery = $conn->prepare("SELECT id_departement FROM cap_depart WHERE id_region = ?");
        $departQuery->execute([$id_region]);
        while ($departRow = $departQuery->fetch(PDO::FETCH_ASSOC)) {
            $departements[] = $departRow['id_departement'];
        }
        $id_last = $last_id['max(id_annonce)'] + $i;

        $DateFin ='2024-12-30';
        // Construire les requêtes pour insertion
      echo  $reqs[] = sprintf(
            '("%d", "1", "%d", "%d", "%s", "7", "13","", "nc", "%s", "%s", "%s", "515082", "75", "12", "12", "7", "0", "21", "1", "1", "0", "%s", "%s", "1", "0", "0", "0", "0")',
            $id_last,
            1682,
            $id_region,
            implode(',', $departements),
            date('Y-m-d'),
            $DateFin,
            $DateFin,
            date('Y-m-d'),
            date('Y-m-d H:i:s')
        );

        if (strlen($title) > $max_length) {
            $shortened_poste = substr($title, 0, $max_length);
        } else {
            $shortened_poste = $title;
        }

       echo $reqs_content[] = sprintf(
            '("%d", "%s", "%s", "%s", "%s", "%s", "", "", "", "", "", "")',
            $id_last,
            addslashes(utf8_decode($shortened_poste)), 
            addslashes(utf8_decode($shortened_poste)), 
            addslashes(utf8_decode($shortened_poste)), 
            genere_alias($id_last."-".trim(substr($shortened_poste, 0, 100))), 
            $description  // Description du poste ou autre texte
        );

        // Requêtes pour `cap_annonce_site`
        $sites[] = sprintf("('1', '%d')", $id_last);
        $sites[] = sprintf("('3', '%d')", $id_last);

        // Requêtes pour les départements
        foreach ($departements as $deptId) {
            $sql_depart[] = sprintf("(%d, %d)", $id_last, $deptId);
        }

        if($value_domaine['id_domaine']!=""){
         $sql_domaine[] = "(".$id_last.", ".$value_domaine['id_domaine'].")";
        }
   
        $sql_email[] ="('".$id_last."', 'cv1@capijob.com')";

        // Autres requêtes nécessaires
        // Requêtes pour domaines, emails supplémentaires, etc.

        // Traiter par lots
        if ($batch_count >= $batch_size) {
            try {
                $conn->beginTransaction();  // Démarrer une transaction

                // Insertion des requêtes SQL en lot
                if (!empty($reqs)) {
                    $insertCapAnnonce = 'INSERT INTO `cap_annonce`(`id_annonce`, `type`, `domaine`, `region`, `depart`, `duree_travail`, `niveau_etude`, `type_contrat`, `permis`, `date_parution`, `fin_parution`, `date_max_parution`, `id_annonceur`, `id_pays`, `parution`, `parution_utilise`, `nb_rafraich`, `nb_rafraich_historique`, `par_jour`, `nb_rubrique`, `etat`, `active`, `date_creation`, `date_misejour`, `id_langue`, `select_accueil`, `flux`, `nb_vue`, `click_btn`) VALUES ' . implode(',', $reqs);
                    $conn->exec($insertCapAnnonce);
                    $reqs = [];  // Réinitialiser après insertion
                }

                // Insertion du contenu des annonces
                if (!empty($reqs_content)) {
                    $insertContent = 'INSERT INTO `cap_annonce_content`(`id_annonce`, `poste`, `titre`, `h1_page`, `alias`, `texte`, `salaire`, `ville`, `code_postal`, `adresse`, `autre_mail`, `url_candidature`) VALUES ' . implode(',', $reqs_content);
                    $conn->exec($insertContent);
                    $reqs_content = [];  // Réinitialiser après insertion
                }

                // Insertion des sites
                if (!empty($sites)) {
                    $insertSite = 'INSERT INTO `cap_annonce_site`(`site_web`, `id_annonce`) VALUES ' . implode(',', $sites);
                    $conn->exec($insertSite);
                    $sites = [];  // Réinitialiser après insertion
                }

                // Insertion des départements
                if (!empty($sql_depart)) {
                    $insertDepart = 'INSERT INTO `cap_annonce_departement`(`id_annonce`, `id_departement`) VALUES ' . implode(',', $sql_depart);
                    $conn->exec($insertDepart);
                    $sql_depart = [];  // Réinitialiser après insertion
                }

                if (!empty($sql_domaine)) {
                    $insertdomaine = 'INSERT INTO `cap_annonce_domaine`(`id_annonce`, `id_domaine`) VALUES ' . implode(',', $sql_domaine);
                    $conn->exec($insertdomaine);
                    $sql_domaine = [];  // Réinitialiser après insertion
                }
      
               if (!empty($sql_email)) {
                    $insertemail = 'INSERT INTO `cap_annonce_email_sup`(`id_annonce`, `email_sup`) VALUES ' . implode(',', $sql_email);
                    $conn->exec($insertemail);
                    $sql_email = [];  // Réinitialiser après insertion
                }


                $conn->commit();  // Confirmer la transaction
                $batch_count = 0;  // Réinitialiser le compteur du lot

            } catch (PDOException $e) {
                $conn->rollback();  // Rétablir la transaction en cas d'échec
                die('Erreur lors de l\'exécution des requêtes : ' . $e->getMessage());
            }
        }

        // Incrémentez le compteur
        $batch_count++;
        $i++;
    }
}

// Insertion finale si des éléments restent
if ($batch_count > 0) {
    try {
        $conn->beginTransaction();  // Démarrer une transaction

        if (!empty($reqs)) {
            $insertCapAnnonce = 'INSERT INTO `cap_annonce`(`id_annonce`, `type`, `domaine`, `region`, `depart`, `duree_travail`, `niveau_etude`, `type_contrat`, `permis`, `date_parution`, `fin_parution`, `date_max_parution`, `id_annonceur`, `id_pays`, `parution`, `parution_utilise`, `nb_rafraich`, `nb_rubrique`, `etat`, `active`, `date_creation`, `date_misejour`, `id_langue`, `select_accueil`, `flux`, `nb_vue`, `click_btn`) VALUES ' . implode(',', $reqs);
            $conn->exec($insertCapAnnonce);
        }

        if (!empty($reqs_content)) {
            $insertContent = 'INSERT INTO `cap_annonce_content`(`id_annonce`, `poste`, `titre`, `h1_page`, `alias`, `texte`, `salaire`, `ville`, `code_postal`, `adresse`, `autre_mail`, `url_candidature`) VALUES ' . implode(',', $reqs_content);
            $conn->exec($insertContent);
        }


        $insertSite = "INSERT INTO `cap_annonce_site`(`site_web`, `id_annonce`) VALUES " . implode(',', $sites);
        $conn->exec($insertSite);
        $insertDepart = "INSERT INTO `cap_annonce_departement`(`id_annonce`, `id_departement`) VALUES " . implode(',', $sql_depart);
        $conn->exec($insertDepart);
        $insertdomaine  ="INSERT INTO `cap_annonce_domaine`(`id_annonce`, `id_domaine`) VALUES " . implode(',', $sql_domaine);
        $conn->exec($insertdomaine);
        $insertemail = "INSERT INTO `cap_annonce_email_sup`(`id_annonce`, `email_sup`) VALUES " . implode(',', $sql_email);
        $conn->exec($insertemail);

        // D'autres opérations SQL similaires pour les sites, les départements, etc.
        
        $conn->commit();  // Confirmer la transaction

    } catch (PDOException $e) {
        $conn->rollback();  // Rétablir la transaction en cas d'échec
        die('Erreur lors de l\'exécution des requêtes : ' . $e->getMessage());
    }
}

// Fermer le lecteur XML
$reader->close();

echo 'Toutes les opérations ont été exécutées avec succès';

// Afficher la mémoire utilisée après les opérations
echo 'Mémoire utilisée après les opérations : ' . memory_get_usage() . ' bytes';

?>

?>

Zerion Mini Shell 1.0