/** * Function to get the list of ddashlets * ( defaults dashlets defined by admin ) * * @param boolean $all all or only active * * @return array $widgets array of dashlets * @access public * @static */ static function getDashlets($all = true) { $dashlets = array(); $dao = new CRM_Core_DAO_Dashboard(); if (!$all) { $dao->is_active = 1; } $dao->domain_id = CRM_Core_Config::domainID(); $dao->find(); while ($dao->fetch()) { if (!self::checkPermission($dao->permission, $dao->permission_operator)) { continue; } $values = array(); CRM_Core_DAO::storeValues($dao, $values); $dashlets[$dao->id] = $values; } return $dashlets; }
/** * @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; }