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; } } }