/** * @param $rev * * @return bool */ public function upgrade_4_4_4($rev) { $fkConstraint = array(); if (!CRM_Core_DAO::checkFKConstraintInFormat('civicrm_activity_contact', 'activity_id')) { $fkConstraint[] = "ADD CONSTRAINT `FK_civicrm_activity_contact_activity_id` FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE CASCADE"; } if (!CRM_Core_DAO::checkFKConstraintInFormat('civicrm_activity_contact', 'contact_id')) { $fkConstraint[] = "ADD CONSTRAINT `FK_civicrm_activity_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE;\n"; } if (!empty($fkConstraint)) { $fkConstraint = implode(',', $fkConstraint); $sql = "ALTER TABLE `civicrm_activity_contact`\n{$fkConstraint}\n"; // CRM-14036 : delete entries of un-mapped contacts CRM_Core_DAO::executeQuery("DELETE ac FROM civicrm_activity_contact ac\nLEFT JOIN civicrm_contact c\nON c.id = ac.contact_id\nWHERE c.id IS NULL;\n"); // delete entries of un-mapped activities CRM_Core_DAO::executeQuery("DELETE ac FROM civicrm_activity_contact ac\nLEFT JOIN civicrm_activity a\nON a.id = ac.activity_id\nWHERE a.id IS NULL;\n"); CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS=0;"); CRM_Core_DAO::executeQuery($sql); CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS=1;"); } // task to process sql $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => '4.4.4')), 'runSql', $rev); // CRM-13892 : add `name` column to dashboard schema $query = "\nALTER TABLE civicrm_dashboard\n ADD name varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Internal name of dashlet.' AFTER domain_id "; CRM_Core_DAO::executeQuery($query, array(), TRUE, NULL, FALSE, FALSE); $dashboard = new CRM_Core_DAO_Dashboard(); $dashboard->find(); while ($dashboard->fetch()) { $urlElements = explode('/', $dashboard->url); if ($urlElements[1] == 'dashlet') { $url = explode('&', $urlElements[2]); $name = $url[0]; } elseif ($urlElements[1] == 'report') { $url = explode('&', $urlElements[3]); $name = 'report/' . $url[0]; } $values .= "\n WHEN {$dashboard->id} THEN '{$name}'\n "; } $query = "\n UPDATE civicrm_dashboard\n SET name = CASE id\n {$values}\n END;\n "; CRM_Core_DAO::executeQuery($query, array(), TRUE, NULL, FALSE, FALSE); // CRM-13998 : missing alter statements for civicrm_report_instance $this->addTask(ts('Confirm civicrm_report_instance sql table for upgrades'), 'updateReportInstanceTable'); return TRUE; }
/** * Function to add dashlets * * @param array $params associated array * * @return object $dashlet returns dashlet object * @access public * @static */ static function addDashlet(&$params) { // special case to handle duplicate entires for report instances $dashboardID = null; if (CRM_Utils_Array::value('instanceURL', $params)) { $query = "SELECT id\n FROM `civicrm_dashboard`\n WHERE url LIKE '" . CRM_Utils_Array::value('instanceURL', $params) . "&%'"; $dashboardID = CRM_Core_DAO::singleValueQuery($query); } require_once "CRM/Core/DAO/Dashboard.php"; $dashlet = new CRM_Core_DAO_Dashboard(); if (!$dashboardID) { // check url is same as exiting entries, if yes just update existing $dashlet->url = CRM_Utils_Array::value('url', $params); $dashlet->find(true); } else { $dashlet->id = $dashboardID; } if (is_array($params['permission'])) { $params['permission'] = implode(',', $params['permission']); } $dashlet->copyValues($params); $dashlet->created_date = date("YmdHis"); $dashlet->domain_id = CRM_Core_Config::domainID(); $dashlet->save(); // now we need to make dashlet entries for each contact self::addContactDashlet($dashlet); return $dashlet; }
/** * Delete Dashlet. * * @param int $dashletID * * @return bool */ public static function deleteDashlet($dashletID) { $dashlet = new CRM_Core_DAO_Dashboard(); $dashlet->id = $dashletID; if (!$dashlet->find(TRUE)) { return FALSE; } $dashlet->delete(); return TRUE; }