public function searchPigQuery($whereAdd, $orderBy = '', $limit = '', $count = false) { $config = new Configuration(); $status = new Status(); if ($config->settings->organizationsModule == 'Y') { $dbName = $config->settings->organizationsDatabaseName; $orgJoinAdd = "LEFT JOIN " . $dbName . ".Organization O ON O.organizationID = ROL.organizationID\n\t\t\t\t\t\t LEFT JOIN " . $dbName . ".Alias OA ON OA.organizationID = ROL.organizationID"; } else { $orgJoinAdd = "LEFT JOIN Organization O ON O.organizationID = ROL.organizationID"; } $savedStatusID = intval($status->getIDFromName('saved')); //also add to not retrieve saved records $whereAdd[] = "R.statusID != " . $savedStatusID; if (count($whereAdd) > 0) { $whereStatement = " WHERE " . implode(" AND ", $whereAdd); } else { $whereStatement = ""; } if ($count) { $select = "SELECT COUNT(DISTINCT R.resourceID) count"; $groupBy = ""; } else { $select = "SELECT R.resourceID, RF.shortName resourceFormatID, RT.shortName resourceTypeID, R.titleText, AT.shortName acquisitionType, R.createLoginID, CU.firstName, CU.lastName, R.createDate, R.providerText, R.descriptionText, R.resourceURL, S.shortName status, R.resourceAltURL,\n\t\t\t\t\t\tGROUP_CONCAT(DISTINCT A.shortName ORDER BY A.shortName DESC SEPARATOR '<br />') aliases"; $groupBy = "GROUP BY R.resourceID"; } $table_matches = array(); // Build a list of tables that are referenced by the select and where statements in order to limit the number of joins performed in the search. preg_match_all("/[A-Z]+(?=[.][A-Z]+)/i", $select, $table_matches); $referenced_tables = array_unique($table_matches[0]); preg_match_all("/[A-Z]+(?=[.][A-Z]+)/i", $whereStatement, $table_matches); $referenced_tables = array_unique(array_merge($referenced_tables, $table_matches[0])); // These join statements will only be included in the query if the alias is referenced by the select and/or where. $conditional_joins = explode("\n", "LEFT JOIN ResourceFormat RF ON R.resourceFormatID = RF.resourceFormatID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceType RT ON R.resourceTypeID = RT.resourceTypeID\n\t\t\t\t\t\t\t\t\tLEFT JOIN AcquisitionType AT ON R.acquisitionTypeID = AT.acquisitionTypeID\n\t\t\t\t\t\t\t\t\tLEFT JOIN Status S ON R.statusID = S.statusID\n\t\t\t\t\t\t\t\t\tLEFT JOIN User CU ON R.createLoginID = CU.loginID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourcePurchaseSiteLink RPSL ON R.resourceID = RPSL.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceAuthorizedSiteLink RAUSL ON R.resourceID = RAUSL.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceAdministeringSiteLink RADSL ON R.resourceID = RADSL.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourcePayment RPAY ON R.resourceID = RPAY.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceNote RN ON R.resourceID = RN.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceStep RS ON R.resourceID = RS.resourceID"); $additional_joins = array(); foreach ($conditional_joins as $join) { $match = array(); preg_match("/[A-Z]+(?= ON )/i", $join, $match); $table_name = $match[0]; if (in_array($table_name, $referenced_tables)) { $additional_joins[] = $join; } } $query = $select . "\n\t\t\t\t\t\t\t\tFROM Resource R\n\t\t\t\t\t\t\t\t\tLEFT JOIN Alias A ON R.resourceID = A.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceOrganizationLink ROL ON R.resourceID = ROL.resourceID\n\t\t\t\t\t\t\t\t\t" . $orgJoinAdd . "\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceRelationship RRC ON RRC.relatedResourceID = R.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceRelationship RRP ON RRP.resourceID = R.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN ResourceSubject RSUB ON R.resourceID = RSUB.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN Resource RC ON RC.resourceID = RRC.resourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN Resource RP ON RP.resourceID = RRP.relatedResourceID\n\t\t\t\t\t\t\t\t\tLEFT JOIN GeneralDetailSubjectLink GDLINK ON RSUB.generalDetailSubjectLinkID = GDLINK.generalDetailSubjectLinkID\t\t\t\t\t\t\t\t\t\n " . implode("\n", $additional_joins) . "\n\t\t\t\t\t\t\t\t " . $whereStatement . "\n\t\t\t\t\t\t\t\t " . $groupBy; if ($orderBy) { $query .= "\nORDER BY {$orderBy}"; } if ($limit) { $query .= "\nLIMIT {$limit}"; } return $query; }
$resourceID = $_POST['resourceID']; if ($resourceID) { //get this resource $resource = new Resource(new NamedArguments(array('primaryKey' => $resourceID))); } else { //set up new resource $resource = new Resource(); $resource->createLoginID = $loginID; $resource->createDate = date('Y-m-d'); $resource->updateLoginID = ''; $resource->updateDate = ''; } //determine status id $status = new Status(); $statusID = $status->getIDFromName($_POST['resourceStatus']); $resource->resourceTypeID = $_POST['resourceTypeID']; $resource->resourceFormatID = $_POST['resourceFormatID']; $resource->acquisitionTypeID = $_POST['acquisitionTypeID']; $resource->titleText = $_POST['titleText']; $resource->descriptionText = $_POST['descriptionText']; $resource->isbnOrISSN = ''; $resource->statusID = $statusID; $resource->orderNumber = ''; $resource->systemNumber = ''; $resource->userLimitID = ''; $resource->authenticationUserName = ''; $resource->authenticationPassword = ''; $resource->storageLocationID = ''; $resource->registeredIPAddresses = ''; $resource->providerText = $_POST['providerText'];
public function getOutstandingTasksByResource($outstandingResourceID) { $status = new Status(); $excludeStatus = array(); $excludeStatus[] = $status->getIDFromName('complete'); $excludeStatus[] = $status->getIDFromName('archive'); if (count($excludeStatus) > 1) { $whereAdd = "AND R.statusID NOT IN (" . implode(",", $excludeStatus) . ")"; } else { if (count($excludeStatus) == 1) { $whereAdd = "AND R.statusID != '" . implode("", $excludeStatus) . "'"; } else { $whereAdd = ""; } } $query = "SELECT DISTINCT RS.stepName, date_format(stepStartDate, '%c/%e/%Y') startDate\n\t\t\tFROM Resource R, ResourceStep RS, UserGroupLink UGL\n\t\t\tWHERE R.resourceID = RS.resourceID\n\t\t\tAND RS.userGroupID = UGL.userGroupID\n\t\t\tAND UGL.loginID = '" . $this->loginID . "'\n\t\t\tAND R.resourceID = '" . $outstandingResourceID . "'\n\t\t\tAND (RS.stepEndDate IS NULL OR RS.stepEndDate = '0000-00-00')\n\t\t\tAND (RS.stepStartDate IS NOT NULL AND RS.stepStartDate != '0000-00-00')\n\t\t\t" . $whereAdd . "\n\t\t\tORDER BY 1 desc LIMIT 0,25"; $result = $this->db->processQuery($query, 'assoc'); $resourceArray = array(); //need to do this since it could be that there's only one request and this is how the dbservice returns result if (isset($result['stepName'])) { foreach (array_keys($result) as $attributeName) { $resultArray[$attributeName] = $result[$attributeName]; } array_push($resourceArray, $resultArray); } else { foreach ($result as $row) { $resultArray = array(); foreach (array_keys($row) as $attributeName) { $resultArray[$attributeName] = $row[$attributeName]; } array_push($resourceArray, $resultArray); } } return $resourceArray; }
<?php $resourceID = $_GET['resourceID']; $resource = new Resource(new NamedArguments(array('primaryKey' => $resourceID))); $status = new Status(); $completeStatusID = $status->getIDFromName('complete'); $archiveStatusID = $status->getIDFromName('archive'); $resourceSteps = $resource->getResourceSteps(); if (count($resourceSteps) == "0") { if ($resource->statusID != $completeStatusID && $resource->statusID != $archiveStatusID) { echo "<i>" . _("No workflow steps have been set up for this resource's combination of Acquisition Type and Resource Format.") . "<br />" . _("If you think this is in error, please contact your workflow administrator.") . "</i>"; } else { echo "<i>" . _("Not entered into workflow.") . "</i>"; } } else { ?> <table class='linedDataTable' style='width:100%;margin-bottom:5px;'> <tr> <th style='background-color:#dad8d8;width:350px;'><?php echo _("Step"); ?> </th> <th style='background-color:#dad8d8;'> </th> <th style='background-color:#dad8d8;width:150px;'><?php echo _("Group"); ?> </th> <th style='background-color:#dad8d8;width:120px;'><?php echo _("Start Date"); ?> </th>
$resource->updateLoginID = $loginID; $resource->updateDate = date('Y-m-d H:i:s'); $resource->titleText = $_POST['titleText']; $resource->descriptionText = $_POST['descriptionText']; $resource->resourceFormatID = $_POST['resourceFormatID']; $resource->resourceTypeID = $_POST['resourceTypeID']; $resource->resourceURL = $_POST['resourceURL']; $resource->resourceAltURL = $_POST['resourceAltURL']; $isbnarray = json_decode($_POST['isbnOrISSN']); $resource->setIsbnOrIssn($isbnarray); //to determine status id $status = new Status(); if ((!$resource->archiveDate || $resource->archiveDate == '0000-00-00') && $_POST['archiveInd'] == "1") { $resource->archiveDate = date('Y-m-d'); $resource->archiveLoginID = $loginID; $resource->statusID = $status->getIDFromName('archive'); } else { if ($_POST['archiveInd'] == "0") { //if archive date is currently set and being removed, mark status as complete if ($resource->archiveDate != '' && $resource->archiveDate != '0000-00-00') { $resource->statusID = $status->getIDFromName('complete'); } $resource->archiveDate = ''; $resource->archiveLoginID = ''; } } try { $resource->save(); } catch (Exception $e) { echo $e->getMessage(); }
public function completeWorkflow() { $config = new Configuration(); $util = new Utility(); $status = new Status(); $statusID = $status->getIDFromName('complete'); if ($statusID) { $this->statusID = $statusID; $this->save(); } //send notification to creator and master email address $cUser = new User(new NamedArguments(array('primaryKey' => $this->createLoginID))); //formulate emil to be sent $email = new Email(); $email->message = $util->createMessageFromTemplate('CompleteResource', $this->resourceID, $this->titleText, '', $this->systemNumber, ''); if ($cUser->emailAddress) { $emailTo[] = $cUser->emailAddress; } if ($config->settings->feedbackEmailAddress != '') { $emailTo[] = $config->settings->feedbackEmailAddress; } $email->to = implode(",", $emailTo); $email->subject = "CORAL Alert: Workflow completion for " . $this->titleText; $email->send(); }