コード例 #1
0
ファイル: FourFour.php プロジェクト: nielosz/civicrm-core
 /**
  * @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;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
ファイル: Dashboard.php プロジェクト: nielosz/civicrm-core
 /**
  * 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;
 }