Пример #1
0
 function afterAddNewRelatedRecord($relatedRecord)
 {
     //add the webpage strings to the job
     require_once 'inc/SweteJob.class.php';
     require_once 'inc/SweteWebpage.class.php';
     require_once 'inc/SweteDb.class.php';
     //todo only for 'webpages' related record
     $jobsRecord = $relatedRecord->toRecord('jobs');
     $job = new SweteJob($jobsRecord);
     $webpageRecord = df_get_record("webpages", array('webpage_id' => $relatedRecord->toRecord('webpages')->val("webpage_id")));
     $job->addWebpage(new SweteWebpage($webpageRecord), null, true);
 }
 function handle(&$params)
 {
     try {
         $app = Dataface_Application::getInstance();
         $query = $app->getQuery();
         $selectedRecords = df_get_selected_records($query);
         $isNewJob = false;
         //get the selected job
         if ($query['-job'] && is_numeric($query['-job'])) {
             $selectedJob = df_get_record('jobs', array('job_id' => '=' . $query['-job']));
         } else {
             //no job was selected by user
             $site_id = $selectedRecords[0]->val('website_id');
             $jobs = df_get_records_array('jobs', array('website_id' => $site_id, 'compiled' => 'false'));
             $createNewJob = false;
             if ($query['-job'] == "new") {
                 $createNewJob = true;
             }
             if (count($jobs) == 0 || $createNewJob) {
                 //create a new job
                 $selectedJob = SweteJob::createJob(SweteSite::loadSiteById($site_id))->getRecord();
                 $isNewJob = true;
             } else {
                 if (count($jobs) == 1) {
                     //only one available job
                     $selectedJob = $jobs[0];
                 } else {
                     throw new Exception("No Job id was specified, but there are " . $count($jobs) . " available jobs to add to");
                 }
             }
         }
         if (!$selectedJob) {
             throw new Exception("Job could not be found", E_USER_ERROR);
         }
         if (!$selectedJob->checkPermission('edit')) {
             throw new Exception("You don't have permission to edit this job");
         }
         $job = new SweteJob($selectedJob);
         $webpagesAdded = array();
         foreach ($selectedRecords as $record) {
             if (intval($record->val('website_id')) !== intval($selectedJob->val("website_id"))) {
                 throw new Exception("The webpage " . $record->val('webpage_id') . " is not in the same site as the job.");
             }
             $webpage = new SweteWebpage($record);
             //If webpage was already added to ANOTHER job, it doesn't matter
             //It will also be added to this one
             //if webpage was already added to this job, do nothing
             if (!$job->containsWebpage($webpage)) {
                 $job->addWebpage($webpage, null, true);
                 array_push($webpagesAdded, $webpage);
             }
         }
         $results = array('pagesAdded' => $webpagesAdded, 'jobId' => $selectedJob->val('job_id'), 'isNewJob' => $isNewJob);
         echo json_encode($results);
     } catch (Exception $e) {
         if ($e->getCode() == E_USER_ERROR) {
             echo $e->getMessage();
         } else {
             throw $e;
         }
     }
 }