adding ability to repost jobs and update the expiration date
authorAnthony Talarico <talarico@gaslightmedia.com>
Fri, 29 Sep 2017 18:58:57 +0000 (14:58 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Fri, 29 Sep 2017 18:58:57 +0000 (14:58 -0400)
update expiration by checking repost checkbox in admin

classes/data/dataJobs.php
models/admin/jobs/index.php
models/admin/management/jobsImport.php
models/front/jobs/list.php
setup/databaseScripts/create_database_V0.0.1.sql
views/admin/jobs/edit.html
views/admin/jobs/index.html
views/front/jobs/list.html

index 7200d28..18329bf 100644 (file)
@@ -187,7 +187,7 @@ class GlmDataJobs extends GlmDataAbstract
             'updated' => array (
                 'field' => 'updated',
                 'type' => 'datetime',
-                'use' => 'a'
+                'use' => 'lge'
             ),
             'visible' => array (
                 'field' => 'visible',
@@ -227,6 +227,11 @@ class GlmDataJobs extends GlmDataAbstract
                 'type' => 'text',
                 'use' => 'a'
             ),
+            'repost' => array (
+                'field' => 'repost',
+                'type' => 'checkbox',
+                'use' => 'a'
+            ),
             'deadline' => array (
                 'field' => 'deadline',
                 'type' => 'text',
@@ -272,7 +277,52 @@ class GlmDataJobs extends GlmDataAbstract
     {
         return $r;
     }
+/**
+     * Update timestamps for created, updated, approved
+     *
+     * @param string $field Field to update
+     * @param integer $id ID of For Sale Item
+     *
+     * @return void
+    */
+    public function updateTimestamp($field = false, $id = false,$item = false,$updated = false){
+        
+        if (!in_array($field, array('created', 'updated', 'approved')) || !$id) {
+            return false;
+        }
+        if($item){
+            if( $item['fieldData']['repost']['value'] == 1){
+                $sql = "
+                    UPDATE ".$this->table."
+                    SET $field = now()
+                    WHERE id = $id
+                ;";
+                $this->wpdb->query($sql);
+            }else if($item['fieldData']['repost']['value'] == 0 && $updated == NULL){
+                $sql = "
+                    UPDATE ".$this->table."
+                    SET updated = post_date
+                    WHERE id = $id AND updated IS NULL
+                ;";
+                $this->wpdb->query($sql);
+            }
+        }
+    }
+    /**
+     * Checks if Item should be re-posted
+     *
+     * @param string $field Field to update
+     * @param integer $id ID of For Sale Item
+     *
+     * @return void
+     */
+     public function getUpdatedTime($id = false){
+        //  echo '<pre>', print_r($item, true), '</pre>';
+        $sql = "SELECT updated FROM ".$this->table." WHERE id = $id;";
+        $updated = $this->wpdb->get_var($sql);
 
+        return $updated;
+    }
 }
 
 ?>
\ No newline at end of file
index 5329571..6d58b22 100644 (file)
@@ -198,6 +198,7 @@ class GlmMembersAdmin_jobs_index extends GlmDataJobs
                 $this->checkNewJobTitles();
                 $job = $this->insertEntry();
                 $this->job_id = $job['fieldData']['id'];
+                $updated = $this->getUpdatedTime($this->job_id);
                 
                 if ($job['status']) {
                     $haveJob = true;
@@ -209,6 +210,7 @@ class GlmMembersAdmin_jobs_index extends GlmDataJobs
                     $job_titles = $job_titles->getList();
                     // Get this again so we have the created date
                     $job = $this->editEntry($this->job_id);
+                    $this->updateTimestamp('updated', $this->job_id,$job,$updated);
                     // $job = $this->addNewTitle($job);
                     
                     $option = 'edit';
@@ -244,7 +246,7 @@ class GlmMembersAdmin_jobs_index extends GlmDataJobs
                 break;
 
             case 'update':
-           
+                $updated = $this->getUpdatedTime($this->job_id);
                 // Try to update this Job
                 $job = $this->updateEntry($this->job_id);
                 $this->checkNewJobTitles();
@@ -259,6 +261,7 @@ class GlmMembersAdmin_jobs_index extends GlmDataJobs
                 }
                 $job_titles     = $job_titles->getList();
                 $job_data   = $this->getList($where);
+                $this->updateTimestamp('updated', $this->job_id,$job,$updated);
                 $haveJob        = true;
                 $view_file      = 'edit';
                 
index 7a195c6..f2db29d 100644 (file)
@@ -197,6 +197,7 @@ class GlmMembersAdmin_management_jobsImport
                            'duration'=>$value['duration'],
                            'benefits'=>$value['bentext'],
                            'post_date'=>$value['ds'],
+                           'updated'=>$value['ds'],
                            'requirements'=>$value['requirements'],
                            'member'=>$value['member'],
                            'position_available'=>$value['position_available'],
@@ -222,6 +223,7 @@ class GlmMembersAdmin_management_jobsImport
                            '%s',
                            '%s',
                            '%s',
+                           '%s',
                            '%d',
                            '%s',
                            '%s',
index aad1b76..fcdcd79 100644 (file)
@@ -113,7 +113,7 @@ class GlmMembersFront_jobs_list extends GlmDatajobs
         if (isset($_REQUEST['option']) && trim($_REQUEST['option']) != '') {
             $option = $_REQUEST['option'];
         }
-        $where .= "CURDATE() <= DATE_ADD(post_date, INTERVAL job_expiration DAY) ";
+        $where .= "CURDATE() <= DATE_ADD(updated, INTERVAL job_expiration DAY) AND visible = true ";
         if (isset($_REQUEST['job_titles']) && $_REQUEST['job_titles'] !== '') {
             // Make sure it's numeric
             $job_title_id = ($_REQUEST['job_titles'] - 0);
@@ -122,7 +122,6 @@ class GlmMembersFront_jobs_list extends GlmDatajobs
         } else {
             $job_data = $this->getList($where);
         }
-
         $view_file = 'list';
 
         // Compile template data
index 52532e8..b14379a 100644 (file)
@@ -23,7 +23,7 @@ CREATE TABLE {prefix}jobs (
     contact_name TINYTEXT NULL ,
     contact_phone TINYTEXT NULL ,
     post_date DATETIME NULL DEFAULT NOW(),
-    updated DATETIME NULL DEFAULT NOW(),
+    updated DATETIME NULL,
     visible BOOL NULL,
     facility_operation TEXT NULL,
     requirements TEXT NULL,
@@ -33,6 +33,7 @@ CREATE TABLE {prefix}jobs (
     duration TINYTEXT NULL ,
     deadline TINYTEXT NULL ,
     company TINYTEXT NULL ,
+    repost TINYTEXT NULL ,
     position_available TINYTEXT NULL ,
     member INT NULL,
     PRIMARY KEY (id)
index 8907687..c6dc721 100644 (file)
         <h2 class="nav-tab-wrapper" style="margin-bottom: 1em;">
                 <a id="glm-Job-descr" data-show-table="glm-table-descr" class="glm-Job-tab nav-tab nav-tab-active">Job Postings</a>
             </h2>
+            <!-- RE-POST -->
+        <div class="glm-item-row glm-row">
+            <div class="glm-small-12 glm-medium-2 glm-columns admin-item-label">
+                    Re-Post <br> (restart expiration interval)
+            </div>
+            <div class="glm-small-12 glm-medium-5 glm-columns admin-item-input">
+                    <input id="item-repost" data-id="item-repost" type="checkbox" name="repost" class="repost-checkbox">
+            </div>
+        </div>
             <!-- JOB TITLE -->
             <div class="glm-job-row glm-row">
                 <div class="glm-small-12 glm-medium-2 glm-columns admin-job-label">
index d0ce109..581a83a 100644 (file)
@@ -38,7 +38,7 @@
                                 {if $data.member} {$data.member} {else} &nbsp; {/if}
                             </div>
                             <div class="job-date-list glm-small-12 glm-large-3 glm-columns no-padding">
-                                {$data.post_date.timestamp|date_format:"%Y-%m-%d"}
+                                {$data.updated.timestamp|date_format:"%Y-%m-%d"}
                             </div>
                         </div>
                     </div>
index 91ca4ac..2f488ed 100644 (file)
@@ -25,7 +25,7 @@
                             <span>Company: </span>{$value.company}
                         </div>
                         <div class="job-date-list glm-small-12 glm-columns no-padding">
-                            <span>Posted: </span>{$value.post_date.timestamp|date_format:"%Y-%m-%d"}
+                            <span>Posted: </span>{$value.updated.timestamp|date_format:"%Y-%m-%d"}
                         </div>
                         <a href="{$siteBaseUrl}job-detail/?job={$value.id}">Full Job Description</a>
                     </div>