コード例 #1
0
 protected function doCreativeSubmit($request)
 {
     $validator = new WPAM_Validation_Validator();
     //#23 before getting media library images, upload an image file if there is one
     $has_new_image = isset($_FILES['fileImageNew']) && trim($_FILES['fileImageNew']['name']) != '';
     if ($has_new_image) {
         $mimes = array('jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'bmp' => 'image/bmp', 'tif|tiff' => 'image/tiff');
         $file = wp_handle_upload($_FILES['fileImageNew'], array('mimes' => $mimes, 'test_form' => false));
         if (isset($file['error'])) {
             $validator->addError(new WPAM_Validation_ValidatorError('fileImageNew', sprintf(__('Image Upload Error: %s', 'wpam'), $file['error'])));
         } else {
             //successfully uploaded an image
             $object = array('post_title' => basename($file['url']), 'post_content' => $file['url'], 'post_mime_type' => $file['type'], 'guid' => $file['url']);
             // Save the attachment
             $attachment_id = wp_insert_attachment($object, $file['file']);
             //make it selected in the media library dropdown
             $has_new_image = false;
             $request['ddFileImage'] = $attachment_id;
         }
     }
     $db = new WPAM_Data_DataAccess();
     $images = $db->getWordPressRepository()->getAllImageAttachments();
     $imageIds = array();
     foreach ($images as $image) {
         $imageIds[] = $image->ID;
     }
     $validator->addValidator('txtName', new WPAM_Validation_StringValidator(1));
     //$validator->addValidator('ddLandingPage', new WPAM_Validation_SetValidator(array('index','products')));
     $validator->addValidator('ddType', new WPAM_Validation_SetValidator(array('image', 'text')));
     if ($request['ddType'] === 'image' && !$has_new_image) {
         $validator->addValidator('ddFileImage', new WPAM_Validation_SetValidator($imageIds));
     } else {
         if ($request['ddType'] === 'text') {
             $validator->addValidator('txtLinkText', new WPAM_Validation_StringValidator(1));
         }
     }
     $vr = $validator->validate($request);
     if ($vr->getIsValid()) {
         $creativesRepo = $db->getCreativesRepository();
         if ($request['action'] === 'edit') {
             $model = $creativesRepo->load($request['creativeId']);
         } else {
             $model = new WPAM_Data_Models_CreativeModel();
             $model->dateCreated = time();
             //#50 new creatives start as 'inactive'
             $model->status = 'active';
         }
         $model->type = $request['ddType'];
         if ($model->type === 'image') {
             $model->imagePostId = $request['ddFileImage'];
             $model->altText = $request['txtImageAltText'];
         } else {
             if ($model->type === 'text') {
                 $model->linkText = $request['txtLinkText'];
                 $model->altText = $request['txtAltText'];
             } else {
                 wp_die(__('Insert failed: Bad creative type.', 'wpam'));
             }
         }
         $model->slug = $request['txtSlug'];
         $model->name = $request['txtName'];
         $db = new WPAM_Data_DataAccess();
         $response = new WPAM_Pages_TemplateResponse('admin/creatives_detail');
         if ($request['action'] === 'edit') {
             $response->viewData['updateMessage'] = __('Creative Updated.', 'wpam');
             $creativesRepo->update($model);
         } else {
             if ($request['action'] === 'new') {
                 $id = $creativesRepo->insert($model);
                 $model->creativeId = $id;
                 $response->viewData['updateMessage'] = __('Creative ... created.', 'wpam');
             } else {
                 wp_die(__('Insert failed: invalid creative update mechanism.', 'wpam'));
             }
         }
         $response->viewData['request'] = $request;
         $response->viewData['creative'] = $model;
         return $response;
     } else {
         return $this->getCreativeUpdateForm($request, $vr);
     }
 }
コード例 #2
0
 public function getPostId($postName)
 {
     $database = new WPAM_Data_DataAccess();
     return $database->getWordPressRepository()->getPostId($postName);
 }